

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# モノのポリシー変数
<a name="thing-policy-variables"></a>

モノのポリシー変数を使用すると、モノの名前、モノのタイプ、モノの属性値などのモノのプロパティに基づいてアクセス許可を付与または拒否する AWS IoT Core ポリシーを作成できます。モノのポリシー変数を使用して、同じポリシーを適用して多くの AWS IoT Core デバイスを制御できます。デバイスのプロビジョニングの詳細については、「[デバイスプロビジョニング](iot-provision.html)」を参照してください。

非排他的なモノの関連付けを使用する場合、同じ証明書を複数のモノにアタッチすることができます。明確な関連付けを維持し、潜在的な競合を回避するには、クライアント ID をモノの名前と一致させる必要があります。この場合、モノの接続時に送信される MQTT `Connect` メッセージ内のクライアント ID からモノの名前を取得します AWS IoT Core。

 AWS IoT Core ポリシーでモノのポリシー変数を使用する場合は、次の点に注意してください。
+ [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) API を使用して、証明書やプリンシパル (認証済みの Amazon Cognito ID) をモノにアタッチします。
+ モノの名前をモノのポリシー変数に置き換える場合、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 または MQTT over WebSocket プロトコルに接続するときにのみ使用できます。
+ `iot:Connection.Thing.Attributes[attributeName]`

  これは、ポリシーが評価されているモノと関連付けられる指定した属性値に解決されます。モノには最大 50 個の属性を指定できます。各属性はポリシー変数として使用できます。`iot:Connection.Thing.Attributes[attributeName]` *attributeName* は属性の名前です。MQTT/WebSocket 接続のクライアント ID は、モノの名前と同じである必要があります。このポリシー変数は、MQTT または MQTT over WebSocket プロトコルに接続するときにのみ使用できます。
+ `iot:Connection.Thing.IsAttached`

  `iot:Connection.Thing.IsAttached: ["true"]` は、 に登録 AWS IoT され、プリンシパルにアタッチされているデバイスのみがポリシー内のアクセス許可にアクセスできるようにします。この変数を使用すると、デバイスがレジストリ内の AWS IoT Core IoT モノにアタッチされていない証明書を提示 AWS IoT Core する場合、デバイスが に接続できないようにできます。この変数には値 `true` または があり、接続するモノが [AttachThingPrincipal](https://docs.aws.amazon.com/iot/latest/apireference/API_AttachThingPrincipal.html) API を使用してレジストリ内の証明書または Amazon Cognito ID にアタッチされている`false`ことを示します。モノの名前はクライアント 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/*"
		}
	]
}
```

このポリシー例では、クライアント ID が `envType` 属性の値で終わる AWS IoT Core と、モノは に接続できます。接続できるのは、一致するクライアント ID パターンを持つモノのみです。