GCP Cloud KMS使って、セキュリティーデータファイルを暗号化


実施手順のまとめ

  • キーリングおよび暗号鍵の作成
  • KMSの暗号鍵で秘密ファイルを暗号化する
  • 秘密ファイルを利用する際、暗号鍵で復号化する

キーリングおよび暗号鍵の作成

Cloud Build で SSH 認証鍵を使用するには、Cloud KMS CryptoKey を使用して鍵を暗号化、復号する必要があります。CryptoKey は KeyRing オブジェクトに格納されます。

KeyRing と CryptoKey を作成するには、gcloud kms keyrings create および gcloud kms keys create コマンドを使用します。

KeyRing を作成するには、shell またはターミナル ウィンドウで次のコマンドを実行します。このチュートリアルでは、KeyRing my-private-keyring に名前を付けます。

# Create a Cloud KMS KeyRing
gcloud kms keyrings create my-private-keyring --location=global

コンソール画面で作成結果確認

次に、my-private-key という CryptoKey を作成します。このコマンドは、my-private-keyring KeyRing に my-private-key CryptoKey を作成します。

# create a CryptoKey 
gcloud kms keys create my-private-key --location=global --keyring=my-private-keyring --purpose=encryption

コンソール画面で作成結果確認

KMSの暗号鍵で秘密ファイルを暗号化する

秘密ファイルがあります。

my_secret.txt
I'm falling in love with Aosora

これは見られたら大変なので暗号化をします。
暗号化するには、gcloud kms encrypt コマンドを使用します。

次のコマンドを実行します。正しいパスを指定してください。

# Encrypt a secret
gcloud kms encrypt --plaintext-file=/full/path/to/my_secret.txt \
--ciphertext-file=/full/path/to/output/my_secret.txt.enc   \
--location=global --keyring=my-private-keyring --key=my-private-key

# 暗号化された内容を見てみる
cat my_secret.txt.enc 
>
>$u?ڤS??f?C???r??`?p@??4 ?e???I???}??:x&]g???c??C[&??ܡ~l|??o????t?z??/?8?
>                                                                        x  W?C_:? b??Q????Xw?m#?

# 秘密を暗号化しましたので、生データを削除します。
rm my_secret.txt

暗号化(encrypt)するため、'cloudkms.cryptoKeyVersions.useToEncrypt'権限を持つアカウントで実施する必要です。
通常ProjectのEditorでも、この権限はありません。
Ownerアカウントで実施するか、この権限を個別で追加するかという対策は必要です。

秘密ファイルを利用する際、暗号鍵で復号化する

# Decrypt a secret
gcloud kms decrypt --ciphertext-file=/full/path/to/my_secret.txt.enc \
--plaintext-file=/full/path/to/output/my_secret.txt \
--location=global --keyring=my-private-keyring --key=my-private-key

復号化(decrypt)するため、'cloudkms.cryptoKeyVersions.useToDecrypt'権限を持つアカウントで実施する必要です。
通常ProjectのEditorでも、この権限はありません。
Ownerアカウントで実施するか、この権限を個別で追加するかという対策は必要です。



ご覧して頂き、どうも有難う御座います!
DSS Ben