パブリッシュ/サブスクライブポリシーの例 - 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 トピックフィルターで使用され、複数のトピック name. AWS IoT Core policies がワイルドカード文字 ? として *と を使用し、IAM ポリシー の規則に従います。ポリシードキュメントでは、* は任意の文字の組み合わせを表し、疑問符 ? は任意の 1 文字を表します。ポリシードキュメントでは、MQTT ワイルドカード文字である +# は、特別な意味を持たないこれらの文字として扱われます。ポリシーの resource 属性に複数のトピック名とトピックフィルターを記述するには、MQTT ワイルドカード文字の代わりに *? ワイルドカード文字を使用します。

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

次の表は、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」という名前のトピックとの間でメッセージを発行、サブスクライブ、受信する例を示します。例では、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}) との間でサブスクライブおよび受信を行う許可が提供されます。レジストリ内のモノの名前が「thing1」の場合、デバイスはトピック「sensor/device/thing1」に発行できます。デバイスは、「command/device/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}) との間でサブスクライブおよび受信を行う許可が提供されます。デバイスが clientId1 として clientId1 に接続すると、トピック「sensor/device/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、デバイスはトピック「sensor/v1」に発行し、トピック「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

モノの属性は 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 ポリシーではリテラル文字列として扱われるため、デバイスは「department/+/employees」というトピックにサブスクライブできますが、「department/engineering/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 ポリシーではリテラル文字列として扱われるため、デバイスは「department/+/employees」というトピックにサブスクライブできますが、「department/engineering/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 を使用した承認」を参照してください。

以下のオペレーションでは、 AttachPolicy API を介して Amazon Cognito ID にアタッチされた AWS IoT Core ポリシー AWS IoT Core を使用します。これにより、認証された 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 ポリシーからのアクセス許可が必要です。AttachPolicy API を使用して、IAM ロールポリシーをプールにアタッチし、 AWS IoT Core ポリシーを Amazon Cognito ID にアタッチします AWS IoT Core 。

認証されたユーザーと未認証のユーザーは、異なる 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 ID がアカウントの Amazon Cognito ID に固有のトピック WebSocket で MQTT メッセージをパブリッシュできるようにするには、次の IAM ポリシーを Amazon Cognito ID プールロールにアタッチします。

{ "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 を検討し、指定された最小権限を付与します。アクションは、両方のポリシーで要求されたアクションが許可されている場合にのみ許可されます。いずれかのポリシーでアクションが許可されていない場合、そのアクションは許可されません。