このページでは、Cloud Key Management Service(Cloud KMS)を使用して、次の対称鍵オペレーションを行う方法について説明します。
- Cloud KMS 鍵を使用して、テキストまたはバイナリのコンテンツ(平文)を暗号化します。
- Cloud KMS 鍵により暗号化された暗号テキストを復号します。
非対称鍵を使用して暗号化を行う場合は、非対称鍵によるデータの暗号化と復号をご覧ください。未加工の対称暗号化の詳細については、未加工の対称暗号化をご覧ください。
始める前に
暗号化メソッドと復号メソッドを呼び出すユーザーに、鍵に対する
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_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
以下を置き換えます。
KEY_NAME
: 暗号化に使用する鍵の名前。KEY_RING
: 鍵を含むキーリングの名前LOCATION
: キーリングを含む Cloud KMS のロケーション。FILE_TO_ENCRYPT
: 暗号化するファイルへのパス。ENCRYPTED_OUTPUT
: 暗号化された出力を保存するパス。
すべてのフラグと有効な値については、--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 で暗号化する前にコンテンツを base64 でエンコードする必要があります。
データを暗号化するには、POST
リクエストを行い、適切なプロジェクトと鍵情報を指定し、リクエスト本文の plaintext
フィールドに、暗号化する base64 でエンコードされたテキストを指定します。
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
以下を置き換えます。
PROJECT_ID
: 暗号化に使用するキーリングと鍵を含むプロジェクトの ID。LOCATION
: キーリングを含む Cloud KMS のロケーション。KEY_RING
: 暗号化に使用する鍵を含むキーリング。KEY_NAME
: 暗号化に使用する鍵の名前。PLAINTEXT_TO_ENCRYPT
: 暗号化する平文データ。encrypt
メソッドを呼び出す前に、平文を base64 でエンコードする必要があります。
base64 でエンコードされたデータを含むペイロードの例を次に示します。
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
復号
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
以下を置き換えます。
KEY_NAME
: 復号に使用する鍵の名前。KEY_RING
: 鍵を含むキーリングの名前LOCATION
: キーリングを含む Cloud KMS のロケーション。FILE_TO_DECRYPT
: 復号するファイルへのパス。DECRYPTED_OUTPUT
: 復号された出力を保存するパス。
すべてのフラグと有効な値については、--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/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
以下を置き換えます。
PROJECT_ID
: 復号に使用するキーリングと鍵を含むプロジェクトの ID。LOCATION
: キーリングを含む Cloud KMS のロケーション。KEY_RING
: 復号に使用する鍵を含むキーリング。KEY_NAME
: 復号に使用する鍵の名前。ENCRYPTED_DATA
: 復号する暗号化されたデータ。
base64 でエンコードされたデータを含むペイロードの例を次に示します。
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
次のステップ
- 未加工の対称暗号化の詳細について確認する。
- エンベロープ暗号化の詳細を読む。
- Cloud KMS Codelab によるデータの暗号化と復号を試してください。