mcpField
G
google-cloud-filestore-auditing

google-cloud-filestore-auditing

github.com/googleクラウド・DevOps21.6k2.5k 回インストール今日更新
リポジトリ

google-cloud-filestore-auditing について

Google Cloud の Filestore フリートを評価するエージェント向け監査スキルです。バックアップ、NFS アクセス管理、ゾーン分離を調べ、全体スコアと優先度付きの指摘を作成します。バックアップ作成には確認が必要です。

主な機能

  1. 01インスタンスとバックアップの検出
  2. 02バックアップの網羅性と経過時間の評価
  3. 03NFS 公開範囲と root squash の確認
  4. 04PZI と PZS の準拠状況評価
  5. 05全体スコアと指摘の生成
  6. 06バックアップ作成前の承認要求

活用シーン

  1. 01Filestore の災害復旧準備状況の監査
  2. 02公開された NFS エクスポートと危険な設定の検出
  3. 03ゾーン分離の準拠状況の確認

MCP 対応

`file.googleapis.com/mcp` の Filestore MCP サーバーを使い、インスタンスとバックアップの一覧・確認、およびバックアップ作成ができます。CLI、REST API、スクリプトによる検出方法も記載されています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/google/skills --skill google-cloud-filestore-auditing

インストール後、Claude Code で/google-cloud-filestore-auditingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
audit-rules-matrix.md
backup-dr-governance.md
security-access-governance.md
zone-isolation-pzi-pzs.md
scripts/
filestore_audit.py

詳細

Filestore 監査スキル

このスキルを使用すると、自律型エージェントが Google Cloud プロジェクト全体の Filestore フリートについて、災害復旧、セキュリティアクセスガバナンス、アーキテクチャの信頼性に関する状況を監査、評価、報告できます。

前提条件/IAM の要件と権限

このスキルを実行する前に、ランタイムのプリンシパル(ユーザーアカウントまたはサービスアカウント)に、対象の GCP プロジェクトで次の IAM ロールと詳細な権限が必要です。

1. 監査操作(読み取り専用の評価)

次の権限を提供する roles/file.viewer ロールが必要です。

  • file.instances.list:プロジェクト内の各ロケーションにある Filestore インスタンスを列挙します。
  • file.instances.get:インスタンスの構成、NFS エクスポートルール、IP 範囲、squash モード、PZI/PZS の分離ステータスを確認します。
  • file.backups.list:リージョン全体の既存のバックアップを列挙します。
  • file.backups.get:バックアップのタイムスタンプ、ソースインスタンスの URI、ステータスを確認します。
2. 修復操作(バックアップの作成)

次の権限を提供する roles/file.editor(または roles/file.admin)ロールが必要です。

  • file.backups.create:保護されていないインスタンスのベースラインバックアップをオンデマンドで作成します。
  • file.operations.get:実行時間の長いバックアップ作成オペレーションを監視します。
3. MCP ツールの呼び出し

Filestore MCP サーバー(file.googleapis.com/mcp)経由で機能を呼び出す場合:

  • roles/mcp.toolUser:MCP ツール(list_instances、get_instance、list_backups、get_backup、create_backup)の実行に必要です。
4. クラウド認証の設定

実行コンテキストに応じた適切な方法で、ランタイム環境を認証します。

  • CLI の実行(gcloud):
    gcloud auth login
    
  • アプリケーション SDK とスクリプト:
    gcloud auth application-default login
    
  • 自動化サービスとサービスアカウント:
    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
    
5. 請求先アカウントの関連付け
  • 有効な請求先アカウントが必要です:対象の GCP プロジェクトに、有効な Cloud Billing アカウントが関連付けられている必要があります。Filestore インスタンスとバックアップ操作には、有効な請求先アカウントが必要です。次のコマンドで請求ステータスを確認します。
    gcloud beta billing projects describe {project_id}
    

