組織内のリソースが非推奨のコンテナ スタートアップ エージェント と関連する gce-container-declaration
メタデータを使用していないことを確認するため、組織のポリシーを適用することをおすすめします。管理対象の制約 compute.managed.disableVmsWithContainerStartupAgent を適用すると、非推奨のメタデータを使用するリソースの作成が無効になります。
このセクションでは、次の方法について説明します。
- コンテナ スタートアップ エージェントを使用する Compute Engine インスタンスの作成を無効にする組織のポリシーを適用する。
- ドライラン モードでポリシーを適用して、組織のポリシーの影響をモニタリングする。
- ログ エクスプローラを使用して、非推奨のエージェントを使用しようとしているプロジェクトを特定する。
組織のポリシーを適用して、コンテナ メタデータを使用する VM の作成を無効にする
非推奨のコンテナ スタートアップ エージェントを使用するリソースの作成を防ぐため、
Google では組織のポリシーを適用することをおすすめします。
constraints/compute.managed.disableVmsWithContainerStartupAgent
制約により、gce-container-declaration メタデータキーを使用して新しいリソースを作成できなくなります。この制約は、既存のインスタンスまたはインスタンス テンプレートには影響しません。
この制約は、 Google Cloud コンソール、 Google Cloud CLI、Compute Engine API を使用して適用できます。
コンソール
コンソールを使用して組織のポリシーを設定するには、次の操作を行います。
コンソールで、[**組織のポリシー**] ページに移動します。 Google Cloud
プロジェクト選択ツールから、組織のポリシーを編集するプロジェクト、フォルダ、または組織を選択します。
[組織のポリシー] ページに、利用可能な組織のポリシーの制約リストが表示されます。
制約のリストから [非推奨のコンテナ スタートアップ エージェント(konlet)を使用する Compute Engine インスタンスの作成を無効にする] 制約を選択します。表示される [ポリシーの詳細] ページに、制約の説明と、その制約の適用状況に関する情報が示されます。
このリソースの組織ポリシーを構成するには、[ポリシーを管理] をクリックします。
[**ポリシーの編集**] ページで、[**親のポリシーをオーバーライドする**] をクリックします。
[ルールを追加] を選択します。
[適用] で [オン] を選択します。
(省略可)組織のポリシーの変更が適用される前にその影響をプレビューするには、[変更内容をテスト] をクリックします。組織のポリシーの変更のテストの詳細については、 Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
ドライラン モードで組織のポリシーを適用するには、[ドライラン ポリシーを設定] をクリックします。詳細については、 アクティブなポリシーからドライラン モードで組織のポリシーを作成するをご覧ください。
ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、[ポリシーを設定] をクリックして有効なポリシーを設定します。
gcloud
組織のポリシーを定義する YAML ファイルを作成します。
name: RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent spec: rules: - enforce: true dryRunSpec: rules: - enforce: true次のように置き換えます。
RESOURCE_TYPEはorganizations、folders、またはprojectsに置き換えます。RESOURCE_IDは、RESOURCE_TYPEで指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号に置き換えます。
次の例は、ID が
123456のプロジェクトに組織のポリシーを適用する YAML ファイルを示しています。name: projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent spec: rules: - enforce: true dryRunSpec: rules: - enforce: trueタグで組織のポリシーに条件を設定するには、
rulesにconditionブロックを追加します。組織のポリシーに条件付きルールを追加する場合は、少なくとも 1 つは無条件のルールを追加する必要があります。そうしないとポリシーを保存できないのでご注意ください。詳細については、 タグを使用した組織のポリシーの設定をご覧ください。org-policies set-policyコマンドをdryRunSpecフラグを指定して実行し、組織のポリシーを ドライラン モードで設定します。gcloud org-policies set-policy POLICY_PATH \ --update-mask=dryRunSpecPOLICY_PATHは、組織のポリシーの YAML ファイルのパスに置き換えます。ドライラン組織のポリシーの詳細については、 ドライラン モードで組織のポリシーを作成するをご覧ください。
policy-intelligence simulate orgpolicyコマンドを使用して、組織のポリシーの変更が適用される前に その影響をプレビューします。gcloud policy-intelligence simulate orgpolicy \ --organization=ORGANIZATION_ID \ --policies=POLICY_PATH次のように置き換えます。
ORGANIZATION_IDは、組織 ID(1234567890123など)に置き換えます。複数の組織に対する変更のシミュレーションはサポートされていません。POLICY_PATHは、組織のポリシーの YAML ファイルのパスに置き換えます。
組織のポリシーの変更のテストの詳細については、 Policy Simulator で組織のポリシーの変更をテストするをご覧ください。
ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、
org-policies set-policyコマンドとspecフラグを使用して有効なポリシーを設定します。gcloud org-policies set-policy POLICY_PATH \ --update-mask=specPOLICY_PATHは、組織のポリシーの YAML ファイルのパスに置き換えます。
REST
組織のポリシーを設定するには、
organizations.policies.create
メソッドを使用します。
POST https://orgpolicy.googleapis.com/v2/{parent=organizations/ORGANIZATION_ID}/policies
リクエストの JSON 本文には、組織のポリシーの定義が含まれています。
この制約がパラメータをサポートしていない場合は、rules の下の parameters ブロックを省略します。
{
"name": "RESOURCE_TYPE/RESOURCE_ID/policies/compute.managed.disableVmsWithContainerStartupAgent",
"spec": {
"rules": [
{
"enforce": true,
}
]
},
"dryRunSpec": {
"rules": [
{
"enforce": true,
}
]
}
}
次のように置き換えます。
RESOURCE_TYPEはorganizations、folders、またはprojectsに置き換えます。RESOURCE_IDは、RESOURCE_TYPEで指定されたリソースのタイプに応じた、組織 ID、フォルダ ID、プロジェクト ID またはプロジェクト番号に置き換えます。
次の例は、ID が 123456 のプロジェクトに組織のポリシーを適用するリクエスト本文を示しています。
{
"name": "projects/123456/policies/compute.managed.disableVmsWithContainerStartupAgent",
"spec": {
"rules": [
{
"enforce": true,
}
]
},
"dryRunSpec": {
"rules": [
{
"enforce": true,
}
]
}
}
```
Optionally, to make the organization policy conditional on a tag, add a
`condition` block to the `rules`. If you add a conditional rule to an
organization policy, you must add at least one unconditional rule or the
policy cannot be saved. For more details, see
[Setting an organization policy with tags](/resource-manager/docs/organization-policy/tags-organization-policy).
For more information about dry-run organization policies, see
[Create an organization policy in dry-run mode](/resource-manager/docs/organization-policy/dry-run-policy).
ドライラン モードでポリシーを適用して非推奨のメタデータの使用状況をモニタリングする
コンテナ宣言メタデータを使用するインスタンスの作成をブロックするポリシーを直接適用するのではなく、ドライラン モードでポリシーを適用できます。このように設定すると、オペレーションに実際に影響を与えることなく、ポリシーがブロックできるアクションをモニタリングしてログに記録できます。詳細については、 ドライラン モードで組織のポリシーを作成するをご覧ください。
アクションによってドライラン ポリシーがトリガーされると(たとえば、
メタデータキーを使用してインスタンスを作成しようとすると)、
ログエントリがCloud Audit Logsに生成されます。gce-container-declaration
非推奨のエージェントを使用しようとしているプロジェクトを特定するには、次の操作を行います。
コンソールで、[**ログ エクスプローラ**] ページに移動します。 Google Cloud
[クエリ] ペインに次のクエリを入力します。
protoPayload.metadata.dryRun="true" protoPayload.methodName="CheckOrgPolicy" protoPayload.resourceName =~ "/compute.managed.disableVmsWithContainerStartupAgent"[クエリを実行] をクリックします。
ログエントリを確認して、非推奨のエージェントを使用しようとしているプロジェクトを特定します。 ドライラン違反のログには次の特徴があります。
orgpolicy.googleapis.comに関連しています。protoPayload.metadata.dryRunフィールドはtrueに設定されています。- 違反の詳細に
constraints/compute.managed.disableVmsWithContainerStartupAgent制約が含まれています。
監査ログの情報で、非推奨のエージェントがまだ使用されている場所と理由を確認します。この情報は、サポートされている代替手段にワークロードを移行する際に役立ちます。
ドライラン モードで組織のポリシーが想定どおりに動作することを確認したら、適用状態をドライラン モードからライブに変更してポリシーを適用します。
ログ エクスプローラの使用方法については、ログ エクスプローラを使用してログを表示するをご覧ください。