IAM JSON 정책 요소: Resource
IAM 정책 문에서 Resource
요소는 문의 적용 대상인 객체를 정의합니다. 문장에는 Resource
또는 NotResource
요소가 반드시 추가되어야 합니다.
Amazon 리소스 이름(ARN)을 사용하여 리소스를 지정합니다. ARN의 형식은 참조하는 AWS 서비스 및 참조하는 특정 리소스에 따라 다릅니다. ARN 형식은 다양하지만 항상 ARN을 사용하여 리소스를 식별합니다. ARL의 형식에 대한 자세한 내용은 IAM ARN 섹션을 참조하세요. 리소스 지정 방법에 대한 자세한 내용은 문을 작성하려는 리소스의 서비스 설명서를 참조하세요.
참고
일부 AWS 서비스에서는 개별 리소스에 대한 작업 지정을 허용하지 않습니다. 이러한 경우 Action
또는 NotAction
요소에 나열한 모든 작업이 해당 서비스의 모든 리소스에 적용됩니다. 이 경우 Resource
요소에 와일드카드 문자(*
)를 사용합니다.
다음은 특정 Amazon SQS 대기열을 나타낸 예시입니다.
"Resource": "arn:aws:sqs:us-east-2:
account-ID-without-hyphens
:queue1"
다음은 AWS 계정에서 Bob
이라는 이름의 IAM 사용자를 나타내는 예제입니다.
참고
Resource
요소에서 IAM 사용자 이름은 대/소문자를 구분합니다.
"Resource": "arn:aws:iam::
account-ID-without-hyphens
:user/Bob"
리소스 ARN에서 와일드카드 사용
개별 ARN 세그먼트(콜론으로 구분된 부분) 내에서 와일드카드 문자(*
및 ?
)를 사용하여 다음을 표현할 수 있습니다.
-
모든 문자 조합(
*
) -
모든 단일 문자(
?
)
각 세그먼트에 여러 개의 *
또는 ?
문자를 사용할 수 있습니다. *
와일드카드가 리소스 ARN 세그먼트의 마지막 문자인 경우 콜론 경계를 넘어서 일치하도록 확장할 수 있습니다. 콜론으로 구분된 ARN 세그먼트 내에서 와일드카드(*
및 ?
)를 사용하는 것이 좋습니다.
참고
AWS 제품을 식별하는 서비스 세그먼트에서는 와일드카드 문자를 사용할 수 없습니다. ARN 세그먼트에 대한 자세한 내용은 Amazon 리소스 이름(ARN)으로 AWS 리소스를 식별합니다. 섹션을 참조하세요.
다음은 경로가 /accounting
인 IAM 사용자를 모두 나타낸 예시입니다.
"Resource": "arn:aws:iam::
account-ID-without-hyphens
:user/accounting/*"
다음은 특정 Amazon S3 버킷 내에 포함된 모든 항목을 나타낸 예시입니다.
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*"
별표(*
) 문자는 확장하여 특정 서비스 네임스페이스 내에서 구분 기호로 나타날 수 있는 슬래시(/
)와 같은 문자를 포함하여 세그먼트 내의 모든 항목을 바꿀 수 있습니다. 예를 들어, 모든 서비스에 동일한 와일드카드 확장 논리가 적용되는 다음 Amazon S3 ARN을 생각해 봅시다.
"Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*/test/*"
ARN의 와일드카드는 나열된 첫 번째 객체뿐만 아니라 버킷의 다음 모든 객체에 적용됩니다.
amzn-s3-demo-bucket/1/test/object.jpg amzn-s3-demo-bucket/1/2/test/object.jpg amzn-s3-demo-bucket/1/2/test/3/object.jpg amzn-s3-demo-bucket/1/2/3/test/4/object.jpg amzn-s3-demo-bucket/1///test///object.jpg amzn-s3-demo-bucket/1/test/.jpg amzn-s3-demo-bucket//test/object.jpg amzn-s3-demo-bucket/1/test/
이전 목록의 마지막 두 객체를 고려하세요. Amazon S3 객체 이름은 일반적인 구분 기호 슬래시(/
) 문자로 시작하거나 끝낼 수 있습니다. /
문자는 구분 기호로 작동하지만 리소스 ARN 내에서 이 문자를 사용할 때는 특별한 의미가 없습니다. 다른 유효한 문자와 동일하게 처리됩니다. ARN이 다음 객체와 일치하지 않습니다.
amzn-s3-demo-bucket/1-test/object.jpg amzn-s3-demo-bucket/test/object.jpg amzn-s3-demo-bucket/1/2/test.jpg
여러 리소스 지정
ARN 배열을 사용하여 Resource
요소에 여러 리소스를 지정할 수 있습니다. 다음은 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 정책 요소: 변수 및 태그 섹션을 참조하세요.