このドキュメントでは、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 のプレミアム ティアまたはエンタープライズ ティアが組織レベルで有効になっていることを確認します。
権限を設定する
-
Make sure that you have the following role or roles on the organization: Security Posture Shift-Left Validator
Check for the roles
-
In the Google Cloud console, go to the IAM page.
Go to IAM - Select the organization.
-
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.
- 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
-
In the Google Cloud console, go to the IAM page.
[IAM] に移動 - 組織を選択します。
- [ アクセスを許可] をクリックします。
-
[新しいプリンシパル] フィールドに、ユーザー ID を入力します。 これは通常、Google アカウントのメールアドレスです。
- [ロールを選択] リストでロールを選択します。
- 追加のロールを付与するには、 [別のロールを追加] をクリックして各ロールを追加します。
- [保存] をクリックします。
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.
ポリシーを定義する
組織のポリシーと 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 検証レポートを作成する手順は以下のとおりです。
gcloud CLI で
terraform init
を実行します。Terraform プロバイダ バージョン v5.5 以降を実行していることを確認します。必要に応じて、最新バージョンの Google プロバイダにアップグレードします。
terraform init -upgrade
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 形式で格納するファイルの名前。
IaC 検証レポートを作成します。
gcloud scc iac-validation-reports create PARENT \ --tf-plan-file=TF_PLAN_JSON_FILENAME
次のように置き換えます。
PARENT
: IaC 検証レポートを作成する Google Cloud 組織。形式はorganizations/ORGANIZATION_ID/locations/LOCATION
です。LOCATION
はglobal
です。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 検証レポートを作成するためのオペレーションの詳細を返します。オペレーションに関する情報を取得するには、対策のデプロイ オペレーションに関する情報を表示するをご覧ください。
次のステップ
- サンプル チュートリアルを確認する。
- IaC 検証を GitHub Actions または Jenkins プロジェクトと統合する。
- セキュリティ ポスチャーを管理する。
-