개별 사용자에 직접 연결된 IAM 정책

공통 IAM 권한은 그룹이나 역할을 중심으로 관리하세요.

설명

정책을 개별 사용자에게 직접 연결하면 권한 관리가 사용자별로 흩어지기 쉽습니다. 공통 권한은 그룹이나 역할로 관리하고, 사용자별 예외는 필요한 경우에만 유지하세요.

잠재적 영향

직접 연결된 예외 정책이 많으면 권한 부여 이유와 변경 후 회수 대상을 파악하기 어려워집니다.

해결 방법

사용자에게 직접 연결된 정책을 검토하고 공통 권한을 적절한 그룹이나 역할로 옮기세요. 연결 대상 변경만으로 권한 범위가 줄어들지는 않으므로 정책 자체도 필요한 작업과 리소스로 제한하세요.

예시

예시는 같은 정책의 연결 대상을 사용자에서 그룹으로 바꿉니다. 예시의 광범위한 권한은 운영에 맞게 제한하고 사용자와 그룹은 별도로 정의하세요. aws_iam_policy_attachment는 해당 정책의 모든 연결을 배타적으로 관리합니다.

변경 전

hcl
resource "aws_iam_policy_attachment" "example" {
  name = "excess_policy"
  users = [aws_iam_user.user.name]
  policy_arn = aws_iam_policy.example.arn
}

resource "aws_iam_policy" "example" {
  name = "excess_policy"

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:*",
        "s3:*",
        "lambda:*",
        "cloudwatch:*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
EOF
}

변경 후

hcl
resource "aws_iam_policy_attachment" "example" {
  name = "excess_policy"
  groups = [aws_iam_group.group.name]
  policy_arn = aws_iam_policy.example.arn
}

resource "aws_iam_policy" "example" {
  name = "excess_policy"

  policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Action": [
        "ec2:*",
        "s3:*",
        "lambda:*",
        "cloudwatch:*"
      ],
      "Effect": "Allow",
      "Resource": "*"
    }
  ]
}
EOF
}

참조