IAMユーザーに過剰なlambda:UpdateFunctionCode権限がある

Lambdaのコード変更を承認された関数とデプロイ主体に限定してください。

説明

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 = "*"
      },
    ]
  })
}

参考資料