IAM 식별자
IAM은 사용자, 사용자 그룹, 역할, 정책 및 서버 인증서에 대해 몇 가지 다른 식별자를 사용합니다. 이 단원에서는 그러한 식별자와 각 식별자를 사용하는 경우를 설명합니다.
표시 이름 및 경로
사용자, 역할, 사용자 그룹 또는 정책을 생성하거나 서버 인증서를 업로드할 때 표시 이름을 지정합니다. 예를 들면 Bob, TestApp1, Developers, ManageCredentialsPermissions 또는 ProdServerCert입니다.
IAM API 또는 AWS Command Line Interface(AWS CLI)를 사용하여 IAM 리소스를 생성하는 경우, 선택적 경로를 추가할 수 있습니다. 하나의 경로를 사용하거나, 하나의 폴더 구조인 것처럼 여러 경로를 중첩할 수 있습니다. 예를 들면 중첩된 경로 /division_abc/subdivision_xyz/product_1234/engineering/
를 사용하여 귀하 회사의 조직 구조를 일치시킬 수 있습니다. 그런 다음 정책을 생성하여 그 경로의 모든 사용자가 정책 시뮬레이터 API에 액세스할 수 있도록 허용할 수 있습니다. 정책을 보려면 IAM: 사용자 경로를 바탕으로 정책 시뮬레이터 API 액세스 섹션을 참조하세요. 알기 쉬운 이름을 지정하는 방법에 대한 자세한 내용은 사용자 API 설명서를 참조하세요. 경로를 사용하는 방법의 추가 예제는 IAM ARN 섹션을 참조하세요.
AWS CloudFormation을 사용하여 리소스를 생성할 때 사용자, 사용자 그룹 및 역할과 고객 관리형 정책에 대한 경로를 지정할 수 있습니다.
동일한 경로에 사용자 및 사용자 그룹이 있는 경우 IAM은 사용자를 해당 사용자 그룹에 자동으로 배치하지 않습니다. 예를 들어, Developers 사용자 그룹을 생성하고 이 그룹의 경로를 /division_abc/subdivision_xyz/product_1234/engineering/
(으)로 지정할 수 있습니다. Bob이라는 사용자를 생성하고 그에게 동일한 경로를 추가했다고 해서 Bob이 Developers 사용자 그룹에 자동으로 추가되지는 않습니다. IAM은 경로에 따라 사용자 또는 사용자 그룹 간에 경계를 적용하지 않습니다. 해당 리소스에 대한 권한이 있다는 가정하에, 경로가 다른 사용자가 동일한 리소스를 사용할 수 있습니다. AWS 계정의 IAM 리소스 수와 크기는 제한되어 있습니다. 자세한 내용은 IAM 및 AWS STS 할당량 섹션을 참조하세요.
IAM ARN
대부분의 리소스에는 표시 이름이 있습니다(예를 들어, Bob
(이)라는 사용자 또는 Developers
(이)라는 사용자 그룹). 그러나 권한 정책 언어에는 다음과 같은 Amazon 리소스 이름(ARN) 형식을 사용하여 하나 이상의 리소스를 지정해야 합니다.
arn:partition
:service
:region
:account
:resource
위치:
-
partition
은 리소스가 위치하는 파티션을 식별합니다. 표준 AWS 리전에서 파티션은aws
입니다. 리소스가 다른 파티션에 있는 경우 파티션은aws-
입니다. 예를 들어 중국(베이징) 리전에 있는 리소스의 파티션은partitionname
aws-cn
입니다. 다른 파티션의 계정 간에 액세스 권한을 위임할 수 없습니다. -
service
에서는 AWS 제품을 식별합니다. IAM 리소스는 항상iam
을 사용합니다. -
region
은 리소스의 리전을 식별합니다. IAM 리소스의 경우 항상 공백입니다. -
account
은(는) 하이픈이 없는 AWS 계정 ID를 지정합니다. -
resource
는 특정 리소스를 이름으로 식별합니다.
다음 구문을 사용하여 IAM 및 AWS STS ARN을 지정할 수 있습니다. IAM 리소스가 글로벌이기 때문에 ARN의 리전 부분은 공백입니다.
구문:
arn:aws:iam::
account
:root arn:aws:iam::account
:user/user-name-with-path
arn:aws:iam::account
:group/group-name-with-path
arn:aws:iam::account
:role/role-name-with-path
arn:aws:iam::account
:policy/policy-name-with-path
arn:aws:iam::account
:instance-profile/instance-profile-name-with-path
arn:aws:sts::account
:federated-user/user-name
arn:aws:sts::account
:assumed-role/role-name
/role-session-name
arn:aws:sts::account
:self arn:aws:iam::account
:mfa/virtual-device-name-with-path
arn:aws:iam::account
:u2f/u2f-token-id
arn:aws:iam::account
:server-certificate/certificate-name-with-path
arn:aws:iam::account
:saml-provider/provider-name
arn:aws:iam::account
:oidc-provider/provider-name
다음과 같은 많은 예에는 ARN의 리소스 부분에 경로가 포함됩니다. AWS Management Console에서는 경로를 생성하거나 조작할 수 없습니다. 경로를 사용하려면 AWS API, AWS CLI 또는 Tools for Windows PowerShell을 사용하여 리소스와 함께 작업해야 합니다.
예시:
arn:aws:iam::123456789012:root arn:aws:iam::123456789012:user/JohnDoe arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe arn:aws:iam::123456789012:group/Developers arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers arn:aws:iam::123456789012:role/S3Access arn:aws:iam::123456789012:role/application_abc/component_xyz/RDSAccess arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer arn:aws:iam::123456789012:role/service-role/QuickSightAction arn:aws:iam::123456789012:policy/UsersManageOwnCredentials arn:aws:iam::123456789012:policy/division_abc/subdivision_xyz/UsersManageOwnCredentials arn:aws:iam::123456789012:instance-profile/Webserver arn:aws:sts::123456789012:federated-user/JohnDoe arn:aws:sts::123456789012:assumed-role/Accounting-Role/JaneDoe arn:aws:sts::123456789012:self arn:aws:iam::123456789012:mfa/JaneDoeMFA arn:aws:iam::123456789012:u2f/user/JohnDoe/default (U2F security key) arn:aws:iam::123456789012:server-certificate/ProdServerCert arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111 arn:aws:iam::123456789012:oidc-provider/server.example.org
다음 예제에서는 다양한 유형의 IAM 및 AWS STS 리소스에 대한 ARN 형식을 이해하는 데 도움이 되는 자세한 정보를 제공합니다.
-
계정의 IAM 사용자:
참고
각 IAM 사용자 이름은 고유합니다. 사용자 이름은 로그인 프로세스와 같이 사용자의 경우 대소문자를 구분하지 않지만 정책에서 사용하거나 ARN의 일부로 사용하는 경우에는 대소문자를 구분합니다.
arn:aws:iam::123456789012:user/JohnDoe
-
조직 차트를 반영하는 경로를 갖는 다른 사용자:
arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/JaneDoe
-
IAM 사용자 그룹:
arn:aws:iam::123456789012:group/Developers
-
경로를 포함하는 IAM 사용자 그룹:
arn:aws:iam::123456789012:group/division_abc/subdivision_xyz/product_A/Developers
-
IAM 역할:
arn:aws:iam::123456789012:role/S3Access
-
arn:aws:iam::123456789012:role/aws-service-role/access-analyzer.amazonaws.com/AWSServiceRoleForAccessAnalyzer
-
arn:aws:iam::123456789012:role/service-role/QuickSightAction
-
관리형 정책:
arn:aws:iam::123456789012:policy/ManageCredentialsPermissions
-
Amazon EC2 인스턴스와 연결될 수 있는 인스턴스 프로파일:
arn:aws:iam::123456789012:instance-profile/Webserver
-
IAM에서 "Paulo"로 식별되는 페더레이션 사용자:
arn:aws:sts::123456789012:federated-user/Paulo
-
역할 세션 이름 'Mary'로 역할 'Accounting-Role'을 수임하는 누군가의 활성 세션:
arn:aws:sts::123456789012:assumed-role/Accounting-Role/Mary
-
호출 세션에서 작동하는 AWS STS SetContext API와 같은 API 직접 호출에서 리소스로 사용될 때 호출자 자신의 세션을 나타냅니다.
arn:aws:sts::123456789012:self
-
사용자 이름 Jorge에 할당된 멀티 팩터 인증 디바이스:
arn:aws:iam::123456789012:mfa/Jorge
-
서버 인증서:
arn:aws:iam::123456789012:server-certificate/ProdServerCert
-
조직 차트를 반영하는 경로를 갖는 서버 인증서:
arn:aws:iam::123456789012:server-certificate/division_abc/subdivision_xyz/ProdServerCert
-
자격 증명 공급자(SAML 및 OIDC):
arn:aws:iam::123456789012:saml-provider/ADFSProvider arn:aws:iam::123456789012:oidc-provider/GoogleProvider arn:aws:iam::123456789012:oidc-provider/server.example.org
-
Amazon EKS OIDC ID 공급자 URL을 나타내는 경로가 있는 OIDC 자격 증명 공급자:
arn:aws:iam::123456789012:oidc-provider/oidc.eks.us-west-2.amazonaws.com/id/a1b2c3d4567890abcdefEXAMPLE11111
또 다른 중요한 ARN은 루트 사용자 ARN입니다. IAM 리소스는 아니지만 이 ARN의 형식을 잘 알고 있어야 합니다. 이 ARN은 종종 리소스 기반 정책의 Principal 요소에 사용됩니다.
-
AWS 계정에는 다음이 표시됩니다.
arn:aws:iam::123456789012:root
다음 예에서는 Richard가 액세스 키를 관리할 수 있도록 그에게 할당할 수 있는 정책을 보여줍니다. 리소스는 IAM 사용자 Richard입니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "ManageRichardAccessKeys", "Effect": "Allow", "Action": [ "iam:*AccessKey*", "iam:GetUser" ], "Resource": "arn:aws:iam::*:user/division_abc/subdivision_xyz/Richard" }, { "Sid": "ListForConsole", "Effect": "Allow", "Action": "iam:ListUsers", "Resource": "*" } ] }
참고
ARN을 사용하여 IAM 정책의 리소스를 식별하는 경우 정책 변수를 포함할 수 있습니다. 정책 변수에는 ARN의 일부로 런타임 정보(예: 사용자 이름)에 대한 자리표시자가 포함될 수 있습니다. 자세한 내용은 IAM 정책 요소: 변수 및 태그 섹션을 참조하세요.
ARN에서 와일드카드 및 경로 사용
ARN의 리소스
부분에 와일드카드를 사용하여 여러 사용자, 사용자 그룹 또는 정책을 지정할 수 있습니다. 예를 들어, product_1234를 작업하는 모든 사용자를 지정하려면 다음을 사용합니다.
arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/*
이름이 문자열 app_
(으)로 시작하는 사용자가 있는 경우, 다음 ARN을 사용하여 모두 참조할 수 있습니다.
arn:aws:iam::123456789012:user/division_abc/subdivision_xyz/product_1234/app_*
AWS 계정의 모든 사용자, 사용자 그룹 또는 정책을 지정하려면, ARN의 user/
, group/
또는 policy/
부분 다음에 각각 와일드카드를 사용합니다.
arn:aws:iam::123456789012:user/* arn:aws:iam::123456789012:group/* arn:aws:iam::123456789012:policy/*
사용자 arn:aws:iam::111122223333:user/*
에 대해 다음 ARN을 지정하는 경우 다음 두 예제 모두와 일치합니다.
arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe
그러나 사용자 arn:aws:iam::111122223333:user/division_abc*
에 대해 다음 ARN을 지정하는 경우 두 번째 예제와는 일치하지만 첫 번째 예제와는 일치하지 않습니다.
arn:aws:iam::111122223333:user/JohnDoe arn:aws:iam::111122223333:user/division_abc/subdivision_xyz/JaneDoe
ARN의 user/
, group/
또는 policy/
부분에 와일드카드를 사용하지 마십시오. 예를 들어 IAM은 다음을 허용하지 않습니다.
arn:aws:iam::123456789012:u*
예 프로젝트 기반 사용자 그룹의 경로 및 ARN 사용의 예
AWS Management Console에서는 경로를 생성하거나 조작할 수 없습니다. 경로를 사용하려면 AWS API, AWS CLI 또는 Tools for Windows PowerShell을 사용하여 리소스와 함께 작업해야 합니다.
이 예제에서 Marketing_Admin 사용자 그룹의 Jules가 /marketing/ 경로에 프로젝트 기반 사용자 그룹을 생성합니다. Jules는 회사의 다른 파트에 있는 사용자를 해당 사용자 그룹에 할당합니다. 이 예는 사용자의 경로가 그가 속한 사용자 그룹과 관련되지 않는다는 점을 보여줍니다.
마케팅 그룹에는 이들이 출시할 신제품이 있으므로 Jules는 /marketing/ 경로에 Widget_Launch라는 새 사용자 그룹을 생성합니다. 그런 다음 Jules는 해당 사용자 그룹에 다음과 같은 정책을 할당합니다. 이 정책은 사용자 그룹에 이 특정 출시에 지정된 example_bucket
부분의 객체에 대한 액세스 권한을 부여합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:*", "Resource": "arn:aws:s3:::example_bucket/marketing/newproductlaunch/widget/*" }, { "Effect": "Allow", "Action": "s3:ListBucket*", "Resource": "arn:aws:s3:::example_bucket", "Condition": {"StringLike": {"s3:prefix": "marketing/newproductlaunch/widget/*"}} } ] }
그런 다음 Jules는 해당 사용자 그룹에 이 출시와 관련된 사용자를 할당합니다. 여기에는 /marketing/ 경로의 Patricia와 Eli가 포함됩니다. 또한 /sales/ 경로의 Chris와 Chloe, /legal/ 경로의 Alice와 Jim이 포함됩니다.
고유 식별자
IAM에서 사용자, 사용자 그룹, 역할, 정책, 인스턴스 프로파일 또는 서버 인증서를 생성할 때, 각 리소스에 고유 ID를 할당합니다. 고유 ID는 다음과 같습니다.
AIDAJQABLZS4A3QDU576Q
대부분의 경우 IAM 리소스로 작업할 때 표시 이름과 ARN을 사용합니다. 이렇게 하면 특정 리소스의 고유 ID를 알아야 할 필요가 없습니다. 그러나 표시 이름을 사용하는 것이 적절치 않은 경우에는 고유 ID를 사용하는 것이 유용합니다.
한 예로써 AWS 계정에서 표시 이름을 재사용하는 경우를 살펴보겠습니다. 계정 내에서 사용자, 사용자 그룹, 역할 또는 정책의 표시 이름은 고유해야 합니다. 예를 들어, John
이라는 IAM 사용자를 생성할 수 있습니다. 회사에서 Amazon S3를 사용하고 있고 각 직원에 대한 폴더가 포함된 버킷이 있습니다. IAM 사용자 John
은 사용자가 버킷에서 자신의 폴더에만 액세스하도록 허용하는 권한이 있는 User-S3-Access
라는 IAM 사용자 그룹의 구성원입니다. IAM 사용자가 사용자의 표시 이름을 사용하여 S3에 있는 자신의 버킷 객체에 액세스하도록 허용하는 자격 증명 기반 정책을 생성하는 방법의 예제는 Amazon S3: IAM 사용자가 프로그램 방식으로 콘솔에서 자신의 S3 홈 디렉터리에 액세스하도록 허용 섹션을 참조하세요.
John이라는 직원이 퇴사하여 John
이라는 해당 IAM 사용자를 삭제한다고 가정해 봅시다. 그러나 이후 John이라는 또 다른 직원이 입사하여 John
이라는 새 IAM 사용자를 생성합니다. 기존 IAM 사용자 그룹 User-S3-Access
에 John
이라는 새 IAM 사용자를 추가합니다. 사용자 그룹에 연결된 정책에서 IAM 사용자 표시 이름 John
을 지정하는 경우 이 정책은 새 John이 이전 John이 남긴 정보에 액세스할 수 있도록 허용합니다.
일반적으로 정책의 리소스에 대해 고유한 ID 대신 ARN을 지정하는 것이 좋습니다. 그러나 이전에 삭제한 표시 이름을 재사용하는 새 IAM 사용자를 생성한다 하더라도 모든 IAM 사용자는 고유 ID를 갖습니다. 이 예에서 이전 IAM 사용자 John
과 새 IAM 사용자 John
은 서로 다른 고유 ID를 갖습니다. 사용자 이름뿐만 아니라 고유 ID별로 액세스 권한을 부여하는 리소스 기반 정책을 생성할 수 있습니다. 이렇게 하면 직원에게 없어야 하는 정보에 대한 액세스 권한을 실수로 부여할 가능성이 줄어듭니다.
다음 예에서는 리소스 기반 정책의 Principal 요소에 고유 ID를 지정하는 방법을 보여줍니다.
"Principal": { "AWS": [ "arn:aws:iam::
111122223333
:role/role-name
", "AIDACKCEVSQ6C2EXAMPLE
", "AROADBQP57FF2AEXAMPLE
" }
다음 예에서는 전역 조건 키 aws:userid의 Condition 요소에 고유 ID를 지정하는 방법을 보여줍니다.
"Condition": { "StringLike": { "aws:userId": [ "
AIDACKCEVSQ6C2EXAMPLE
", "AROADBQP57FF2AEXAMPLE
:role-session-name
", "AROA1234567890EXAMPLE
:*
", "111122223333
" ] } }
사용자 ID가 유용한 또 다른 예는 IAM 사용자 또는 역할 정보의 데이터베이스(또는 다른 저장소)를 유지하는 경우입니다. 고유 ID는 사용자가 생성하는 각 IAM 사용자 또는 역할에 대해 고유 식별자를 제공할 수 있습니다. 이전 예제에서와 같이 시간이 지남에 따라 이름을 재사용하는 IAM 사용자 또는 역할이 있는 경우에도 마찬가지입니다.
고유 ID 접두사에 대한 이해
IAM에서는 다음과 같은 접두사를 사용해 각 고유 ID가 적용되는 리소스의 유형을 표시합니다. 접두사는 생성 시기에 따라 달라질 수 있습니다.
접두사 | 리소스 유형 |
---|---|
ABIA | AWS STS 서비스 보유자 토큰 |
ACCA | 컨텍스트별 자격 증명 |
AGPA |
사용자 그룹 |
AIDA |
IAM 사용자 |
AIPA | Amazon EC2 인스턴스 프로파일 |
AKIA | 액세스 키 |
ANPA |
관리형 정책 |
ANVA |
관리 정책 내 버전 |
APKA | 퍼블릭 키 |
AROA | 역할 |
ASCA | 인증서 |
ASIA |
임시(AWS STS) 액세스 키 ID는 이 접두사를 사용하지만 보안 액세스 키 및 세션 토큰과 함께만 고유합니다. |
고유 식별자 가져오기
IAM 리소스의 고유 ID는 IAM 콘솔에서 제공되지 않습니다. 고유 ID를 가져오기 위해 다음과 같은 AWS CLI 명령 또는 IAM API 호출을 사용할 수 있습니다.
AWS CLI:
IAM API: