バックエンドエンジニアのリョウタです。
LIGには四半期の締め会で「感謝エピソード」なるものを事前に募り、その内のいくつかを発表するという風習があります。
前期の締め会もアカウントプランナーのノブが必死にエピソード募集の声かけをし、最終的に250件以上のエピソード(うち30件くらいはノブ本人のサクラ)が集まったそうです。
かくいう私は、昔から行事ごとに参加しない捻くれ者タイプだったので、どうにもこういうときに斜に構えてしまうんですよね。お察しのとおり、一件も投稿しなかったわけです。
でも、感謝はしているんだ! めっちゃ感謝しているんだ!
というわけで、今回はエンジニアらしく感謝の気持ちをCloud KMSで暗号化して伝えようと思います。
Cloud KMSとは
Cloud KMS(Cloud Key Management System)はGCP(Google Cloud Platform)のサービスの一つです。キーリングとキーを用いて、テキストを暗号・復号化することができます。
秘密鍵やその他秘匿情報を安全に管理し、Cloud Buildと組み合わせて利用するのに最適です。
暗号化してみる
今回は、この四半期で一緒に案件をやってきたエンジニアと、ノブに感謝エピソードを送りたいと思います。
暗号前のファイルを用意
まずはそれぞれへのメッセージを用意します。ほんの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で暗号化したラブレターで思いを伝えてみるのも手かもしれません。
それではまた。
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。