태그를 사용한 AWS 리소스 액세스 제어 - AWS Identity and Access Management

태그를 사용한 AWS 리소스 액세스 제어

태그를 사용하여, IAM 리소스를 비롯한 태깅을 지원하는 AWS 리소스에 대한 액세스를 제어할 수 있습니다. IAM 사용자 및 역할을 태깅하여 액세스할 수 있는 권한을 제어할 수 있습니다. IAM 사용자 및 역할을 태그 지정하는 방법을 알아보려면 IAM 리소스 태깅 단원을 참조하십시오. 또한 고객 관리형 정책, IAM 자격 증명 공급자, 인스턴스 프로파일, 서버 인증서, 가상 MFA 디바이스 등의 IAM 리소스에 대한 액세스를 제어할 수 있습니다. 보안 주체 태그가 있는 IAM 역할이 일치하는 태그가 있는 리소스에 액세스할 수 있도록 허용하는 정책을 만들고 테스트하는 자습서를 보려면 IAM 자습서: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의 단원을 참조하십시오. 다음 섹션의 정보를 사용하여 IAM 사용자 또는 역할을 태깅하지 않고 IAM 리소스를 비롯한 다른 AWS 리소스에 대한 액세스를 제어합니다.

태그를 사용하여 AWS 리소스에 대한 액세스를 제어하기 전에 AWS의 액세스 허용 방식을 이해해야 합니다. 또한 AWS는 리소스의 컬렉션으로 구성되어 있습니다. Amazon EC2 인스턴스도 리소스입니다. Amazon S3 버킷도 리소스입니다. AWS API, AWS CLI 또는 AWS Management Console을 사용하여 작업(예: Amazon S3에서 버킷 생성)을 수행할 수 있습니다. 그렇게 하면 해당 작업에 대한 요청을 보냅니다. 이 요청은 작업, 리소스, 보안 주체 엔터티(사용자 또는 역할), 보안 주체 계정 및 필요한 요청 정보를 지정합니다. 이러한 모든 정보는 콘텍스트를 제공합니다.

그런 다음 AWS은 사용자(보안 주체 엔터티)가 지정된 리소스에 대해 지정된 작업을 수행할 수 있도록 인증(로그인) 및 권한 부여(권한 있음)되었는지 확인합니다. 권한을 부여하는 동안 AWS는 요청 콘텍스트에 적용되는 모든 정책을 확인합니다. 대부분의 정책은 AWS에 JSON 문서로 저장되며 보안 주체 엔터티에 대한 권한을 지정합니다. 정책 유형 및 활용에 대한 자세한 내용은 IAM의 정책 및 권한 단원을 참조하십시오.

AWS는 정책이 요청의 각 부분을 허용한 경우에만 요청에 권한을 부여합니다. 다이어그램을 보고 IAM 인프라에 대해 자세히 알아보려면 IAM 작동 방식 이해 단원을 참조하십시오. IAM가 요청이 허용되는지 여부를 결정하는 방법에 대한 자세한 내용은 정책 평가 로직 단원을 참조하십시오.

태그로 인해 이 프로세스가 복잡해질 수 있는데, 리소스에 태그가 연결되거나 태그 지정을 지원하는 서비스에 대한 요청에 전달될 수 있기 때문입니다. 태그를 기반으로 액세스를 제어하려면 정책의 조건 요소에 태그 정보를 제공하십시오. AWS 서비스에서 태그를 사용한 액세스 제어를 지원하는지 여부를 알아보려면 IAM으로 작업하는 AWS 서비스 단원을 참조하고, 태그 기반 권한 부여 열이 인 서비스를 찾아보십시오. 서비스의 이름을 선택하여 해당 서비스에 대한 권한 부여 및 액세스 제어 문서를 봅니다.

그러면 리소스의 태그를 기반으로 리소스에 대한 액세스를 허용하거나 거부하는 IAM 정책을 생성할 수 있습니다. 해당 정책에서는 태그 조건 키를 사용하여 다음 중 하나에 대한 액세스를 제어할 수 있습니다.

  • 리소스 – 리소스에 대한 태그를 기반으로 AWS 서비스 리소스에 대한 액세스를 제어합니다. 이를 수행하려면 ResourceTag/key-name 조건 키를 사용하여 리소스에 연결된 태그를 기반으로 리소스에 대한 액세스를 허용할지 여부를 결정합니다.

  • 요청 – 어떤 태그가 요청에 전달될 수 있는지 제어합니다. 이를 수행하려면 aws:RequestTag/key-name 조건 키를 사용하여 AWS 리소스에 태그를 지정하거나 태그를 제거하는 요청에서 어떤 태그 키-값 페어를 전달할 수 있는지를 지정합니다.

  • 권한 부여 프로세스의 일부aws:TagKeys 조건 키를 사용하여 특정 태그 키를 리소스 또는 요청에서 사용할 수 있는지 여부를 제어합니다.

