パブリッシュ/サブスクライブポリシーの例 - AWS IoT Core

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

パブリッシュ/サブスクライブポリシーの例

使用するポリシーは、接続方法によって異なります 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 ワイルドカード文字の代わりに *? ワイルドカード文字を使用します。

ポリシードキュメントで使用するワイルドカード文字を選択するときは、*その文字が単一のトピックレベルに限定されないことを考慮してください。+この文字は MQTT トピックフィルターの 1 つのトピックレベルに限定されます。ワイルドカードの仕様を単一の MQTT トピックフィルターレベルに制約するには、複数の ? 文字の使用を検討してください。ポリシーリソースでのワイルドカード文字の使用、およびワイルドカード文字が一致するその他の例については、「リソース ARN でのワイルドカードの使用」を参照してください。

次の表は、MQTT で使用されるさまざまなワイルドカード文字と MQTT クライアントの AWS IoT Core ポリシーを示しています。

ワイルドカード文字 MQTT のワイルドカード文字 MQTT での例 はポリシーワイルドカード文字です。 AWS IoT Core MQTT AWS IoT Core クライアントのポリシーの例
# Yes some/# いいえ 該当なし
+ はい some/+/topic いいえ 該当なし
* いいえ 該当なし はい

topicfilter/some/*/topic

topicfilter/some/sensor*/topic

? いいえ 該当なし Yes

topic/some/?????/topic

topicfilter/some/sensor???/topic

特定のトピックとの間でメッセージを発行、サブスクライブ、および受信するためのポリシー

以下に、登録済みデバイスと未登録デバイスで、「some_speciic_topic」という名前のトピックとの間でメッセージを発行、サブスクライブ、受信する例を示します。例では、PublishReceive がリソースとして「トピック」を使用し、Subscribe がリソースとして「トピックフィルター」を使用することも強調しています。

Registered devices

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前と一致する clientId に接続できます。また、「some_specific_topic」という名前のトピックに対する PublishSubscribe、および 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」という名前のトピックに対する PublishSubscribe、および 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」というプレフィックスが付いたトピックに対する PublishSubscribe、および 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」というプレフィックスが付いたトピックに対する PublishSubscribe、および 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}) との間でサブスクライブおよび受信を行う許可が提供されます。レジストリ内の Thing 名が「thing1」の場合、デバイスは「sensor/デバイス/thing1」というトピックに公開できます。また、デバイスは「コマンド/デバイス/thing1」というトピックをサブスクライブしたり、トピックから受信したりすることもできます。

{ "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}) との間でサブスクライブおよび受信を行う許可が提供されます。デバイスが clientId に ClientId1 として接続すると、「センサー/デバイス/クライアントID1」というトピックにパブリッシュできます。デバイスはトピックを購読したり、トピックから受信したりすることもできます。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}" ] } ] }

トピック名にモノ属性を含むトピックとの間でのメッセージの発行、サブスクライブ、受信に関するポリシー

以下に、登録済みデバイスが、名前にモノの属性を含むトピックとの間でメッセージを発行、サブスクライブ、受信する例を示します。

注記

Thing AWS IoT Core 属性はレジストリに登録されたデバイスにのみ存在します。未登録のデバイスに対応する例はありません。

Registered devices

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前と一致する clientId に接続できます。これにより、トピック (sensor/${iot:Connection.Thing.Attributes[version]}) への発行、トピック (command/${iot:Connection.Thing.Attributes[location]}) との間でのサブスクライブと受信を許可します。トピック名にはモノの属性が含まれます。レジストリ内の Thing 名に AND version=v1 が付いていればlocation=Seattle、デバイスは「sensor/v1」というトピックにパブリッシュしたり、「Command/Seattle」というトピックをサブスクライブしたり、「Command/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: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

Thing 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

以下に、ポリシーで MQTT ワイルドカードを使用する登録済みおよび未登録のものの例を示します。 AWS IoT Core これらのワイルドカードはリテラル文字列として扱われます。

