Amazon EC2 Auto Scaling 자격 증명 기반 정책 예제 - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon EC2 Auto Scaling 자격 증명 기반 정책 예제

기본적으로 새로 가입한 사용자는 아무 것도 할 수 있는 AWS 계정 권한이 없습니다. IAM 관리자는 Amazon EC2 Auto Scaling API 작업을 수행할 수 있는 IAM 자격 증명(예: 사용자 또는 역할) 권한을 부여하는 IAM 정책을 생성하고 할당해야 합니다.

이러한 예제 JSON 정책 문서를 사용하여 IAM 정책을 생성하는 방법을 알아보려면 IAM 사용 설명서JSON 탭에서 정책 생성을 참조하세요.

다음은 권한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup", "autoscaling:DeleteAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/purpose": "testing" } } }, { "Effect": "Allow", "Action": "autoscaling:Describe*", "Resource": "*" }] }

이 샘플 정책은 Auto Scaling 그룹이 purpose=testing 태그를 사용하는 경우에만 그룹을 생성, 업데이트, 삭제할 수 있는 권한을 부여합니다. Describe 작업은 리소스 수준 권한을 지원하지 않기 때문에 조건 없이 별도의 명령문에 지정해야 합니다. 시작 템플릿으로 인스턴스를 시작하려면 사용자에게도 ec2:RunInstances 권한이 있어야 합니다. 자세한 내용은 시작 템플릿 지원(을)를 참조하세요.

참고

IAM 자격 증명(사용자 또는 역할)이 Amazon EC2 Auto Scaling 작업을 수행할 수 있는 권한을 허용하거나 거부하는 고유한 사용자 지정 IAM 정책을 생성할 수 있습니다. 지정된 권한이 필요한 IAM 자격 증명에 이러한 사용자 지정 정책을 연결할 수 있습니다. 다음 예제에서는 몇 가지 일반적인 사용 사례의 권한을 보여 줍니다.

일부 Amazon EC2 Auto Scaling API 작업의 경우 작업을 통해 생성하거나 수정할 수 있는 특정 Auto Scaling 그룹을 정책에 포함할 수 있습니다. 개별 Auto Scaling 그룹 ARN을 지정하여 이러한 작업에 대한 대상 리소스를 제한할 수 있습니다. 그러나, 특정 태그가 있는 Auto Scaling 그룹에서 작업을 허용(또는 거부)하는 태그 기반 정책을 사용하는 것이 좋습니다.

생성할 수 있는 Auto Scaling 그룹 크기 제어

다음 정책은 사용자에게 environment=development 태그가 있는 모든 Auto Scaling 그룹을 생성하고 업데이트할 수 있는 권한을 부여합니다. 단, 요청자가 최소 크기를 1보다 작게 지정하거나 최대 크기를 10보다 크게 지정하지 않아야 합니다. 가능할 때마다 태그를 사용하여 계정의 Auto Scaling 그룹에 대한 액세스 제어를 도울 수 있습니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "development" }, "NumericGreaterThanEqualsIfExists": { "autoscaling:MinSize": 1 }, "NumericLessThanEqualsIfExists": { "autoscaling:MaxSize": 10 } } }] }

또는 태그를 사용하여 Auto Scaling 그룹에 대한 액세스를 제어하고 있지 않은 경우, ARN을 사용하여 IAM 정책이 적용되는 Auto Scaling 그룹을 식별할 수 있습니다.

Auto Scaling 그룹에는 다음 ARN이 있습니다.

"Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/my-asg"

여러 ARN을 목록에 포함시켜 지정할 수도 있습니다. Resource 요소에 Amazon EC2 Auto Scaling 리소스의 ARN을 지정하는 방법에 대한 자세한 내용은 Amazon EC2 Auto Scaling의 정책 리소스(을)를 참조하세요.

사용할 수 있는 태그 키 및 태그 값 제어

IAM 정책에서 조건을 사용하여 Auto Scaling 그룹에 적용할 수 있는 태그 키와 태그 값을 제어할 수 있습니다. 요청자가 특정 태그를 지정한 경우에만 Auto Scaling 그룹을 생성하거나 태그를 지정할 수 있는 권한을 부여하려면 aws:RequestTag 조건 키를 사용하세요. 특정 태그 키만 허용하려면 aws:TagKeys 조건 키와 ForAllValues 변경자를 사용합니다.

