Cloud KMS で暗号鍵を作成する

このクイックスタートでは、所有するプロジェクトで Cloud Key Management Service を使用して暗号鍵を作成、使用する方法について説明します。この手順では、Google Cloud コンソールを使用して、Cloud KMS でキーリング、鍵、鍵バージョンを作成します。他の方法を使用する手順については、Autokey の概要キーリングを作成するキーを作成するをご覧ください。

このクイックスタートでは、コマンドラインを使用して Cloud KMS API にリクエストを送信します。クライアント ライブラリを使用して Cloud KMS API にリクエストを送信するプログラミングの例については、暗号化と復号をご覧ください。

始める前に

  1. Google Cloud アカウントにログインします。 Google Cloudを初めて使用する場合は、 アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud CLI をインストールします。

  3. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  4. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  5. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

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

  7. Cloud KMS API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    gcloud services enable cloudkms.googleapis.com
  8. ユーザー アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。 roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

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

    • PROJECT_ID: プロジェクト ID。
    • USER_IDENTIFIER: ユーザー アカウントの識別子。例: myemail@example.com
    • ROLE: ユーザー アカウントに付与する IAM ロール。
  9. Google Cloud CLI をインストールします。

  10. 外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。

  11. gcloud CLI を初期化するには、次のコマンドを実行します。

    gcloud init
  12. Google Cloud プロジェクトを作成または選択します

    プロジェクトの選択または作成に必要なロール

    • プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
    • プロジェクトを作成する: プロジェクトを作成するには、resourcemanager.projects.create 権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。詳しくは、ロールを付与する方法をご覧ください。
    • Google Cloud プロジェクトを作成します。

      gcloud projects create PROJECT_ID

      PROJECT_ID は、作成する Google Cloud プロジェクトの名前に置き換えます。

    • 作成した Google Cloud プロジェクトを選択します。

      gcloud config set project PROJECT_ID

      PROJECT_ID は、 Google Cloud プロジェクトの名前に置き換えます。

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

  14. Cloud KMS API を有効にします。

    API を有効にするために必要なロール

    API を有効にするには、serviceusage.services.enable 権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。

    gcloud services enable cloudkms.googleapis.com
  15. ユーザー アカウントにロールを付与します。次の IAM ロールごとに次のコマンドを 1 回実行します。 roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

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

    • PROJECT_ID: プロジェクト ID。
    • USER_IDENTIFIER: ユーザー アカウントの識別子。例: myemail@example.com
    • ROLE: ユーザー アカウントに付与する IAM ロール。

鍵リングと鍵

コンテンツを暗号化および復号するには、鍵リングの一部である Cloud KMS 鍵が必要です。

test という名前の鍵リングと quickstart という名前の鍵を作成します。これらのオブジェクトとその関係について詳しくは、オブジェクト階層の概要をご覧ください。

gcloud kms keyrings create "test" \
    --location "global"
gcloud kms keys create "quickstart" \
    --location "global" \
    --keyring "test" \
    --purpose "encryption"

list オプションを使用すると、作成した鍵の名前とメタデータを表示できます。

gcloud kms keys list \
    --location "global" \
    --keyring "test"

以下のように表示されます。

NAME                                                                      PURPOSE          PRIMARY_STATE
projects/PROJECT_ID/locations/global/keyRings/test/cryptoKeys/quickstart  ENCRYPT_DECRYPT  ENABLED

データの暗号化

鍵が作成されたので、その鍵を使用してテキストまたはバイナリのコンテンツを暗号化できます。

暗号化するテキストを mysecret.txt というファイルに保存します。

echo -n "Some text to be encrypted" > mysecret.txt

gcloud kms encrypt でデータを暗号化します。鍵情報を入力して、暗号化するプレーンテキスト ファイルの名前を指定し、暗号化されたコンテンツを含むファイルの名前を指定します。

gcloud kms encrypt \
    --location "global" \
    --keyring "test" \
    --key "quickstart" \
    --plaintext-file ./mysecret.txt \
    --ciphertext-file ./mysecret.txt.encrypted

encrypt メソッドを使用して、暗号化されたコンテンツを --ciphertext-file フラグで指定したファイルに保存します。

暗号テキストの復号

gcloud kms decrypt でデータを復号します。鍵情報を入力して、暗号化されたファイル(暗号テキスト ファイル)の名前を指定し、復号後のコンテンツを含むファイルの名前を指定します。

gcloud kms decrypt \
    --location "global" \
    --keyring "test" \
    --key "quickstart" \
    --ciphertext-file ./mysecret.txt.encrypted \
    --plaintext-file ./mysecret.txt.decrypted

decrypt メソッドを使用して、復号されたコンテンツを --plaintext-file フラグで指定したファイルに保存します。

暗号化されたコンテンツを復号するには、コンテンツの暗号化に使用したものと同じ鍵を使用する必要があります。

クリーンアップ

このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、リソースを含む Google Cloud プロジェクトを削除します。

自分の鍵で使用できるバージョンを一覧表示します。

gcloud kms keys versions list \
    --location "global" \
    --keyring "test" \
    --key "quickstart"

バージョンを破棄するには、次のコマンドを実行します。ここで、1 は破棄する鍵バージョンの番号です。

gcloud kms keys versions destroy 1 \
    --location "global" \
    --keyring "test" \
    --key "quickstart"

次のステップ