【Key Management Service】Lambda Rubyで環境変数を暗号化する

KMS(Key Management Service)を利用して、Lambdaの環境変数の暗号化・復号化を試してみます。なお、利用するランタイムはRubyを利用します。

Lambdaの環境変数の暗号化・復号化をやってみよう

KMSのカスタマーマスターキーを作成

カスタマーマスターキーをCLIから作成し、エイリアス名も設定します。キーポリシーは今回はデフォルトで作成されたままのポリシーを使用します。

カスタマーマスターキーの作成

カスタマーマスターキーにエイリアスを設定

エイリアスはdemo-lambdaで設定しています。--target-key-idには上で作成したカスタマーマスターキーのキーIDを指定します。

Lambda関数へKMSの復号化権限を付与

Lambda関数が暗号化した環境変数を復号化できるようにロールにkms:Decrypt権限を付与する必要があります。権限の追加に関しては、割愛します。ポリシー例は以下の通りです。

Lambda関数へ環境変数を設定

コンソール上から以下の通り環境変数を設定します。ここで登録した環境変数USERPASSWDを暗号化した後、Lambda関数上で復号化します。

環境変数を暗号化

暗号化の設定のプルダウンを開きます。伝送中の暗号化のためのヘルパーの有効化にチェックを入れ、伝送中に暗号化する AWS KMS キーに、初めに作成したカスタマーマスターキーのARNを設定します。ARNは、AWSコンソールのKMSのページ等から確認できます。

環境変数USERPASSWDの欄に暗号化のボタンが表示されるのでクリックし、暗号化します。下記は暗号化後の表示です。

Lambda関数の作成

暗号化された環境変数と、復号化した環境変数を表示する関数を作成してみます。

実行結果

Lambdaのログ出力の結果です。暗号化した環境変数と復号化した環境変数が表示されました。

Lambdaの環境変数の暗号化・復号化まとめ

CloudFormationでLambdaを作成する際、AWS::Lambda::Function リソースのKmsKeyArnプロパティで環境変数の暗号化に利用するAWS Key Management Service キーは指定できるようです。ドキュメントはこちら。ただ、実際に環境変数を暗号化するところを、CloudFormationで対応するようなプロパティは見受けられませんでした。自動化して利用する際は、今回のように平文を登録してLambda上で暗号化するのではなく、暗号化済みのものをLambda上に登録する必要があるってことなのですかね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA