基本 AWS IoT Core 政策變數 - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

基本 AWS IoT Core 政策變數

AWS IoT Core 定義下列基本政策變數:

  • aws:SourceIp:連接至 AWS IoT Core 訊息代理程式之用戶端的 IP 地址。

  • iot:ClientId:用於連接至 AWS IoT Core 訊息代理程式的用戶端 ID。

  • iot:DomainName:連接至 之用戶端的網域名稱 AWS IoT Core。

ClientIdSourceIp政策變數的範例

下列 AWS IoT Core 政策顯示使用政策變數的政策。 aws:SourceIp可用於政策的條件元素,以允許委託人僅在特定地址範圍內提出API請求。如需範例,請參閱 授權使用者和雲端服務使用 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" ] } ] }
注意

不建議搭配 Connect 使用政策變數 ${iot:ClientId}。沒有對 ClientId 的值進行檢查,因此具有不同用戶端 ID 的附加工具可以通過驗證,但會導致連線中斷。因為允許任何 ClientId,所以設定隨機用戶端 ID 可以略過物件群組政策。

iot:DomainName 政策變數的範例

您可以新增iot:DomainName政策變數,以限制允許使用的網域。新增iot:DomainName政策變數可讓裝置只連線到特定設定的端點。

下列政策允許裝置連線到指定的網域。

{ "Version": "2012-10-17", "Statement": { "Sid": "AllowConnectionsToSpecifiedDomain", "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*", "Condition": { "StringEquals": { "iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com" } } } }

下列政策拒絕裝置連線到指定的網域。

{ "Version": "2012-10-17", "Statement": { "Sid": "DenyConnectionsToSpecifiedDomain", "Effect": "Deny", "Action": [ "iot:Connect" ], "Resource": "*", "Condition": { "StringEquals": { "iot:DomainName": "d1234567890abcdefghij-ats.iot.us-east-1.amazonaws.com" } } } }

如需政策條件式運算子的詳細資訊,請參閱IAMJSON政策元素:條件式運算子 。如需網域組態的詳細資訊,請參閱什麼是網域組態?