Apigee で組織のポリシーの制約を使用する

このページでは、Apigee で組織のポリシーの制約を使用する方法について説明します。

Apigee のすべての機能で、機密データの暗号化に CMEK が使用されるわけではありません。CMEK による暗号化が必要なデータで、CMEK で保護されていない機能が意図せずに使用されることがないようにするため、CMEK 制約付きのプロジェクトでは、コンプライアンスを確保するまで、これらの機能が無効になります。機能を新たに使用すること(新しいリソースの作成やアドオンの有効化)だけができなくなります。すでに使用されている機能とリソースは引き続き使用および編集できますが、保護されません。

評価組織の作成は、gcloud alpha apigee organizations API と評価プロビジョニング ウィザードの両方によってブロックされます。評価プロビジョニング ウィザードを表示しようとすると、「Apigee evaluation is not available」というメッセージが表示されます。

CMEK 制約付きのプロジェクトで無効になっている機能について詳しくは、組織のポリシーの制約をご覧ください。

用語

このトピックで使用する用語の定義を次に示します。

用語 定義
CMEK 顧客管理の暗号鍵。詳細については、顧客管理の暗号鍵をご覧ください。
組織のポリシーの制約 制約は、Google Cloud サービスまたは Google Cloud サービスのリストに対する特殊な制限です。CMEK に関して、次の 2 つの制約があります。
  • constraints/gcp.restrictNonCmekServices
  • constraints/gcp.restrictCmekCryptoKeyProjects
適用 Apigee のバックエンド システムがプロジェクトの制約(この場合は CMEK 制約)を確実に遵守するようにすること。
事前検証 CMEK 組織ポリシーに従って Apigee で有効な構成を選択する操作をガイドする UI 動作。準拠していない機能は公開されません。
リソース 組織インスタンスなどの Apigee リソース

CMEK がないサービスを制限する方法

このセクションでは、CMEK がないサービスを制限する方法について説明します。

  1. 前提条件を満たします。
  2. Google Cloud コンソールでプロジェクトを選択します
  3. 新しい組織のポリシーの制約を作成します
  4. Apigee をプロビジョニングします

前提条件

次のことを行う必要があります。

プロジェクトを開く

  1. Google Cloud コンソールで、[ダッシュボード] ページに移動します。

    ダッシュボードに移動

  2. プロジェクトがまだ選択されていない場合は、Google Cloud コンソールのプルダウン リストからプロジェクトを選択します。

組織のポリシーの制約を作成する

組織のポリシーは、制約ごとの設定値を使って定義されます。これは、このリソースレベルで構成されるか、親リソースから継承されるか、Google 管理のデフォルトの動作に設定されるかのいずれかです。この場合、CMEK を必要とする制約を作成し、プロジェクトとプロジェクトから継承するすべてのリソースに適用します。

Apigee でデータを暗号化するときに顧客管理の暗号鍵が常に使用されるようにするには、次の組織のポリシー制約を作成します。

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

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

  2. プロジェクトがまだ選択されていない場合は、Google Cloud コンソールのプルダウン リストからプロジェクトを選択します。
  3. [フィルタ] ボックスに次のように入力します。
    constraints/gcp.restrictNonCmekServices
  4. [その他]、[ポリシーを編集] の順にクリックします。[編集] が無効になっている場合は、必要な権限が付与されていません。このため、組織に対する組織ポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するよう管理者に依頼する必要があります。詳細については、前提条件をご覧ください。
  5. [ポリシーのソース] で、[親のポリシーをオーバーライドする] を選択します。このリソースには一意のポリシーが設定されます。次のステップでは、親ポリシー ルールの処理方法を指定します。
  6. [ポリシーの適用] で、次のいずれかを選択します。
    • 交換。このオプションを選択すると、親のポリシーは無視され、これらのルールが使用されます。
    • 親と結合する。このオプションを選択すると、親リソースで設定されたルールにルールが追加されます。

    組織のポリシーの継承の説明については、階層評価についてをご覧ください。

  7. [ルールの追加] をクリックします。
  8. [ポリシーの値] で [カスタム] を選択します。
  9. [ポリシータイプ] で [拒否] を選択します。
  10. [カスタム値] に次のように入力します。
    apigee.googleapis.com
  11. [完了] をクリックします。
  12. [ポリシーを設定] をクリックします。[ポリシーの詳細] ページが表示されます。