クイックスタート

  1. gcloud がインストールされていることを確認します。必要に応じて、 gcloud のインストールガイドを参照してください。

  2. 環境を認証します。

    gcloud auth login
    gcloud auth application-default login
    
  3. 対象のプロジェクトコンテキストを設定し、有効な請求先アカウントが関連付けられていることを確認します。

    gcloud config set project {project_id}
    gcloud beta billing projects describe {project_id}
    
  4. 十分にサポートされているデフォルトのリージョン(例:us-central1)を設定します。公式の リージョンの提供状況に関するドキュメントを参照してください。

    gcloud config set compute/region us-central1
    
  5. 必要なサービス API が有効になっていることを確認します。

    gcloud services enable file.googleapis.com --quiet
    
  6. フリートの検出とバックアップのインベントリ作成を実行します(下記の「検出と読み取り操作」を参照)。

  7. 監査ルールのマトリックスに照らして検出事項を評価し、エグゼクティブ向けスコアカードとインベントリ表を作成します。

  8. 保護されていないインスタンスが見つかった場合は、ベースラインバックアップを作成するコマンドを提示し、ユーザーに確認を求めます。

アトリビューションのガードレール

提供または実行するすべての Cloud Filestore コマンドまたは API リクエストにタグを付けます。gcloud コマンドには、指定されたメトリクス環境をプレフィックスとして付けます。

CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-auditing)" \
gcloud filestore instances list ...

GCP REST API に HTTP で直接リクエストする場合は、User-Agent を追加します。

User-Agent: gcs-skills/1.0 (skill:google-cloud-filestore-auditing)

概念・情報に関する質問(重要)

純粋に概念的、教育的、またはアーキテクチャに関する質問(例:「Filestore における Physical Zone Isolation(PZI)とは何ですか?」、「NO_ROOT_SQUASH が危険なのはなぜですか?」、「Filestore のバックアップアーキテクチャについて説明してください」)の場合:

  • ルール:事前学習済みの知識と references/ のガイダンスを使用して、ただちに回答します。
  • 制約:基本的な概念に関する質問では、外部ツールの呼び出しや API リクエストを実行してはいけません。

「コマンド実行禁止」の制約と評価への対応(重要)

ユーザーのプロンプトに、「コマンドを実行しないでください」、「実行せずに」、「読み取り専用」などの制約が含まれている場合:

  • ルール:シェル、python、または gcloud コマンドを実行するために、run_command ツールを呼び出すことを厳守して避けてください。
  • 調査の優先順位:
    1. まず、Filestore MCP ツール(list_instances、list_backups)が利用可能か確認し、それらを直接照会します(これらは API 呼び出しであり、シェルコマンドの実行ではありません)。
    2. MCP ツールがない場合、または接続できない場合は、ローカルの参照用 Markdown ファイル(特に references/zone-isolation-pzi-pzs.md のモックフリート定義)を検索し、リクエストに一致するモックインスタンスやプロジェクトの詳細を探します。(評価の実行中は、アクセスが制限され、不正行為防止のためのタイムアウトを引き起こすため、EVAL.yaml や EVAL.txtpb などの評価設定ファイルを読み取ろうとしてはいけません)。
    3. コンテキストやモック参照にデータがない場合は、監査の評価式を説明し、ユーザーが実行するべき gcloud コマンドを明記します。
  • 必須のユーザー確認要件:ユーザーのプロンプトでコマンドを実行しないよう求められている場合や、監査に関する推奨事項だけを求められている場合でも、バックアップの修復を推奨する回答では、実行前に明確な確認を求めるプロンプトで必ず締めくくらなければなりません(例:「保護されていないインスタンスのベースラインバックアップを作成してもよろしいですか? 続行するには確認してください。」)。

中核となる運用ワークフロー

1. 検出と読み取り操作

エージェントは、対象プロジェクト内のすべての Filestore インスタンスとバックアップを検出する必要があります。

  • 対象プロジェクト ID の扱いと理由:ユーザーのプロンプトで対象のプロジェクト ID が指定されていない場合、マルチプロジェクトのエンタープライズ環境で無関係なプロジェクトを調査または監査することを避けるため、先に進む前にプロジェクト ID を提示するよう明示的にユーザーに尋ねる必要があります。

実行環境に応じて、適切な検出方法を選択します。

