顧客管理の暗号鍵でデータを暗号化する

デフォルトでは、Secure Source Manager はお客様のコンテンツを保存時に暗号化します。Secure Source Manager では、ユーザーが追加で操作を行わなくても暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Secure Source Manager などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。 Cloud KMS を使用すると、鍵の使用状況を追跡すること、監査ログを表示すること、鍵のライフサイクルを管理することが可能です。 データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵を制御および管理します。

CMEK を使用してリソースを設定した後は、Secure Source Manager リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

Cloud KMS は、複数のプロジェクトで使用する鍵を一元的に管理する別のプロジェクトで実行することも、Secure Source Manager と同じGoogle Cloud プロジェクトで実行することもできます。職掌分散をサポートし、鍵へのアクセスを詳細に制御するには、他の Google Cloudリソースを含まない別のプロジェクト内で鍵を作成し、管理することをおすすめします。

Cloud KMS 鍵は、インスタンスを作成するときに割り当てます。既存のインスタンスの暗号化メカニズムは変更できません。CMEK で暗号化されたインスタンスがある場合、暗号化メカニズムを Google のデフォルトの暗号化に変更したり、暗号化用の別の Cloud Key Management Service 鍵を割り当てたりすることはできません。

インスタンスは、Cloud KMS 鍵と同じロケーションに作成する必要があります。

Secure Source Manager で CMEK を使用すると、プロジェクトで Cloud KMS 暗号リクエストの割り当てが消費されることがあります。CMEK で暗号化されたインスタンスは、作成時にこれらの割り当てを消費します。 CMEK 鍵を使用する暗号化と復号の処理は、ハードウェア(Cloud HSM)鍵または外部(Cloud EKM)鍵を使用する場合にのみ、Cloud KMS の割り当てに影響します。 詳細については、Cloud KMS の割り当てをご覧ください。

CMEK 鍵を作成して権限を付与する

次の手順では、鍵を作成し、Secure Source Manager サービス アカウントに鍵に対する権限を付与する方法について説明します。

  1. 鍵を管理する Google Cloud プロジェクトで、次の操作を行います。

    1. Cloud KMS API を有効化します。

    2. 次のいずれかのオプションを使用してキーリングと鍵を作成します。

      Cloud KMS の鍵のロケーションは、Secure Source Manager インスタンスを作成するプロジェクトのロケーションと一致している必要があります。

  2. プロジェクトで最初の Secure Source Manager インスタンスを作成する場合は、次のコマンドを実行して、Secure Source Manager サービス エージェントを手動で作成する必要があります。

    gcloud beta services identity create \
    --service=securesourcemanager.googleapis.com \
    --project=PROJECT
    

    ここで、PROJECT は Secure Source Manager インスタンスを作成するプロジェクトのプロジェクト ID です。

    プロダクト / プロジェクトごとのサービス アカウント(P4SA)を作成したら、プリンシパル service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.comに Secure Source Manager サービス エージェントのロール(roles/securesourcemanager.serviceAgent)を付与する必要があります。そうしないと、インスタンスの作成が失敗します。

  3. Secure Source Manager サービス アカウントに CryptoKey Encrypter/Decrypter IAM ロールroles/cloudkms.cryptoKeyEncrypterDecrypter)を付与します。作成した鍵にこの権限を付与します。

    コンソール

    1. [鍵管理] ページに移動します。

      Key Management に移動

    2. 使用するキーリングを選択し、[キーリングの詳細] ページを開いて、作成した鍵を選択します。

    3. Secure Source Manager サービス アカウントにアクセス権を付与します。

      1. [プリンシパルを追加] をクリックします。
      2. Secure Source Manager サービス アカウントを追加します。サービス アカウントは service-PROJECT-NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com です。ここで、PROJECT-NUMBER は Secure Source Manager が有効になっている Google Cloud プロジェクトのプロジェクト番号です。
      3. [ロールを選択] で、[Cloud KMS] > [Cloud KMS 暗号鍵の暗号化 / 復号] を選択します。
      4. [保存] をクリックします。
    4. 前の手順を繰り返して、Secure Source Manager インスタンスを作成するアカウントにアクセス権を付与します。

    5. [鍵管理] ページに戻り、キーリングを選択して [キーリングの詳細] ページを開きます。次に、鍵をもう一度選択します。

    6. [情報パネルを表示] を選択します。[ロール / メンバー] 列にロールが表示されます。

    gcloud

    1. 次のコマンドを実行して、Secure Source Manager サービス アカウントにアクセス権を付与します。

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY_NAME --location LOCATION --keyring=KEY_RING \
             --member serviceAccount:service-PROJECT_NUMBER@gcp-sa-sourcemanager.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

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

      • PROJECT: 鍵が含まれているプロジェクトの ID
      • KEY_NAME: 鍵名
      • LOCATION: 鍵のロケーション。鍵のロケーションは、Secure Source Manager インスタンスをデプロイするプロジェクトのロケーションと一致している必要があります。
      • KEY_RING: キーリング名
      • PROJECT_NUMBER: Secure Source Manager が有効になっているGoogle Cloud プロジェクトのプロジェクト番号
    2. 前の手順を繰り返して、Secure Source Manager インスタンスを作成するアカウントにアクセス権を付与します。

    このコマンドの詳細については、gcloud kms keys add-iam-policy-binding のドキュメントをご覧ください。

アクセス権を削除

CMEK で暗号化されたリポジトリへのアクセス権を削除する方法はいくつかあります。

鍵を無効にするか破棄する前に、Secure Source Manager サービス アカウントから権限を取り消すことをおすすめします。権限の変更の整合性は数秒以内に確保されるため、鍵の無効化や破棄の影響を確認できます。

インスタンスの暗号鍵を無効化または破棄すると、インスタンスからデータを表示または取得できなくなります。インスタンスに保存されているすべてのデータ(コード履歴、プルリクエスト、問題など)にアクセスできなくなります。

Secure Source Manager インスタンス管理者ロールまたはインスタンス オーナー ロールを持つユーザーは、インスタンスを削除できます。

CMEK の組織のポリシー

Secure Source Manager は、CMEK 保護を必須にできる組織のポリシーの制約をサポートしています。

ポリシーでは、CMEK 保護に使用できる Cloud KMS CryptoKey を制限できます。

  • Secure Source Manager API が制約 constraints/gcp.restrictNonCmekServices のサービスの Deny ポリシーリストにある場合、Secure Source Manager は CMEK で保護されていない新しいインスタンスの作成を拒否します。

  • constraints/gcp.restrictCmekCryptoKeyProjects が構成されると、Secure Source Manager は、許可されたプロジェクト、フォルダ、または組織の CryptoKey によって保護された CMEK 保護インスタンスを作成します。

組織のポリシーの構成について詳しくは、CMEK の組織のポリシーをご覧ください。

次のステップ