EKM 接続を作成する

このページでは、Virtual Private Cloud(VPC)ネットワークを介して外部鍵管理(EKM)プロバイダに接続するように Cloud External Key Manager(Cloud EKM)を設定する方法について説明します。

VPC 経由で EKM をサポートする Cloud KMS のロケーションでは、VPC を介して外部鍵を使用できます。詳細については、Cloud KMS のロケーションページをご覧ください。

用語

  • EKM 接続

    外部鍵マネージャーへの接続を構成するために使用される Cloud KMS リソース。Google Cloud コンソールでは、これを VPC 接続を介した EKM と呼びます。

  • VPC プロジェクト

    外部鍵マネージャーへの接続に使用される VPC リソースを保持するプロジェクト。

  • 鍵プロジェクト

    Cloud KMS で EKM 接続リソースと Cloud EKM 鍵を保持するプロジェクト。鍵プロジェクトは VPC プロジェクトと同じにできますが、必須ではありません。

  • 暗号空間

    外部鍵管理パートナー内のリソースのコンテナ。暗号空間は、一意の暗号空間パスによって識別されます。暗号空間のパスの形式は、外部鍵管理パートナーによって異なります(例: v0/cryptospaces/YOUR_UNIQUE_PATH)。

始める前に

以下の手順を完了すると、Cloud EKM 鍵を使用してデータを保護できるようになります。

新しいプロジェクトを作成する

  1. Google Cloud Console で、[リソースの管理] ページに移動します。

    [リソースの管理] ページに移動

  2. 新しい Google Cloud プロジェクトを作成するか、既存のプロジェクトを選択します。

  3. Google Cloud プロジェクトで課金が有効になっていることを確認します

  4. 詳細については、Cloud EKM 料金をご覧ください。

Cloud KMS を有効にする

  1. プロジェクトの Cloud Key Management Service API を有効にします。

    Cloud Key Management Service API を有効にする

  2. プロジェクトの Cloud EKM サービス アカウントをメモしておきます。次の例では、PROJECT_NUMBER を Google Cloud プロジェクトのプロジェクト番号に置き換えます。この情報は、Google Cloud Console を使用して Cloud EKM 鍵を作成するたびに表示されます。

    service-PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com
    

gcloud CLI が最新であることを確認する

Google Cloud CLI を使用する場合は、次のコマンドを使用して最新の状態であることを確認します。

gcloud CLI

gcloud components update

VPC ネットワークを準備する

VPC ネットワークを設定するには、次の 2 つの方法があります。

デフォルトでは、新しいプロジェクトにはファイアウォール ルールが事前に設定された自動モード ネットワークが含まれます。 VPC ネットワークが本番環境で使用されない場合、最も早い方法はデフォルトの自動モード ネットワークです。

オンプレミスで外部鍵マネージャーを実行し、ハイブリッド接続で接続する場合は、サブネット IP アドレス範囲を制御できるカスタムモードのネットワークを使用する必要があります。

VPC を設定する手順は次のとおりです。

  1. 限定公開の Google アクセスの有効化

    外部鍵マネージャーは、各リクエストに含まれる OIDC トークンを検証する必要があります。トークンを確認するには、www.googleapis.com ドメイン名から OAuth2 公開鍵を取得する必要があります。外部キー マネージャーが Google Cloud で実行され、インターネット経由でアクセスできない場合(例: 外部 IP を持たない VM、ファイアウォールによってブロックされている VM)は、限定公開の Google アクセスの構成の手順に沿って操作してください。

  2. IP 範囲 35.199.192.0/19 のファイアウォール構成

    Cloud EKM からのリクエストは、この範囲から送信されます。外部鍵マネージャーがリッスンするポートの TCP のファイアウォール ルールを、上り(内向き)と下り(外向き)の許可の両方に設定します。

ハイブリッド接続を設定する

オンプレミスで外部鍵マネージャーを実行している場合は、ハイブリッド接続ソリューションを使用して VPC をオンプレミス ネットワークに接続します。接続を設定したら、次の手順を行います。

  1. 限定公開の Google アクセスの有効化

    外部鍵マネージャーは、各リクエストに含まれる OIDC トークンを検証する必要があります。トークンを確認するには、www.googleapis.com ドメイン名から OAuth2 公開鍵を取得する必要があります。外部鍵マネージャーがオンプレミスで実行され、インターネット経由でアクセスできない場合は、オンプレミス ホスト用の限定公開の Google アクセスの構成の手順に沿って操作します。

  2. IP 範囲 35.199.192.0/19 のファイアウォール構成

    Cloud EKM からのリクエストは、この範囲から送信されます。外部鍵マネージャーがリッスンしているポートで TCP トラフィックを許可するように、オンプレミスのネットワーク ファイアウォールまたは同様の機器を構成します。

  3. VPC に IP 範囲 35.199.192.0/19 へのリターンルートがあることを確認する

    オンプレミス ネットワークには、宛先 35.199.192.0/19 へのルートが必要です。この要件を満たす方法については、オンプレミス ターゲットへの戻りルート戦略をご覧ください。

オンプレミス ターゲットへの戻りルート戦略

  • 静的ルーティングを使用する Cloud VPN トンネルの場合は、オンプレミス ネットワーク内に、宛先が 35.199.192.0/19 でネクストホップが Cloud VPN トンネルであるルートを手動で作成します。ポリシーベースのルーティングを使用する Cloud VPN トンネルの場合は、35.199.192.0/19 を含めるように、オンプレミスの VPN ゲートウェイのリモート トラフィック セレクタと Cloud VPN のローカル トラフィック セレクタを構成します。

  • 動的ルーティングを使用する Cloud VPN トンネルまたは Cloud Interconnect の場合は、トンネルまたは相互接続のアタッチメント(VLAN)を管理する Cloud Router の BGP セッションの 35.199.192.0/19カスタムルート アドバタイズを構成します。

外部鍵マネージャーを設定する

EKM プロバイダの手順に沿って、EKM を設定します。

暗号空間を設定する

パートナー管理の EKM 契約の一部として Cloud EKM を使用している場合は、パートナーのプロビジョニング プロセスの一環としてこの手順が行われます。

EKM プロバイダが Cloud KMS の EKM 鍵管理と互換性がある場合は、EKM で次の設定と構成の手順を行う必要があります。

  • EKM で Cloud KMS マネージド リソースの暗号空間を作成します。

  • Cloud KMS サービス アカウントに、暗号空間とその中で作成された鍵へのアクセス権を付与します。

  • Key Access Justifications ポリシーを設定して、許可または拒否するアクセスの理由を定義します。

これらの各ステップの正確なプロセスは、EKM によって異なります。詳細については、EKM プロバイダのドキュメントをご覧ください。

Service Directory のサービス エンドポイントを作成する

外部鍵マネージャーのプライベート IP アドレスとポートを指す VPC プロジェクトに、Service Directory サービス エンドポイントを作成して構成します。複数の EKM レプリカの前でロードバランサを使用する場合は、ロードバランサの IP アドレスとポートを使用します。 Service Directory のサービス エンドポイントの [network] フィールドに値が入力されていることを確認します。

Cloud EKM に VPC へのアクセスを承認する

鍵プロジェクトと VPC プロジェクトが同じであっても、鍵プロジェクトごとに、プロジェクトに代わって Cloud EKM が VPC にアクセスすることを承認する必要があります。アクセスを承認することで、鍵プロジェクト内の鍵で VPC プロジェクトの VPC を使用できるようになります。

  1. プロジェクトに Cloud EKM サービス アカウントが存在することを確認します。

    gcloud CLI

    gcloud beta services identity create \
      --service=cloudkms.googleapis.com \
      --project=KEY_PROJECT_ID
    
  2. VPC プロジェクトでの servicedirectory.viewer ロールと servicedirectory.pscAuthorizedService ロールを service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com に付与します。プロジェクト ID と番号の取得に関するヘルプについては、プロジェクトの作成と管理をご覧ください。

    gcloud CLI

    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member='serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com' \
      --role='roles/servicedirectory.viewer'
    
    gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
      --member='serviceAccount:service-KEY_PROJECT_NUMBER@gcp-sa-ekms.iam.gserviceaccount.com' \
      --role='roles/servicedirectory.pscAuthorizedService'
    

EKM 接続を作成する

外部鍵マネージャーを Cloud EKM に接続するには、鍵プロジェクトで EKM 接続を作成します。

