Serverless Framework 関数にカスタマーマネージド KMS キーが未指定

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

説明

Lambda の環境変数は標準で保存時に暗号化されます。Serverless Framework の kmsKeyArn で、既定のキーの代わりにカスタマーマネージド KMS キーを選べます。未指定でも平文保存を意味するわけではありません。

想定される影響

キーポリシーやライフサイクルを直接管理する要件を満たせないおそれがあります。

対処方法

カスタマーマネージドキーが必要なら provider.kmsKeyArn または関数の kmsKeyArn にキー ARN を指定し、権限を確認してください。関数単位の上書きも確認し、実際のシークレットは Secrets Manager などで管理してください。

例

この例はプロバイダーと hello 関数に同じキーを指定しています。関数に同じ値を繰り返す必要はありません。ARN は実際のキーの ARN に置き換えてください。KMS の設定で、ソースファイル内の環境変数の値が暗号化されるわけではありません。

変更前

yaml
provider:
  name: aws
  environment:
    TABLE_NAME: tableName1

functions:
  hello:
    handler: handler.hello
    environment:
      TABLE_NAME: tableName2

変更後

yaml
provider:
  name: aws
  kmsKeyArn: arn:aws:kms:us-east-1:111122223333:key/12345678-1234-1234-1234-123456789012
  environment:
    TABLE_NAME: tableName1

functions:
  hello:
    handler: handler.hello
    kmsKeyArn: arn:aws:kms:us-east-1:111122223333:key/12345678-1234-1234-1234-123456789012
    environment:
      TABLE_NAME: tableName2

参考資料