IAM JSON 정책 요소: Resource - AWS Identity and Access Management

IAM JSON 정책 요소: Resource

Resource 요소는 문에서 다루는 객체를 지정합니다. 문에는 Resource 또는 NotResource 요소가 반드시 추가되어야 합니다. 리소스는 ARN을 사용하여 지정할 수 있습니다. ARL의 형식에 대한 자세한 내용은 IAM ARN 섹션을 참조하세요.

각 서비스마다 고유의 리소스가 있습니다. 리소스를 지정하려면 항상 ARN을 사용해야 하지만 리소스의 ARN 세부 정보는 서비스와 리소스에 따라 달라집니다. 리소스 지정 방법에 대한 자세한 내용은 문을 작성하려는 리소스의 서비스 설명서를 참조하세요.

참고

서비스 중에는 개별적인 리소스로 작업을 지정하지 못하는 서비스도 있습니다. 대신 Action 또는 NotAction 요소로 나열하는 작업이 모두 해당 서비스의 모든 리소스에 적용됩니다. 이 경우에는 * 요소에 와일드카드(Resource)를 사용합니다.

다음은 특정 Amazon SQS 대기열을 나타낸 예제입니다.

"Resource": "arn:aws:sqs:us-east-2:account-ID-without-hyphens:queue1"

다음은 AWS 계정에서 Bob이라는 이름의 IAM 사용자를 나타내는 예제입니다.

참고

각 IAM 사용자 이름은 고유하며 대/소문자를 구분하지 않습니다.

"Resource": "arn:aws:iam::account-ID-without-hyphens:user/Bob"

리소스 ARN에서 와일드카드 사용

와일드카드는 리소스 ARN에도 사용할 수 있습니다. ARN 세그먼트(콜론으로 구분된 부분) 내에서 와일드카드 문자(* 및 ?)를 사용할 수 있습니다. 별표(*)는 0개 이상의 문자 조합을 나타내고 물음표(?)는 단일 문자를 나타냅니다. 각 세그먼트에 여러 개의 * 또는 ?를 사용할 수 있습니다. 다음은 경로가 /accounting인 IAM 사용자를 모두 나타낸 예제입니다.

"Resource": "arn:aws:iam::account-ID-without-hyphens:user/accounting/*"

다음은 특정 Amazon S3 버킷 내에 포함된 모든 항목을 나타낸 예제입니다.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*"

별표(*) 문자는 확장하여 특정 서비스 네임스페이스 내에서 구분 기호로 나타날 수 있는 슬래시(/)와 같은 문자를 포함하여 세그먼트 내의 모든 항목을 바꿀 수 있습니다. 예를 들어, 모든 서비스에 동일한 와일드카드 확장 논리가 적용되는 다음 Amazon S3 ARN을 생각해 봅시다.

"Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*/test/*"

ARN의 와일드카드는 나열된 첫 번째 객체뿐만 아니라 버킷의 다음 모든 객체에 적용됩니다.

DOC-EXAMPLE-BUCKET/1/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test/3/object.jpg DOC-EXAMPLE-BUCKET/1/2/3/test/4/object.jpg DOC-EXAMPLE-BUCKET/1///test///object.jpg DOC-EXAMPLE-BUCKET/1/test/.jpg DOC-EXAMPLE-BUCKET//test/object.jpg DOC-EXAMPLE-BUCKET/1/test/

이전 목록의 마지막 두 객체를 고려하세요. Amazon S3 객체 이름은 일반적인 구분 기호 슬래시(/) 문자로 시작하거나 끝낼 수 있습니다. ‘/’는 구분 기호로 작동하지만 리소스 ARN 내에서 이 문자를 사용할 때는 특별한 의미가 없습니다. 다른 유효한 문자와 동일하게 처리됩니다. ARN이 다음 객체와 일치하지 않습니다.

DOC-EXAMPLE-BUCKET/1-test/object.jpg DOC-EXAMPLE-BUCKET/test/object.jpg DOC-EXAMPLE-BUCKET/1/2/test.jpg

여러 리소스 지정

다수의 리소스를 지정할 수도 있습니다. 다음은 DynamoDB 테이블을 두 개 나타낸 예제입니다.

"Resource": [ "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/books_table", "arn:aws:dynamodb:us-east-2:account-ID-without-hyphens:table/magazines_table" ]

리소스 ARN에서 정책 변수 사용

Resource 요소에서 ARN의 부분에 JSON 정책 변수를 사용하여 특정 리소스를 식별할 수 있습니다(ARN의 끝 부분에 사용). 예를 들어 {aws:username} 키를 리소스 ARN에 사용하여 현재 사용자의 이름을 리소스 이름에 추가해야 한다는 것을 나타낼 수 있습니다. 다음은 {aws:username} 요소에서 Resource 키를 사용하는 방법을 나타낸 예제입니다. 이 정책에서는 현재 사용자 이름과 일치하는 Amazon DynamoDB 테이블에 대한 액세스가 허용됩니다.

{ "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": "dynamodb:*", "Resource": "arn:aws:dynamodb:us-east-2:account-id:table/${aws:username}" } }

JSON 정책 변수에 대한 자세한 내용은 IAM 정책 요소: 변수 및 태그 섹션을 참조하세요.