コンソール

  1. Google Cloud コンソールで、[KMS インフラストラクチャ] ページに移動します。

    KMS インフラストラクチャに移動

  2. [接続を作成] をクリックします。

  3. [接続名] に、接続の名前を入力します。

  4. [リージョン] で、EKM 接続のロケーションを選択します。この接続に関連付けられている Cloud KMS 鍵は、接続と同じロケーションに存在する必要があります。

  5. [サービス リソース ID(self_link)] フィールドに、Service Directory のサービス エンドポイントを作成するのセクションで作成した Service Directory サービスの値を入力します。 Service Directory サービスは、接続と同じロケーションに存在する必要があります。

  6. [ホスト名] フィールドに、外部鍵マネージャーのホスト名を追加します。

  7. [証明書] で、[証明書を追加] をクリックし、外部鍵マネージャーの 1 つ以上の X.509 サーバー証明書をアップロードします。証明書は DER 形式にする必要があります。

  8. [EKM 管理モード] に対して、手動で管理する外部鍵に EKM 接続を使用する場合は [手動] を選択し、調整された外部鍵に EKM 接続を使用する場合は [Cloud KMS] を選択します。

  9. [EKM 管理モード] に [Cloud KMS] を選択した場合は、[暗号空間のパス] フィールドに、EKM で指定した暗号空間のパスを入力します。

  10. 省略できます。このプロジェクトとロケーションのデフォルト接続として EKM 接続を設定するには、[接続をデフォルトとして設定する] チェックボックスをオンにします。 別の EKM 接続が、このプロジェクトとロケーションのデフォルト接続として現在設定されている場合、この EKM 接続が既存のデフォルトに置き換えられます。

  11. [作成] をクリックします。

gcloud

コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします

手動で管理する外部鍵の EKM 接続を作成するには、次のコマンドを実行します。

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode manual

以下を置き換えます。

  • EKM_CONNECTION: EKM 接続の名前。
  • LOCATION: EKM 接続を作成する Cloud KMS のロケーション。この接続に関連付けられている Cloud KMS 鍵は、接続と同じロケーションに存在する必要があります。
  • SERVICE_DIRECTORY_SERVICE: 接続用の Service Directory サービスのリソース ID。
  • HOSTNAME: 外部鍵マネージャーのホスト名。
  • SERVER_CERTIFICATE_FILES: 外部鍵マネージャーの X.509 サーバー証明書を含むファイルのカンマ区切りのリスト。証明書は DER 形式にする必要があります。

調整された外部鍵の EKM 接続を作成するには、次のコマンドを実行します。

gcloud beta kms ekm-connections create EKM_CONNECTION \
    --location LOCATION \
    --service-directory-service SERVICE_DIRECTORY_SERVICE \
    --hostname HOSTNAME \
    --server-certificates-files SERVER_CERTIFICATE_FILES \
    --key-management-mode cloud-kms \
    --crypto-space-path CRYPTO_SPACE_PATH

以下を置き換えます。

  • EKM_CONNECTION: EKM 接続の名前。
  • LOCATION: EKM 接続を作成する Cloud KMS のロケーション。この接続に関連付けられている Cloud KMS 鍵は、接続と同じロケーションに存在する必要があります。
  • SERVICE_DIRECTORY_SERVICE: 接続用の Service Directory サービスのリソース ID。
  • HOSTNAME: 外部鍵マネージャーのホスト名。
  • SERVER_CERTIFICATE_FILES: 外部鍵マネージャーの X.509 サーバー証明書を含むファイルのカンマ区切りのリスト。証明書は DER 形式にする必要があります。
  • CRYPTO_SPACE_PATH: EKM プロバイダが提供する暗号空間のパス。

すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。

API

これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。

調整された外部鍵の EKM 接続を作成するには、次のコマンドを実行します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
      "keyManagementMode": "CLOUD_KMS",
      "cryptoSpacePath": "CRYPTO_SPACE_PATH"
    }'

以下を置き換えます。

  • PROJECT_ID: EKM 接続を作成するプロジェクトの ID。
  • LOCATION: EKM 接続を作成する Cloud KMS。
  • EKM_CONNECTION: EKM 接続に使用する名前。
  • SERVER_CERTIFICATES: リーフ サーバー証明書を表す最大 10 個の Certificate オブジェクトのリスト。
  • HOSTNAME: 外部鍵マネージャーのホスト名。
  • CRYPTO_SPACE_PATH: EKM プロバイダが提供する暗号空間のパス。

手動で管理する外部鍵の EKM 接続を作成するには、次のコマンドを実行します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConnections" \
    --request "POST" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --header "x-goog-user-project: PROJECT_ID" \
    --data '{
      "name": "EKM_CONNECTION",
      "serviceResolvers": [
        {
          "serviceDirectoryService": "SERVICE_DIRECTORY_SERVICE",
          "hostname": "HOSTNAME",
          "serverCertificates": [
            {
              SERVER_CERTIFICATES
            }
          ]
        }
      ]
    }'

