デフォルトでは、プロジェクトのユーザーは、公開イメージのいずれか、またはプリンシパルが IAM のロールによってアクセスできる任意のイメージを使用して、永続ディスクの作成やイメージのコピーを行うことができます。ただし、状況によっては、ポリシーやセキュリティ要件を満たす承認済みのソフトウェアが含まれるイメージからのみブートディスクを作成するように、プリンシパルの制限が必要になる場合もあります。
プリンシパルが特定のプロジェクトのイメージからのみ永続ディスクを作成できるようにする組織のポリシーを定義するには、信頼できるイメージの機能を使用します。
イメージを使用できるロケーションを制限するには、共有イメージ、ディスク、スナップショットの使用の制限をご覧ください。
始める前に
- このガイドのコマンドラインの例を使用する場合は、次の操作を行います。
- Google Cloud CLI の最新バージョンをインストールするか、最新バージョンに更新します。
- デフォルトのリージョンとゾーンを設定します。
- このガイドの API の例を使用する場合、API アクセスを設定します。
- 組織レベルでポリシーを管理する方法については、制約の使用のページをご覧ください。
- 組織のポリシーが伝播される仕組みについては、階層評価についてをご覧ください。
制限事項
Trusted Image ポリシーは、次のイメージへのアクセスを制限しません。
ローカル プロジェクトのカスタム イメージ。
Cloud Storage バケットのイメージ ファイル。
信頼できるイメージのポリシーは、ユーザーによるローカル プロジェクト内でのイメージ リソースの作成を妨げるものではありません。
イメージ アクセスの制約を設定する
プロジェクト、フォルダ、組織に compute.trustedImageProjects
制約を設定して、イメージ アクセス ポリシーを設定します。これらの制約を設定するには、組織のポリシーを変更する権限が必要です。たとえば、roles/orgpolicy.policyAdmin
には、これらの制約を設定する権限があります。プロジェクト、フォルダ、または組織レベルでポリシーを管理する方法の詳細については、制約の使用をご覧ください。
Compute Engine で利用可能なすべての公開イメージに制約を設定できます。
イメージ プロジェクト名の一覧については、オペレーティング システムの詳細をご覧ください。
また、ml-images
プロジェクトを使用すると、Compute Engine で利用可能な機械学習(ML)イメージも制限できます。サーバーレス VPC アクセスを使用している場合は、serverless-vpc-access-images
プロジェクトの Compute Engine VM イメージの使用権限をプロジェクトに付与します。
Google Cloud Console または Google Cloud CLI を使用して、イメージ アクセスに制約を設定します。
Console
たとえば、プロジェクト レベルで制約を設定するには、次のようにします。
- [組織のポリシー] ページに移動
- ポリシーリストで、[信頼できるイメージ プロジェクトを定義する] をクリックします。
- 既存の信頼できるイメージの制約をカスタマイズするには、[編集] をクリックします。
- [編集] ページで、[カスタマイズ] を選択します。
- [ポリシーの値] プルダウン リストから [カスタム] を選択し、特定のイメージ プロジェクトに制約を設定します。
- [ポリシータイプ] プルダウン リストで、次のように値を指定します。
- 指定されたイメージ プロジェクトを制限するには、[拒否] を選択します。
- 指定したイメージ プロジェクトの制限を解除するには、[許可] を選択します。
[カスタム値] フィールドに、
projects/IMAGE_PROJECT
の形式でイメージ プロジェクトの名前を入力します。IMAGE_PROJECT は、制約を設定するイメージ プロジェクトに置き換えます。プロジェクト レベルの制約を設定すると、組織またはフォルダに設定されている既存の制約と競合する可能性があります。
複数のイメージ プロジェクトを追加するには、[新しいポリシーの値] をクリックします。
[保存] をクリックして、制約を適用します。
組織のポリシーの作成の詳細については、組織のポリシーの作成と管理をご覧ください。
gcloud
たとえば、プロジェクト レベルで制約を設定するには、次のようにします。
resource-manager org-policies describe
コマンドを使用して、プロジェクトの既存のポリシー設定を取得します。gcloud resource-manager org-policies describe \ compute.trustedImageProjects --project=PROJECT_ID \ --effective > policy.yaml
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
テキスト エディタで
policy.yaml
ファイルを開き、compute.trustedImageProjects
制約を変更します。必要な制限を追加し、かつ、不要になった制限を削除します。ファイルの編集が終了したら、変更を保存します。たとえば、ポリシー ファイルに次の制約エントリを設定できます。constraint: constraints/compute.trustedImageProjects listPolicy: allowedValues: - projects/debian-cloud - projects/cos-cloud deniedValues: - projects/IMAGE_PROJECT
IMAGE_PROJECT は、プロジェクトで制限するイメージ プロジェクトの名前に置き換えます。
必要に応じて、プロジェクト内のカスタム イメージ以外のすべてのイメージへのアクセスを拒否することもできます。その場合は、次の例を使用します。
constraint: constraints/compute.trustedImageProjects listPolicy: allValues: DENY
policy.yaml
ファイルをプロジェクトに適用します。組織またはフォルダに既存の制約がある場合、それらの制約は、設定するプロジェクト レベルの制約と競合する可能性があります。制約を適用するには、resource-manager org-policies set-policy
コマンドを使用します。gcloud resource-manager org-policies set-policy \ policy.yaml --project=PROJECT_ID
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
制約の構成が完了したら、それらの制約をテストして必要な制限が作成されることを確認します。
次のステップ
- 組織ポリシー サービスの詳細を理解する。
- デフォルトで使用できる公開イメージを確認する。
- 他のプロジェクトと非公開イメージを共有する。
- 共有イメージ、ディスク、スナップショットの使用を制限する方法を理解する。
- イメージからインスタンスを起動する方法を理解する。