はじめに
AIコーディングエージェントをチームや組織で活用する際、セキュリティとガバナンスは避けて通れない重要なテーマです。Codexはクラウド環境でコードを読み書きし、コマンドを実行できる強力なエージェントであるため、適切なセキュリティ対策なしに運用することはリスクを伴います。
本記事では、Codexのセキュリティアーキテクチャの仕組み、サンドボックス実行とネットワーク分離の詳細、機密コードの取り扱いポリシー、監査ログの活用方法、そして企業のコンプライアンス要件への対応について詳しく解説します。セキュリティを意識した安全なCodex運用を実現するための実践的なガイドとしてご活用ください。
Codexのセキュリティアーキテクチャ
Codexは「安全で信頼のおけるエージェント」を設計思想として掲げており、複数のレイヤーでセキュリティを確保しています。
セキュリティの基本原則
Codexのセキュリティは以下の3つの原則に基づいて設計されています。
flowchart TB
subgraph "Codexセキュリティの3原則"
A[分離<br/>Isolation] --> D[安全な実行環境]
B[透明性<br/>Transparency] --> E[検証可能な証拠]
C[制御<br/>Control] --> F[ユーザーによる承認]
end| 原則 | 説明 | 実装 |
|---|---|---|
| 分離(Isolation) | タスクを安全な環境で実行 | サンドボックス、ネットワーク分離 |
| 透明性(Transparency) | 実行内容を検証可能に | 引用、ログ、テスト結果 |
| 制御(Control) | ユーザーが最終判断 | 承認ポリシー、手動レビュー |
クラウド版とCLI/IDE版のセキュリティ比較
Codexの実行環境によってセキュリティの実装方法が異なります。
| 項目 | Codex Cloud | Codex CLI/IDE |
|---|---|---|
| 実行環境 | OpenAI管理のコンテナ | ローカルマシン |
| サンドボックス | コンテナ分離 | OS レベル(Seatbelt/Landlock) |
| ネットワーク | デフォルトOFF(セットアップ時のみON) | デフォルトOFF |
| データ所在 | OpenAIクラウド | ローカル |
| 設定管理 | 環境設定画面 | config.toml |
サンドボックス実行の仕組み
サンドボックスは、Codexが実行できる操作を技術的に制限する仕組みです。これにより、意図しないファイル変更やシステムへの影響を防止します。
サンドボックスモードの種類
Codexには4つのサンドボックスモードが用意されています。
flowchart LR
subgraph "サンドボックスモード(制限強→弱)"
A[read-only] --> B[workspace-write]
B --> C[full-auto]
C --> D[danger-full-access]
end| モード | ファイル読み取り | ファイル書き込み | コマンド実行 | ネットワーク | 推奨用途 |
|---|---|---|---|---|---|
| read-only | ワークスペース内 | 不可 | 不可 | 不可 | コード質問、調査 |
| workspace-write | ワークスペース内 | ワークスペース内 | 制限付き | デフォルトOFF | 日常的な開発 |
| full-auto | ワークスペース内 | ワークスペース内 | 自動実行 | 承認時のみ | 効率重視の開発 |
| danger-full-access | 全て | 全て | 全て | 全て | 非推奨 |
OS別サンドボックス実装
Codex CLI/IDEでは、OSごとに異なる技術でサンドボックスを実装しています。
macOS: Seatbeltポリシー
macOSでは、Appleのsandbox-execコマンドとSeatbeltポリシーを使用してサンドボックスを実現します。
|
|
Linux: LandlockとSeccomp
Linuxでは、カーネルのセキュリティ機能であるLandlockとseccompを組み合わせて使用します。
|
|
Windows: WSL推奨
Windows環境では、WSL(Windows Subsystem for Linux)内でLinuxサンドボックスを使用することが推奨されます。
|
|
ネイティブWindowsサンドボックスは実験的機能であり、Everyone SIDに書き込み権限があるディレクトリでは保護が効かないなどの制限があります。
承認ポリシーとの組み合わせ
サンドボックスモードと承認ポリシーを組み合わせることで、セキュリティレベルを細かく調整できます。
| 組み合わせ | サンドボックス | 承認ポリシー | 動作 |
|---|---|---|---|
| 最も安全 | read-only | untrusted | 全操作に承認必要 |
| バランス型 | workspace-write | on-request | ワークスペース外操作に承認必要 |
| 効率重視 | workspace-write | on-failure | 失敗時のみ承認要求 |
| 非推奨 | danger-full-access | never | 全操作を自動実行 |
config.tomlでの設定例を示します。
|
|
ネットワーク分離とインターネットアクセス制御
ネットワークアクセスの制御は、Codexセキュリティの重要な要素です。外部との通信を制限することで、情報漏洩やプロンプトインジェクション攻撃のリスクを低減します。
Codex Cloudのネットワーク制御
Codex Cloudでは、タスク実行フェーズによってネットワークアクセスの状態が異なります。
sequenceDiagram
participant User as ユーザー
participant Setup as セットアップフェーズ
participant Agent as エージェントフェーズ
participant GitHub as GitHub
User->>Setup: タスク開始
Note over Setup: ネットワークON
Setup->>Setup: 依存関係インストール
Setup->>Agent: コード引き渡し
Note over Agent: ネットワークOFF(デフォルト)
Agent->>Agent: コード編集・テスト実行
Agent->>GitHub: PR作成(GitHub連携のみ)セットアップフェーズ
- ネットワークアクセス: 有効
- 目的: 依存関係のインストール、環境構築
- エージェントはまだコードにアクセスできない
エージェントフェーズ
- ネットワークアクセス: デフォルトで無効
- 目的: コードの読み書き、テスト実行
- GitHub連携経由のPR作成は可能
インターネットアクセスのリスク
エージェントにインターネットアクセスを許可すると、以下のリスクが発生する可能性があります。
| リスク | 説明 | 対策 |
|---|---|---|
| プロンプトインジェクション | 悪意あるWebコンテンツから指示を受ける | ドメイン許可リストの使用 |
| データ漏洩 | コードや機密情報が外部に送信される | HTTPメソッド制限 |
| マルウェアダウンロード | 悪意あるコードが取り込まれる | 信頼できるドメインのみ許可 |
| ライセンス違反 | 不適切なライセンスのコードが混入 | 出力の手動レビュー |
プロンプトインジェクションの例
以下は、GitHub Issueを通じたプロンプトインジェクション攻撃の例です。
|
|
このような攻撃を防ぐため、インターネットアクセスは必要最小限に制限することが重要です。
ドメイン許可リストの設定
インターネットアクセスが必要な場合は、許可するドメインを明示的に指定します。
プリセット許可リスト
Codexには、一般的な開発で使用されるドメインのプリセットリストが用意されています。
| プリセット | 内容 | 用途 |
|---|---|---|
| None | 空のリスト | 完全にカスタム |
| Common dependencies | npm、PyPI、Maven等 | パッケージインストール |
| All (unrestricted) | 全ドメイン許可 | 非推奨 |
Common dependenciesに含まれる主要ドメイン
github.com
githubusercontent.com
npmjs.com
pypi.org
maven.org
docker.com
nuget.org
rubygems.org
crates.io
HTTPメソッド制限
追加の保護として、許可するHTTPメソッドを制限できます。
GET, HEAD, OPTIONS のみ許可
→ POST, PUT, PATCH, DELETE はブロック
これにより、データの取得は許可しつつ、外部への送信を防止できます。
機密コードの取り扱い
組織内のすべてのコードを同じセキュリティレベルで扱うことは適切ではありません。機密性に応じた取り扱いポリシーを定義することが重要です。
コード分類とポリシー定義
機密性レベルに応じてCodexの利用ポリシーを定義します。
flowchart TD
subgraph "コード機密性レベル"
L1[Level 1: 一般コード]
L2[Level 2: 社内限定コード]
L3[Level 3: 機密コード]
L4[Level 4: 最高機密コード]
end
L1 --> P1[Codex利用: 制限なし]
L2 --> P2[Codex利用: 標準設定]
L3 --> P3[Codex利用: 承認必要]
L4 --> P4[Codex利用: 禁止/ZDR必須]| レベル | コード例 | Codex利用ポリシー | 追加要件 |
|---|---|---|---|
| L1: 一般 | 公開ライブラリ、OSS | 制限なし | - |
| L2: 社内限定 | 内部ツール、ユーティリティ | 標準設定 | - |
| L3: 機密 | 認証/認可、暗号化処理 | 承認必要 | セキュリティレビュー |
| L4: 最高機密 | 決済処理、個人情報処理 | ZDR環境必須 | 専門家レビュー |
AGENTS.mdでのセキュリティ指示
機密コードを含むディレクトリには、AGENTS.mdでセキュリティ上の指示を明記します。
|
|
Zero Data Retention(ZDR)環境
Enterprise環境では、Zero Data Retention(ZDR)オプションを利用できます。ZDRを有効にすると、CLI/IDE利用時のデータがOpenAI側で保持されません。
| 項目 | 通常環境 | ZDR環境 |
|---|---|---|
| データ保持 | 標準期間 | 保持なし |
| 利用可能プラン | 全プラン | Enterpriseのみ |
| 用途 | 一般開発 | 最高機密コード |
| 設定方法 | デフォルト | 管理者設定 |
管理者によるセキュリティ設定の強制
組織全体でセキュリティポリシーを統一するため、管理者は特定の設定を強制できます。
requirements.tomlによる制約
requirements.tomlを使用すると、ユーザーが変更できないセキュリティ制約を設定できます。
|
|
この設定により、以下のコマンドがブロックされます。
|
|
MCPサーバーの制限
外部MCPサーバーへの接続を制限することも可能です。
|
|
macOS MDMによる配布
エンタープライズ環境では、MDM(Mobile Device Management)を使用して設定を配布できます。
flowchart LR
A[管理者] --> B[MDMプロファイル作成]
B --> C[config_toml_base64]
B --> D[requirements_toml_base64]
C --> E[デバイスへ配布]
D --> E
E --> F[Codexが設定を読み込み]MDM設定のキー
| キー | 用途 |
|---|---|
config_toml_base64 |
デフォルト設定(Base64エンコード) |
requirements_toml_base64 |
必須制約(Base64エンコード) |
Preference Domain: com.openai.codex
監査ログの活用
Codexの利用状況を監視し、セキュリティインシデントを検知するために監査ログを活用します。
OpenTelemetry(OTEL)による監視
Codexは、オプトインでOpenTelemetry形式のログ出力をサポートしています。
flowchart LR
A[Codex CLI/IDE] --> B[OTELモジュール]
B --> C{エクスポーター}
C --> |otlp-http| D[OTELコレクター]
C --> |otlp-grpc| D
D --> E[SIEM/分析基盤]OTELの有効化設定
|
|
収集されるイベントカテゴリ
| イベント | 説明 | 含まれる情報 |
|---|---|---|
codex.conversation_starts |
セッション開始 | モデル、サンドボックス/承認設定 |
codex.api_request |
API呼び出し | 時間、ステータス、トークン数 |
codex.user_prompt |
ユーザー入力 | 長さ(内容は設定次第) |
codex.tool_decision |
ツール承認/拒否 | 判断結果、ソース |
codex.tool_result |
ツール実行結果 | 時間、成功/失敗 |
Enterprise Compliance API
Enterpriseプランでは、Compliance APIを通じてより詳細な監査ログを取得できます。
flowchart TB
subgraph "Compliance API活用"
A[Codex利用ログ] --> B[Compliance API]
B --> C[ログ収集]
C --> D[SIEM連携]
D --> E[ダッシュボード]
D --> F[アラート設定]
D --> G[レポート生成]
end監視すべき重要イベント
| イベント | 重要度 | アクション |
|---|---|---|
| サンドボックス外アクセス試行 | 高 | 即時アラート |
| 承認ポリシー変更 | 中 | 日次レビュー |
| 大量のAPI呼び出し | 中 | 傾向分析 |
| 失敗したツール実行 | 低 | 週次レビュー |
プライバシーとセキュリティのガイダンス
監査ログの運用にあたっては、以下のガイダンスに従ってください。
log_user_prompt = falseを維持: プロンプトにはソースコードや機密情報が含まれる可能性があります- 自社管理のコレクターのみ使用: テレメトリデータは信頼できるインフラにのみ送信
- 保持期間と削除ポリシーを設定: コンプライアンス要件に合わせた設定
- 定期的なログレビュー: 異常な承認/サンドボックス変更を検知
コンプライアンス対応
企業でCodexを導入する際には、各種コンプライアンス要件への対応が必要です。
OpenAIのコンプライアンス認証
OpenAIのAPI、ChatGPT Business/Enterprise製品は以下の認証を取得しています。
| 認証 | 対象製品 | 概要 |
|---|---|---|
| SOC 2 Type 2 | API, Business, Enterprise | セキュリティ・機密性の業界標準適合 |
| CSA STAR Level 1 | API, Business製品 | クラウドセキュリティのベストプラクティス |
| GDPR対応 | 全製品 | EU一般データ保護規則への対応 |
| CCPA対応 | 全製品 | カリフォルニア消費者プライバシー法への対応 |
データプライバシーの原則
Codexを含むChatGPT Business製品では、以下のプライバシー原則が適用されます。
flowchart TB
subgraph "データプライバシーの原則"
A[所有権] --> A1[入出力データは顧客に帰属]
B[モデル学習] --> B1[ビジネスデータは学習に使用しない]
C[データ保持] --> C1[保持期間はカスタマイズ可能]
D[暗号化] --> D1[保存時: AES-256<br/>転送時: TLS 1.2+]
end規制対応のチェックリスト
組織でCodexを導入する際のコンプライアンスチェックリストを示します。
一般企業向け
- SOC 2レポートの確認
- データ処理補遺契約(DPA)の締結
- データ保持ポリシーの設定
- アクセス制御(RBAC)の設定
- 監査ログの有効化
金融機関向け追加項目
- データレジデンシー要件の確認
- Enterpriseプラン(ZDR対応)の検討
- 暗号化要件の確認
- 第三者監査の実施
医療機関向け追加項目
- HIPAA BAA(Business Associate Agreement)の締結
- PHI(保護対象保健情報)の取り扱いポリシー策定
- ChatGPT for Healthcareの検討
データレジデンシー
Enterpriseプランでは、データの地理的保存場所を指定できます。
| 地域 | 対応 |
|---|---|
| 米国 | 対応 |
| EU | 対応 |
| 日本 | 対応 |
| その他(計10地域) | Enterpriseのみ |
セキュリティ運用のベストプラクティス
日常的なCodex運用におけるセキュリティのベストプラクティスをまとめます。
バージョン管理との連携
Codexの出力は必ずバージョン管理と組み合わせて運用します。
flowchart LR
A[タスク委任前] --> B[git statusクリーン確認]
B --> C[フィーチャーブランチで作業]
C --> D[Codex実行]
D --> E[差分レビュー]
E --> F[コミット]
F --> G[PRレビュー]推奨ワークフロー
- 作業前に
git statusをクリーンに - フィーチャーブランチで作業
- 頻繁にコミットして変更を細分化
- Codex出力は他のPRと同様にレビュー
- コミットメッセージに変更理由を記録
定期的なセキュリティレビュー
gantt
title セキュリティレビューサイクル
dateFormat YYYY-MM-DD
section 日次
ログ異常チェック :daily, 2026-01-01, 30d
section 週次
承認変更レビュー :weekly, 2026-01-01, 30d
section 月次
設定ドリフト確認 :monthly, 2026-01-01, 30d
ポリシー見直し :monthly, 2026-01-15, 30d
section 四半期
包括的監査 :quarterly, 2026-01-01, 90d| 頻度 | レビュー項目 |
|---|---|
| 日次 | 監査ログの異常検知 |
| 週次 | 承認ポリシー変更の確認 |
| 月次 | 設定ドリフトの確認、ポリシー見直し |
| 四半期 | 包括的セキュリティ監査 |
インシデント対応計画
Codex関連のセキュリティインシデントに備えた対応計画を策定します。
| インシデントタイプ | 初動対応 | エスカレーション |
|---|---|---|
| 機密情報の意図しない送信 | Codex利用停止、ログ保全 | セキュリティチーム |
| 不正なコード生成 | PRレビュー強化、該当コード削除 | 開発リード |
| 設定改ざん | requirements.tomlで制約強化 | IT管理者 |
| アカウント不正利用 | アカウント停止、パスワードリセット | IT管理者 + セキュリティ |
まとめ
Codexを安全に運用するためのセキュリティとガバナンスのポイントを整理します。
- サンドボックスの適切な設定:
workspace-writeモードを基本とし、danger-full-accessは使用しない - ネットワーク分離の徹底: デフォルトでインターネットアクセスをOFFにし、必要な場合のみドメイン許可リストで制御
- 機密コードの分類管理: コードの機密性レベルに応じたCodex利用ポリシーを策定
- 管理者制約の活用:
requirements.tomlでセキュリティ設定を強制し、危険なオプションをブロック - 監査ログの有効化: OTELまたはCompliance APIで利用状況を監視し、異常を検知
- コンプライアンス要件の確認: SOC 2、GDPR、業界固有の規制への対応を確認
- バージョン管理との連携: すべてのCodex出力をレビュー可能な形で管理
AIコーディングエージェントは強力なツールですが、その力を安全に活用するためには適切なセキュリティ対策が不可欠です。本記事で解説した内容を参考に、組織に適したセキュリティ体制を構築し、安心してCodexを活用できる環境を整備してください。