리소스 태그 지정에 대한 SCP 예제 - AWS Organizations

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

리소스 태그 지정에 대한 SCP 예제

생성되는 특정 리소스에 대한 태그 요구

다음 SCP는 요청에 지정된 태그가 포함되지 않은 경우 영향받는 계정의 IAM 사용자 및 역할이 특정 리소스 유형을 생성하지 못하도록 합니다.

중요

자신의 환경에서 사용하는 서비스에서 거부 기반 정책을 테스트해야 합니다. 다음 예제는 태그가 지정되지 않은 보안 암호를 생성하거나 태그가 지정되지 않은 Amazon EC2 인스턴스를 실행하는 것을 차단하며, 예외가 없습니다.

다음 예제 정책은 작성된 AWS CloudFormation 대로와 호환되지 않습니다. 해당 서비스가 보안 암호를 생성한 다음 두 단계로 태그를 지정하기 때문입니다. 이 예제 정책은 스택의 일부로 보안 암호를 AWS CloudFormation 생성하는 것을 효과적으로 차단합니다. 이러한 작업은 필요에 따라 태그가 지정되지 않은 보안 암호에서 잠시 발생할 수 있기 때문입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyCreateSecretWithNoProjectTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyRunInstanceWithNoProjectTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "Null": { "aws:RequestTag/Project": "true" } } }, { "Sid": "DenyCreateSecretWithNoCostCenterTag", "Effect": "Deny", "Action": "secretsmanager:CreateSecret", "Resource": "*", "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } }, { "Sid": "DenyRunInstanceWithNoCostCenterTag", "Effect": "Deny", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*" ], "Condition": { "Null": { "aws:RequestTag/CostCenter": "true" } } } ] }

모든 서비스 목록과 이들이 AWS Organizations SCPs 및 IAM 권한 정책 모두에서 지원하는 작업은 IAM 사용 설명서의에 대한 작업, 리소스 및 조건 키를 참조하세요 AWS 서비스.

권한 있는 보안 주체 외에는 태그를 수정할 수 없도록 방지

다음 SCP는 권한 있는 보안 주체만 리소스에 연결된 태그를 수정하도록 정책을 구성하는 방법을 보여 줍니다. 이는 AWS 클라우드 보안 전략의 일부로 속성 기반 액세스 제어(ABAC)를 사용하는 데 중요한 부분입니다. 이 정책은 권한 부여 태그(이 예제에서는 access-project)가 요청을 수행하는 사용자 또는 역할에 연결된 동일한 권한 부여 태그와 정확히 일치하는 리소스의 태그만을 호출자가 수정할 수 있도록 허용합니다. 또한 이 정책은 권한 있는 사용자가 권한 부여에 사용되는 태그의 을 변경하지 못하도록 합니다. 변경을 수행하려면 호출하는 보안 주체에게 권한 부여 태그가 있어야 합니다.

이 정책은 권한 없는 사용자만 태그를 변경하지 못하도록 차단합니다. 이 정책에 의해 차단되지 않은 권한 있는 사용자에게는 관련 태그 지정 API에서 Allow 권한을 명시적으로 부여하는 별도의 IAM 정책이 여전히 필요합니다. 예를 들어 사용자에게 Allow */*(모든 서비스와 모든 작업 허용)를 사용한 관리자 정책이 있는 경우 결합을 통해 관리 사용자는 사용자의 보안 주체에 연결된 권한 부여 태그와 일치하는 권한 부여 태그 값을 가진 태그 변경할 수 있습니다. 이 정책의 명시적 Deny가 관리자 정책의 명시적 Allow를 무시하기 때문입니다.

중요

이는 완전한 정책 솔루션이 아니므로 여기에 제시된 대로 사용해서는 안 됩니다. 이 예제는 ABAC 전략의 일부를 설명하기 위한 것이므로 프로덕션 환경에 맞게 사용자 지정하고 테스트해야 합니다.

작동 방식에 대한 상세 분석을 포함한 전체 정책은 AWS Organizations에서 서비스 제어 정책을 사용하여 권한 부여에 사용되는 리소스 태그 보호를 참조하세요.

자신의 환경에서 사용하는 서비스에서 거부 기반 정책을 테스트해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyModifyTagsIfResAuthzTagAndPrinTagDontMatch", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "ec2:ResourceTag/access-project": "${aws:PrincipalTag/access-project}", "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "Null": { "ec2:ResourceTag/access-project": false } } }, { "Sid": "DenyModifyResAuthzTagIfPrinTagDontMatch", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "aws:RequestTag/access-project": "${aws:PrincipalTag/access-project}", "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "ForAnyValue:StringEquals": { "aws:TagKeys": [ "access-project" ] } } }, { "Sid": "DenyModifyTagsIfPrinTagNotExists", "Effect": "Deny", "Action": [ "ec2:CreateTags", "ec2:DeleteTags" ], "Resource": [ "*" ], "Condition": { "StringNotEquals": { "aws:PrincipalArn": "arn:aws:iam::123456789012:role/org-admins/iam-admin" }, "Null": { "aws:PrincipalTag/access-project": true } } } ] }