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

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

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

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

始める前に

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

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

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

Security Command Center を有効にすると、securityposture.googleapis.com API と securitycentermanagement.googleapis.com API が有効になります。

権限を設定する

  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 を設定する

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

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

    gcloud config set auth/impersonate_service_account SERVICE_ACCT_EMAIL

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

    ポリシーを定義する

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

    Terraform のコードを作成する

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

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

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

    Terraform のコードを作成したら、IaC 検証レポートを実行できます。gcloud CLI、Cloud BuildJenkinsGitHub 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.json
      

      以下を置き換えます。

      • 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 検証レポートの作成オペレーションの詳細を返します。オペレーションに関する情報を取得するには、対策のデプロイ オペレーションに関する情報を表示するをご覧ください。

    次のステップ