このトピックでは、対称鍵による次の操作を実施する方法について説明します。
- Cloud Key Management Service の鍵を使用して、テキストまたはバイナリのコンテンツ(平文)を暗号化します。
- Cloud KMS 鍵により暗号化された暗号テキストを復号します。
非対称鍵を使用して暗号化を行う場合は、非対称鍵によるデータの暗号化と復号をご覧ください。 未加工の対称暗号化については、未加工の対称暗号化をご覧ください。
始める前に
鍵リングと鍵の作成の説明に従って、鍵リングと鍵を作成します。
encrypt メソッドと decrypt メソッドを呼び出すユーザーに、暗号化または復号に使用する鍵に対する
cloudkms.cryptoKeyVersions.useToEncrypt
権限とcloudkms.cryptoKeyVersions.useToDecrypt
権限があることを確認してください。暗号化または復号をユーザーに許可する方法の 1 つは、ユーザーをその鍵の
roles/cloudkms.cryptoKeyEncrypter
、roles/cloudkms.cryptoKeyDecrypter
、またはroles/cloudkms.cryptoKeyEncrypterDecrypter
IAM 役割に追加することです。なお、roles/cloudkms.admin
ロールではこれらの 2 つの権限は付与されません。詳細については、権限と役割をご覧ください。
暗号化
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
key は、暗号化に使用する鍵の名前に置き換えます。key-ring は、鍵が配置されている鍵リングの名前に置き換えます。location を鍵リングの Cloud KMS の場所に置き換えます。file-with-data-to-encrypt と file-to-store-encrypted-data は、平文データを読み取り、暗号化された出力を保存するためのローカル ファイルパスに置き換えます。
すべてのフラグと有効な値については、--help
フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について学び、Cloud KMS PHP SDK をインストールします。
Python
このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。
API
これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。
JSON と REST API を使用する場合は、Cloud KMS で暗号化する前にコンテンツを base-64 でエンコードする必要があります。
データを暗号化するには、POST
リクエストを行い、適切なプロジェクトと鍵情報を指定し、リクエスト本文の plaintext
フィールドに、暗号化する Base64 エンコードされたテキストを指定します。
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
base64 でエンコードされたデータを含むペイロードの例を次に示します。
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
復号
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
key は、復号に使用する鍵の名前に置き換えます。key-ring は、鍵が配置される鍵リングの名前に置き換えます。 location を鍵リングの Cloud KMS の場所に置き換えます。file-path-with-encrypted-data と file-path-to-store-plaintext は、暗号化されたデータを読み取り、復号された出力を保存するためのローカル ファイルパスに置き換えます。
すべてのフラグと有効な値については、--help
フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について学び、Cloud KMS PHP SDK をインストールします。
Python
このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。
API
これらの例では、HTTP クライアントとして curl を使用して API の使用例を示しています。アクセス制御の詳細については、Cloud KMS API へのアクセスをご覧ください。
Cloud KMS から JSON で返される復号されたテキストは、Base64 エンコードされています。
暗号化されたデータを復号するには、POST
リクエストを行い、適切なプロジェクトと鍵情報を指定し、リクエスト本文の ciphertext
フィールドに復号する暗号化された(暗号)テキストを指定します。
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
base64 でエンコードされたデータを含むペイロードの例を次に示します。
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
次のステップ
- 未加工の対称暗号化の詳細について確認する。
- エンベロープ暗号化の詳細を読む。
- Cloud KMS Codelab によるデータの暗号化と復号を試してください。