本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
基本 AWS IoT Core 政策變數
AWS IoT Core 定義下列基本政策變數:
-
aws:SourceIp:連接至 AWS IoT Core 訊息中介裝置的用戶端 IP 地址。 -
iot:ClientId:用於連接至 AWS IoT Core 訊息代理程式的用戶端 ID。 -
iot:DomainName:用戶端連線的網域名稱 AWS IoT Core。
ClientId 和 SourceIp政策變數的範例
下列 AWS IoT Core 政策顯示使用政策變數的政策。 aws:SourceIp可用於政策的條件元素,以允許委託人僅在特定地址範圍內提出 API 請求。如需範例,請參閱 授權使用者和雲端服務使用 AWS IoT 任務。
在這些範例中, ${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 的用戶端連接:
注意
不建議搭配 Connect 使用政策變數 ${iot:ClientId}。沒有對 ClientId 的值進行檢查,因此具有不同用戶端 ID 的附加工具可以通過驗證,但會導致連線中斷。因為允許任何 ClientId,所以設定隨機用戶端 ID 可以略過物件群組政策。
iot:DomainName 政策變數的範例
您可以新增iot:DomainName政策變數,以限制允許使用哪些網域。新增iot:DomainName政策變數可讓裝置僅連線到特定設定的端點。
下列政策允許裝置連線到指定的網域。
下列政策拒絕裝置連線到指定的網域。
如需政策條件式運算子的詳細資訊,請參閱 IAM JSON 政策元素:條件式運算子。如需網域組態的詳細資訊,請參閱什麼是網域組態?。