SAM 関数の環境変数にカスタマーマネージドキーが未指定

個別の鍵管理が必要な SAM 関数に、カスタマーマネージド KMS キーを指定します。

説明

Lambda は環境変数を標準で保存時に暗号化します。SAM 関数に KmsKeyArn がないだけで、環境変数が暗号化されていないとは判断できません。キーポリシーやライフサイクルを直接管理する場合に、カスタマーマネージドキーを使います。

想定される影響

組織が求める個別の鍵管理やアクセス制御の基準を満たせないおそれがあります。

対処方法

カスタマーマネージドキーが必要なら KmsKeyArn にキー ARN を指定し、必要なキー権限を設定してください。実際のシークレットはテンプレートに書かず、Secrets Manager などで管理してください。

例

この例はキー選択の違いだけを示します。example-token は実際のシークレットではなく、KMS の設定でソースファイル内の値が暗号化されるわけではありません。イメージ URI は省略しています。

変更前

yaml
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      Environment:
        Variables:
          API_TOKEN: example-token

変更後

yaml
Resources:
  Function:
    Type: AWS::Serverless::Function
    Properties:
      PackageType: Image
      Environment:
        Variables:
          API_TOKEN: example-token
      KmsKeyArn: arn:aws:kms:ap-northeast-2:123456789012:key/12345678-1234-1234-1234-123456789012

参考資料