Registered devices

AWS IoT Core レジストリに登録されているデバイスの場合、次のポリシーにより、デバイスはレジストリ内のモノの名前と一致する clientId に接続できます。このポリシーにより、デバイスは「department/+/employees」と「location/#」のトピックをサブスクライブできるようになります。+ と # AWS IoT Core はポリシーではリテラル文字列として扱われるため、デバイスは「部門/+/従業員」というトピックにはサブスクライブできますが、「部門/エンジニアリング/従業員」というトピックにはサブスクライブできません。同様に、デバイスはトピック「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 はポリシーではリテラル文字列として扱われるため、デバイスは「部署/+/従業員」というトピックにはサブスクライブできますが、「部署/エンジニアリング/従業員」というトピックはサブスクライブできません。同様に、デバイスはトピック「ロケーション/#」をサブスクライブできますが、「ロケーション/シアトル」はサブスクライブできません。ただし、デバイスが「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 を使用した承認」を参照してください。

AWS IoT Core 以下のオペレーションでは、API を通じて Amazon Cognito AWS IoT Core アイデンティティにアタッチされたポリシーを使用します。AttachPolicyこれにより、認証された ID を使用して Amazon Cognito ID プールにアタッチされているアクセス権限の範囲が絞り込まれます。

  • iot:Connect

  • iot:Publish

  • iot:Subscribe

  • iot:Receive

  • iot:GetThingShadow

  • iot:UpdateThingShadow

  • iot:DeleteThingShadow

つまり、Amazon Cognito ID には IAM ロールポリシーとポリシーからのアクセス権限が必要です。 AWS IoT Core API を使用して IAM ロールポリシーをプールにアタッチし、 AWS IoT Core ポリシーを Amazon Cognito アイデンティティにアタッチします AWS IoT Core AttachPolicy

認証されたユーザーと未認証のユーザーは、異なる ID タイプです。Amazon Cognito ID AWS IoT にポリシーをアタッチしないと、 AWS IoT 認証されたユーザーは認証に失敗し、 AWS IoT リソースやアクションにアクセスできなくなります。

注記

AWS IoT Core 他の操作や認証されていない ID については、 AWS IoT Core Amazon Cognito ID プールロールに添付されている権限の範囲を絞り込まないでください。認証済みの ID と非認証の ID の両方に対して、これは、Amazon Cognito プールのロールにアタッチすることをお勧めする最も緩いポリシーです。

HTTP

非認証の Amazon Cognito ID が Amazon Cognito ID に固有のトピックで HTTP を介してメッセージを発行できるようにするには、Amazon Cognito ID プールロールに以下の 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}"] } ] }

認証されたユーザーを許可するには、API を使用して Amazon Cognito ID プールロールと Amazon Cognito ID に上記のポリシーをアタッチします。 AWS IoT Core AttachPolicy

注記

Amazon Cognito ID を承認する場合、 AWS IoT Core 両方のポリシーを考慮して、指定された最小限の権限を付与します。アクションは、両方のポリシーで要求されたアクションが許可されている場合にのみ許可されます。いずれかのポリシーでアクションが許可されていない場合、そのアクションは許可されません。

MQTT

認証されていない Amazon Cognito アイデンティティがアカウントの Amazon Cognito ID に固有のトピックに関する MQTT メッセージを発行できるようにするには、以下の IAM ポリシーを Amazon Cognito ID プールロールにアタッチします。 WebSocket

{ "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}"] } ] }

認証されたユーザーを許可するには、API を使用して Amazon Cognito ID プールロールと Amazon Cognito ID に上記のポリシーをアタッチします。 AWS IoT Core AttachPolicy

注記

Amazon Cognito ID を承認する場合、 AWS IoT Core 両方を考慮して、指定された最低限の権限を付与します。アクションは、両方のポリシーで要求されたアクションが許可されている場合にのみ許可されます。いずれかのポリシーでアクションが許可されていない場合、そのアクションは許可されません。