Directory Service에 대한 자격 증명 기반 정책(IAM 정책) 사용 - AWS Directory Service

Directory Service에 대한 자격 증명 기반 정책(IAM 정책) 사용

이 주제에서는 계정 관리자가 IAM 자격 증명(사용자, 그룹, 역할)에 권한 정책을 연결할 수 있는 자격 증명 기반 정책 예제를 제시합니다. 이 예제는 Directory Service의 IAM 정책을 설명합니다. 요구 사항과 환경에 맞게 사용자의 정책을 수정하고 생성해야 합니다.

중요

Directory Service 리소스에 대한 액세스 관리를 위해 제공되는 기본 개념과 옵션 설명이 나온 소개 주제 부분을 먼저 읽는 것이 좋습니다. 자세한 내용은 Directory Service 리소스에 대한 액세스 권한 관리 개요 섹션을 참조하세요.

이 주제의 섹션에서는 다음 내용을 학습합니다.

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

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowDsEc2IamGetRole", "Effect": "Allow", "Action": [ "ds:CreateDirectory", "ec2:RevokeSecurityGroupIngress", "ec2:CreateNetworkInterface", "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:CreateSecurityGroup", "ec2:RevokeSecurityGroupEgress", "ec2:DeleteSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:DescribeSubnets", "iam:GetRole" ], "Resource": "*" }, { "Sid": "WarningAllowsCreatingRolesWithDirSvcPrefix", "Effect": "Allow", "Action": [ "iam:CreateRole", "iam:PutRolePolicy" ], "Resource": "arn:aws:iam::111122223333:role/DirSvc*" }, { "Sid": "AllowPassRole", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::111122223333:role/Your-Role-Name", "Condition": { "StringEquals": { "iam:PassedToService": "cloudwatch.amazonaws.com" } } } ] }

정책의 세 명령문은 다음과 같이 권한을 부여합니다.

  • 첫 번째 문은 Directory Service 디렉터리를 생성할 수 있는 권한을 부여합니다. Directory Service는 리소스 수준에서 권한을 지원하지 않으므로 정책에서 와일드카드 문자(*)를 Resource 값으로 지정합니다.

  • 두 번째 진술은 Directory Service가 사용자를 대신하여 IAM 역할을 읽고 만들 수 있도록 IAM 작업에 액세스할 수 있는 권한을 부여합니다. Resource 값의 끝에 있는 와일드카드 문자(*)는 설명문이 모든 IAM 역할에서 IAM 작업에 대한 권한을 허용함을 의미합니다. 이러한 권한을 특정 역할로 제한하려면 리소스 ARN에 있는 와일드카드 문자(*)를 특정 역할 이름으로 대체합니다. 자세한 내용은 IAM 작업을 참조하세요.

  • 세 번째 설명문은 Directory Service가 디렉터리를 생성, 구성, 삭제하도록 허용하는 데 필요한 Amazon EC2 내 특정 리소스에 권한을 부여합니다. 역할 ARN을 사용자 역할로 대체합니다. 자세한 내용은 Amazon EC2 작업을 참조하세요.

ID 기반 정책에서는 권한을 받는 주체를 지정하지 않기 때문에 정책에 Principal 요소가 표시되지 않습니다. 정책을 사용자에게 연결할 경우 사용자는 암시적인 보안 주체입니다. IAM 역할에 권한 정책을 연결할 경우 역할의 신뢰 정책에 식별된 보안 주체는 권한을 가집니다.

모든 Directory Service API 작업과 해당 작업이 적용되는 리소스를 보여주는 표는 Directory Service API 권한: 작업, 리소스 및 조건 참조 단원을 참조하세요.

Directory Service 콘솔 사용에 필요한 권한

사용자가 Directory Service 콘솔로 작업하려면 앞의 정책에 나와 있는 권한이나 디렉터리 서비스 전체 액세스 역할 또는 디렉터리 서비스 읽기 전용 역할이 부여한 권한이 있어야 합니다(AWS에 대한 관리형(미리 정의된) 정책Directory Service에 설명).

최소 필수 권한보다 더 제한적인 IAM 정책을 만들면 콘솔은 해당 IAM 정책에 연결된 사용자에 대해 의도대로 작동하지 않습니다.

AWS에 대한 관리형(미리 정의된) 정책Directory Service

AWS는 AWS에 의해 생성 및 관리되는 미리 정의되거나 관리되는 IAM 정책을 제공하여 많은 일반적인 사용 사례를 해결합니다. 관리형 정책은 일반적인 사용 사례에 필요한 권한을 부여하므로 필요한 권한을 결정하는 데 도움이 됩니다. 자세한 내용은 AWS의 관리형 정책AWS Directory Service 섹션을 참조하세요.

고객 관리형 정책 예

이 단원에서는 다양한 Directory Service 작업에 대한 권한을 부여하는 사용자 정책의 예를 제공합니다.

참고

모든 예에서는 미국 서부(오리건) 리전(us-west-2)을 사용하며 가상의 계정 ID를 포함합니다.

