AWS Lambda 関数へのアクセス権を持つ AWS Identity and Access Management (IAM) ユーザーに環境変数や暗号化されていないテキストが表示されないようにしたいです。その方法を教えてください。
解決方法
注: 次のソリューションは、Lambda コンソールおよび Lambda API 内でのみ、IAM アイデンティティが Lambda 関数の環境変数を表示することを防ぎます。IAM アイデンティティが関数のコードを使用して復号化された環境変数にアクセスしたり、環境変数値を Amazon CloudWatch Logs に出力したりすることは妨げません。
IAM アイデンティティが Lambda 環境変数のパスワード、キー、またはその他の機密情報にアクセスできないようにするには、以下の手順を実行します。
AWS Key Management Service (AWS KMS) のカスタマーマネージドキーを使用して、環境変数を暗号化します。KMS キーをセットアップするには、「環境変数の保護」の手順に従ってください。
重要: KMS キーのキーポリシーを編集して、アクセスが必要ない IAM アイデンティに対してポリシーがアクセスを拒否するようにしてください。
特定の IAM ユーザーに対して Lambda 環境変数の表示許可を拒否する KMS キーポリシー例
注意: arn:aws:iam::1234567890:User1DeniedAccess および arn:aws:iam::1234567890:User2DeniedAccess を、アクセスを拒否したい IAM アイデンティティの Amazon リソースネーム (ARN) に置き換えてください。必要に応じて、キーポリシーに IAM ARN を追加できます。
{
"Id": "MyCustomKey",
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Deny IAM users permission to see Lambda environment variables",
"Effect": "Deny",
"Principal": {
"AWS": [
"arn:aws:iam::1234567890:User1DeniedAccess",
"arn:aws:iam::1234567890:User2DeniedAccess"
]
},
"Action": [
"kms:Encrypt",
"kms:Decrypt",
"kms:ReEncrypt*",
"kms:GenerateDataKey*",
"kms:DescribeKey"
],
"Resource": "*"
}
]
}
拒否された IAM ユーザーが関数の環境変数を表示しようとする場合にそれらのユーザーに表示される、以下のようなエラーメッセージを受取ります。
"Lambda was unable to decrypt your environment variables because the KMS access was denied. Please check your KMS permissions. KMS Exception: AccessDeniedException"
関連情報
キーの作成
AWS Lambda アクセス許可