Skip to content

IAM 리소스에 태깅


태그는 사용자 또는 AWS 리소스에 할당할 수 있는 사용자 지정 속성 레이블이다. 각 태그에는 다음 두 가지 부분이 있다.

  • 태그 키(예: CostCenter, Environment, Project 또는 Purpose). 태그 키는 대/소문자를 구별한다.

  • 태그 값(예: 111122223333, Production 또는 팀 이름)으로 알려진 선택적 필드. 태그 값을 생략하는 것은 빈 문자열을 사용하는 것과 같다. 태그 키처럼 태그 값은 대/소문자를 구별한다.

태그 키와 태그 값을 합해서 키 값 페어라고 한다.

태그를 사용하면 AWS 리소스를 식별하고 구성하는 데 도움이 된다. 많은 AWS 서비스가 태그 지정을 지원하므로 다른 서비스의 리소스에 동일한 태그를 할당하여 해당 리소스의 관련 여부를 나타낼 수 있다. 예를 들어 Amazon S3 버킷에 할당한 것과 동일한 태그를 IAM 역할에 할당할 수 있다.

태그로 IAM 리소스를 식별, 구성 및 추적하는 것 외에도 IAM 정책의 태그를 사용하여 리소스를 보고 상호 작용할 수 있는 사용자를 제어할 수 있다.

역할을 수임하거나 사용자를 연동할 때 AWS STS에서 태그를 사용하여 사용자 지정 속성을 추가할 수도 있다.

주제


1. AWS 태그 이름 지정 규칙 선택

IAM 리소스에 태그 연결을 시작할 때 태그 이름 지정 규칙을 신중하게 선택한다. 모든 AWS 태그에 동일한 규칙을 적용한다. 정책에서 태그를 사용하여 AWS 리소스에 대한 액세스를 제어하는 경우 특히 중요하다. AWS에서 태그를 이미 사용하고 있다면 이름 지정 규칙을 검토하고 적절하게 조정한다.

1) 태그 이름 지정 모범 사례

다음은 태그에 대한 몇 가지 모범 사례 및 명명 규칙이다.

AWS 태그의 이름은 대/소문자를 구분하므로 일관되게 사용해야 한다. 예를 들어 태그 CostCentercostcenter는 서로 다르므로 하나는 재무 분석 및 보고를 위한 비용 할당 태그로 구성되고 다른 하나는 그렇지 않을 수 있다. 마찬가지로, Name 태그는 많은 리소스에서 AWS 콘솔에 나타나지만 name 태그는 그렇지 않다.

여러 태그가 AWS에서 미리 정의되거나 다양한 AWS 서비스에서 자동으로 생성된다. 다수의 AWS 정의 태그 이름은 단어를 구분하는 하이픈과 함께 모두 소문자를 사용하며, 접두사로 태그의 소스 서비스를 식별한다. 예:

  • aws:ec2spot:fleet-request-id는 인스턴스를 시작한 Amazon EC2 스팟 인스턴스 요청을 식별한다.

  • aws:cloudformation:stack-name은 리소스를 생성한 AWS CloudFormation 스택을 식별한다.

  • elasticbeanstalk:environment-name은 리소스를 생성한 애플리케이션을 식별한다.

태그 이름은 모두 소문자를 사용하여 지정하는 것이 좋으며, 단어를 구분하는 하이픈과 조직 이름 또는 축약된 이름을 나타내는 접두사를 함께 사용한다. 예를 들어, 이름이 AnyCompany인 가상의 회사에 대해 다음과 같은 태그를 정의할 수 있다.

  • 내부 비용 센터 코드를 식별하는 anycompany:cost-center

  • 환경이 개발, 테스트 또는 프로덕션인지 식별하는 anycompany:environment-type

  • 리소스가 생성된 애플리케이션을 식별하는 anycompany:application-id

접두사를 사용하면 태그가 AWS 또는 사용 중인 타사 도구가 아닌 조직에서 정의한 것으로 명확하게 식별된다. 구분 기호에 하이픈과 함께 모두 소문자를 사용하면 태그 이름을 대문자로 표시하는 방법에 대한 혼동을 피할 수 있다. 예를 들어, anycompany:project-idANYCOMPANY:ProjectID,anycompany:projectID 또는 Anycompany:ProjectId보다 간단하게 기억할 수 있다.


2. IAM 및 AWS STS의 태그 지정 규칙

IAM 및 AWS STS에서 태그의 생성과 적용을 관리하는 규칙은 여러 가지가 있다.

1) 태그 이름 지정

IAM 리소스, AWS STS assume-role 세션 및 AWS STS 페더레이션 사용자 세션에 대한 태그 이름 지정 규칙을 공식화하는 경우 다음 규칙을 준수한다.

문자 요구 사항 - 태그 키 및 값은 문자, 숫자, 공백 및 _ . : / = + - @ 기호를 포함할 수 있다.

