

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 基本 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 政策顯示使用政策變數的政策。 `aws:SourceIp`可用於政策的條件元素，以允許委託人僅在特定地址範圍內提出 API 請求。如需範例，請參閱 [授權使用者和雲端服務使用 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"
			]
		}
	]
}
```

**注意**  
不建議搭配 `Connect` 使用政策變數 `${iot:ClientId}`。沒有對 `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 JSON 政策元素：條件式運算子](https://docs.aws.amazon.com//IAM/latest/UserGuide/reference_policies_elements_condition_operators.html)。如需網域組態的詳細資訊，請參閱[什麼是網域組態？](https://docs.aws.amazon.com//iot/latest/developerguide/iot-custom-endpoints-configurable.html)。