glue:UpdateDevEndpoint による権限昇格のおそれがある IAM ロール

IAM ロールの Glue 開発エンドポイント変更権限を必要な範囲に限定してください。

説明

glue:UpdateDevEndpoint では、Glue 開発エンドポイントの公開キーやライブラリを変更できます。この権限を持つロールの利用者が接続可能なエンドポイントを制御すると、関連付けられたロールの権限で処理を実行できる場合があります。

エンドポイントのロールに強い権限があると、間接的な権限昇格につながるおそれがあります。実際の許可範囲は、ポリシーのリソース、条件、その他の権限制限にも左右されます。

想定される影響

  • 権限昇格: エンドポイントを制御し、より強い権限で処理を実行できる場合があります。
  • データの露出: 関連付けられたロールに許可されたストレージや内部データへアクセスできる可能性があります。
  • 環境の改変: 正常な開発環境が意図しないコードを実行するよう変更されるおそれがあります。

対処方法

  • 開発エンドポイントを管理しないロールから glue:UpdateDevEndpoint を削除してください。
  • 必要な管理権限を専用ロールと承認済みエンドポイントに限定し、エンドポイントのロールにも最小権限を適用してください。
  • CloudTrail と承認手順でエンドポイントの変更を管理してください。

例

ロールの権限ポリシーを比較する抜粋です。誰がロールを使用できるかを決める信頼ポリシーは、別途設定してください。

変更前

hcl
resource "aws_iam_role" "example" {
  name = "cosmic"
}

resource "aws_iam_role_policy" "example" {
  name = "test_inline_policy"
  role = aws_iam_role.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "glue:UpdateDevEndpoint",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

変更後

hcl
resource "aws_iam_role" "example" {
  name = "cosmic"
}

resource "aws_iam_role_policy" "example" {
  name = "inline_policy_run_instances"
  role = aws_iam_role.example.name

  policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = [
          "ec2:Describe*",
        ]
        Effect   = "Allow"
        Resource = "*"
      },
    ]
  })
}

変更後は、同じロールのこのポリシーからエンドポイント変更権限を削除し、EC2 の情報取得権限だけを残します。実際の業務に必要な権限を選び、他の関連付けられたポリシーも確認してください。

参考資料