Lamdba上で秘密情報を扱ってみる

ノウハウ
スポンサーリンク

AWS Lambda関数で秘密情報を取り扱う方法をまとめました。

 

目次

 


 

はじめに

事前にAWS Lambda関数で秘密情報を取り扱う方法を調査したところ、「Systems Managerのパラメータストア」を使えば無料でLambda上で秘密情報を扱えることが分かりました。

Lamdba上で秘密情報を扱う方法を調べてみた
AWS Lambda関数で秘密情報を取り扱う方法を調べました。

 

以下では、「Systems Managerのパラメータストア」を使って、AWS Lambda上で秘密情報を扱う方法をまとめました。

 

AWS Systems Manager パラメータストアに登録する

「AWS Systems Manager」に以下のようなパラメータを登録する方法をまとめました。

パラメータ名
TestParamTest12345!

 

  1. AWSマネージメントコンソールにログインする。
  2. AWS Systems Manager」にアクセスして、左側のメニューにある「パラメータストア」をクリックする。
  3. 「AWS Systems Manager パラメータ」画面が開くので、「パラメータの作成」をクリックする。
  4. 「パラメータを作成」画面が開くので、以下の設定項目を入力し、右下の「パラメータを作成」をクリックする。
設定項目設定例
名前TestParam
説明任意
(例: テストパラメータ)
利用枠「標準」を選択
タイプ「安全な文字列」を選択
KMS キーソース「現在のアカウント」を選択
KMSキー ID「alias/aws/ssm」を選択
Test12345!

 

「アクティベーション~」と表示されればOKです。

 

 

Lambda関数用のIAMポリシーを作成する

Lambda関数からSystems Manager(SSM)にアクセスできるようにIAMポリシーを作成します。
AWS公式の「AmazonSSMReadOnlyAccess」を使ってもOKですが、ここでは自前のIAMポリシーを作成します。

 

  1. AWSマネージメントコンソールにログインする。
  2. IAM」にアクセスする。
  3. 左側のメニューにある「ポリシー」をクリックする。
  4. 「ポリシーの作成」画面が開いたら、「JSON」タブを選択し、以下のJSONコードを入力して、右下にある「次のステップ:タグ」をクリック
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "ssm:GetParameter"
            ],
            "Resource": [
                "arn:aws:ssm:*:*:parameter/TestParam"
            ],
            "Effect": "Allow"
        }
    ]
}

 

  1. 「タグを追加(オプション)」画面が開いたら、右下の「次のステップ:確認」をクリックする。
  2. 「ポリシーの確認」画面が開いたら、以下の設定項目を入力し、右下の「ポリシーの作成」をクリックする。
設定項目設定例
名前任意のポリシー名
(例: LambdaSsmAccess)
説明任意

 

 

「The policy xxxxx has been created」と表示されればOKです。

 

 

Lambda関数を作成する

Lambda関数に先ほど作成したIAMポリシーをアタッチさせて、秘密情報を表示させるサンプルコードを登録します。

 

  1. AWSマネージメントコンソールにログインする。
  2. AWS Lambda」にアクセスする。
  3. ダッシュボード画面の右上にある「関数を作成」ボタンをクリックする。
  4. 「関数の作成」画面が表示されるので、以下の設定例を参考に入力し、下部の「関数の作成」ボタンをクリックする。
設定項目設定例
関数の作成 オプション「一から作成」を選択
関数名任意のものを記入 (例:testSecretAccess)
ランタイムPython 3.7
アーキテクチャ「x86_64」にチェック
デフォルトの実行ロールの変更「基本的なLambdaアクセス権限で新しいロールを作成」にチェック

 

「関数xxxxxを正常に作成しました。」と表示されれば、Lambda関数の作成はできています。

次に、Lambda関数で実行するコードの記入と、Lambdaレイヤを設定します。

  1. 先ほど作成した関数のページを開き、「コード」タブを選択する。
  2. 以下のサンプルコードを入力し、「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!')
    }

 

  1. 「設定」タブを開き、実行ロールに登録されているロール名のリンクをクリックする。

  

  1. IAMロールのページに飛ぶので、アクセス権限タブの「ポリシーをアタッチします」ボタンをクリックする。
  2. 「アクセス権限をアタッチする」画面が開くので、先ほど作成したIAMロール「LambdaSsmAccess」を選択して、右下の「ポリシーのアタッチ」ボタンをクリックする。

 

これでLambda関数の作成は完了です!

 

動作確認 Lambda関数で秘密情報を取得する

AWS Lambdaのテスト機能で、先ほど登録した秘密情報を表示させるサンプルコードを実行します。

 

  1. AWS Lambdaの先ほど作成した関数ページを開く。
  2. Lambda関数の設定画面で、「テスト」タブを開き、特に変更せず「テスト」ボタンをクリックする。

 

実行結果が成功となれば動作しています!

 

以上!

コメント

タイトルとURLをコピーしました