ネストされた仮想化の制約を管理する


このドキュメントでは、ネストされた仮想化が有効かどうかを確認する方法について説明します。また、ネストされた仮想化が組織、プロジェクト、フォルダで有効かどうかを制御するブール型制約を変更する方法についても説明します。

ネストされた VM を作成できるかどうかは、組織のポリシーのブール型制約によって判断します。ネストされた仮想化のブール型制約は制限です。適用すると、ネストされた VM の作成が組織のポリシーで制限されます。ブール型制約の詳細については、制約についてをご覧ください。

デフォルトでは、VM のネストされた仮想化を無効にする制約は適用されません。このため、ネストされた仮想化を有効にするためにブール型制約を変更する必要はありません。ただし、組織、フォルダ、プロジェクトがデフォルト設定に依存しないように、制約の値を明示的に設定することをおすすめします。プロジェクトが組織に属している場合、デフォルトでは制約は適用されないため、制約を変更することはできません。

始める前に

  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

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

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

ネストされた仮想化が許可されているかどうかを確認する

組織、フォルダ、プロジェクトでネストされた仮想化が許可されているかどうかを確認するには、Google Cloud コンソール、Google Cloud CLI、または REST を使用します。

コンソール

ネストされた仮想化を無効にするブール型制約が適用されていないかどうかを調べて、組織、フォルダ、プロジェクトにネストされた VM を作成できるかどうかを確認します。組織のポリシーで、VM のネストされた仮想化を無効にする制約が適用されていない場合は、ネストされた VM を作成できます。

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

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

  2. 組織、フォルダ、プロジェクトのセレクタで、組織のポリシーを表示するエンティティを選択します。

  3. 制約で [VM のネストされた仮想化を無効にする] を選択して、[ポリシーの詳細] ページを開きます。

  4. [適用] の値を確認します。

    • 値が [未適用] の場合、ネストされた仮想化は有効で、ネストされた VM を作成できます。

    • 値が [適用] の場合、ネストされた仮想化は無効で、ネストされた VM を作成できません。

gcloud

gcloud resource-manager org-policies describe コマンドを使用して、compute.disableNestedVirtualization ブール型制約の値を確認します。

Google Cloud CLI の出力に booleanPolicy の値が表示されない場合、ネストされた仮想化は許可され、ネストされた VM を作成できます。

booleanPolicy に対する Google Cloud CLI の出力値が enforced: true の場合、組織のポリシーによってネストされた仮想化が無効になり、ネストされた VM を作成することはできません。

gcloud resource-manager org-policies \
  describe constraints/compute.disableNestedVirtualization \
  (--organization=ORGANIZATION_ID | --folder=FOLDER_ID |
  --project=PROJECT_ID) --effective

次のいずれかを置き換えます。

  • ORGANIZATION_ID: 制約値を取得する組織の ID。アクセス可能な組織とその ID のリストを取得するには、gcloud organizations list コマンドを実行します。

  • FOLDER_ID: 制約値を取得するフォルダの ID。アクセス可能なフォルダとその ID のリストを表示するには、gcloud resource-manager folders list コマンドを実行します。

  • PROJECT_ID: 制約値を取得するプロジェクトの ID。アクセス可能なプロジェクトとその ID のリストを表示するには、gcloud projects list コマンドを実行します。

REST

REST を使用して compute.disableNestedVirtualization ブール制約の値を確認します。この値を使用して、組織、フォルダ、プロジェクトでネストされた VM を作成可能かを調査します。

REST のレスポンスで、制約の "booleanPolicy" の値が返されない場合、ネストされた仮想化は無効ではなく、ネストされた VM を作成できます。

出力の "booleanPolicy" の値が "enforced": true の場合、ネストされた仮想化は無効で、ネストされた VM を作成することはできません。

POST https://cloudresourcemanager.googleapis.com/v1/RESOURCE/RESOURCE_ID:getOrgPolicy

{
  "constraint": "compute.disableNestedVirtualization"
}

次のように置き換えます。

ネストされた仮想化の組織のポリシーを変更する

適切なロールがあれば、組織、フォルダ、プロジェクトでネストされた VM を作成されるかどうかを制御できます。ネストされた仮想化にブール型制約を使用して、強制適用を制御します。

組織、フォルダ、またはプロジェクトに対してネストされた仮想化を有効にするには、Google Cloud コンソール、Google Cloud CLI、または REST を使用できます。

コンソール

ネストされた仮想化を有効にするには、[VM のネストされた仮想化を無効にする] ブール型制約の適用を無効にし、ネストされた仮想化を無効にします。さらに、ブール型制約の適用を可能にします。

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

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

  2. 組織、フォルダ、プロジェクトのセレクタで、組織のポリシーを表示するエンティティを編集します。

  3. 制約で [VM のネストされた仮想化を無効にする] を選択して、[ポリシーの詳細] ページを開きます。

  4. [編集] をクリックし、[カスタマイズ] を選択します。

  5. [適用] で、[VM のネストされた仮想化を無効にする] ブール型制約に対して次のいずれかの適用オプションを選択します。

    • オン: 適用を有効にして、ネストされた仮想化を無効にします。
    • オフ: 適用を無効にして、ネストされた仮想化を有効にします。
  6. [保存] をクリックします。

gcloud

gcloud resource-manager org-policies コマンドを使用して、compute.disableNestedVirtualization 組織のポリシーのブール型制約の適用を有効または無効にします。

disable-enforce コマンドを使用して compute.disableNestedVirtualization 制約を無効にすると、ネストされた仮想化が有効になった VM を作成できます。

enable-enforce コマンドを使用して制約を有効にすると、ネストされた仮想化が有効になっている VM は作成できません。

gcloud resource-manager org-policies \
  ( disable-enforce | enable-enforce ) compute.disableNestedVirtualization \
  (--organization=ORGANIZATION_ID | --folder=FOLDER_ID |
  --project=PROJECT_ID)

次のいずれかを置き換えます。

  • ORGANIZATION_ID: 制約値を変更する組織の ID。アクセス可能な組織とその ID のリストを取得するには、gcloud organizations list コマンドを実行します。

  • FOLDER_ID: 制約値を変更するフォルダの ID。アクセス可能なフォルダとその ID のリストを表示するには、gcloud resource-manager folders list コマンドを実行します。

  • PROJECT_ID: 制約値を変更するプロジェクトの ID。アクセス可能なプロジェクトとその ID のリストを表示するには、gcloud projects list コマンドを実行します。

REST

REST を使用して compute.disableNestedVirtualization ブール制約の値を変更します。この値を使用して、組織、フォルダ、プロジェクトでネストされた VM を作成可能かを調査します。

POST https://cloudresourcemanager.googleapis.com/v1/RESOURCE/RESOURCE_ID:setOrgPolicy

{
  "policy": {
    "booleanPolicy": {
      "enforced": ENFORCE
    },
    "constraint": "constraints/compute.disableNestedVirtualization"
  }
}

次のように置き換えます。

  • RESOURCE: 組織のポリシーを変更するリソース。次のいずれかに設定します。

  • RESOURCE_ID: ネストされた仮想化の無効化ステータスを確認する組織、フォルダ、プロジェクト

  • ENFORCE: 組織のポリシーが compute.disableNestedVirtualization ブール型制約を適用するかどうかを指定します。次のいずれかに設定します。

    • true: 制約を適用します。この設定では、ネストされた仮想化を有効にした VM を作成することはできません。

    • false: 制約を適用しません。この設定では、ネストされた仮想化を有効にした VM を作成できます。

次のステップ