【BiTT】俺のクローン作るしかなくね!?
【BiTT】俺のクローン作るしかなくね!?
2020.11.18

感謝の気持ちをCloud KMSで暗号化して送ってみた

リョウタ

バックエンドエンジニアのリョウタです。

LIGには四半期の締め会で「感謝エピソード」なるものを事前に募り、その内のいくつかを発表するという風習があります。

前期の締め会もアカウントプランナーのノブが必死にエピソード募集の声かけをし、最終的に250件以上のエピソード(うち30件くらいはノブ本人のサクラ)が集まったそうです。

かくいう私は、昔から行事ごとに参加しない捻くれ者タイプだったので、どうにもこういうときに斜に構えてしまうんですよね。お察しのとおり、一件も投稿しなかったわけです。

でも、感謝はしているんだ! めっちゃ感謝しているんだ!

というわけで、今回はエンジニアらしく感謝の気持ちをCloud KMSで暗号化して伝えようと思います。

Cloud KMSとは

Cloud KMS(Cloud Key Management System)はGCP(Google Cloud Platform)のサービスの一つです。キーリングとキーを用いて、テキストを暗号・復号化することができます。

秘密鍵やその他秘匿情報を安全に管理し、Cloud Buildと組み合わせて利用するのに最適です。

暗号化してみる

今回は、この四半期で一緒に案件をやってきたエンジニアと、ノブに感謝エピソードを送りたいと思います。

※GCPアカウントが必要になります。また、gcloud cliが利用可能な状態にしてください。

暗号前のファイルを用意

まずはそれぞれへのメッセージを用意します。ほんの3行くらいですが感謝を込めたメッセージたちです。

Cloud KMS APIを有効化

APIのライブラリからKMSを探すか、こちらのリンクからCloud KMS APIを有効化します。

キーリングを作成する

キーリングとは鍵を束ねるリングですね。キーホルダーみたいなものだと思っていてください。

「ナビゲーションメニュー」から「セキュリティ」→「暗号鍵」に進んでください。「キーリング作成」を押下し、キーリングを作成します。入力するのはキーリングの名前だけでOKです。

鍵を作成する

今回は個々のファイルに、個々の鍵を用意します。他の人宛のメッセージをみられたら恥ずかしいですからね。

こんな感じになりました。

鍵に復号化する権限を付与する

鍵を選択し、右のウィンドウから「権限」→「メンバーを追加」を押下します。

「メンバー」に対象のアカウントを入力し、「ロール」に「Cloud KMS」→「クラウド KMS 暗号鍵の復号化」を選択します。

ファイルを暗号化する

ローカルで先ほど作ったテキストファイルを暗号化します。手順はこちらの公式ドキュメントにある通りです。

gcloud kms encrypt \
–plaintext-file=nobu.txt \
–ciphertext-file=nobu.txt.encrypted \
–location=global \
–keyring=thanks-episode \
–key=nobu

–plaintext-fileに元のファイル、–ciphertext-fileに暗号化したあとのファイル名を入れます。

これで準備完了!

送りつける

さて、日々の感謝を暗号化したファイル達を送りつけます。同時に復号化するために必要な下記の情報も併せて送ります。

  • GCPのproject-id
  • キーリング名
  • キーネーム

gcloud kms decrypt \
–plaintext-file=- \
–ciphertext-file=nobu.txt.encrypted \
–location=global \
–keyring=thanks-episode \
–key=nobu

–plaintext-fileを-とすると標準出力されます。

まったく無意味ですが、ドリルにはメッセージ自体もbase64にして送りつけました。

ノブならエンジニアじゃなくても越えられると信じてます。

まとめ

いかがでしたか。思ったより簡単に暗号・復号化ができたかと思います。

今回は鍵の権限をメッセージごとに分けたため、たとえテキストが他人の手に渡っても、復号化に使う鍵の権限を持っていないユーザーは復号化することができません。安全ですね。

恥ずかしがり屋のアナタ、あるいはエンジニアに恋をしているアナタは、Cloud KMSで暗号化したラブレターで思いを伝えてみるのも手かもしれません。

それではまた。