説明
lambda:UpdateFunctionCodeでは、既存のLambda関数のコードを変更できます。変更したコードが実行されると関数の実行ロールの権限を使うため、強い権限のロールがユーザーに想定された範囲を超えるアクセス経路になるおそれがあります。
想定される影響
- 悪意のあるコードによって、関数の正常な業務処理が改変されるおそれがあります。
- 実行ロールに許可されたシークレットやデータへのアクセスが悪用されるおそれがあります。
対処方法
不要なlambda:UpdateFunctionCode権限を削除してください。必要な変更は承認された関数とデプロイ手順に限定し、実行ロールの権限を最小限にしてコード変更を確認してください。
例
変更後のインラインポリシーは、同じユーザーにEC2の情報取得だけを許可します。他の関連付けられたポリシーも確認してください。コード変更権限を削除しても、デプロイ済みのコードは元に戻りません。
変更前
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "test_inline_policy"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"lambda:UpdateFunctionCode",
]
Effect = "Allow"
Resource = "*"
},
]
})
}
変更後
hcl
resource "aws_iam_user" "example" {
name = "cosmic"
}
resource "aws_iam_user_policy" "example" {
name = "inline_policy_read_only"
user = aws_iam_user.example.name
policy = jsonencode({
Version = "2012-10-17"
Statement = [
{
Action = [
"ec2:Describe*",
]
Effect = "Allow"
Resource = "*"
},
]
})
}