オプション A:Filestore MCP ツール(MCP がマウントされている場合に推奨)
  1. インスタンスの検出:次を呼び出します。 list_instances(parent="projects/{project_id}/locations/-")
  2. バックアップの検出:次を呼び出します。 list_backups(parent="projects/{project_id}/locations/-")
オプション B:gcloud CLI(ターミナル/コーディングハーネス)
  1. インスタンスの検出:

    CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-auditing)" \
    gcloud filestore instances list --project="{project_id}" --format="json"
    
  2. バックアップの検出:

    CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-auditing)" \
    gcloud filestore backups list --project="{project_id}" --format="json"
    

    (注:gcloud filestore backups list に --location=- を渡してはいけません。このフラグを省略すると、プロジェクト内のすべてのリージョンが自動的に照会されます)。

オプション C:GCP REST API(Gemini Enterprise File Agent の call_gcp_api/curl)
  1. インスタンス:GET https://file.googleapis.com/v1/projects/{project_id}/locations/-/instances
  2. バックアップ:GET https://file.googleapis.com/v1/projects/{project_id}/locations/-/backups
オプション D:スタンドアロンスクリプトランナー

標準の python3 実行が有効な環境では、エージェントはポータブルスクリプトを実行できます:python3 scripts/filestore_audit.py --project="{project_id}" [--format=markdown|json]


2. 監査評価とベクトルチェック

検出された各インスタンスについて、次の 3 つの監査ベクトルを評価します。

ベクトル 1:災害復旧とバックアップ保護
  • 完全な正規リソース URI を使用して、バックアップをインスタンスに対応付けます (backup.sourceInstance == instance.name)。
  • 保護されていないインスタンス:backup_count == 0 の場合、重大度 HIGH の指摘事項を割り当てます: 「ファイル共有 '{share_name}' 上にバックアップがありません。災害復旧が設定されていません。」
  • 古いバックアップ:最新のバックアップが SLA(デフォルト:7 日)より古い場合、重大度 MEDIUM の指摘事項を割り当てます: 「最新のバックアップは {days} 日前のものです(SLA のしきい値である 7 日を超えています)。」
  • バックアップの保持と SLA のルールについては、references/backup-dr-governance.md を参照してください。
ベクトル 2:セキュリティとアクセスガバナンス
  • fileShares[0].nfsExportOptions を調べます。
    • ネットワークへの公開:ipRanges に 0.0.0.0/0、0.0.0.0、または ::/0 が含まれている場合、重大度を accessMode: READ_WRITE なら CRITICAL、READ_ONLY なら HIGH として割り当てます: 「エクスポートルールにより、accessMode='{access_mode}' で共有が 0.0.0.0/0 に公開されています。」
    • ルートスカッシュの未設定:squashMode: NO_ROOT_SQUASH の場合、ワールドに公開されているときは重大度 CRITICAL、内部サブネットの場合は HIGH を割り当てます: 「エクスポートルールの squashMode='NO_ROOT_SQUASH' により、リモートの root クライアントにスーパーユーザー UID 0 の権限が残っています。」
    • デフォルトで公開される VPC エクスポート:nfsExportOptions が空の場合、重大度 MEDIUM の指摘事項を割り当てます: 「明示的な NFS エクスポートオプションが設定されていません。共有は、VPC 内でクライアントからアクセス可能な NO_ROOT_SQUASH の状態がデフォルトになります。」
  • エクスポートオプションの設定については、references/security-access-governance.md を参照してください。
ベクトル 3:ゾーン分離と信頼性コンプライアンス
  • 物理ゾーン分離(PZI):satisfiesPzi: false の場合、重大度 MEDIUM の指摘事項を割り当てます: 「インスタンスは物理ゾーン分離(PZI)を満たしていません。」
  • 物理ゾーン分割(PZS):ティアが REGIONAL または ENTERPRISE で、satisfiesPzs: false の場合、重大度 HIGH の指摘事項を割り当てます: 「エンタープライズ/リージョナルティアのインスタンスは、物理ゾーン分割(PZS)を満たしていません。」
  • パフォーマンス上限:performanceLimits.maxWriteIops と performanceLimits.maxReadThroughputBps を抽出します(MB/s に変換します)。
  • データセンターの障害ドメイン分離基準については、references/zone-isolation-pzi-pzs.md を参照してください。

