You are here
Home > IT > Lambdaの環境変数をKMSで暗号化しておく

Lambdaの環境変数をKMSで暗号化しておく

1.関数を作成する
2.関数に紐づけられたロールを確認する(「設定」ー「アクセス権限」で確認可能。リンククリックするとIAMに飛ぶ)。

3.KMSで鍵を作成する(カスタマー管理型のキー)。

4.ロールに割り当てる。

5.作成した鍵のエイリアスとARNを覚えておく。

6.Lambdaに戻って関数の環境変数を設定し、「暗号化」を押す

7.実行ロールポリシーをコピーして別ウインドウを開いて、IAMに割り当てる。今回は復号なのでDecryptだけで良い。

8.lambdaを開いているウインドウに戻って「暗号化」を押す。Valueが暗号化された。

9.復号化する(シークレットスニペットの復号をコピーして利用する)

require 'aws-sdk-kms'
require 'base64'

ENCRYPTED = ENV['test']
require 'json'
require 'aws-sdk-kms'
require 'base64'

ENCRYPTED = ENV['test']
# Decrypt code should run once and variables stored outside of the function
# handler so that these are decrypted once per container
DECRYPTED = Aws::KMS::Client.new
    .decrypt({
        ciphertext_blob: Base64.decode64(ENCRYPTED),
        encryption_context: {'LambdaFunctionName' => ENV['AWS_LAMBDA_FUNCTION_NAME']},
    })
    .plaintext

def lambda_handler(event:, context:)
    # TODO implement
    { statusCode: 200, body: JSON.generate("Hello from Lambda! #{DECRYPTED}") }
end

10.デプロイしてテスト呼び出し。成功

Appendix 今回作成したものの削除順序

1.IAMからKMSの内容を削除する。
2.Lambda関数を削除する
3.KMSを削除する(削除待機日数7~30を指定)
4.IAMを削除する。
5.Cloudwatchのロググループを削除する。

コメントを残す

Top