내용으로 건너뛰기

특정 Amazon EC2 리소스에 대한 IAM 자격 증명의 액세스 권한을 어떻게 제한합니까?

3분 분량
0

특정 Amazon Elastic Compute Cloud(Amazon EC2) 리소스에 대한 AWS Identity and Access Management(IAM) 자격 증명의 액세스 권한을 제한하고 싶습니다.

간략한 설명

Amazon EC2는 리소스 수준 권한 또는 조건을 부분적으로 지원합니다. 리소스 수준 권한을 사용하여 특정 Amazon EC2 리소스에 대한 IAM 자격 증명의 액세스 권한을 제어할 수 있습니다.

ABAC(태그 기반 권한 부여)를 사용하여 AWS 리소스에 대한 액세스 권한을 제어할 수도 있습니다. 자세한 내용은 IAM 튜토리얼: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의를 참조하십시오.

해결 방법

다음 예제 IAM 정책을 사용하여 사용 사례에 따라 Amazon EC2 인스턴스에 대한 액세스를 제한하십시오. 그런 다음 액세스를 제한하려는 IAM 자격 증명에 정책을 연결합니다.

인스턴스를 시작, 중지 또는 재부팅하도록 액세스 제한

다음 예제 정책은 IAM 자격 증명의 액세스 권한을 EC2 인스턴스 시작, 중지 또는 재부팅만 가능한 권한으로 제한합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:Describe*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ec2:StartInstances",
                "ec2:StopInstances",
                "ec2:RebootInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:ResourceTag/Owner": "Bob"
                }
            }
        }
    ]
}

참고: Owner를 태그 키로, Bob을 태그 값으로, AccountId를 AWS 계정 ID로 바꿉니다.

참고: EC2 인스턴스에는 값이 BobOwner 태그 키가 있습니다.

다른 Amazon EC2 리소스를 태그별로 제한하려면 작업이 리소스 수준 권한 및 조건을 지원하는지 확인하십시오.

태그별로 EC2 인스턴스 시작 제한

다음 예제 정책은 Owner 태그 키를 사용하여 IAM 자격 증명의 액세스 권한을 EC2 인스턴스를 시작할 수만 있는 권한으로 제한합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Owner": "*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

참고: Owner를 태그 키로, AccountId를 계정 ID로 바꾸십시오.

참고: IAM 자격 증명이 태그 키 Owner 없이 EC2 인스턴스를 시작하려고 하면 작업이 실패하고 "AccessDenied" 오류가 발생합니다.

인스턴스 유형별로 EC2 인스턴스 시작 제한

다음 예제 정책은 IAM 자격 증명의 액세스 권한을 인스턴스 유형이 t3.*인 EC2 인스턴스를 시작할 수만 있는 권한으로 제한합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:instance/*"
            ],
            "Condition": {
                "StringNotLike": {
                    "ec2:InstanceType": "t3.*"
                }
            }
        },
        {
            "Sid": "AllowRunInstances",
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*::image/*",
                "arn:aws:ec2:*::snapshot/*",
                "arn:aws:ec2:*:*:subnet/*",
                "arn:aws:ec2:*:*:network-interface/*",
                "arn:aws:ec2:*:*:security-group/*",
                "arn:aws:ec2:*:*:key-pair/*",
                "arn:aws:ec2:*:*:instance/*",
                "arn:aws:ec2:*:*:volume/*"
            ]
        },
        {
            "Sid": "AllowToDescribeAll",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowCreateTagsOnLaunching",
            "Effect": "Allow",
            "Action": [
                "ec2:CreateTags"
            ],
            "Resource": [
                "arn:aws:ec2:*:AccountId:*/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:CreateAction": [
                        "RunInstances"
                    ]
                }
            }
        }
    ]
}

참고: 인스턴스 유형 t3.*를 해당 인스턴스 유형(예: t3.nano)으로 바꾸십시오. 또한 AccountId를 계정 ID로 바꾸십시오.

자세한 내용을 알아보려면 Amazon EC2 인스턴스 유형 네이밍 규칙을 참조하십시오.

참고: ec2:CreateAction 조건은 태그 생성을 EC2 리소스를 만드는 작업으로 제한합니다.

관련 정보

태그를 통해 Amazon EC2 리소스에 대한 액세스를 제어하는 IAM 정책을 어떻게 만듭니까?

IAM 정책 태그를 사용하여 EC2 인스턴스 또는 EBS 볼륨 생성 및 액세스 방법을 어떻게 제한합니까?

Amazon EC2에 대한 자격 증명 기반 정책

1 댓글

This article was reviewed and updated on 2026-03-02.

전문가

답글을 게시함 한 달 전