예제 1: 사용자가 모든 Directory Service 리소스에서 Describe 작업을 수행할 수 있도록 허용

다음 권한 정책은 사용자에게 AWS 계정 111122223333의 디렉터리 ID d-1234567890을 가진 AWS Managed Microsoft AD에서 Describe으로 시작하는 모든 작업을 실행할 수 있는 권한을 부여합니다. 이러한 작업은 디렉터리나 스냅샷과 같은 Directory Service 리소스에 대한 정보를 보여 줍니다. 사용하려는 리전과 계정 번호로 AWS 리전 및 계정 번호를 변경해야 합니다.

JSON
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":"ds:Describe*", "Resource": "arn:aws:ds:us-west-2:111122223333:directory/d-1234567890" } ] }

예제 2: 사용자에게 디렉터리 생성 허용

다음 권한 정책은 사용자가 디렉터리와 스냅샷, 신뢰 같은 기타 모든 관련 리소스를 생성하도록 허용하는 권한을 부여합니다. 이를 위해서는 특정 Amazon EC2 서비스에 대한 권한도 필요합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AuthorizeSecurityGroupEgress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateNetworkInterface", "ec2:CreateSecurityGroup", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DescribeNetworkInterfaces", "ec2:DescribeSubnets", "ec2:DescribeVpcs", "ec2:RevokeSecurityGroupEgress", "ec2:RevokeSecurityGroupIngress", "ec2:CreateTags" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ds:CreateDirectory", "ds:DescribeDirectories" ], "Resource": "arn:aws:ds:*:111122223333:*" } ] }

IAM 정책에 태그 사용

대부분의 Directory Service API 작업에 사용하는 IAM 정책에는 태그 기반의 리소스 수준 권한을 적용할 수 있습니다. 이를 통해 사용자가 생성, 수정 또는 사용할 수 있는 리소스를 더욱 정확하게 제어할 수 있습니다. 리소스 태그를 기반으로 사용자 액세스(권한)를 제어하기 위해 IAM 정책에서 다음 조건 콘텍스트 키 및 값과 함께 Condition 요소(Condition 블록)를 사용합니다.

  • 특정 태그가 지정된 리소스에 대한 사용자 작업을 허용 또는 거부하려면 aws:ResourceTag/tag-key: tag-value를 사용합니다.

  • 태그가 허용되는 리소스를 생성하거나 수정하기 위해 API 요청을 할 때 특정 태그를 사용하도록(또는 사용하지 않도록) 요구하려면 aws:ResourceTag/tag-key: tag-value를 사용합니다.

  • 태그가 허용되는 리소스를 생성하거나 수정하기 위해 API 요청을 할 때 특정한 태그 키 세트를 사용하도록(또는 사용하지 않도록) 요구하려면 aws:TagKeys: [tag-key, ...]를 사용합니다.

참고

IAM 정책의 조건 컨텍스트 키와 값은 태깅 가능한 리소스의 ID가 필수 파라미터인 Directory Service 작업에만 적용됩니다.

태그 사용에 대한 자세한 내용은 IAM 사용 설명서Controlling access using tags(태그를 사용한 액세스 제어)를 참조하세요. 이 설명서의 IAM JSON 정책 참조 단원에서는 IAM에서 JSON 정책의 자세한 구문과 설명, 요소의 예, 변수, 평가 로직을 설명합니다.

다음 태그 정책은 다음 태그가 사용되는 한 Directory Service 디렉터리 생성을 허용합니다.

  • 환경: 프로덕션

  • 소유자: Infrastructure Team

  • 비용 센터: 1234

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:CreateDirectory" ], "Resource": "*", "Condition": { "StringEquals": { "aws:RequestTag/Environment": "Production", "aws:RequestTag/Owner": "Infrastructure-Team", "aws:RequestTag/CostCenter": "12345" } } } ] }

다음 태그 정책은 다음 태그가 사용되는 한 Directory Service 디렉터리를 업데이트하고 삭제하도록 허용합니다.

  • 프로젝트: Atlas

  • 부서: Engineering

  • 환경: Staging

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ds:DeleteDirectory", "ds:UpdateDirectory" ], "Resource": "*", "Condition": { "StringEquals": { "aws:ResourceTag/Project": "Atlas", "aws:ResourceTag/Department": "Engineering", "aws:ResourceTag/Environment": "Staging" } } } ] }

다음 태그 정책은 리소스에 다음 태그 중 하나가 있을 경우 Directory Service에 대한 리소스 태그 지정을 거부합니다.

  • 프로덕션

  • 보안

  • 기밀성

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Deny", "Action": [ "ds:AddTagsToResource" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:TagKeys": ["Production", "Security", "Confidential"] } } } ] }

ARN에 대한 자세한 내용은 Amazon 리소스 이름(ARN) 및 AWS 서비스 네임스페이스 단원을 참조하세요.

다음 Directory Service API 작업 목록은 태그 기반의 리소스 수준 권한을 지원합니다.