シークレットの保管

次の手順では、Cloud Key Management Service の暗号鍵を使用してアプリケーション レイヤで暗号化されたシークレットを Cloud Storage バケットに格納する方法について説明します。

ここに示す手順は、Cloud KMS を使用してシークレットを保管する方法の 1 つにすぎません。各種オプションなどのシークレットの保管に関する詳細については、シークレット管理をご覧ください。

設定

シークレットを使用するユーザーとサービス、シークレットを管理するユーザーとサービスは、2 つのプロジェクトと 2 人のユーザーに分けて確実に職掌分散することをおすすめします。あるプロジェクトは Cloud KMS を使用して鍵を管理し、もう 1 つのプロジェクトは Cloud Storage バケットを使用してシークレットを保存します。

プロジェクトの作成

組織内に次のプロジェクトを作成します(この手順は roles/resourcemanager.organizationAdmin の役割が付与されたユーザーが行います)。

  1. シークレットの保管に使用される Cloud Storage バケットを含める Google Cloud Platform プロジェクトを作成します。シークレットはオブジェクトとしてバケットに格納されます。このトピックでは、このプロジェクトを [MY_STORAGE_PROJECT] と呼びます。
  2. Cloud KMS を使用してシークレットを暗号化および復号する鍵を管理する Google Cloud Platform プロジェクトを作成します。このトピックでは、このプロジェクトを [MY_KMS_PROJECT] と呼びます。

ユーザーの作成

この手順では、2 人のユーザーを作成します。1 人には暗号鍵を管理する権限を与え、もう 1 人には暗号鍵を使用する権限を与えます。

[MY_KMS_PROJECT] プロジェクトで次の操作を行います(この手順は [MY_KMS_PROJECT] プロジェクトのオーナー、または [MY_KMS_PROJECT] プロジェクトの roles/resourcemanager.organizationAdmin の役割を持つ別のユーザーが行います)。

  1. roles/cloudkms.admin の役割を User1 に付与します。このユーザーは鍵を管理できるようになります。
  2. roles/cloudkms.cryptoKeyEncrypterDecrypter の役割を User2 に付与します。このユーザーは、シークレットを含むファイルの暗号化と復号に暗号鍵を使用できるようになります。

    暗号化するユーザーと復号するユーザーを別にする場合は、暗号化するユーザーに roles/cloudkms.cryptoKeyEncrypter の役割を付与し、復号するユーザーに roles/cloudkms.cryptoKeyDecrypter の役割を付与します。

Storage バケットの作成

[MY_STORAGE_PROJECT] プロジェクトで次の操作を行います(この手順は [MY_STORAGE_PROJECT] プロジェクトのオーナーか [MY_STORAGE_PROJECT] プロジェクトの roles/storage.admin の役割を持つ別のユーザーが行います)。

  1. Storage バケットを作成します。このトピックでは、このバケットを [MY_BUCKET] と呼びます。
  2. [MY_BUCKET] バケットの roles/storage.objectAdmin の役割を User2付与します

暗号鍵の作成

この手順は User1 によって実行されます。

  1. storage という名前の鍵リングを作成します。鍵リングの名前はプロジェクトに固有です。鍵リングの名前変更や削除はできません。gcloud コマンドライン ツールで鍵リングを作成できます。

    gcloud kms keyrings create storage --location global
    
  2. storage 鍵リングを使用して、暗号化用の mykey という名前の鍵を作成します。鍵の名前は鍵リングで一意になります。鍵の名前変更や削除はできませんが、その鍵バージョンは破棄できます。gcloud コマンドライン ツールで鍵を作成します。最初の鍵バージョンは自動的に作成されます。

    gcloud kms keys create mykey --location global \
      --keyring storage --purpose encryption
    

暗号鍵の作成の詳細については、鍵リングと鍵の作成をご覧ください。

シークレットを含むファイルの暗号化

この手順は User2 によって実行されます。

  1. ローカルマシンで、シークレットを含めるファイル(mysecret.txt など)を作成します。
  2. 鍵を使用して mysecret.txt を暗号化します。この場合は、[MY_KMS_PROJECT] プロジェクト、storage 鍵リング、mykey 鍵に基づいています。暗号化されたファイルを mysecret.txt.encrypted に書き込みます。
    Cloud KMS で鍵を使用してファイルを暗号化する例については、データの暗号化のクイックスタートをご覧ください。
  3. 暗号化されたファイル mysecret.txt.encrypted[MY_BUCKET] バケットにアップロードします。
  4. [オプション] ローカルマシンからプレーン テキストの mysecret.txt ファイルを削除します。

シークレットを含むファイルの復号

この手順は User2 によって実行されます。

  1. [MY_BUCKET] バケットからローカルマシンに mysecret.txt.encryptedダウンロードします。
  2. 暗号化に使用したのと同じ鍵を使用して mysecret.txt を復号します。復号されたファイルを mysecret.txt.decrypted に書き込みます。
    Cloud KMS で鍵を使用してファイルを復号する例については、データの暗号化のクイックスタートをご覧ください。
  3. プレーン テキスト ファイル mysecret.txt.decrypted を使用します。
  4. [オプション] 復号されたファイルの使用が終了したら、それをローカルマシンから削除します。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...