翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
基本的な AWS IoT Core ポリシー変数
AWS IoT Core は、以下の基本的なポリシー変数を定義します。
-
iot:ClientId
: このクライアント ID は、 AWS IoT Core メッセージブローカーに接続するために使用されます。 -
aws:SourceIp
: AWS IoT Core メッセージブローカーに接続されているクライアントの IP アドレス。
次の AWS IoT Core ポリシーは、ポリシー変数を使用するポリシーを示しています。 をポリシーの条件要素で使用して、プリンシパルが特定のアドレス範囲内でのみAPIリクエストを実行できるようにaws:SourceIp
することができます。例については、「AWS IoT ジョブを使用するためにユーザーとクラウドサービスを承認する」を参照してください。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topic/my/topic/${iot:ClientId}" ], "Condition": { "IpAddress": { "aws:SourceIp": "123.45.167.89" } } } ] }
これらの例では、ポリシーが評価されたときに、 ${iot:ClientId}
は AWS IoT Core メッセージブローカーに接続されたクライアントの ID に置き換えられます。${iot:ClientId}
などのポリシー変数を使用すると、アクセス可能にしないトピックにアクセスすることがあります。例えば、${iot:ClientId}
を使用するポリシーでトピックフィルターを指定する場合です。
{ "Effect": "Allow", "Action": ["iot:Subscribe"], "Resource": [ "arn:aws:iot:us-east-1:123456789012:topicfilter/my/${iot:ClientId}/topic" ] }
クライアントは、クライアント ID として +
を使用して接続できます。これにより、ユーザーはトピックフィルター my/+/topic
に一致する任意のトピックにサブスクライブできます。このようなセキュリティギャップから保護するには、iot:Connect
ポリシーアクションを使用して、接続IDsできるクライアントを制御します。例えば、このポリシーにより、これらのクライアント ID が clientid1
のクライアントのみが接続できるようになります。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] } ] }
注記
ポリシー変数 ${iot:ClientId}
を Connect
と併用することはお勧めしません。ClientId
の値はチェックされないため、別のクライアントの ID のアタッチャーが検証に合格しても接続が切断されることがあります。どのクライアント ID ClientId
も許可されているため、ランダムなクライアント ID を設定すると、モノグループのポリシーがバイパスされる可能性があります。