Google Cloud 組織のポリシーに照らして IaC を検証する

このドキュメントでは、Google Cloud 組織で定義した組織のポリシーSecurity Health Analytics 検出機能に照らして Infrastructure as Code(IaC)を検証する方法について説明します。IaC を使用すると、Terraform などの言語を使用してクラウド リソースを作成、管理し、開発ワークフローを使用してリソースをデプロイできるようになります。

IaC を検証すると、新規または変更されたリソース定義が、Google Cloud リソース(クラスタ、バケット、インスタンスなど)に適用されている既存のポリシーに違反しているかどうかを判断できます。これらのポリシーはセキュリティ ポスチャーを使用して定義できますが、IaC 検証機能は、Google Cloud 組織内のすべてのポリシーに照らしてコードを分析します。IaC の検証は、アセットやリソースを Google Cloud 環境に適用する前に、デベロッパーがアセットやリソースの IaC 構成におけるセキュリティの問題を特定して修正するうえで役立ちます。

IaC の検証機能は、Terraform のプランファイルをサポートしています。Terraform のプランは、Google Cloud CLI を使用して検証できます。また、検証プロセスを Jenkins または GitHub Actions デベロッパー ワークフローに統合することもできます。

始める前に

IaC の検証を開始するには、次のタスクを実行します。

Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする

Security Command Center のプレミアム ティアまたはエンタープライズ ティアが組織レベルで有効になっていることを確認します。

権限を設定する

  1. Make sure that you have the following role or roles on the organization: Security Posture Shift-Left Validator

    Check for the roles

    1. In the Google Cloud console, go to the IAM page.

      Go to IAM
    2. Select the organization.
    3. In the Principal column, find all rows that identify you or a group that you're included in. To learn which groups you're included in, contact your administrator.

    4. For all rows that specify or include you, check the Role colunn to see whether the list of roles includes the required roles.

    Grant the roles

    1. In the Google Cloud console, go to the IAM page.

      [IAM] に移動
    2. 組織を選択します。
    3. [ アクセスを許可] をクリックします。
    4. [新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。

    5. [ロールを選択] リストでロールを選択します。
    6. 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
    7. [保存] をクリックします。

    IaC 検証の権限の詳細については、組織レベルでの有効化のための IAM をご覧ください。

    Google Cloud CLI を設定する

    このページの gcloud CLI のサンプルは、次のいずれかの開発環境から使用できます。

    • Cloud Shell: gcloud CLI がすでに設定されているオンライン ターミナルを使用するには、Cloud Shell をアクティブにします。

      このページの下部で Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。セッションが初期化されるまで数秒かかることがあります。

    • ローカルシェル: ローカル開発環境で gcloud CLI を使用するには、gcloud CLI をインストールして初期化してください。

    ユーザー認証情報ではなく、サービス アカウントの権限借用を使用して Google API の認証を行うように gcloud CLI を設定するには、次のコマンドを実行します。

    gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

    詳細については、サービス アカウントの権限借用をご覧ください。

    API を有効にする

    Enable the Security posture service and Security Command Center management APIs.

    Enable the APIs

    ポリシーを定義する

    組織のポリシーSecurity Health Analytics の検出機能を定義します。セキュリティ ポスチャーを使用してこれらのポリシーを定義するには、ポスチャーを作成してデプロイするのタスクを実行します。

    Terraform のコードを作成する

    デベロッパーのワークフローとツールを使用して、作成または変更する Google Cloud アセットを含む Terraform ファイルを作成します。

    次の点を考慮してください。

    • Terraform 構成のすべてのリソースまたはアセットの親属性(プロジェクト、フォルダ、または組織)を入力します。
    • アセットとポリシーは個別に変更します。この API は、アセットとポリシーの両方を同時に変更する Terraform プランファイルの検証をサポートしていません。
    • サポートされているアセットタイプとポリシーのみを使用してください。サポートされているアセットタイプとポリシーの一覧については、IaC 検証でサポートされているアセットタイプとポリシーをご覧ください。
    • IaC 検証の制限事項を確認します。
    • Terraform プランファイルには、パスワード、その他の個人情報などの機密情報を含めないでください。検証機能によって、リソース変更で機密とマークされたフィールドが検出された場合、そのフィールドは削除されます。

    Terraform のコードを作成したら、IaC 検証レポートを実行できます。Google Cloud CLI、Jenkins、GitHub Actions を使用できます。

    Google Cloud CLI を使用して IaC 検証レポートを作成する

    IaC 検証レポートを作成する手順は以下のとおりです。

    1. gcloud CLI で terraform init を実行します。

      Terraform プロバイダ バージョン v5.5 以降を実行していることを確認します。必要に応じて、最新バージョンの Google プロバイダにアップグレードします。

      terraform init -upgrade
      
    2. Terraform のプランファイルを JSON 形式に変換します。

      terraform plan -out TF_PLAN_FILENAME
      terraform show -json TF_PLAN_FILENAME > TF_PLAN_JSON_FILENAME.json
      

      次のように置き換えます。

      • TF_PLAN_FILENAME: Terraform プランファイルの名前。
      • TF_PLAN_JSON_FILENAME: Terraform プランを JSON 形式で格納するファイルの名前。
    3. IaC 検証レポートを作成します。

      gcloud scc iac-validation-reports create PARENT \
        --tf-plan-file=TF_PLAN_JSON_FILENAME
      

      次のように置き換えます。

      • PARENT: IaC 検証レポートを作成する Google Cloud 組織。形式は organizations/ORGANIZATION_ID/locations/LOCATION です。 LOCATIONglobal です。
      • TF_PLAN_JSON_FILENAME: 検証する IaC プランを格納する JSON ファイルのパス。

      たとえば、planFile.json に格納された IaC プランを使用して organizations/3589215982/locations/global 組織の IaC 検証レポートを作成するには、次のコマンドを実行します。

      gcloud scc iac-validation-reports create organizations/3589215982/locations/global --tf-plan-file=planFile.json
      

      このコマンドは、IAC 検証レポートを作成するためのオペレーションの詳細を返します。オペレーションに関する情報を取得するには、対策のデプロイ オペレーションに関する情報を表示するをご覧ください。

    次のステップ