以下を置き換えます。

  • PROJECT_ID: EKM 接続を作成するプロジェクトの ID。
  • LOCATION: EKM 接続を作成する Cloud KMS。
  • EKM_CONNECTION: EKM 接続に使用する名前。
  • SERVER_CERTIFICATES: リーフサーバー証明書を表す最大 10 個の Certificate オブジェクトのリスト。
  • HOSTNAME: 外部鍵マネージャーのホスト名。

詳しくは、EkmConnection.create API ドキュメントをご覧ください。

証明書のステータス

EKM 接続用の証明書をアップロードしたら、KMS インフラストラクチャのページで、EKM 接続の全体的な証明書ステータスと各証明書のステータスを確認できます。

EKM 接続は、各接続の [証明書のステータス] 列に全体的なステータスが表示されます。EKM 接続のステータスが有効でない場合は、EKM 接続の証明書を更新することをおすすめします。

EKM 接続の証明書と個別の証明書はどちらも次のステータスになります。

  • 有効: 証明書が有効で、有効期限は近くではありません。
  • 30 日以内に期限切れ: 証明書は有効ですが、30 日以内に有効期限が切れます。
  • 期限切れ: 証明書の有効期限が切れており、無効です。期限切れの証明書を更新することをおすすめします。
  • まだ有効ではない: 証明書が有効ではありません。これは、証明書の開始日が将来の日付である場合に発生する可能性があります。

証明書が有効期限切れである場合は、Google Cloud コンソールで EKM 接続を更新します。

コンソール

  1. Google Cloud コンソールで、[KMS インフラストラクチャ] ページに移動します。

    KMS インフラストラクチャに移動

  2. 更新が必要な証明書で VPC 接続経由の EKM の名前をクリックします。

  3. [接続を編集] をクリックします。

  4. [証明書を追加] をクリックして、外部鍵マネージャーの X.509 サーバー証明書を 1 つ以上アップロードします。証明書は DER 形式にする必要があります。

  5. 期限切れの証明書を削除します。期限切れの証明書にカーソルを合わせ、右側の [削除] アイコンを選択します。

  6. [接続の更新] をクリックして、VPC 接続を介して EKM を更新します。

EKM 接続をデフォルトに設定する

EKM 接続は、特定のプロジェクトとロケーションのデフォルト接続として設定できます。デフォルトの EKM 接続がプロジェクトとロケーションに設定されている場合、そのロケーションのキーリングに作成された VPC 鍵による新しい Cloud EKM は、別の EKM 接続が選択されていない限り、示された EKM 接続を使用します。

EKM 接続をプロジェクトとロケーションのデフォルトとして設定するには、次の手順を行います。

コンソール

  1. Google Cloud コンソールで、[KMS インフラストラクチャ] ページに移動します。

    KMS インフラストラクチャに移動

  2. デフォルトとして設定する EKM 接続をクリックします。

  3. [接続を編集] をクリックします。

  4. [デフォルトの接続] で、[接続を LOCATION のデフォルトとして設定する] チェックボックスをオンにします。

  5. [接続の更新] をクリックします。

gcloud CLI

gcloud beta kms ekm-config update
  --location=LOCATION
  --default-ekm-connection=projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION

以下を置き換えます。

  • LOCATION: デフォルトの EKM 接続を設定する Cloud KMS。
  • PROJECT_ID: デフォルトの EKM 接続を設定するプロジェクトの名前。
  • DEFAULT_EKM_CONNECTION: このロケーションのデフォルトとして設定する EKM 接続の名前。EKM 接続のロケーションは、LOCATION で指定されたロケーションと一致する必要があります。

API

ロケーションのデフォルトの EKM 接続を設定するには、EkmConfig.patch メソッドを使用します。

curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/ekmConfig" \
    --request "PATCH" \
    --header "authorization: Bearer TOKEN" \
    --header "content-type: application/json" \
    --data '{"defaultEkmConnection": "projects/PROJECT_ID/locations/LOCATION/ekmConnections/DEFAULT_EKM_CONNECTION"}'

以下を置き換えます。

  • PROJECT_ID: デフォルトの EKM 接続を設定するプロジェクトの ID。
  • LOCATION: デフォルトの EKM 接続を設定する Cloud KMS。
  • DEFAULT_EKM_CONNECTION: このロケーションのデフォルトとして設定する EKM 接続の名前。EKM 接続のロケーションは、LOCATION で指定されたロケーションと一致する必要があります。

別の EKM 接続がロケーションのデフォルトとして設定されている場合、選択した EKM 接続がデフォルトに置き換えられます。特定のプロジェクトとロケーションで有効にできる EKM 接続は 1 つだけです。

次のステップ