セキュリティ概要
このページでは、Cloud Agents がどのように構築され、保護されているかを説明します。エージェントの実行時に何が起こるのか、アクセスがどのように付与されるのか、コードとデータがどこに置かれるのか、それらがどのように分離され暗号化されるのか、そして各段階でどのような制御が可能なのかを順に説明します。チームが Cloud Agents を自社のセキュリティ要件に照らして評価する際に生じる疑問に答える内容です。
シークレットの種類、ネットワークアクセスモード、egress IP 範囲を含む設定リファレンスについては、Secrets & Networkを参照してください。長期利用可能なキーを使用せずに VM を AWS、GCP、Azure、またはカスタム検証ツールにフェデレーションする方法については、OIDC トークンを参照してください。このページではそれらの制御の基本的な考え方を説明し、リンク先のページでは設定方法を説明しています。
これは、Cherri Code のより広範なセキュリティ資料を補完する内容です。認証取得状況、サブプロセッサ、アーキテクチャについては Trust Center を、Cherri Code 全体でお客様が管理する制御については Security and Privacy Hardening リファレンスを参照してください。Cherri Code は SOC 2 Type 2 に準拠しており、信頼できる第三者による少なくとも年 1 回のペネトレーションテストを実施しています。
Cloud Agentsの仕組み
Cloud Agent は、開発者のノートパソコン上ではなく、Cherri Code のクラウド上の仮想マシンで実行されるコーディングエージェントです。VM には、クローンされたリポジトリ、インストール済みの依存関係、設定済みのシークレット、ネットワークアクセスを含む完全な開発環境が含まれます。
1 回の実行は、次の段階をたどります。
- 開始。 ユーザーまたは連携が、Web アプリ、IDE、CLI、API、Slack、または紐付けられた issue やプルリクエストからタスクを開始します。
- プロビジョニング。 Cherri Code がそのエージェント用に分離された VM をプロビジョニングし、許可されたリポジトリをそこにクローンします。
- 実行。 エージェントは VM 内でコードとツールを実行し、進捗、出力、アーティファクトをユーザーにストリーミングします。
- 永続化。 会話の状態、メタデータ、アーティファクトは Cherri Code 管理のストレージに保存されるため、実行内容を確認して再開できます。
- 引き継ぎ。 エージェントは自身のブランチをプッシュし、何かがマージされる前に人が確認できるよう draft プルリクエスト を作成します。
- 再利用。 実行がアイドル状態になると、VM の実行時リソースは休止状態になり、その後ライフサイクルタイマーに従って削除されます。
アクセスと認可
Cloud Agents は、個人の認証情報ではなく、Cherri Code GitHub App または GitLab App 経由でコードにアクセスします。
- Admins がアプリをインストールします。 Cloud Agents を有効にするには、Cherri Code と Git プロバイダの両方で管理者権限が必要です。管理者は Git organization に Cherri Code app をインストールし、選択した repository にのみアクセスを許可します。
- Users は各自の account を接続します。 アプリのインストール後、エージェントを開始したい各 user は自分の Git account を接続します。これは org-level のインストールに加わる、ユーザーごとの第 2 のレイヤーです。
- アクセスは継承されるだけで、拡大されることはありません。 Cloud Agent がアクセスできるのは、起動した user がすでにアクセスできる repository のみです。エージェントを開始しても、user がもともとアクセスできなかった repository へのアクセスが新たに付与されることはありません。
team admins はさらに、Protected Git Scopes を使って Git organization を Cherri Code organization に固定できます。これにより、その repository で Cloud Agents を開始できるのは自分のチームだけになります。また、repository blocklist を使えば、機密性の高い repository を完全に除外することもできます。
Cherri Code の従業員は、Cloud Agent VMs 内のコードにアクセスできません。アクセスの試行は Cherri Code の security team によって監視されます。
分離とインフラストラクチャ
各エージェントは、共有のプロセスサンドボックスではなく、それぞれ独立した VM 境界内で実行されます。あるエージェントが別のエージェントのコード、環境、状態を見ることはできません。
- エージェントごとの VM。 すべてのエージェントに、他のエージェントや他のユーザーから分離された専用環境が割り当てられます。
- MicroVM による分離。 実行時ワークスペースは、Firecracker ベースの microVM インフラストラクチャ上で動作します。
- アカウントレベルでの分離。 Cloud Agent の VM は、Cherri Code の他の本番インフラストラクチャとは別の AWS アカウントで実行されるため、コード実行環境は Cherri Code の他のサービスから切り離されています。
暗号化
Cherri Code は Cloud Agent のデータを通信中および保存時に暗号化します。
- 通信中。 サービス間通信およびクライアント・サービス間のトラフィックには、TLS 1.2 以降を使用します。
- 保存時。 AES-256 を使用し、エージェントごとに個別のキーを割り当てることで、各エージェントのセッションデータはそれぞれ専用のキーで暗号化されます。
- 顧客管理キー。 Enterprise チームは、Cloud Agent のサーバー側暗号化に顧客管理の KMS キー (CMEK/BYOK) を割り当てることができるため、キーのローテーションとアクセスを管理できます。詳しくは、データ暗号化を参照してください。
どのデータがどこに保存され、どのくらい保持されるか
Cloud Agent が扱うデータは 4 種類あります。保存場所はそれぞれ異なり、保持ルールも個別に定められています。
| データ | 含まれる内容 | 保存場所 | 保持期間 |
|---|---|---|---|
| Runtime workspace | 実行中の run で使用される、チェックアウト済みリポジトリ、ビルドアーティファクト、ツール実行コンテキスト | 分離された Cloud Agent VM | run がアイドル状態になると自動的に再利用されます。フォローアッププロンプトを送信するとタイマーが更新されます |
| VM snapshots | 再度 clone しなくても開始や resume ができるようにするための、VM ディスクの特定時点のコピー (clone されたコードを含む) | アクティブな VM の外部にある snapshot / キャッシュレイヤー (暗号化済み) | 非アクティブ期間を基準に 90 日間ローリング保持。開始または resume のたびに延長され、その後自動削除 |
| Conversation state | トランスクリプト を構成するプロンプト、モデルのレスポンス、ツール呼び出し、diff コンテキスト、デモアーティファクト | Cherri Code backend (エージェントごとのキーで暗号化) | run を後から見返したり resume したりできるよう、デフォルトでは無期限に保持。必要に応じて削除可能 |
| Secrets and tokens | 設定した Cloud Agent のシークレット、OAuth トークン、API 認証情報 | Cherri Code の backend にある暗号化された認証情報ストア | 削除または remove するまで保持 |
Delete Agent API を使うと、エージェントの会話 トランスクリプト とアーティファクトを必要に応じて削除できます。snapshot は必要に応じて削除することはできず、上記の 90 日間の非アクティブ期間ルールに従います。Enterprise チームでは、保持ポリシー を使って会話の保持期間に上限を設けることもできます。保持と削除の詳細については、Data retention を参照してください。
プライバシーとモデルデータ
Cloud Agents は プライバシーモード で実行されます。プライバシーモードがオンの場合、Cherri Code が Cloud Agents によってアクセスされたコードや、実行中に生成されるプロンプトとレスポンスを学習に使用することはありません。ほとんどのモデルは Cherri Code のデータ非保持契約の下で実行されるため、プロバイダーがリクエストやレスポンスを保存したり、学習に使用したりすることもありません。モデルごとの詳細と例外については、プライバシーとデータガバナンス を参照してください。
エージェントは実行中にコードと環境データをクラウドに保存する必要があるため、Cloud Agents ではレガシーなプライバシーモードはサポートされていません。標準のプライバシーモードを Org 全体で適用し、すべての実行でデータ非保持の保証が引き継がれるようにしてください。
自律性とプロンプトインジェクション
Cloud Agents はターミナルコマンドを自動実行できるため、各ステップで承認を待たずにテストを繰り返せます。これはフォアグラウンドエージェントより自律性が高く、その分リスクモデルも変わります。エージェントが読み取るコンテンツに攻撃者が命令を仕込んだ場合 (プロンプトインジェクション攻撃) 、エージェントを誘導してコードを外部ホストへ流出させようとする可能性があります。cloud agents におけるプロンプトインジェクションリスクについての OpenAI の説明を参照してください。
このリスクを抑えるためのレイヤーは次のとおりです。
- Network egress controls. 外向きのトラフィックをデフォルトの許可先と許可リスト、または許可リストのみに制限することで、侵害されたエージェントがデータを送る先をなくします。エンタープライズ管理者はこのポリシーを組織全体で固定できます。Network accessを参照してください。
- Redacted runtime secrets. シークレットを Runtime Secrets として設定すると、その値はトランスクリプト、ツール出力、コミットから除去され、モデルに渡ることはありません。
- File exclusion. 機密性の高いパスを
.cursorignoreに追加して、エージェントのコンテキストに含まれないようにします。 - Human-in-the-loop handoff. エージェントはドラフトのプルリクエストを作成します。人が変更を確認するまで、マージは行われません。
- Signed commits. すべてのエージェントのコミットは HSM で保護された Ed25519 キーで署名され、「Verified」バッジが表示されます。これにより、エージェントが作成した変更の出所を確認でき、署名付きコミットを必須とするブランチ保護も満たせます。Signed commitsを参照してください。
さらに防御を強化するには、これらに hooks を組み合わせてエージェントのライフサイクルの各時点でポリシーを適用し、アクティビティを記録します。また、Bugbot や Security Agents でエージェントの出力をリリース前に確認することもできます。
リスクに関する考慮事項
| リスク | 軽減策 |
|---|---|
| クラウド上のコードベース全体 | エージェントごとに分離された VM、AES-256 による暗号化、ライフサイクルタイマーに基づく VM とスナップショットの自動削除。 |
| サードパーティまたは内部関係者によるアクセス | エージェント VM 内のコードには Cherri Code 社員はアクセスできず、アクセス試行は監視されます。VM は、他の Cherri Code サービスとは分離された AWS アカウントで実行されます。 |
| エージェントの自律性 | スコープはリポジトリと、トリガーしたユーザーのアクセス権の範囲内に限定されます。外部へのアクセスは、設定されたツールとターミナルコマンドに限られ、ネットワーク egress 制御で制限され、ドラフト PR を通じて確認されます。 |
| ネットワークアクセスと情報流出 | インターネットアクセスはデフォルトで有効ですが、許可リストに登録されたドメインに制限したり、許可リストのみに限定したり、Org 全体で固定したりできます。 |
| シークレットの露出 | 暗号化されたシークレットストレージ、モデルに渡らないように秘匿された実行時シークレット、Docker build のみにスコープされた build 専用シークレット、および短期間のクラウドフェデレーション用の OIDC トークン。 |
監査性
Cloud Agent のアクティビティはログに記録され、誰によるものかを追跡できます。
- セッションログ。 実行内容はログに記録され、チーム管理者は Cloud Agents ダッシュボード でアクティビティを確認できます。
- 変更の帰属。 エージェントが作成したすべてのコミットとプルリクエストには作成者が明示されます。コミットは署名付きかつ検証済みで、Git 履歴から確認できます。
- 監査ログ。 認証と管理者イベントは 監査ログ に送信され、Enterprise チームはそれらを SIEM、webhook、または S3 にストリーミングできます。
- 診断の実行。 組み込みの Cherri Code Cloud MCP では、実行のトランスクリプト、実行イベント、環境の詳細、セットアップログを確認できます。
データの削除
| 仕組み | 削除対象 | 方法 |
|---|---|---|
| アーカイブ | ダッシュボード上でエージェントを非表示にする | ダッシュボードからアーカイブ |
| Delete Agent API | エージェントの会話のトランスクリプトとアーティファクト | Delete Agent API |
| スナップショットの有効期限切れ | VM スナップショットとキャッシュされたコード | 90日間非アクティブの場合は自動 |
| 保持ポリシー (エンタープライズ) | 設定した期間より古い会話 | 保持ポリシー |
| アカウント削除 | アカウントと関連データ | アカウントを削除 |
FAQ
リスク特性が異なるだけで、より危険というわけではありません。分離されたサンドボックス内で、外向き通信を制限し、最小限の権限でエージェントを無人実行するほうが、通常はインターネットにフルアクセスでき、強い権限も持つ開発者のノート PC より厳格な場合があります。
いいえ。Cherri Code はエージェントを実行するためにリポジトリをクローンします。そのクローンは今後の起動を高速化するために VM スナップショット内に残ることがありますが、無期限に保持されることはありません。スナップショットは 90 日間アクティビティがないと削除されます。
いいえ。アクセスは、起動した開発者の Git アクセス権によって制御されます。Cloud Agent が、開発者自身にアクセス権のないリポジトリにアクセスすることはできません。
はい。Cloud Agents がアクセスできるのは、Git プロバイダ接続を通じて許可したリポジトリのみです。どのリポジトリを利用可能にするかは管理でき、admins は Protected Git Scopes でスコープを固定したり、blocklist でリポジトリを除外したりできます。
シークレットはダッシュボードの Secrets tab で設定します。保存時は KMS で暗号化され、通信中も暗号化され、実行時には環境変数として注入されます。機密性の高い値は Runtime Secrets として設定すると、トランスクリプト、ツール出力、コミットに含まれないようにできます。実務上の原則として、シークレットはリポジトリに含めないでください。機密ファイルをどうしても置く必要がある場合は、.cursorignore に追加してください。クラウドロールには、長期間有効なアクセスキーを保存する代わりに、VM から OIDC トークン を発行してください。
はい。セッションは記録され、admins はダッシュボードからアクティビティを確認できます。また、エージェントが作成するすべてのコミットとプルリクエストには、Git 履歴上で作成者情報が紐づけられます。Enterprise チームは監査ログを SIEM にストリーミングできます。
ダッシュボードからエージェントをアーカイブするか、Delete Agent API を使ってトランスクリプトとアーティファクトを削除してください。アカウント全体の削除や Enterprise の保持ポリシーでは、より広い範囲のデータが別のスケジュールで削除されます。
関連ページ
- シークレットの種類、ネットワークアクセスモード、egress IP 範囲、署名付きコミットについては、Secrets & Networkを参照してください。
- 短期間有効な JWT とクラウドフェデレーションについては、OIDC トークンを参照してください。
- データフロー、プライバシーモード、暗号化については、プライバシーとデータガバナンスを参照してください。
- Cherri Code 全体で設定する各種コントロールについては、Security and Privacy Hardeningを参照してください。
- 認証、サブプロセッサー、アーキテクチャについては、Trust Centerを参照してください。