JSON을 사용하거나 기존 관리형 정책을 가져와서 시각적으로 IAM 정책을 생성할 수 있습니다. 자세한 내용은 IAM 정책 생성 단원을 참조하십시오.

AWS 리소스에 대한 액세스 제어

IAM 정책의 조건을 사용하여 해당 리소스의 태그를 기반으로 AWS 리소스에 대한 액세스를 제어할 수 있습니다. 전역 aws:ResourceTag/tag-key 조건 키 또는 서비스별 키를 사용하여 이 작업을 수행할 수 있습니다. 일부 서비스는 이 키의 서비스별 버전만 지원하며 전역 버전은 지원하지 않습니다.

참고

iam:PassRole 작업을 포함하는 정책에는 ResourceTag 조건 키를 사용하지 마십시오. IAM 역할에서는 태그를 사용하여 누가 해당 역할을 전달할 수 있는지 액세스 권한을 제어할 수 없습니다. 서비스로 역할을 전달하는 데 필요한 권한에 대한 자세한 내용은 사용자에게 AWS 서비스에 역할을 전달할 권한 부여 단원을 참조하십시오.

이 예제에서는 다음과 같은 IAM 정책을 생성할 수 있는 방법을 보여 줍니다.에서는 Amazon EC2 인스턴스를 시작 또는 중지할 수 있도록 허용합니다. 이러한 작업은 인스턴스 태그 Owner가 사용자 이름의 값과 같은 경우에만 허용됩니다.이 정책은 프로그래밍 방식 및 콘솔 액세스에 대한 권한을 정의합니다.

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

이 정책을 계정의 IAM 사용자에게 연결할 수 있습니다. 이름이 richard-roe인 사용자가 Amazon EC2 인스턴스를 시작하려 하는 경우 인스턴스에 Owner=richard-roe 또는 owner=richard-roe 태그가 지정되어야 합니다. 그렇지 않은 경우 액세스가 거부됩니다. 태그 키 OwnerOwnerowner 모두와 일치하는데, 조건 키가 대/소문자를 구분하지 않기 때문입니다. 자세한 내용은 IAM JSON 정책 요소: Condition 섹션을 참조하세요.

AWS 요청 중 액세스 제어

IAM 정책의 조건을 사용하여 AWS 리소스에 태그를 지정하는 요청에서 어떤 태그 키-값 페어를 전달할 수 있는지를 제어할 수 있습니다.

이 예제에서는 다음과 같은 IAM 정책을 생성할 수 있는 방법을 보여 줍니다.에서는 Amazon EC2 CreateTags 작업을 사용하여 태그를 인스턴스에 연결할 수 있습니다. 태그에 environment 키 및 preprod 또는 production 값이 포함된 경우에만 태그를 연결할 수 있습니다. 원하는 경우 ForAllValues 변경자를 aws:TagKeys 조건 키와 함께 사용하여 요청에서 키 environment만 허용됨을 표시할 수 있습니다. 이를 통해 사용자가 environment 대신 Environment를 실수로 사용하는 것과 같이 다른 키를 포함시키는 것을 방지합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringEquals": { "aws:RequestTag/environment": [ "preprod", "production" ] }, "ForAllValues:StringEquals": {"aws:TagKeys": "environment"} } } }

태그 키를 기반으로 액세스 제어

IAM 정책에서 조건을 사용하여 리소스 또는 요청에 특정 태그 키를 사용할 수 있는지 여부를 제어할 수 있습니다.

모범 사례로서 정책을 사용하여 태그를 사용한 액세스를 제어할 때 aws:TagKeys 조건 키를 사용해야 합니다. 태그를 지원하는 AWS 서비스를 통해 대소문자만 다른 여러 태그 키 이름을 생성할 수 있습니다(예: Amazon EC2 인스턴스에 stack=productionStack=test 태그 지정). 정책 조건에서 키 이름은 대/소문자를 구분하지 않습니다. 따라서 정책의 조건 요소에서 "aws:ResourceTag/TagKey1": "Value1" 지정을 완료한 경우 조건은 이름이 TagKey1 또는 tagkey1인 리소스 태그 키와 일치하지만 두 가지 모두와 일치하지는 않습니다. 대소문자만 다른 키를 포함한 중복 태그를 방지하려면 aws:TagKeys 조건을 사용하여 사용자가 적용할 수 있는 태그 키를 정의합니다.

이 예제에서는 다음과 같은 IAM 정책을 생성할 수 있는 방법을 보여 줍니다.를 통해 Secrets Manager 비밀 생성 및 태그 지정이 가능하지만 태그 키 environment 또는 cost-center를 포함해야만 합니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "secretsmanager:CreateSecret", "secretsmanager:TagResource" ], "Resource": "*", "Condition": { "ForAllValues:StringEquals": { "aws:TagKeys": [ "environment", "cost-center" ] } } } }