GCPのCloud Key Management Service(KMS)を使用したファイルの暗号化についての記事になります。本記事ではgcloudのインストールは省略させて頂きます。
KMSの概要
Cloud Key Management Serviceとは
GCPで提供されている、暗号化などで使用する鍵を管理してくれるサービスです。
個人情報や認証情報など取り扱いが慎重なデータは暗号化をする事が多いと思います。暗号化をする際に考える悩む事として鍵の管理があります。暗号化で使用する鍵をKMSで管理する事で、鍵へのアクセスIAMで制限出来るので管理が楽になります。
gcloudを使用した暗号化の方法
最初に暗号化をするファイルの作成をします。
$ echo Hello > sample.txt
$ cat sample.txt
Hello
KMSに移動
ブラウザでGCPのWebコンソールを開き、セキュリティの暗号鍵に移動します。
暗号鍵をグルーピングするキーリングのリストが表示されます。画面上部のキーリングの作成から作成していきます。
KeyRingの作成
キーリングの名を入力して作成します。
Keyの作成
鍵名を入力して作成をします。
鍵のローテーション期間の設定は標準で90日設定とされていますが、実施しない設定をする事も可能です。また、GCP側で作成した鍵を使用する事が出来ない場合は、自前で作成した鍵をインポートして暗号化や複合化に使用する事が出来ます。
作成した鍵をリストで確認する事が出来ます。
暗号化
gclodコマンドのkmsを使用して暗号化を行います。
{project}には、使用しているプロジェクトを入れてください。
$ gcloud kms encrypt --project {project} \
--keyring sample \
--key sample \
--plaintext-file sample.txt \
--ciphertext-file sample.enc \
--location global
複合化
複合化は以下で行う事が出来ます。
$ gcloud kms decrypt --project {project} \
--keyring sample \
--key sample \
--plaintext-file sample.txt \
--ciphertext-file sample.enc \
--location global
Terraformを用いた鍵の作成
Terraformというインフラ構築のツールで鍵を作成したい場合は以下になります。
resource "google_kms_key_ring" "keyring" {
name = "sample"
location = "global"
}
resource "google_kms_crypto_key" "key" {
name = "sample"
key_ring = google_kms_key_ring.keyring.id
lifecycle {
prevent_destroy = true
}
}