ポリシーを構成し、そのポリシーを継承または使用するプロジェクトを選択したら、Apigee をプロビジョニングできます。CMEK 組織のポリシーを構成する前に作成された Apigee リソースは、制約を遵守することが保証されません。ポリシーが適用された後に作成された新しいリソースのみが、CMEK の制約を遵守します。

関連項目:

Apigee をプロビジョニングする

組織のポリシーの制約がある Apigee をプロビジョニングする手順は、組織のポリシーの制約がない Apigee をプロビジョニングする手順と同じです。ただし、UI ではサポートされていない選択を行うことはできません。

このセクションでは、UI で選択を行う手順について説明します。

  1. Google Cloud コンソールで、[Apigee] ページに移動します。

    [Apigee] に移動

  2. プロジェクトがまだ選択されていない場合は、Google Cloud コンソールのプルダウン リストからプロジェクトを選択します。
  3. CMEK を明示的に選択する必要があるため、[Welcome to Apigee API management] ページで [Setup using defaults] が無効になっています。[Customize your setup] をクリックします。
  4. API を有効にする: ステップ 1: 必要な API を有効にするの説明に従って、必要な API を有効にします。
  5. ネットワーキングを設定する: ステップ 2: ネットワーキングを設定するの説明に従ってネットワーキングを設定します。
  6. ホスティングと暗号化を構成する:

    ユーザー ジャーニー D: データ所在地がある顧客管理の暗号化は、CMEK のないサービスを制限する組織のポリシー制約に関連する唯一のユーザー ジャーニーです。

    1. [Edit] をクリックして、[Hosting and encryption keys] パネルを開きます。
    2. [暗号化のタイプ] セクションで、[Google が管理する暗号鍵] が無効になっており、[顧客管理の暗号鍵] が有効になっています。この設定を無効にすることはできません。
    3. [次へ] をクリックします。
    4. [コントロール プレーン] セクションで [データ所在地を有効にする] が有効になっています。この設定を無効にすることはできません。
    5. ユーザー ジャーニー D: データ所在地がある顧客管理の暗号化のステップ 3.b の説明に沿って、ホスティングと暗号化の構成を続行します。
  7. アクセス ルーティングをカスタマイズする: ステップ 4: アクセス ルーティングをカスタマイズするの説明に沿って、アクセス ルーティングをカスタマイズします。

CMEK 暗号鍵プロジェクトを制限する方法

このセクションでは、CMEK 暗号鍵プロジェクトの制限方法を説明します。

暗号鍵を提供できるプロジェクトを制限するには、別の組織のポリシーの制約 constraints/gcp.restrictCmekCryptoKeyProjects を使用します。この制約を使用すると、暗号鍵を使用できるプロジェクトを許可リストに登録できます。

CMEK を選択できる状況(現在は Apigee のプロビジョニング中および Apigee インスタンスの作成中)では、この制約が適用されます。

Google Cloud コンソールで選択されている現在のプロジェクトが restrictCmekCryptoKeyProjects 制約の許可リストにない場合、暗号鍵選択ボックスから鍵を選択することはできません。代わりに、許可リストに登録されているプロジェクトの鍵を使用する必要があります。

前提条件

次のことを行う必要があります。

  • 組織ポリシー管理者ロールを取得します。組織のポリシーを管理するために必要な権限を取得するには、組織に対する組織ポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するように管理者に依頼してください。ロールの付与の詳細については、アクセスの管理をご覧ください。
  • プロビジョニングの概要に記載されている前提条件を満たします。
  • 有料組織(サブスクリプションまたは従量課金制)を使用します。
  • データ所在地を使用します。
  • Google Cloud コンソールを使用してプロビジョニングします(サブスクリプションまたは従量課金制)。
  • 使用する鍵が含まれているプロジェクトを確認します。