다음 정책은 요청자에게 요청에 environment 키를 포함하는 태그를 지정하도록 요구합니다. "?*" 값은 태그 키에 대한 일부 값이 있음을 나타냅니다. 와일드카드를 사용하려면 StringLike 조건 연산자를 사용해야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/environment": "?*" } } }] }

다음 정책은 요청자가 purpose=webservercost-center=cc123 태그가 있는 Auto Scaling 그룹에만 태그를 지정할 수 있도록 지정하고 purposecost-center 태그만 허용합니다(다른 태그는 지정할 수 없음).

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/purpose": "webserver", "aws:RequestTag/cost-center": "cc123" }, "ForAllValues:StringEquals": { "aws:TagKeys": ["purpose", "cost-center"] } } }] }

다음 정책은 요청자에게 요청에 태그를 한 개 이상 지정하도록 요구하고, cost-center 키와 owner 키만 허용합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:CreateAutoScalingGroup", "autoscaling:CreateOrUpdateTags" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["cost-center", "owner"] } } }] }
참고

조건의 경우 조건 키는 대소문자를 구분하지 않고 조건 값은 대소문자를 구분합니다. 따라서, 태그 키의 대소문자 구별을 설정하려면 태그 키가 조건의 값으로 지정된 aws:TagKeys 조건 키를 사용합니다.

삭제할 수 있는 Auto Scaling 그룹 제어

다음 정책은 그룹에 environment=development 태그가 있는 경우에만 Auto Scaling 그룹의 삭제를 허용합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/environment": "development" } } }] }

또는 조건 키를 사용하여 Auto Scaling 그룹에 대한 액세스를 제어하고 있지 않은 경우, Resource 요소에서 리소스의 ARN을 지정하여 대신 액세스를 제어할 수 있습니다.

다음 정책은 사용자에게 DeleteAutoScalingGroup API 작업을 사용할 수 있는 권한을 부여하지만 이름이 devteam-로 시작하는 Auto Scaling 그룹에만 해당됩니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeleteAutoScalingGroup", "Resource": "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/devteam-*" }] }

여러 ARN을 목록에 포함시켜 지정할 수도 있습니다. UUID를 포함하면 특정 Auto Scaling 그룹에 대한 액세스 권한을 부여할 수 있습니다. 새 그룹의 UUID는 동일한 이름을 가진 삭제된 그룹의 UUID와 다릅니다.

"Resource": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-1", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-2", "arn:aws:autoscaling:region:account-id:autoScalingGroup:uuid:autoScalingGroupName/devteam-3" ]

삭제할 수 있는 조정 정책 제어

다음 정책은 DeletePolicy 작업을 사용하여 조정 정책을 삭제할 수 있는 권한을 부여합니다. 그러나, 작업 대상 Auto Scaling 그룹에 environment=production 태그가 있는 경우 작업을 거부합니다. 가능할 때마다 태그를 사용하여 계정의 Auto Scaling 그룹에 대한 액세스 제어를 도울 수 있습니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "autoscaling:DeletePolicy", "Resource": "*" }, { "Effect": "Deny", "Action": "autoscaling:DeletePolicy", "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "production" } } }] }

인스턴스 새로 고침 작업에 대한 액세스 제어

다음 정책은 작업 대상 Auto Scaling 그룹에 environment=testing 태그가 있는 경우에만 인스턴스 새로 고침을 시작, 롤백, 취소할 수 있는 권한을 부여합니다. Describe 작업은 리소스 수준 권한을 지원하지 않기 때문에 조건 없이 별도의 명령문에 지정해야 합니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "autoscaling:StartInstanceRefresh", "autoscaling:CancelInstanceRefresh", "autoscaling:RollbackInstanceRefresh" ], "Resource": "*", "Condition": { "StringEquals": { "autoscaling:ResourceTag/environment": "testing" } } }, { "Effect": "Allow", "Action": "autoscaling:DescribeInstanceRefreshes", "Resource": "*" }] }