대소문자 구분 - 태그 키의 대소문자 구분은 태깅된 IAM 리소스의 유형에 따라 다르다. IAM 사용자 및 역할의 태그 키 값은 대소문자를 구분하지 않지만 대소문자는 유지된다. 즉, 별도의 Departmentdepartment 태그 키를 가질 수 없음을 의미한다. Department=finance 태그로 사용자 태그를 지정하고 department=hr 태그를 추가하면 첫 번째 태그가 바뀐다. 두 번째 태그는 추가되지 않는다.

다른 IAM 리소스 유형의 경우 태그 키 값은 대소문자를 구분한다. 즉, Costcenter 태그 키와 costcenter 태그 키를 별도로 지정할 수 있다. 예를 들어 고객 관리형 정책에 Costcenter = 1234 태그를 지정하고 costcenter = 5678 태그를 추가하면 정책에는 Costcentercostcenter 태그 키가 모두 포함된다.

모범 사례로서, 대소문자가 일치하지 않는 유사한 태그를 사용하지 않는 것이 좋다. 태그를 대문자로 사용하는 전략을 세우고 이러한 전략을 모든 리소스 유형에 대해 일관되게 구현하는 것이 좋다.

다음 목록은 IAM 리소스에 연결된 태그 키의 대소문자 구분 차이점을 보여준다.

태그 키 값이 대소문자를 구분하지 않는다.

  • IAM 역할

  • IAM 사용자

태그 키 값이 대소문자를 구분한다.

  • 고객 관리형 정책

  • 인스턴스 프로파일

  • OpenID Connect 크레덴셜 공급자

  • SAML 크레덴셜 공급자

  • 서버 인증서

  • 가상 MFA 디바이스

또한 다음 규칙이 적용된다.

  • aws:로 시작하는 태그 키 또는 값을 생성할 수 없다. 이 태그 접두사는 AWS 내부 전용으로 예약되어 있다.

  • phoneNumber =와 같이 값이 비어 있는 태그를 만들 수 있다. 빈 태그 키는 생성할 수 없다.

  • 단일 태그에 여러 값을 지정할 수 없지만 단일 값으로 사용자 지정 다중 값 구조를 생성할 수 있다. 예를 들어 사용자 Zhang이 엔지니어링 팀과 QA 팀에서 근무한다고 가정한다. team = Engineering 태그를 연결하고 team = QA 태그를 연결한 경우 태그 값을 Engineering에서 QA로 변경한다. 대신 사용자 지정 구분자를 사용하여 단일 태그에 여러 값을 포함할 수 있다. 이 예에서는 Zhang에게 team = Engineering:QA 태그를 연결할 수 있다.

Note

이 예제에서 team 태그를 사용하여 엔지니어에 대한 액세스를 제어하려면 Engineering:QA를 포함하여 Engineering을 포함할 수 있는 모든 구성을 허용하는 정책을 만들어야 한다.

2) 태그 적용 및 편집

태그를 IAM 리소스에 연결할 때는 다음 규칙을 준수한다.

  • 대부분의 IAM 리소스에 태그를 지정할 수 있지만 그룹, 수임한 역할, 액세스 보고서 또는 하드웨어 기반 MFA 디바이스에는 태그를 지정할 수 있다.

  • Tag Editor를 사용하여 IAM 리소스에 태깅할 수 없다. Tag Editor는 IAM 태그를 지원하지 않는다.

  • IAM 리소스를 태깅하려면 특정 권한이 있어야 한다. 리소스를 태깅하거나 태깅 해제하려면 태그를 나열할 수 있는 권한이 있어야 한다.

  • AWS 계정의 IAM 리소스 수와 크기는 제한되어 있다.

  • 여러 IAM 리소스에 동일한 태그를 적용할 수 있다. 예를 들어, 12명의 멤버가 있는 AWS_Development 부서가 있다고 가정한다. 태그 키 department 및 값 awsDevelopment(department = awsDevelopment)를 가진 12명의 사용자와 역할이 있을 수 있다. 태그 지정을 지원하는 다른 서비스의 리소스에도 동일한 태그를 사용할 수 있다.

  • IAM 엔터티(사용자 또는 역할)에는 태그 키가 같은 인스턴스가 여러 개 있을 수 없다. 예를 들어 태그 키 값 페어 costCenter = 1234가 지정된 사용자가 있는 경우 태그 키 값 페어 costCenter = 5678을 연결할 수 있다. IAM은 costCenter 태그의 값을 5678로 업데이트한다.

  • IAM 엔터티(사용자 또는 역할)에 연결된 태그를 편집하려면 새 값으로 태그를 연결하여 기존 태그를 덮어쓴다. 예를 들어, 태그 키 값 페어 department = Engineering을 가진 사용자가 있다고 가정한다. 사용자를 QA 부서로 이동해야 하는 경우 department = QA 태그 키 값 페어를 사용자에게 연결할 수 있다. 결과적으로 department 태그 키의 Engineering 값이 QA 값으로 대체된다.


References