Trusted Image ポリシーの設定


デフォルトでは、プロジェクトのユーザーは、公開イメージのいずれか、またはプリンシパルが IAM のロールによってアクセスできる任意のイメージを使用して、永続ディスクの作成やイメージのコピーを行うことができます。ただし、状況によっては、ポリシーやセキュリティ要件を満たす承認済みのソフトウェアが含まれるイメージからのみブートディスクを作成するように、プリンシパルの制限が必要になる場合もあります。

プリンシパルが特定のプロジェクトのイメージからのみ永続ディスクを作成できるようにする組織のポリシーを定義するには、信頼できるイメージの機能を使用します。

イメージを使用できるロケーションを制限するには、共有イメージ、ディスク、スナップショットの使用の制限をご覧ください。

始める前に

  • 組織レベルでポリシーを管理する方法については、制約の使用のページをご覧ください。
  • 組織のポリシーが伝播される仕組みについては、階層評価についてをご覧ください。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud のサービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

制限事項

  • Trusted Image ポリシーは、次のイメージへのアクセスを制限しません。

  • 信頼できるイメージのポリシーは、ユーザーによるローカル プロジェクト内でのイメージ リソースの作成を妨げるものではありません。

イメージ アクセスの制約を設定する

プロジェクト、フォルダ、組織に 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

たとえば、プロジェクト レベルで制約を設定するには、次のようにします。

  1. [組織のポリシー] ページに移動します。

    [組織のポリシー] に移動

  2. ポリシーリストで、[信頼できるイメージ プロジェクトを定義する] をクリックします。[ポリシーの詳細] ページが表示されます。

  3. [ポリシーの詳細] ページで、[ポリシーを管理する] をクリックします。[ポリシーの編集] ページが表示されます。

  4. [ポリシーの編集] ページで、[カスタマイズ] を選択します。

  5. [ポリシーの適用] で、適用オプションを選択します。継承とリソース階層の詳細については、階層評価についてをご覧ください。

  6. [ルールを追加] をクリックします。

  7. [ポリシー値] リストで、この組織のポリシーですべてのイメージ プロジェクトへのアクセスを許可するか、すべてのイメージ プロジェクトへのアクセスを拒否するかを選択できます。また、アクセスを許可または拒否するプロジェクトの一連のカスタムセットを指定することもできます。

    ポリシールールを設定するには、次のいずれかのオプションを完了します。

    • ユーザーがすべての公開イメージからブートディスクを作成できるようにするには、[すべて許可] を選択します。
    • ユーザーがすべての公開イメージからブートディスクを作成できないようにするには、[すべて拒否] を選択します。
    • ユーザーがブートディスクの作成元として選択できる公開イメージのセットを指定するには、[カスタム] を選択します。[ポリシーの種類] フィールドと [カスタム値] フィールドが表示されます。

      1. [ポリシーの種類] リストで、[許可] または [拒否] を選択します。
      2. [カスタム値] フィールドに、projects/IMAGE_PROJECT の形式でイメージ プロジェクトの名前を入力します。

        IMAGE_PROJECT は、制約を設定するイメージ プロジェクトに置き換えます。

        複数の画像プロジェクトを追加できます。追加するイメージ プロジェクトごとに、[追加] をクリックしてイメージ プロジェクト名を入力します。

  8. ルールを保存するには、[完了] をクリックします。

  9. 組織のポリシーを保存して適用するには、[保存] をクリックします。

組織のポリシーの作成の詳細については、組織のポリシーの作成と管理をご覧ください。

gcloud

たとえば、プロジェクト レベルで制約を設定するには、次のようにします。

  1. resource-manager org-policies describe コマンドを使用して、プロジェクトの既存のポリシー設定を取得します。

    gcloud resource-manager org-policies describe \
       compute.trustedImageProjects --project=PROJECT_ID \
       --effective > policy.yaml
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

  2. テキスト エディタで 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
    

  3. policy.yaml ファイルをプロジェクトに適用します。組織またはフォルダに既存の制約がある場合、それらの制約は、設定するプロジェクト レベルの制約と競合する可能性があります。制約を適用するには、resource-manager org-policies set-policy コマンドを使用します。

    gcloud resource-manager org-policies set-policy \
       policy.yaml --project=PROJECT_ID
    

    PROJECT_ID は、実際のプロジェクト ID に置き換えます。

制約の構成が完了したら、それらの制約をテストして必要な制限が作成されることを確認します。

次のステップ