コンプライアンスとモニタリング
コンプライアンスでは、誰が、いつ、何を、なぜ行ったかを把握できることが求められます。このドキュメントでは、監査ログ、AIコード追跡、認証、規制要件への準拠方法について説明します。
監査ログ
監査ログには、セキュリティイベントと管理操作が記録されます。エンタープライズプランで利用でき、コンプライアンス要件への対応やセキュリティインシデントの調査に役立ちます。
以下のイベントを記録します。
- 認証イベント: ログインとログアウト
- ユーザー管理: ユーザーの追加 (SSO、招待、登録、チーム作成、自動登録によるもの) 、削除、ロール変更、個別の支出上限
- API キー管理: チームおよびユーザー API キーの作成と無効化
- チーム設定: チーム全体およびユーザーごとの支出上限、管理者設定、チーム名の変更、Slack 連携設定、リポジトリのマッピング
- リポジトリ管理: リポジトリの作成、削除、設定の更新
- Cloud Agent 環境: 環境の作成、更新、復元、ライフサイクルの変更
- ディレクトリグループ: ディレクトリグループの作成、更新、削除、メンバーシップの変更、権限の変更
- プライバシー設定: ユーザーまたはチームレベルでのプライバシーモードの変更
- チームルール: カスタムワークフロー向けのチームルール (Bugbot ルールを含む) の管理
- チームコマンド: カスタムコマンドの作成、更新、削除
- Grok Bot: チームでの有効化、Bot の作成、メンバーのアクセス変更、Team Setup マニフェスト、Bot テンプレート、コンピューター、ルーチン
- 連携: MCP サーバー設定、認証、Slack アカウントの連携
エージェントの応答や生成されたコードの内容は記録しません。
代わりに、プロンプトとコードを記録するにはフックの使用を推奨します。
監査ログへのアクセス
チームダッシュボードで監査ログを確認できます。エンタープライズプランで利用でき、管理者権限が必要です。
ストリーミング監査ログ
コンプライアンス対応とセキュリティ監視のため、監査ログを既存のシステムにストリーミングできます。
- SIEM システム (Splunk、Sumo Logic、Datadog など)
- カスタム処理用の Webhook エンドポイント
- 長期保存用の S3 バケット
- Elasticsearch や CloudWatch などのログ集約ツール
ストリーミング監査ログをご希望の場合は、[email protected] までお問い合わせください。ストリーミングされるイベントには application_type が含まれます。
ログ形式
監査ログはJSON形式で配信され、メタデータとイベント固有のフィールドを含みます。
{ "metadata": { "timestamp": "2024-10-14T18:30:45Z", "event_id": "evt_abc123xyz789" }, "team_id": "team_xyz789", "ip_address": "203.0.113.42", "user_email": "[email protected]", "application_type": "grok_bot", "event": { /* イベント固有のフィールド */ }}監査ログには OpenTelemetry のトレース ID やスパン ID は含まれません。metadata.event_id は 1 件の監査イベントを識別するもので、関連するイベントをまとめるものではありません。記録された Grok Bot のアクションを Bot 単位やターン単位でまとめるには、OpenTelemetry Export を使用してください。
application_type は、その操作を実行した製品を示します。Grok Bot の場合は grok_bot、Cherri Code デスクトップ、iOS、CLI、Agent SDK、cursor.com、Admin API の場合は cursor です。アプリケーションを特定できない場合や、このフィールドが存在する以前に書き込まれた行では空文字列になります。過去の行に遡って値が補完されることはありません。
event_type の値は以下のとおりです。
フィールドが記載されているエントリでは、それらの名前が Admin API の event_data、および対応する CSV や SIEM のペイロードにおけるキーになります。
login- ユーザーのログインイベント (Web またはアプリ)logout- ユーザーのログアウトイベントadd_user- ユーザーの追加 (追加元:sso、invite、signup、createTeam、autoEnroll)remove_user- チームからのユーザー削除update_user_role- ロールの変更 (OWNER、ADMIN、MEMBER)user_spend_limit- ユーザーごとの支出上限の変更team_api_key- チーム API キーの操作 (作成、無効化)user_api_key- ユーザー API キーの操作 (作成、無効化)team_settings- 以下を含むチーム設定の変更:team_hard_limit_dollars- チーム全体の支出ハード上限team_hard_limit_per_user_dollars- ユーザーごとのハード上限per_user_monthly_limit_dollars- ユーザーごとの月間支出上限admin_only_usage_pricing- 管理者限定の利用料金設定team_admin_settings- 一般的な管理者設定team_name- チーム名の変更slack_default_repo- Slack 連携のリポジトリ設定slack_default_branch- Slack 連携のブランチ設定slack_default_model- Slack 連携のモデル設定slack_share_summary- Slack での要約共有設定slack_share_summary_in_external_channel- 外部チャンネルでの共有slack_channel_repo_mappings- Slack チャンネルとリポジトリのマッピングmcp_server_config- MCP サーバー設定の変更 (create、update、rename、delete)。フィールド:action、server_name、server_type、scopeteam_repo- リポジトリ操作 (作成、削除、update_settings)create_directory_group- ディレクトリグループの作成update_directory_group- ディレクトリグループの更新update_directory_group_permissions- ディレクトリグループの権限変更delete_directory_group- ディレクトリグループの削除add_user_to_directory_group- ディレクトリグループへのユーザー追加remove_user_from_directory_group- ディレクトリグループからのユーザー削除privacy_mode- プライバシーモードの変更 (スコープ: "user" または "team")team_rule- チームルールの管理 (作成、更新、削除)team_hook- チームフックの管理 (作成、更新、削除)bugbot_installation- Bugbot のインストールイベントbugbot_installation_settings- Bugbot のインストール設定の変更bugbot_repo_settings- Bugbot のリポジトリ設定の変更bugbot_team_rule- Bugbot 固有のルール管理 (作成、更新、削除)bugbot_team_settings- Bugbot チーム設定の変更bugbot_bulk_repo_update- Bugbot のリポジトリ一括更新イベントteam_command- カスタムチームコマンドの管理 (作成、更新、削除)grok_bot_created- Bot の作成。フィールド:agent_id、name、source、template_idgrok_bot_lifecycle- Bot のプロファイルおよびライフサイクルの変更 (update、rename、delete、primary_bot_changed)。フィールド:agent_id、action、changed_fields、primary_bot_cleared、previous_agent_idsand_onboarding- チームの Grok Bot 有効化の変更 (new_completed=trueは有効、falseは無効を意味します)。フィールド:old_completed、new_completed、sourcegrok_bot_access_changed- メンバーアクセスの変更。フィールド:old_mode、new_mode、old_group_ids、new_group_ids、old_group_names、new_group_namesgrok_bot_team_setup_manifest- Team Setup マニフェストの変更 (save、delete)。フィールド:action、manifest_id、revision、entry_count、entry_idsgrok_bot_group_settings- グループが所有する Grok Bot 設定の変更。フィールド:group_id、group_name、setting_name、old_value、new_valuegrok_bot_group_resource- Group Rule の変更 (create、update、delete) および Group Setup Script の変更 (save、delete)。フィールド:group_id、group_name、resource、action、resource_id、resource_namemcp_authentication- MCP の OAuth 認証、接続解除、アカウント削除 (authenticate、revoke、remove_account)。actionが空の場合はauthenticateを意味します。フィールド:server_name、scope、service_account_id、actionslack_account_link- Slack アカウントの連携 (link、relink)。フィールド:action、slack_team_id、slack_user_id、workspace_changed。これらの行のダッシュボードタイトルには接尾辞が付きませんgrok_bot_resource- Bot テンプレートの変更 (create、publish、visibility_changed、delete)。フィールド:resource_type、resource_id、action、visibility、previous_visibility
PUBLIC テンプレートの行は、影響を受けるチーム、リクエスト元のチーム、またはメンバーが所属する唯一のチームに割り当てられます。チームを一意に特定できない場合、行は記録されません。
grok_bot_machine- 登録済みローカルコンピューターの変更 (register、rename) 。フィールド:action、machine_idgrok_bot_vm- Grok Bot コンピューターの変更 (image_update_completed、reset、force_recreate、kill) 。フィールド:action、tenant_id、operation_id、target_user_id、target_user_email、deleted_countgrok_bot_vm_bulk- 複数メンバーにまたがる Grok Bot コンピューターの変更 (bulk_recreate、bulk_kill、bulk_permanent_delete) 。フィールド:action、operation_id、target_count、succeeded_count、skipped_count、failed_countgrok_bot_routine- ルーチンの変更 (create、update、enable、disable、delete) 。フィールド:action、automation_id、name、execution_runtime、sand_agent_id、trigger_type、creation_source、scope、enabled
User 列では、サインイン済みのメンバーと管理者はそのメールアドレスで表示されます。Bot: <owner email> は所有者の会話ターン中に Bot が変更を実行したことを、Api Key: <name> はユーザーに関連付けられていない API キーを示します。System は、メンバー、API キー、Bot のいずれも特定できなかったことを意味します。
Grok Bot のペイロードに含まれるのは識別子と変更されたフィールド名のみで、指示、テンプレート本文、Group Rule や Setup Script のテキスト、MCP の URL、認証情報といった内容は含まれません。
検索とフィルタリング
ダッシュボードでは、次の条件で監査ログをフィルタリングできます。
- 日付範囲
- イベントタイプ (認証、ユーザー管理、設定)
- アクター (特定のユーザー)
- アプリケーション (すべてのアプリケーション、または Grok Bot)
フィルタリング結果は、分析やコンプライアンスレポート用にCSV形式でエクスポートできます。エクスポートにはアプリケーション列が含まれます。
OpenTelemetry 経由の利用テレメトリー
監査ログには、管理・セキュリティイベントが記録されます。代わりに、トークン、ツール呼び出し、コストの指標、API リクエストや Cloud Agent のログ、記録された Grok Bot のアクション (アクション記録 を有効にした場合) などの利用データやアクティビティデータを OTLP 経由で自社のコレクターに送信するには、OpenTelemetry Export を使用してください。これは監査ログの SIEM ストリーミングとは別のパイプラインで、エンタープライズプランで利用できます。
コンプライアンスログの記録にフックを使用する
監査ログでは管理操作を追跡できますが、一部のコンプライアンス要件では開発アクティビティのログ記録も必要です。フックを使用して、次の内容を記録します。
プロンプト送信フック
#!/bin/bashinput=$(cat)prompt=$(echo "$input" | jq -r '.prompt')user_id=$(echo "$input" | jq -r '.user_id')# コンプライアンスシステムにログを送信するcurl -X POST "https://compliance.company.com/log" \ -H "Content-Type: application/json" \ -d "{\"type\":\"prompt\",\"user\":\"$user_id\",\"timestamp\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}"cat << EOF{ "continue": true}EOFコード生成フック
#!/bin/bashinput=$(cat)file_path=$(echo "$input" | jq -r '.file_path')edits=$(echo "$input" | jq -r '.edits')# コード生成イベントをログに記録する(実際のコードは記録しない)curl -X POST "https://compliance.company.com/log" \ -H "Content-Type: application/json" \ -d "{\"type\":\"generation\",\"file\":\"$file_path\",\"timestamp\":\"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"}"exit 0重要: 実際のコードやプロンプトをログに記録する際は注意してください。機密情報が含まれる可能性があります。可能な場合は、内容ではなくメタデータ (誰が、いつ、どのファイルか) を記録してください。
フックの実装の詳細は、Hooksを参照してください。
認証とコンプライアンス
Cherri Codeは、SOC 2 Type II、GDPRなどの業界標準に準拠しています。
以下を含むコンプライアンス関連のドキュメントは、Trust Centerからご確認いただけます。
- SOC 2レポート
- ペネトレーションテストの概要
- セキュリティアーキテクチャに関するドキュメント
- データフロー図
責任ある開示
Cherri Code のセキュリティ脆弱性を発見した場合は、責任ある開示プログラムを通じてご報告ください。
以下の情報を添えて、[email protected] までメールでご連絡ください。
- 脆弱性の詳細な説明
- 問題を再現する手順
- 関連するスクリーンショットまたは概念実証
監査ログはエンタープライズプランで利用できます
コンプライアンス機能の詳細については、チームまでお問い合わせください。