基本的な AWS IoT Core ポリシー変数 - AWS IoT

基本的な AWS IoT Core ポリシー変数

AWS IoT Core は、次の基本的なポリシー変数を定義します。

  • iot:ClientId: このクライアント ID は、AWS IoT Core メッセージブローカーに接続するために使用されます。

  • aws:SourceIp: AWS IoT Core メッセージブローカーに接続されているクライアントの IP アドレスです。

次の AWS IoT Core ポリシーは、ポリシー変数を使用するポリシーを示しています。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": [ "arn:aws:iot:us-east-1:123451234510:client/${iot:ClientId}" ] }, { "Effect": "Allow", "Action": ["iot:Publish"], "Resource": [ "arn:aws:iot:us-east-1:123451234510:topic/my/topic/${iot:ClientId}" ] } ] }

これらの例では、${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 ポリシーアクションを使用して、どのクライアント ID が接続できるかを制御します。たとえば、このポリシーにより、これらのクライアント ID が clientid1 のクライアントのみが接続できるようになります。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iot:Connect"], "Resource": [ "arn:aws:iot:us-east-1:123456789012:client/clientid1" ] } ] }