IAM 서비스 역할의 신뢰 주체 점검

역할을 사용할 실제 서비스와 승인된 AWS 주체만 신뢰하세요.

설명

IAM 역할의 신뢰 정책은 누가 역할을 맡을 수 있는지 정합니다. 필요한 서비스와 함께 AWS: *를 허용하면 신뢰 범위가 그 서비스로만 제한되지 않습니다.

실제 역할 전환에는 호출자의 권한과 신뢰 조건도 적용됩니다. 역할을 맡은 뒤 사용할 수 있는 권한은 역할의 권한 정책과 다른 제한에 달려 있습니다.

잠재적 영향

  • 불필요한 주체가 역할을 맡으면 그 역할에 허용된 리소스에 접근할 수 있습니다.
  • 고권한 역할의 신뢰 범위가 넓으면 자격 증명 오용 시 피해가 커질 수 있습니다.

해결 방법

  • 불필요한 AWS 와일드카드 주체를 제거하고 서비스 역할에는 실제 필요한 서비스 주체만 남기세요.
  • 외부 계정 접근이 필요하면 승인된 계정·역할과 용도에 맞는 신뢰 조건으로 제한하세요.
  • 역할의 작업 권한과 신뢰 변경을 함께 검토하고 정상 서비스 실행과 미승인 역할 전환 거부를 확인하세요.

예시

EC2 인스턴스용 역할의 신뢰 정책 발췌입니다. name_tag_prefix 변수와 인스턴스 프로파일 및 역할의 작업 권한은 별도로 구성하세요.

변경 전

hcl
resource "aws_iam_role" "example" {
  name = "${var.name_tag_prefix}-openshift-instance-role"

  assume_role_policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Principal": {
                "Service": "ec2.amazonaws.com",
                "AWS": "*"
            },
            "Effect": "Allow",
            "Sid": ""
        }
    ]
}
EOF
}

EC2 서비스 외에 모든 AWS 주체에도 신뢰를 확장합니다. Service 항목이 AWS: *를 EC2로 제한하지는 않습니다.

변경 후

hcl
resource "aws_iam_role" "example" {
  name = "${var.name_tag_prefix}-openshift-instance-role"

  assume_role_policy = <<EOF
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": "sts:AssumeRole",
            "Principal": {
                "Service": "ec2.amazonaws.com"
            },
            "Effect": "Allow",
            "Sid": ""
        }
    ]
}
EOF
}

신뢰 주체를 EC2 서비스로 제한합니다. 역할의 작업 권한과 이 역할을 인스턴스에 연결할 수 있는 권한도 최소화하세요.

참조