プロジェクトを開く

  1. Google Cloud コンソールで、[ダッシュボード] ページに移動します。

    ダッシュボードに移動

  2. プロジェクトがまだ選択されていない場合は、Google Cloud コンソールのプルダウン リストからプロジェクトを選択します。

組織のポリシーの制約を作成する

組織のポリシーは、制約ごとの設定値を使って定義されます。 これは、このリソースレベルで構成されるか、親リソースから継承されるか、Google 管理のデフォルトの動作に設定されるかのいずれかです。この場合、許可リストに登録されているプロジェクトの鍵のみを許可する制約を作成します。この制約は、プロジェクトと、プロジェクトから継承されるすべてのリソースに適用されます。

特定のプロジェクトの顧客管理の暗号鍵のみが使用されるようにするには、それらの鍵を許可リストに追加します。

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

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

  2. プロジェクトがまだ選択されていない場合は、Google Cloud コンソールのプルダウン リストからプロジェクトを選択します。
  3. [フィルタ] ボックスに次のように入力します。
    restrictCmekCryptoKeyProjects
  4. [その他]、[ポリシーを編集] の順にクリックします。[編集] が無効になっている場合は、必要な権限が付与されていません。このため、組織に対する組織ポリシー管理者roles/orgpolicy.policyAdmin)の IAM ロールを付与するよう管理者に依頼する必要があります。詳細については、前提条件をご覧ください。
  5. [ポリシーのソース] で、[親のポリシーをオーバーライドする] を選択します。 このリソースには一意のポリシーが設定されます。次のステップでは、親ポリシー ルールの処理方法を指定します。
  6. [ポリシーの適用] で、次のいずれかを選択します。
    • 交換。このオプションを選択すると、親のポリシーは無視され、これらのルールが使用されます。
    • 親と結合する。このオプションを選択すると、親リソースで設定されたルールにルールが追加されます。

    組織のポリシーの継承の説明については、階層評価についてをご覧ください。

  7. [ルールの追加] をクリックします。
  8. [ポリシーの値] で [カスタム] を選択します。
  9. [ポリシータイプ] で [許可] を選択します。
  10. [カスタム値] に次のように入力します。
    projects/PROJECT_ID

    PROJECT_ID は、使用する Cloud KMS 鍵が配置されているプロジェクトの ID に置き換えます。例: my-kms-project

  11. [完了] をクリックします。
  12. [ポリシーを設定] をクリックします。[ポリシーの詳細] ページが表示されます。

ポリシーを構成し、そのポリシーを継承または使用するプロジェクトを選択したら、Apigee をプロビジョニングできます。CMEK 組織のポリシーを構成する前に作成された Apigee リソースは、制約を遵守することが保証されません。ポリシーが適用された後に作成された新しいリソースのみが、CMEK の制約を遵守します。

関連項目:

Apigee をプロビジョニングする

組織のポリシーの制約がある Apigee をプロビジョニングする手順は、組織のポリシーの制約がない Apigee をプロビジョニングする手順と同じです。ただし、UI ではサポートされていない選択を行うことはできません。

このセクションでは、UI で選択を行う手順について説明します。

  1. Google Cloud コンソールで、[Apigee] ページに移動します。

    [Apigee] に移動

  2. プロジェクトがまだ選択されていない場合は、Google Cloud コンソールのプルダウン リストからプロジェクトを選択します。
  3. [Welcome to Apigee API management] ページで [Customize your setup] をクリックします。
  4. API を有効にする: ステップ 1: 必要な API を有効にするの説明に従って、必要な API を有効にします。
  5. ネットワーキングを設定する: ステップ 2: ネットワーキングを設定するの説明に従ってネットワーキングを設定します。
  6. ホスティングと暗号化を構成する:

    ユーザー ジャーニー D: データ所在地がある顧客管理の暗号化は、CMEK のないサービスを制限する組織のポリシー制約に関連する唯一のユーザー ジャーニーです。

    1. [Edit] をクリックして、[Hosting and encryption keys] パネルを開きます。
    2. [暗号化のタイプ] セクションで、[Google が管理する暗号鍵] が無効になっており、[顧客管理の暗号鍵] が有効になっています。この設定を無効にすることはできません。
    3. [次へ] をクリックします。
    4. [コントロール プレーン] セクションで [データ所在地を有効にする] が有効になっています。この設定を無効にすることはできません。
    5. ユーザー ジャーニー D: データ所在地がある顧客管理の暗号化のステップ 3.b の説明に沿って、ホスティングと暗号化の構成を続行します。
  7. アクセス ルーティングをカスタマイズする: ステップ 4: アクセス ルーティングをカスタマイズするの説明に沿って、アクセス ルーティングをカスタマイズします。

