2026-02-11

LambdaでParameter Storeの機密情報を安全に取得する方法

LambdaでAPIキーやトークンなどの機密情報を扱う際、環境変数に直接設定するとLambdaコンソールやCloudFormationコンソールで平文で表示されてしまいます。 今回はAWS Systems Manager Parameter Store(SecureString)を使って、Lambda関数内で安全に機密情報を取得する方法を紹介します。

なぜ環境変数に直接設定しないのか

CDKで環境変数に直接値を設定することも可能ですが、SecureStringの場合は以下の理由から避けるべきです。

  • AWS Lambdaコンソールで値が平文で表示される
  • CloudFormationコンソールでも値が確認できてしまう
  • Lambda、CloudFormationの権限があるユーザーであれば誰でも値を参照できる

そのため、環境変数にはParameter Storeのキー名のみを渡し、Lambda関数内で実際の値を取得する方法を採用しました。

実装方法

1. LambdaにParameter Storeの読み取り権限を付与

まず、CDKでLambdaのロールにParameter Storeの読み取り権限を付与します。

{parameter-store-key}には実際のパラメータ名を指定します。リソースを絞ることで、必要最小限の権限に制限できます。

2. Lambda関数内でParameter Storeから値を取得

Lambda関数内で、AWS SDKを使ってParameter Storeから値を取得します。

WithDecryption: trueを指定することで、SecureStringの値を復号化して取得できます。 取得した値をprocess.envに設定することで、既存のコードを大きく変更せずに機密情報を利用できます。

まとめ

Parameter Storeを使うことで、機密情報をLambdaコンソールに露出させることなく安全に管理できます。 少し手間はかかりますが、セキュリティの観点からSecureStringを扱う場合はこの方法をおすすめします。

Thanks for the visit Nozo Blog