StartInstanceRefresh 호출에서 원하는 구성을 지정하려면 사용자에게 다음과 같은 몇 가지 관련 권한이 필요할 수도 있습니다.

  • ec2: RunInstances — 시작 템플릿을 사용하여 EC2 인스턴스를 시작하려면 사용자에게 IAM 정책의 ec2:RunInstances 권한이 있어야 합니다. 자세한 정보는 시작 템플릿 지원을 참조하세요.

  • ec2: CreateTags — 생성 시 인스턴스와 볼륨에 태그를 추가하는 시작 템플릿에서 EC2 인스턴스를 시작하려면 사용자에게 IAM 정책에 대한 ec2:CreateTags 권한이 있어야 합니다. 자세한 정보는 인스턴스 및 볼륨에 태그를 지정하려면 필요한 권한을 참조하세요.

  • iam: PassRole — 인스턴스 프로필 (IAM 역할을 위한 컨테이너) 이 포함된 시작 템플릿에서 EC2 인스턴스를 시작하려면 사용자에게 IAM 정책에 대한 권한도 있어야 합니다. iam:PassRole 자세한 내용과 예 IAM 정책은 Amazon EC2 인스턴스에서 실행되는 애플리케이션에 대한 IAM 역할 섹션을 참조하세요.

  • ssm: GetParameters — AWS Systems Manager 파라미터를 사용하는 시작 템플릿에서 EC2 인스턴스를 시작하려면 사용자에게 IAM 정책에 대한 권한도 있어야 합니다. ssm:GetParameters 자세한 정보는 시작 템플릿에서 AMI ID 대신 AWS Systems Manager 파라미터 사용을 참조하세요.

서비스 연결 역할 생성

Amazon EC2 Auto Scaling에는 사용자 중 누군가가 처음으로 Amazon AWS 계정 EC2 Auto Scaling API 작업을 호출할 때 서비스 연결 역할을 생성할 수 있는 권한이 필요합니다. 서비스 연결 역할이 아직 존재하지 않으면 Amazon EC2 Auto Scaling에서 해당 역할을 계정에 생성합니다. 서비스 연결 역할은 Amazon EC2 Auto Scaling에 권한을 부여하여 사용자를 대신하여 다른 사람을 AWS 서비스 호출할 수 있습니다.

역할 자동 생성이 성공하려면 사용자가 iam:CreateServiceLinkedRole 작업에 대한 권한을 보유해야 합니다.

"Action": "iam:CreateServiceLinkedRole"

다음은 사용자가 Amazon EC2 Auto Scaling을 위한 Amazon EC2 Auto Scaling 서비스 연결 역할을 생성할 수 있도록 허용하는 권한 정책의 예입니다.

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:CreateServiceLinkedRole", "Resource": "arn:aws:iam::*:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling", "Condition": { "StringLike": { "iam:AWSServiceName":"autoscaling.amazonaws.com" } } }] }

어떤 서비스 연결 역할을 전달할 수 있는지 (사용) 제어할 수 있습니다. PassRole

Auto Scaling 그룹을 만들거나 업데이트하고 요청에 사용자 지정 접미사 서비스 연결 역할을 지정하는 사용자에게는 iam:PassRole 권한이 필요합니다.

서비스 연결 역할마다 다른 키에 대한 액세스 iam:PassRole 권한을 부여하면 권한을 사용하여 AWS KMS 고객 관리 키의 보안을 보호할 수 있습니다. 조직의 필요에 따라 개발 팀을 위한 키, 품질 보증 팀을 위한 키 및 재무 팀을 위한 키가 있을 수 있습니다. 먼저 필수 키에 액세스할 수 있는 서비스 연결 역할 (예: 이름이 지정된 서비스 연결 역할) 을 생성합니다. AWSServiceRoleForAutoScaling_devteamkeyaccess 그런 다음, 사용자 또는 역할과 같은 IAM 자격 증명에 정책을 연결합니다.

다음 정책은 이름이 devteam-로 시작하는 모든 Auto Scaling 그룹에 AWSServiceRoleForAutoScaling_devteamkeyaccess 역할을 전달할 수 있는 권한을 부여합니다. Auto Scaling 그룹을 생성하는 IAM 자격 증명이 다른 서비스 연결 역할을 지정하려고 하면 오류가 발생합니다. 서비스 연결 역할을 지정하지 않기로 선택하면 기본 역할이 대신 사용됩니다. AWSServiceRoleForAutoScaling

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::account-id:role/aws-service-role/autoscaling.amazonaws.com/AWSServiceRoleForAutoScaling_devteamkeyaccess", "Condition": { "StringEquals": { "iam:PassedToService": [ "autoscaling.amazonaws.com" ] }, "StringLike": { "iam:AssociatedResourceARN": [ "arn:aws:autoscaling:region:account-id:autoScalingGroup:*:autoScalingGroupName/devteam-*" ] } } }] }

사용자 지정 접미사 서비스 연결 역할에 대한 자세한 정보는 Amazon EC2 Auto Scaling의 서비스 연결 역할(을)를 참조하세요.