許可リストに登録されているプロジェクトの鍵を使用する

Apigee で許可リストに登録されているプロジェクトの鍵を使用するには、鍵のリソース ID を使用して鍵を手動で入力する必要があります。手動で入力した鍵が検証され、制約で許可リストに登録されているプロジェクトに基づいて、そのプロジェクトが有効であることが確認されます。

Google Cloud KMS リソース ID を取得する方法

Cloud KMS リソース ID の取得をご覧ください。

トラブルシューティング

CMEK と組織のポリシーの制約で発生する可能性のある一般的なエラーの条件を次の表で説明します。

エラー メッセージ 原因 手順
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create or enable trial org. CMEK is not supported for trial orgs. To use trial orgs, adjust the gcp.restrictNonCmekServices constraint for this project. プロジェクトに組織のポリシー制約が存在するトライアル組織をプロビジョニングしようとしました。 CMEK は、トライアル組織/評価組織ではサポートされていません。トライアル組織をプロビジョニングするには、組織のポリシーの制約 constraints/gcp.restrictNonCmekServices を更新して、拒否されたサービスのリストから Apigee を削除する必要があります。
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create or enable global org. CMEK is not supported in location 'global', select another location or adjust the code constraint for this project. プロジェクトに組織のポリシー制約が存在するグローバル組織をプロビジョニングしようとしました。 CMEK はグローバル組織ではサポートされていません。組織のポリシーの制約 constraints/gcp.restrictNonCmekServices を更新して、拒否されたサービスのリストから Apigee を削除するか、別のロケーションを使用して組織を作成する必要があります。
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create a resource without specifying a KMS CryptoKey. Provide a KMS CryptoKey to use for this resource. KMS CryptoKey を指定せずに、プロジェクトに組織のポリシーの制約が存在する組織をプロビジョニングしようとしました。 組織のポリシーでコードを設定しており、データを暗号化するために CMEK を指定する必要があります。組織またはインスタンスを作成するには、CMEK 鍵を指定する必要があります。CMEK の適用を希望しない場合は、組織のポリシーの制約 constraints/gcp.restrictNonCmekServices を更新して、拒否されたサービスのリストから Apigee を削除できます。
Constraint constraints/gcp.restrictCmekCryptoKeyProjects violated for projects/my-project attempting to use projects/my-project/locations/my-location/keyRings/kr-1/cryptoKeys/ck-1 key. Use a key from a project that is allowed by the gcp.restrictCmekCryptoKeyProjects constraint. プロジェクトに組織のポリシーの制約が存在する組織をプロビジョニングしようとし、許可リストに登録されていない KMS CryptoKey を指定しました。 組織のポリシーで constraints/gcp.restrictCmekCryptoKeyProjects を設定しているため、一覧表示した許可されているプロジェクトの CMEK 鍵を指定する必要があります。組織またはインスタンスを作成するには、許可されているプロジェクトの CMEK 鍵を指定する必要があります。または、組織のポリシーの制約 constraints/gcp.restrictCmekCryptoKeyProjects を更新して、目的の Google Cloud プロジェクトの鍵を許可することもできます。
Constraint constraints/gcp.restrictNonCmekServices violated for projects/my-project attempting to create a portal. Integrated portals do not support the use of CMEK. To use integrated portals, adjust the gcp.restrictNonCmekServices policy constraint. プロジェクトに組織のポリシーの制約が存在する場合にポータルを作成しようとしました。 CMEK は統合ポータルではサポートされていません。新しいポータルを作成するには、組織のポリシーの制約 constraints/gcp.restrictNonCmekServices を更新して、拒否されたサービスのリストから Apigee を削除する必要があります。