Pocket

明けましておめとうございます!
今年もADACHIN SERVER LABO
よろしくお願いします!

というわけで2021年初のブログということですが、最近私はPS4のゲームが飽きて、PS3/PS2にハマっています。昔のゲームってエモいわ…

去年の振り返りブログは書かないの?とツッコミを入れたいところですが、気が向いたら書くという感じで、今回はAWS KMS(Key Management Service)を触ってみたので、そこらへんのノウハウを紹介したいと思います。


AWS KMSとは?

https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/overview.html

AWS Key Management Service (AWS KMS) は、データの暗号化に使用される暗号化キー カスタマーマスターキー (CMKs) の作成と管理を容易にするマネージド型サービスです。AWS KMS は、データを暗号化する他のほとんどの AWS のサービスと統合されています。AWS KMS は、AWS CloudTrail とも統合されており、監査、規制、コンプライアンスのニーズに応じて CMKs の使用をログに記録します。

簡単に言うとDBのパスやらクレデンシャルなどの機密情報などをサーバーで管理してしまうと雑多になってしまうし、不正アクセスされて流出されたら終了です。そのためにAWS KMSを利用することで、万が一、流出されてしまっても、キーを暗号化することで解読不能にしてトレースできるのがベストです。インフラやっている人はHashicorpのVaultかな!と思うかもしれませんが、まさにそれです。以下概念見ていきましょう。

https://docs.aws.amazon.com/ja_jp/kms/latest/developerguide/concepts.html

簡単に図書いてみましたが、カスタマーマスターキー(CMKs)から既存のKeyを暗号化して、復号化すればいいので、既存のKeyはいくら削除してもAWS KMSに残り続けます。それと暗号されているKeyは管理しないといけないので、S3にバックアップしておけばOKですね。次にTerraformでAWS KMSを自動化してみます。


Resource: aws_kms_key

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/kms_key

まずはIAMユーザーのポリシーに AWSKeyManagementServicePowerUser を付け加えましょう。

  • kms.tf

  • files/assume_role_policy/kms.json

Terraform化は至って簡単で、上記のポリシーはadministratorが30日後に完全削除するようにして、仮で作成したkmsユーザーでポリシーの変更や鍵の利用をできるようにしました。 xxxxxxxxx の部分はAWSアカウント番号になるので適宜変更してください。作成したらまず動作確認としてテストしてみましょう。


KMS test

  • CMKsの確認

  • aliasで調べる

  • 暗号化する(Encrypt)

  • 復号化する(Decrypt)

ちゃんと復号化されていればOKです!

次はタイトルに書いてある通り!GCPのサービスアカウントで鍵(クレデンシャル)を暗号化して、Digdagでどう復号化してEmbulkでシンクするのか作ってみました。


Digdagの場合

  • decrypt.sh

  • test.dig

まず復号化をするためのシェルスクリプトを配置します。test.digでは復号化してからembulkでシンクし、その後 復号化された鍵を削除します。これでDigdagが動いている時だけサーバー上に存在することになりますが、さらにセキュアにするならdigdag.env.storeの変数に格納してサーバーに残らないようにするようにすれば尚良し!これは後で実装してみよう。


まとめ

わざわざ手動でサーバー入って鍵の配布やらクレデンシャルを管理しなくていいのと、KMS1本で操作できるのでめちゃくちゃ便利だということがわかりました。コンテナ運用でも.envとかS3からコピーするのではなく、KMSから復号化して設置するほうがセキュアですね。S3で知らずに公開!「げ、クレデンシャル書いてる!まずい!」などはしないだろうけど暗号化して担保したほうが良さそう。

ドキュメント読むより実際に触って試してみるといいです!

Pocket

カテゴリー: AWSdigdagembulk

adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください