翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
パブリッシュ/サブスクライブポリシーの例
使用するポリシーは、 への接続方法によって異なります AWS IoT Core。MQTT クライアント、、HTTPまたは AWS IoT Core を使用して に接続できます WebSocket。MQTT クライアントに接続すると、X.509 証明書で認証されます。HTTP または WebSocket プロトコルに接続すると、署名バージョン 4 と Amazon Cognito で認証されます。
登録済みデバイスの場合、Connect
アクションにはモノのポリシー変数を使用し、接続に使用されるプリンシパルにモノをアタッチすることをおすすめします。
MQTT および AWS IoT Core ポリシーでのワイルドカード文字の使用
MQTT および AWS IoT Core ポリシーには異なるワイルドカード文字があるため、慎重に検討した上で選択する必要があります。ではMQTT、ワイルドカード文字 +
と #
はMQTTトピックフィルターで使用され、複数のトピック名をサブスクライブします。 AWS IoT Core ポリシーは *
と をワイルドカード文字?
として使用し、IAMポリシー の規則に従います。ポリシードキュメントでは、*
は任意の文字の組み合わせを表し、疑問符 ?
は任意の 1 文字を表します。ポリシードキュメントでは、MQTTワイルドカード文字、+
および #
は、特別な意味のない文字として扱われます。ポリシーの resource
属性で複数のトピック名とトピックフィルターを記述するには、?
ワイルドカード文字の代わりに *
とMQTTワイルドカード文字を使用します。
ポリシードキュメントで使用するワイルドカード文字を選択するときは、*
その文字が 1 つのトピックレベルに制限されていないことを考慮してください。+
文字は、トピックフィルターの 1 つのMQTTトピックレベルに制限されます。ワイルドカード仕様を単一のMQTTトピックフィルターレベルに制限するには、複数の?
文字の使用を検討してください。ポリシーリソースでワイルドカード文字を使用する方法と、それらが一致する例の詳細については、「リソースでのワイルドカードの使用ARNs」を参照してください。
次の表は、 MQTTおよび MQTTクライアントの AWS IoT Core ポリシーで使用されるさまざまなワイルドカード文字を示しています。
ワイルドカード文字 |
MQTT ワイルドカード文字 |
の例 MQTT |
AWS IoT Core ポリシーのワイルドカード文字 |
MQTT クライアントの AWS IoT Core ポリシーの例 |
# |
可能 |
some/# |
いいえ |
該当なし |
+ |
はい |
some/+/topic |
いいえ |
該当なし |
* |
いいえ |
該当なし |
はい |
topicfilter/some/*/topic
topicfilter/some/sensor*/topic
|
? |
いいえ |
該当なし |
可能 |
topic/some/?????/topic
topicfilter/some/sensor???/topic
|
特定のトピックとの間でメッセージを発行、サブスクライブ、および受信するためのポリシー
以下に、登録済みデバイスと未登録デバイスで、「some_speciic_topic」という名前のトピックとの間でメッセージを発行、サブスクライブ、受信する例を示します。例では、Publish
と Receive
がリソースとして「トピック」を使用し、Subscribe
がリソースとして「トピックフィルター」を使用することも強調しています。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。また、「some_specific_topic」という名前のトピックに対する Publish
、Subscribe
、および Receive
のアクセス許可も提供します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
}
]
}
- Unregistered devices
-
AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーでは、デバイスが clientId1、clientId2、または clientId3 のいずれかを使用して接続することを許可します。また、「some_specific_topic」という名前のトピックに対する Publish
、Subscribe
、および Receive
のアクセス許可も提供します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/some_specific_topic"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/some_specific_topic"
]
}
]
}
特定のプレフィックスを持つトピックとの間でメッセージを発行、サブスクライブ、および受信するためのポリシー
以下に、登録済みデバイスと未登録デバイスで、「topic_prefix」というプレフィックスが付いたトピックとの間でメッセージを発行、サブスクライブ、受信する例を示します。
この例では、ワイルドカード文字の使用*
に注意してください。*
は 1 つのステートメントで複数のトピック名に対するアクセス許可を提供するのに役立ちますが、必要以上に多くの権限をデバイスに提供することで、意図しない結果につながる可能性があります。そのため、ワイルドカード文字は慎重に検討*
した後にのみ使用することをお勧めします。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。また、「some_specific_topic」というプレフィックスが付いたトピックに対する Publish
、Subscribe
、および Receive
のアクセス許可も提供します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
]
}
]
}
- Unregistered devices
-
AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーでは、デバイスが clientId1、clientId2、または clientId3 のいずれかを使用して接続することを許可します。また、「some_specific_topic」というプレフィックスが付いたトピックに対する Publish
、Subscribe
、および Receive
のアクセス許可も提供します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish",
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/topic_prefix*"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix*"
]
}
]
}
各デバイスに固有のトピックの間でメッセージを発行、サブスクライブ、および受信するためのポリシー
以下は、登録済みデバイスと未登録デバイスで、特定のデバイスに固有のトピックとの間でメッセージの発行、サブスクライブ、および受信を行う例を示しています。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。これにより、モノ固有のトピック (sensor/device/${iot:Connection.Thing.ThingName}
) への発行、モノ固有のトピック (command/device/${iot:Connection.Thing.ThingName}
) との間でサブスクライブおよび受信を行う許可が提供されます。レジストリ内のモノの名前が「thing1」の場合、デバイスは「センサー/デバイス/thing1」トピックに発行できます。また、デバイスは「コマンド/デバイス/モノ1」トピックにサブスクライブして受信することもできます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
]
}
]
}
- Unregistered devices
-
AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーでは、デバイスが clientId1、clientId2、または clientId3 のいずれかを使用して接続することを許可します。これにより、クライアント固有のトピック (sensor/device/${iot:ClientId}
) への発行、クライアント固有のトピック (command/device/${iot:ClientId}
) との間でサブスクライブおよび受信を行う許可が提供されます。デバイスが clientId1 clientId として に接続すると、「センサー/デバイス/clientId1」トピックに発行できます。デバイスは、トピック にサブスクライブして受信することもできますdevice/clientId1/command
。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/sensor/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/command/device/${iot:Connection.Thing.ThingName}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/command/device/${iot:Connection.Thing.ThingName}"
]
}
]
}
トピック名にモノ属性を含むトピックとの間でのメッセージの発行、サブスクライブ、受信に関するポリシー
以下に、登録済みデバイスが、名前にモノの属性を含むトピックとの間でメッセージを発行、サブスクライブ、受信する例を示します。
モノの属性は、レジストリに登録 AWS IoT Core されたデバイスにのみ存在します。未登録のデバイスに対応する例はありません。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。これにより、トピック (sensor/${iot:Connection.Thing.Attributes[version]}
) への発行、トピック (command/${iot:Connection.Thing.Attributes[location]}
) との間でのサブスクライブと受信を許可します。トピック名にはモノの属性が含まれます。レジストリのモノ名に version=v1
と がある場合location=Seattle
、デバイスはトピック「センサー/v1」に発行し、トピック「コマンド/シアトル」にサブスクライブして受信できます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/sensor/${iot:Connection.Thing.Attributes[version]}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Subscribe"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topicfilter/command/${iot:Connection.Thing.Attributes[location]}"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Receive"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/command/${iot:Connection.Thing.Attributes[location]}"
]
}
]
}
- Unregistered devices
-
モノの属性は AWS IoT Core レジストリに登録されたデバイスにのみ存在するため、未登録のモノに対応する例はありません。
トピック名のサブトピックへのメッセージの発行を拒否するポリシー
以下は、登録済みデバイスと未登録デバイスで、特定のサブトピックを除くすべてのトピックにメッセージを発行する例を示しています。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。「department/」というプレフィックスが付いているすべてのトピックには発行できますが、「department/admins」サブトピックには発行できません。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/*"
]
},
{
"Effect": "Deny",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
]
}
]
}
- Unregistered devices
-
AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーでは、デバイスが clientId1、clientId2、または clientId3 のいずれかを使用して接続することを許可します。「department/」というプレフィックスが付いているすべてのトピックには発行できますが、「department/admins」サブトピックには発行できません。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/*"
]
},
{
"Effect": "Deny",
"Action": [
"iot:Publish"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:topic/department/admins"
]
}
]
}
トピック名のサブトピックからのメッセージの受信を拒否するポリシー
以下に、登録済みデバイスと未登録デバイスで、特定のサブトピックを除く特定のプレフィックスを持つトピックをサブスクライブしたり、トピックからメッセージを受信したりする例を示します。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。このポリシーにより、デバイスは「topic_prefix」というプレフィックスが付いた任意のトピックをサブスクライブできます。iot:Receive
のステートメントで NotResource
を使用すると、「topic_prefix/restricted」というプレフィックスが付いたトピックを除いて、デバイスがサブスクライブしているすべてのトピックからのメッセージをデバイスが受信できるようになります。例えば、このポリシーでは、デバイスは「topic_prefix/topic1」や「topic_prefix/restricted」をサブスクライブできますが、トピック「topic_prefix/topic1」からのメッセージのみを受信し、トピック「topic_prefix/restricted」からのメッセージは受信しません。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
}
]
}
- Unregistered devices
-
AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーでは、デバイスが clientId1、clientId2、または clientId3 のいずれかを使用して接続することを許可します。このポリシーにより、デバイスは「topic_prefix」というプレフィックスが付いた任意のトピックをサブスクライブできます。iot:Receive
のステートメントで NotResource
を使用すると、「topic_prefix/restricted」というプレフィックスが付いたトピックを除いて、デバイスがサブスクライブしているすべてのトピックからのメッセージをデバイスが受信できるようになります。例えば、このポリシーでは、デバイスは「topic_prefix/topic1」と「topic_prefix/restricted」をサブスクライブできます。ただし、トピック「topic_prefix/topic1」からのメッセージのみを受信し、トピック「topic_prefix/restricted」からのメッセージは受信しません。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/topic_prefix/*"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"NotResource": "arn:aws:iot:us-east-1:123456789012:topic/topic_prefix/restricted/*"
}
]
}
MQTT ワイルドカード文字を使用してトピックをサブスクライブするポリシー
MQTT ワイルドカード文字 + と # はリテラル文字列として扱われますが、 AWS IoT Core ポリシーで使用される場合、ワイルドカードとして扱われません。ではMQTT、+ と # はトピックフィルターをサブスクライブする場合にのみワイルドカードとして扱われ、他のすべてのコンテキストではリテラル文字列として扱われます。これらのMQTTワイルドカードは、慎重に検討した上で AWS IoT Core ポリシーの一部としてのみ使用することをお勧めします。
AWS IoT Core ポリシーでMQTTワイルドカードを使用する登録済みおよび未登録のモノの例を次に示します。これらのワイルドカードはリテラル文字列として扱われます。
- Registered devices
-
AWS IoT Core レジストリに登録されたデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前 clientId に一致する に接続できます。このポリシーにより、デバイスは「department/+/employees」と「location/#」のトピックをサブスクライブできるようになります。+ と # は AWS IoT Core ポリシーではリテラル文字列として扱われるため、デバイスは「部門/+/employees」トピックにサブスクライブできますが、「部門/エンジニアリング/employees」トピックにはサブスクライブできません。同様に、デバイスはトピック「location/#」をサブスクライブできますが、「location/Seattle」というトピックには登録できません。ただし、デバイスが「department/+/employees」というトピックに登録すると、ポリシーにより、「department/engineering/employees」というトピックからのメッセージを受信できるようになります。同様に、デバイスが「location/#」というトピックをサブスクライブすると、「location/Seattle」というトピックからのメッセージも受信するようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/${iot:Connection.Thing.ThingName}"
],
"Condition": {
"Bool": {
"iot:Connection.Thing.IsAttached": "true"
}
}
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
}
]
}
- Unregistered devices
-
AWS IoT Core レジストリに登録されていないデバイスの場合、次のポリシーでは、デバイスが clientId1、clientId2、または clientId3 のいずれかを使用して接続することを許可します。このポリシーにより、デバイスは「department/+/employees」と「location/#」のトピックをサブスクライブできるようになります。+ と # は AWS IoT Core ポリシーではリテラル文字列として扱われるため、デバイスは「部門/+/employees」トピックにサブスクライブできますが、「部門/エンジニアリング/employees」トピックにはサブスクライブできません。同様に、デバイスはトピック「ロケーション/#」をサブスクライブできますが、「ロケーション/シアトル」はサブスクライブできません。ただし、デバイスが「department/+/employees」というトピックに登録すると、ポリシーにより、「department/engineering/employees」というトピックからのメッセージを受信できるようになります。同様に、デバイスが「location/#」というトピックをサブスクライブすると、「location/Seattle」というトピックからのメッセージも受信するようになります。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": [
"arn:aws:iot:us-east-1:123456789012:client/clientId1",
"arn:aws:iot:us-east-1:123456789012:client/clientId2",
"arn:aws:iot:us-east-1:123456789012:client/clientId3"
]
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/department/+/employees"
},
{
"Effect": "Allow",
"Action": "iot:Subscribe",
"Resource": "arn:aws:iot:us-east-1:123456789012:topicfilter/location/#"
},
{
"Effect": "Allow",
"Action": "iot:Receive",
"Resource": "arn:aws:iot:us-east-1:123456789012:topic/*"
}
]
}
HTTP および WebSocket クライアントのポリシー
HTTP または WebSocket プロトコルに接続すると、署名バージョン 4 と Amazon Cognito で認証されます。Amazon Cognito ID は、認証されている場合と認証されていない場合があります。認証された ID は任意のサポートされている認証プロバイダーで認証されたユーザーに属します。認証されていない ID は、通常、ID プロバイダーで認証しないゲストユーザーに属します。Amazon Cognito は、認証されていない ID をサポートする一意の識別子と AWS 認証情報を提供します。詳細については、「Amazon Cognito ID を使用した承認」を参照してください。
以下のオペレーションでは、 を通じて Amazon Cognito ID にアタッチされた AWS IoT Core ポリシー AWS IoT Core を使用しますAttachPolicy
API。これにより、認証された ID を持つ Amazon Cognito Identity プールにアタッチされたアクセス許可がスコープダウンされます。
-
iot:Connect
-
iot:Publish
-
iot:Subscribe
-
iot:Receive
-
iot:GetThingShadow
-
iot:UpdateThingShadow
-
iot:DeleteThingShadow
つまり、Amazon Cognito Identity にはIAMロールポリシーと AWS IoT Core ポリシーからのアクセス許可が必要です。IAM ロールポリシーをプールにアタッチし、 AWS IoT Core ポリシーを 経由で Amazon Cognito Identity AttachPolicy
にアタッチします AWS IoT Core API。
認証されたユーザーと未認証のユーザーは、異なる ID タイプです。 AWS IoT ポリシーを Amazon Cognito ID にアタッチしない場合、認証されたユーザーが AWS IoT での認可に失敗し、 AWS IoT リソースとアクションにアクセスできません。
他の AWS IoT Core オペレーションや認証されていない ID の場合、 AWS IoT Core は Amazon Cognito ID プールロールにアタッチされたアクセス許可の範囲を絞り込みません。認証済みの ID と非認証の ID の両方に対して、これは、Amazon Cognito プールのロールにアタッチすることをお勧めする最も緩いポリシーです。
HTTP
認証されていない Amazon Cognito ID が Amazon Cognito Identity に固有のトピックHTTPにメッセージを公開できるようにするには、Amazon Cognito Identity プールロールに次のIAMポリシーをアタッチします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish",
],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"]
}
]
}
認証されたユーザーを許可するには、 を使用して、前述のポリシーを Amazon Cognito Identity プールロールと Amazon Cognito Identity にアタッチします AWS IoT Core AttachPolicyAPI。
Amazon Cognito ID を承認する場合、 は両方のポリシー AWS IoT Core を検討し、指定された最小限の権限を付与します。アクションは、両方のポリシーで要求されたアクションが許可されている場合にのみ許可されます。いずれかのポリシーでアクションが許可されていない場合、そのアクションは許可されません。
MQTT
認証されていない Amazon Cognito ID がアカウントの Amazon Cognito Identity に固有のトピック WebSocket にMQTTメッセージを公開できるようにするには、Amazon Cognito Identity プールロールに次のIAMポリシーをアタッチします。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"iot:Publish"
],
"Resource": ["arn:aws:iot:us-east-1:123456789012:topic/${cognito-identity.amazonaws.com:sub}"]
},
{
"Effect": "Allow",
"Action": [
"iot:Connect"
],
"Resource": ["arn:aws:iot:us-east-1:123456789012:client/${cognito-identity.amazonaws.com:sub}"]
}
]
}
認証されたユーザーを許可するには、 を使用して、前述のポリシーを Amazon Cognito Identity プールロールと Amazon Cognito Identity にアタッチします AWS IoT Core AttachPolicyAPI。
Amazon Cognito ID を承認する場合、 は と の両方 AWS IoT Core を検討し、指定された最小限の権限を付与します。アクションは、両方のポリシーで要求されたアクションが許可されている場合にのみ許可されます。いずれかのポリシーでアクションが許可されていない場合、そのアクションは許可されません。