IAM 식별자 - AWS Identity and Access Management

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 액세스 단원을 참조하십시오. 경로를 사용하는 방법의 추가 예제는 IAM ARN 단원을 참조하십시오.

AWS CloudFormation을 사용하여 리소스를 생성할 때 사용자, 그룹 및 역할에 대한 경로를 지정할 수 있지만 정책은 지정할 수 없습니다.

어떤 사용자 및 그룹에 동일한 경로를 부여했다고 해서 해당 사용자가 그룹에 자동으로 추가되지는 않습니다. 예를 들어, Developers 그룹을 생성하고 이 그룹의 경로를 /division_abc/subdivision_xyz/product_1234/engineering/으로 지정할 수 있습니다. Bob이라는 사용자를 만들고 그에게 동일한 경로를 부여했다고 해서 Bob이 Developers 그룹에 자동으로 추가되지는 않습니다. IAM는 경로를 기반으로 사용자 또는 그룹 간에 경계를 적용하지 않습니다 경로가 다른 사용자가 동일한 리소스를 사용할 수 있습니다(해당 리소스에 대한 권한이 부여되었다는 가정하에).AWS 계정의 IAM 리소스 수와 크기는 제한되어 있습니다. 자세한 내용은 IAM 및 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이며 하이픈은 제외합니다(예: 123456789012).

  • resource는 특정 리소스를 이름으로 식별하는 부분입니다.

다음 구문을 사용하여 IAM 및 AWS STS ARN을 지정할 수 있습니다. IAM 리소스가 글로벌이기 때문에 ARN의 리전 부분은 공백입니다.

구문:

arn:aws:iam::account-id:root arn:aws:iam::account-id:user/user-name-with-path arn:aws:iam::account-id:group/group-name-with-path arn:aws:iam::account-id:role/role-name-with-path arn:aws:iam::account-id:policy/policy-name-with-path arn:aws:iam::account-id:instance-profile/instance-profile-name-with-path arn:aws:sts::account-id:federated-user/user-name arn:aws:sts::account-id:assumed-role/role-name/role-session-name arn:aws:iam::account-id:mfa/virtual-device-name-with-path arn:aws:iam::account-id:u2f/u2f-token-id arn:aws:iam::account-id:server-certificate/certificate-name-with-path arn:aws:iam::account-id:saml-provider/provider-name arn:aws:iam::account-id:oidc-provider/provider-name

다음과 같은 많은 예에는 ARN의 리소스 부분에 경로가 포함됩니다. AWS Management 콘솔에서는 경로를 생성하거나 조작할 수 없습니다. 경로를 사용하려면 AWS API나 AWS CLI 또는 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/S3Access 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: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

다음 예제에서는 다양한 유형의 IAM 및 AWS STS 리소스에 대한 ARN 형식을 이해하는 데 도움이 되는 자세한 정보를 제공합니다.

  • 계정의 IAM 사용자:

    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:policy/ManageCredentialsPermissions
  • 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
  • 사용자 이름 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은 루트 사용자 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의 리소스 부분에 와일드카드를 사용하여 여러 사용자, 그룹 또는 정책을 지정할 수 있습니다. 예를 들어, 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의 user/, group/ 또는 policy 부분에 와일드카드를 사용하지 마십시오. 예를 들어 다음은 허용되지 않습니다.

arn:aws:iam::123456789012:u*

예 프로젝트 기반 그룹의 경로 및 ARN 사용의 예

AWS Management 콘솔에서는 경로를 생성하거나 조작할 수 없습니다. 경로를 사용하려면 AWS API나 AWS CLI 또는 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를 할당합니다.

AIDAJQABLZS4A3QDU576Q

대부분의 경우 IAM 리소스로 작업할 때 표시 이름과 ARN을 사용합니다. 이렇게 하면 특정 리소스의 고유 ID를 알아야 할 필요가 없습니다. 그러나 표시 이름을 사용하는 것이 적절치 않은 경우에는 고유 ID를 사용하는 것이 유용합니다.

한 예로써 AWS 계정에서 표시 이름을 재사용하는 경우를 살펴보겠습니다. 계정 내에서 사용자, 그룹 또는 정책의 표시 이름은 고유해야 합니다. 예를 들어, David라는 IAM 사용자를 생성할 수 있습니다. 회사에서 Amazon S3를 사용하고 있고 각 직원에 대한 폴더가 포함된 버킷이 있습니다. 이 버킷에는 사용자가 버킷에서 자신의 폴더에만 액세스할 수 있도록 리소스 기반 정책(버킷 정책)이 있습니다. David라는 직원이 퇴사하여 해당하는 IAM 사용자를 삭제한다고 가정해 봅시다. 그러나 이후 David라는 또 다른 직원이 입사하여 David라는 새 IAM 사용자를 생성합니다. 버킷 정책에서 David IAM 사용자를 지정하는 경우 이 정책은 새 David가 이전 David가 남긴 정보에 액세스할 수 있도록 허용합니다.

그러나 이전에 삭제한 표시 이름을 재사용하는 새 IAM 사용자를 생성한다 하더라도 모든 IAM 사용자는 고유 ID를 갖습니다. 이 예에서 이전 IAM 사용자 David와 새 IAM 사용자 David는 서로 다른 고유 ID를 갖습니다. 사용자 이름뿐만 아니라 고유 ID별로 액세스 권한을 부여하는 Amazon S3 버킷에 대한 리소스 정책을 생성할 수 있습니다. 이렇게 하면 직원에게 없어야 하는 정보에 대한 액세스 권한을 실수로 부여할 가능성이 줄어듭니다.

사용자 ID가 유용한 또 다른 예는 IAM 사용자 정보의 데이터베이스(또는 다른 저장소)를 유지하는 경우입니다. 고유 ID는 사용자가 생성하는 각 IAM 사용자에 대해 고유 식별자를 제공할 수 있습니다. 이전 예제에서와 같이 시간이 지남에 따라 이름을 재사용하는 IAM 사용자가 있는 경우에도 마찬가지입니다.

고유 ID 접두사에 대한 이해

IAM에서는 다음과 같은 접두사를 사용해 각 고유 ID가 적용되는 리소스의 유형을 표시합니다.

Prefix 리소스 유형
ABIA AWS STS 서비스 보유자 토큰
ACCA 컨텍스트별 자격 증명

AGPA

그룹

AIDA

IAM user

AIPA Amazon EC2 인스턴스 프로파일
AKIA 액세스 키
ANPA

관리형 정책

ANVA

관리 정책 내 버전

APKA 퍼블릭 키
AROA 역할
ASCA Certificate

ASIA

임시(AWS STS) 키

고유 식별자 가져오기

IAM 리소스의 고유 ID는 IAM 콘솔에서 제공되지 않습니다. 고유 ID를 가져오기 위해 다음과 같은 AWS CLI 명령 또는 IAM API 호출을 사용할 수 있습니다.

AWS CLI:

IAM API: