AWS Lambda関数で秘密情報を取り扱う方法をまとめました。
目次
はじめに
事前にAWS Lambda関数で秘密情報を取り扱う方法を調査したところ、「Systems Managerのパラメータストア」を使えば無料でLambda上で秘密情報を扱えることが分かりました。
![](https://create-it-myself.com/wp-content/uploads/research-howto-handle-confidential-info-on-lambda-EC-160x90.png)
Lamdba上で秘密情報を扱う方法を調べてみた
AWS Lambda関数で秘密情報を取り扱う方法を調べました。
以下では、「Systems Managerのパラメータストア」を使って、AWS Lambda上で秘密情報を扱う方法をまとめました。
AWS Systems Manager パラメータストアに登録する
「AWS Systems Manager」に以下のようなパラメータを登録する方法をまとめました。
パラメータ名 | 値 |
---|---|
TestParam | Test12345! |
- AWSマネージメントコンソールにログインする。
- 「AWS Systems Manager」にアクセスして、左側のメニューにある「パラメータストア」をクリックする。
- 「AWS Systems Manager パラメータ」画面が開くので、「パラメータの作成」をクリックする。
- 「パラメータを作成」画面が開くので、以下の設定項目を入力し、右下の「パラメータを作成」をクリックする。
設定項目 | 設定例 |
---|---|
名前 | TestParam |
説明 | 任意 (例: テストパラメータ) |
利用枠 | 「標準」を選択 |
タイプ | 「安全な文字列」を選択 |
KMS キーソース | 「現在のアカウント」を選択 |
KMSキー ID | 「alias/aws/ssm」を選択 |
値 | Test12345! |
「アクティベーション~」と表示されればOKです。
![](https://create-it-myself.com/wp-content/uploads/howto-handle-confidential-info-on-lambda-image01-1024x303.png)
Lambda関数用のIAMポリシーを作成する
Lambda関数からSystems Manager(SSM)にアクセスできるようにIAMポリシーを作成します。
AWS公式の「AmazonSSMReadOnlyAccess」を使ってもOKですが、ここでは自前のIAMポリシーを作成します。
- AWSマネージメントコンソールにログインする。
- 「IAM」にアクセスする。
- 左側のメニューにある「ポリシー」をクリックする。
- 「ポリシーの作成」画面が開いたら、「JSON」タブを選択し、以下のJSONコードを入力して、右下にある「次のステップ:タグ」をクリック
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"ssm:GetParameter"
],
"Resource": [
"arn:aws:ssm:*:*:parameter/TestParam"
],
"Effect": "Allow"
}
]
}
- 「タグを追加(オプション)」画面が開いたら、右下の「次のステップ:確認」をクリックする。
- 「ポリシーの確認」画面が開いたら、以下の設定項目を入力し、右下の「ポリシーの作成」をクリックする。
設定項目 | 設定例 |
---|---|
名前 | 任意のポリシー名 (例: LambdaSsmAccess) |
説明 | 任意 |
![](https://create-it-myself.com/wp-content/uploads/howto-handle-confidential-info-on-lambda-image02.png)
「The policy xxxxx has been created」と表示されればOKです。
![](https://create-it-myself.com/wp-content/uploads/howto-handle-confidential-info-on-lambda-image03-1024x191.png)
Lambda関数を作成する
Lambda関数に先ほど作成したIAMポリシーをアタッチさせて、秘密情報を表示させるサンプルコードを登録します。
- AWSマネージメントコンソールにログインする。
- 「AWS Lambda」にアクセスする。
- ダッシュボード画面の右上にある「関数を作成」ボタンをクリックする。
- 「関数の作成」画面が表示されるので、以下の設定例を参考に入力し、下部の「関数の作成」ボタンをクリックする。
設定項目 | 設定例 |
---|---|
関数の作成 オプション | 「一から作成」を選択 |
関数名 | 任意のものを記入 (例:testSecretAccess) |
ランタイム | Python 3.7 |
アーキテクチャ | 「x86_64」にチェック |
デフォルトの実行ロールの変更 | 「基本的なLambdaアクセス権限で新しいロールを作成」にチェック |
「関数xxxxxを正常に作成しました。」と表示されれば、Lambda関数の作成はできています。
次に、Lambda関数で実行するコードの記入と、Lambdaレイヤを設定します。
- 先ほど作成した関数のページを開き、「コード」タブを選択する。
- 以下のサンプルコードを入力し、「Deploy」をクリックする。
import json,boto3
def lambda_handler(event, context):
ssm = boto3.client('ssm')
ssm_response = ssm.get_parameter(
Name = 'TestParam',
WithDecryption=True
)
print(ssm_response['Parameter']['Value'])
return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
}
- 「設定」タブを開き、実行ロールに登録されているロール名のリンクをクリックする。
![](https://create-it-myself.com/wp-content/uploads/howto-handle-confidential-info-on-lambda-image04-1024x222.png)
- IAMロールのページに飛ぶので、アクセス権限タブの「ポリシーをアタッチします」ボタンをクリックする。
- 「アクセス権限をアタッチする」画面が開くので、先ほど作成したIAMロール「LambdaSsmAccess」を選択して、右下の「ポリシーのアタッチ」ボタンをクリックする。
これでLambda関数の作成は完了です!
動作確認 Lambda関数で秘密情報を取得する
AWS Lambdaのテスト機能で、先ほど登録した秘密情報を表示させるサンプルコードを実行します。
- AWS Lambdaの先ほど作成した関数ページを開く。
- Lambda関数の設定画面で、「テスト」タブを開き、特に変更せず「テスト」ボタンをクリックする。
![](https://create-it-myself.com/wp-content/uploads/research-combination-of-chromedriver-and-headless-chromium-versions-image12-1024x473.png)
実行結果が成功となれば動作しています!
![](https://create-it-myself.com/wp-content/uploads/howto-handle-confidential-info-on-lambda-image05-1024x619.png)
以上!
コメント