

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

# 物件政策變數
<a name="thing-policy-variables"></a>

物件政策變數可讓您撰寫 AWS IoT Core 政策，根據物件名稱、物件類型和物件屬性值等物件屬性來授予或拒絕許可。您可以使用物件政策變數來套用相同的政策來控制許多 AWS IoT Core 裝置。如需裝置佈建的詳細資訊，請參閱[裝置佈建](iot-provision.html)。

如果您使用非專屬物件關聯，則可以將相同的憑證連接到多個物件。若要維持明確的關聯並避免潛在的衝突，您必須將用戶端 ID 與物件名稱相符。在此情況下，您會從用戶端 ID 取得物件名稱，該用戶端 ID 位於當物件連線時傳送的 MQTT `Connect` 訊息中 AWS IoT Core。

使用 AWS IoT Core 政策中的物件政策變數時，請注意下列事項。
+ 使用 [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) API，將憑證或委託人 (已驗證的 Amazon Cognito 身分) 連接至物件。
+ 如果具有非專屬物件關聯，當您將物件名稱取代為物件政策變數時，MQTT 連線訊息或 TLS 連線`clientId`中的 值必須與物件名稱完全相符。

現已提供下列物件政策變數：
+ `iot:Connection.Thing.ThingName`

  這會解析為正在評估政策之 AWS IoT Core 登錄檔中的物件名稱。 AWS IoT Core 會使用裝置在驗證時提供的憑證來判斷要使用哪些物件來驗證連線。本政策變數僅在裝置透過 MQTT 或 MQTT over WebSocket 通訊協定進行連線時可用。
+ `iot:Connection.Thing.ThingTypeName`

  當政策受到評估時，這可以解析為所屬物件相關的物件類型。MQTT/WebSocket 連線的用戶端 ID 必須與物件名稱相同。本政策變數僅在透過 MQTT 或是經 WebSocket 通訊協定的 MQTT 進行連線時可用。
+ `iot:Connection.Thing.Attributes[attributeName]`

  當政策受到評估時，這可以解析為所屬物件相關的特定屬性值。單一物件至多可具備 50 個屬性。每一屬性均可作為政策變數：`iot:Connection.Thing.Attributes[attributeName]`，其中 *attributeName* 為屬性名稱。MQTT/WebSocket 連線的用戶端 ID 必須與物件名稱相同。本政策變數僅在透過 MQTT 或是經 WebSocket 通訊協定的 MQTT 進行連線時可用。
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]` 強制執行只有在 中註冊 AWS IoT 並連接到主體的裝置才能存取政策內的許可。如果裝置提供的憑證未連接到登錄檔中的 AWS IoT Core IoT 物件，您可以使用此變數來防止 AWS IoT Core 裝置連接到 。此變數具有 值，`true`或`false`指出連線物件使用 [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) API 連接到登錄檔中的憑證或 Amazon Cognito 身分。物件名稱作為用戶端 ID。

如果您的用戶端 ID 與您的物件名稱相符，或者您只將憑證連接到物件，則使用政策定義中的政策變數可以簡化政策管理。您可以使用物件政策變數定義單一政策，而不是為每個 IoT 物件建立個別政策。此政策可以動態套用至所有裝置。以下是顯示其運作方式的範例政策。如需詳細資訊，請參閱[將 AWS IoT 物件與 MQTT 用戶端連線建立關聯](exclusive-thing.md)。

****  

```
{
	"Version":"2012-10-17",		 	 	 
	"Statement": [
		{
			"Condition": {
				"StringLike": {
					"iot:ClientId": "*${iot:Connection.Thing.Attributes[envType]}"
				}
			},
			"Effect": "Allow",
			"Action": "iot:Connect",
			"Resource": "arn:aws:iot:us-east-1:123456789012:client/*"
		}
	]
}
```

 AWS IoT Core 如果物件的用戶端 ID 以`envType`其屬性的值結尾，則此政策範例允許物件連線到 。只有具有相符用戶端 ID 模式的物件才能連線。