GoogleCloudPlatform

Cloud KMSを使ってみる

More than 1 year has passed since last update.

概要

GCPでは以下3つの暗号化ソリューションを提供しており、今回は暗号化キーの作成や管理をクラウドベースで行うことができるサービスであるCloud KMSを使ってみる。(Encryption by defaultは利用者が気にしなくてもGCP側で勝手に暗号化してくれる)

Screen Shot 2017-04-12 at 17.29.28.png

引用:https://cloudplatform-jp.googleblog.com/2017/01/managing-encryption-keys-in-the-cloud-introducing-Google-Cloud-Key-Management-Service.html

Cloud KMS API を利用することで介すことで、秘密管理やエンベロープ暗号化ソリューションの一部として、キーの作成、使用、ローテーション、破棄を可能にしている。

鍵の作成

手順1. KeyRing名とlocationを設定
KeyRingはCryptoKeyをグルーピングしたものであり、GCPの特定のロケーションに属する。(グルーピングした方が管理しやすいため)。

resources2.png
引用元:https://cloud.google.com/kms/docs/object-hierarchy

Screen Shot 2017-04-12 at 16.44.58.png

手順2. Key名を設定
CryptoKeysはKeyRingからの権限を継承する。
Screen Shot 2017-04-12 at 17.04.38.png

作成すると以下の画面で確認できる。
Screen Shot 2017-04-12 at 17.05.20.png

Cloud KMSで管理している鍵を使って、ファイルの暗号化と復号を行う。

暗号化と復号を行うPythonのコードはクイックスタートのコードを使用する。

gsutil cp -r gs://cloudkms-eap-resources/quickstart .

以下のコマンドでファイルを暗号化

$ python crypter.py $PROJECT_NAME encrypt /tmp/test_file /tmp/test_file.encrypted
$ cat /tmp/test_file.encrypted 
CiQAkyqlpvH5W7e/W5nZluSZeitnT9gPENSj+s3gG0tQLqQPJKMSMwCiNopxhxTc7nBaS0u8ZtDzr/Pjz8a7Lqb2wF7LzcOwLvVPo8+
CMR7uWffW7FvYZ61/pA==

以下のコマンドでファイルを復号

$ python crypter.py $PROJECT_NAME decrypt /tmp/test_file.encrypted /tmp/test_file.decrypted
$ cat /tmp/test_file.decrypted 
Hello KMS

API経由で鍵を操作し、ファイルに対して暗号化と復号ができることを確認した。