2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Cloud KMS でセンシティブなデータを暗号化する

Last updated at Posted at 2019-05-05

パスワードや、秘密鍵など、平文でソース管理したくないセンシティブなデータをKMSで暗号化しておくことで、Cloud Buildのビルドタスク中に復号化して利用できる。

以下、Cloud KMS で暗号化する方法を簡単に紹介する。

質問・訂正・改善・苦情・ご意見あれば、コメントにてよろしくお願いします。

暗号化の流れ

事前準備:

  • アカウント認証・対象プロジェクトセット(こちら参照
  • APIの有効化
  • keyringの作成
  • keyの作成

事前準備ができたら:

  • 任意のkeyを使ってファイル(またはバイナリ)を暗号化

APIを有効化する

  • Google Cloud KMS API

いつもgcpのconsole上でポチポチしてるけど、下記のようにもできるみたい。

# APIを探す
gcloud services list --available | grep kms

=> cloudkms.googleapis.com                               Cloud Key Management Service (KMS) API

# APIを有効化する
gcloud services enable cloudkms.googleapis.com

=> Operation "operations/acf.326e9d96-1132-40e0-986c-7e3a0917ef12" finished successfully.

Keyrings を作成する

keyのグルーピングに使う模様。文字通り鍵を束ねるキーリング。
locationを指定して作成。

生成

gcloud kms keyrings create keyringname --location global

一覧表示

gcloud kms keyrings list --location global

=> NAME
projects/projectname/locations/global/keyRings/keyringname

Key を作成する

keyring、locationを指定して作成。

生成

gcloud kms keys create keyname --purpose encryption --location global --keyring default

必須オプション
--purpose {encryption | asymmetric-encription | asymmetric-signing}

  • encryption = 対称鍵
  • asymmetric-encription = 非対称鍵(暗号化用)
  • asymmetric-signing = 非対称鍵(署名用)

一覧表示

gcloud kms keys list --location global --keyring keyringname

=>NAME                                                                                   PURPOSE          LABELS  PRIMARY_ID  PRIMARY_STATE
projects/projectname/locations/global/keyRings/keyringname/cryptoKeys/keyname  ENCRYPT_DECRYPT          1           ENABLED

ファイルの暗号化

keyが作成できたら、そのkeyを使ってファイルの暗号化ができる。

暗号化

# 暗号化対象のファイルを用意
echo -n "sample text" >> sample.txt

# 暗号化
gcloud kms encrypt --location global \
  --keyring keyringname --key keyname \
  --plaintext-file sample.txt \
  --ciphertext-file sample.txt.encrypted

location, keyring, key, plaintext-file(暗号化する元ファイル), ciphertext-file(暗号化したファイルの出力先) を指定して暗号化する。

cat sample.txt.encrypted

=> $<��~F�ڴ/jS�E�����N��*gɢR�c4TNF�L��Qao�S1emrt(�]��6���l}q�v��f�q0yQ�?i�^

# ↑正しく暗号化できている

入出力について

plaintext-fileciphertext-file は 『-』 を指定することで標準入力出力につなぐことができる

cat sample.txt | gcloud kms encrypt --location global \
> --keyring default --key keypassword \
> --plaintext-file - \
> --ciphertext-file -

=>$<��~���)�Ɇ���,��O.�/���9NEd��b4TNFҕ0���6��F�$'���?>��u�r��*����}��9$��,&GHR

で、暗号化したファイルをどう使うの?

は、別途ビルドタスクの記事をご参照ください。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?