

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 기본 AWS IoT Core 정책 변수
<a name="basic-policy-variables"></a>

AWS IoT Core 는 다음과 같은 기본 정책 변수를 정의합니다.
+ `aws:SourceIp`: AWS IoT Core 메시지 브로커에 연결된 클라이언트의 IP 주소입니다.
+ `iot:ClientId`: AWS IoT Core 메시지 브로커에 연결하는 데 사용되는 클라이언트 ID입니다.
+ `iot:DomainName`: 연결된 클라이언트의 도메인 이름입니다 AWS IoT Core.

**Topics**
+ [`ClientId` 및 `SourceIp` 정책 변수의 예](#basic-policy-variables-example)
+ [`iot:DomainName` 정책 변수의 예](#basic-policy-variables-example-domain)

## `ClientId` 및 `SourceIp` 정책 변수의 예
<a name="basic-policy-variables-example"></a>

다음 AWS IoT Core 정책은 정책 변수를 사용하는 정책을 보여줍니다.는 정책의 조건 요소에서 보안 주체가 특정 주소 범위 내에서만 API를 요청하도록 허용하는 데 사용할 `aws:SourceIp` 수 있습니다. 예시는 [사용자 및 클라우드 서비스에 AWS IoT 작업 사용 권한 부여](iam-policy-users-jobs.md) 섹션을 참조하세요.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid1"
			]
		},
		{
			"Effect": "Allow",
			"Action": [
				"iot:Publish"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}"
			],
			"Condition": {
				"IpAddress": {
					"aws:SourceIp": "123.45.167.89"
				}
			}
		}
	]
}
```

이 예제에서는 정책이 평가될 때 `${iot:ClientId}`가 AWS IoT Core 메시지 브로커에 연결된 클라이언트의 ID로 대체됩니다. `${iot:ClientId}` 같은 정책 변수를 사용할 경우 잘못하여 의도치 않은 주제에 대한 액세스를 개방할 수 있습니다. 예를 들어 `${iot:ClientId}`를 사용하여 주제 필터를 지정하는 정책을 사용할 경우

```
{
	"Effect": "Allow",
	"Action": [
		"iot:Subscribe"
	],
	"Resource": [
		"arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic"
	]
}
```

클라이언트가 `+`를 클라이언트 ID로 사용하여 연결할 수 있습니다. 이는 사용자가 주제 필터 `my/+/topic`와 일치하는 모든 주제를 구독하도록 허용하는 것입니다. 그러한 보안 간극을 방지하려면 `iot:Connect` 정책 작업을 사용하여 어느 클라이언트 ID가 연결할 수 있는지 제어합니다. 예를 들어 이 정책은 클라이언트 ID가 `clientid1`인 클라이언트만 연결하도록 허용합니다.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Effect": "Allow",
			"Action": [
				"iot:Connect"
			],
			"Resource": [
				"arn:aws:iot:us-east-1:123456789012:client/clientid"
			]
		}
	]
}
```

**참고**  
정책 변수 `${iot:ClientId}`를 `Connect`와 함께 사용하는 것은 권장되지 않습니다. `ClientId`의 값은 확인하지 않으므로 다른 클라이언트의 ID를 가진 어태처가 검증을 통과할 수 있지만 연결이 끊길 수 있습니다. `ClientId`는 무엇이든 허용되므로 무작위로 클라이언트 ID를 설정하면 사물 그룹 정책을 우회할 수 있습니다.

## `iot:DomainName` 정책 변수의 예
<a name="basic-policy-variables-example-domain"></a>

`iot:DomainName` 정책 변수를 추가하여 사용할 수 있는 도메인을 제한할 수 있습니다. `iot:DomainName` 정책 변수를 추가하면 디바이스가 구성된 특정 엔드포인트에만 연결할 수 있습니다.

다음 정책은 디바이스가 지정된 도메인에 연결할 수 있도록 허용합니다.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "AllowConnectionsToSpecifiedDomain",
		"Effect": "Allow",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

다음 정책은 지정된 도메인에 연결하는 디바이스를 거부합니다.

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": {
		"Sid": "DenyConnectionsToSpecifiedDomain",
		"Effect": "Deny",
		"Action": [
			"iot:Connect"
		],
		"Resource": "arn:aws:iot:us-east-1:123456789012:client/clientid",
		"Condition": {
			"StringEquals": {
				"iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com"
			}
		}
	}
}
```

IAM 조건 연산자에 대한 자세한 내용은 IAM 사용 설명서의 [IAM JSON 정책 요소: 조건 연산자](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)를 참조하세요. 도메인 구성에 대한 자세한 내용은 [What is a domain configuration?](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html)을 참조하세요.