本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
基本 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 任務。
{ "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政策元素:條件式運算子 。如需網域組態的詳細資訊,請參閱什麼是網域組態?