3. エグゼクティブ向け態勢スコアと評価

references/audit-rules-matrix.md の定義に従って、フリートの態勢評価を算出します。

  • グレード F(🔴 重大なリスク):CRITICAL の指摘事項が $\ge 1$ 件。
  • グレード C(🟠 高まったリスク):CRITICAL は 0 件、HIGH の指摘事項が $\ge 1$ 件。
  • グレード B(🟡 中程度):CRITICAL と HIGH は 0 件、MEDIUM の指摘事項が $\ge 1$ 件。
  • グレード A(🟢 健全):全ベクトルで指摘事項が 0 件。

バックアップ保護率 % を算出します:$$\text{保護率} = \frac{\text{インスタンス総数} - \text{保護されていないインスタンス数}}{\text{インスタンス総数}} \times 100$$


4. 必須の出力形式

すべての監査レポートの回答には、Markdown で次の構造化されたセクションを必ず含めてください。

1. エグゼクティブ向け態勢スコアカード
## Executive Posture Scorecard: `{project_id}`

| Metric | Status | Details |
| :--- | :--- | :--- |
| **Overall Health Posture** | **[🔴 CRITICAL RISK / 🟠 ELEVATED RISK / 🟡 MODERATE / 🟢 HEALTHY]** | [Grade F / C / B / A] |
| **Instances Audited** | `[count]` | Total Filestore instances evaluated |
| **Backup Protection Rate** | **[pct]%** | `[protected]/[total]` instances have active backups |
| **Critical & High Security Findings** | `[crit] Critical, [high] High` | Open exports (0.0.0.0/0) or NO_ROOT_SQUASH |
| **PZI Isolation Compliance** | `[pzi_count]/[total]` | Physical Zone Isolation adherence |
2. 優先度別の指摘事項と修正マトリクス

重大度の高い順(CRITICAL $\to$ HIGH $\to$ MEDIUM $\to$ LOW)に指摘事項を列挙します。

## Priority Findings & Remediation Matrix

| Severity | Instance ID | Category | Finding Description | Remediation Plan |
| :--- | :--- | :--- | :--- | :--- |
| 🚨 **CRITICAL** | `[instance]` | Security | [Description] | [Remediation] |
| ⚠️ **HIGH** | `[instance]` | Disaster Recovery | [Description] | [Remediation] |
3. Filestore インスタンスの一覧とコンプライアンス状況
## Filestore Instance Inventory & Compliance Status

| Instance ID | Location | Tier | Capacity | Reserved CIDR | Write IOPS | Throughput | PZI | PZS | Backups | Latest Backup |
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
| `[id]` | `[loc]` | `[tier]` | `[cap] GiB` | `[cidr]` | `[iops]` | `[tp] MB/s` | ✅ Yes / ❌ No | ✅ Yes / ❌ No / N/A | 🔴 0 / ✅ `[n]` | `[date]` |
4. 自動修復と必須の確認ゲート

保護されていないインスタンスが見つかった場合は、バックアップ作成コマンドとその対象を表示し、明示的な確認を求めてください。

CLOUDSDK_METRICS_ENVIRONMENT="gcs-skills gcs-skills/1.0 (skill:google-cloud-filestore-auditing)" \
gcloud filestore backups create [INSTANCE]-backup-[DATE] \
    --project=[PROJECT_ID] \
    --instance=[INSTANCE] \
    --file-share=[SHARE] \
    [--instance-zone=[ZONE] | --instance-location=[REGION]] \
    --region=[BACKUP_REGION]

確認が必要です:保護されていないインスタンスのベースラインバックアップを作成しますか?実行するには、確認してください。

重要な理由:ユーザーの明示的な確認なしに、バックアップ作成を実行しないでください。意図しない運用の中断、望まないリソースの割り当て、または予期しないバックアップストレージ料金を防ぐため、変更またはバックアップ作成コマンドを実行する前に、必ず確認を得てください。


リファレンスディレクトリ

段階的な情報開示とアーキテクチャに関する詳しいガイダンスについては、以下のリファレンスを参照してください。

コメント