

# IAM JSON 정책 요소: Resource
<a name="reference_policies_elements_resource"></a>

IAM 정책 문에서 `Resource` 요소는 문의 적용 대상인 객체를 정의합니다. 문에는 `Resource`또는 `NotResource`요소가 반드시 추가되어야 합니다.

Amazon 리소스 이름(ARN)을 사용하여 리소스를 지정합니다. ARN의 형식은 참조하는 AWS 서비스 및 참조하는 특정 리소스에 따라 다릅니다. ARN 형식은 다양하지만 항상 ARN을 사용하여 리소스를 식별합니다. ARL의 형식에 대한 자세한 내용은 [IAM ARN](reference_identifiers.md#identifiers-arns) 섹션을 참조하세요. 리소스 지정 방법에 대한 자세한 내용은 문을 작성하려는 리소스의 서비스 설명서를 참조하세요.

**참고**  
일부 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에서 와일드카드 사용
<a name="reference_policies_elements_resource_wildcards"></a>

개별 ARN 세그먼트(콜론으로 구분된 부분) 내에서 와일드카드 문자(`*` 및 `?`)를 사용하여 다음을 표현할 수 있습니다.
+ 모든 문자 조합(`*`)
+ 모든 단일 문자(`?`)

각 세그먼트에 여러 개의 `*` 또는 `?` 문자를 사용할 수 있습니다. `*` 와일드카드가 리소스 ARN 세그먼트의 마지막 문자인 경우 콜론 경계를 넘어서 일치하도록 확장할 수 있습니다. 콜론으로 구분된 ARN 세그먼트 내에서 와일드카드(`*` 및 `?`)를 사용하는 것이 좋습니다.

**참고**  
AWS 제품을 식별하는 서비스 세그먼트에서는 와일드카드 문자를 사용할 수 없습니다. ARN 세그먼트에 대한 자세한 내용은 [Amazon 리소스 이름(ARN)으로 AWS 리소스를 식별합니다.](reference-arns.md) 섹션을 참조하세요.

다음은 경로가 `/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
```

## 여러 리소스 지정
<a name="reference_policies_elements_resource_multiple-resources"></a>

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에서 정책 변수 사용
<a name="reference_policies_elements_resource_policy-variables"></a>

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

------
#### [ JSON ]

****  

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

------

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