今回のお題
IAMの暗号化キーを生成し、その暗号キーを用いてLambdaの環境変数を暗号化する。
暗号化したものをPythonで複合化して、表示してみる。
暗号化キーを作成する
リージョンを東京に変更する
画面上部のキーの作成を押下する
エイリアスを入力し、KMSを選択する。
今回はテストなので「test/key」としました。
入力・選択を終えたら、画面下部の「次のステップ」押下
タグキーを入力
キー管理者を設定
本来は、ちゃんと設定するのでしょうが、今回はlambdaのデフォルトで用意されている「lambda_basic_execution」を設定しました。
あと、自分のAWSのログインIDも設定します(変更したりできるようにするため)
キーの使用者の設定
こちらも同じく「lambda_basic_execution」とAWSの自分のIDを設定しておきます。
完了
Lambdaの環境変数を設定し、暗号化する
サービス > lambdaを選択し、ソースインラインの下にある環境変数に値を入れ、暗号化を設定していきます。
環境変数に値を入れる
暗号化の設定を開く
「伝送中の暗号化のためのヘルパーの有効化」のチェックをONにすると、伝送中に暗号化するKMSキーが表示されます。
前手順で作成したKMSキーを選ぶ
リスト式ですので、クリックすると設定されている一覧が表示されます。
先ほど作成したKMSキーを選択しましょう。
環境変数の暗号化を押下する
KMSキーを設定すると、環境変数に暗号化ボタンが表示されますので、押下します。
↓
Pythonで環境変数を読み込んでみる。
Lambdaで、下記のようなソースを記載します。
# coding: UTF-8
import os
def lambda_handler(event, context):
print('~~~~~環境変数表示~~~~~')
print(os.environ['test'])
保存して、実行します。
ログには、下記のように表示されました。
無事に暗号化できているようです。
復号化してみる
復号化は、簡単でした。
下記のようなソースを記載し、実行して見ます。
# coding: UTF-8
from base64 import b64decode
import boto3
import os
def lambda_handler(event, context):
kms = boto3.client('kms')
decrypt_text = kms.decrypt(CiphertextBlob=b64decode(os.environ['test']))['Plaintext']
print("~~~~~~~~~~~~~~復号化確認~~~~~~~~~~~~~~~~")
print(os.environ['test'])
print(decrypt_text)
まとめ。
環境変数に対する暗号化・復号化が非常に簡単にできました。
すごい便利ですねこれ。ロールをきちんと考えれば、セキュリティ的にも大丈夫な気がします。