本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
的裝置身分驗證和授權 AWS IoT Greengrass
AWS IoT Greengrass 環境中的裝置會使用 X.509 憑證進行身分驗證,並使用 AWS IoT 政策進行授權。憑證和原則允許裝置彼此、與 AWS IoT Core和 AWS IoT Greengrass安全地連線。
X.509 憑證為數位憑證,採用 X.509 公有金鑰基礎架構標準,將公有金鑰與憑證內含的身分建立關聯。X.509 憑證是由稱為憑證授權機構 (CA) 的受信任實體所發行。CA 負責維護一個或多個稱為憑證授權機構憑證的特殊憑證,用以發行 X.509 憑證。僅憑證授權機構可存取憑證授權機構憑證。
AWS IoT 政策定義 AWS IoT 裝置允許的一組操作。具體而言,它們允許和拒絕對 AWS IoT Core 和 AWS IoT Greengrass 資料平面操作的存取,例如發佈 MQTT 訊息和擷取裝置影子。
所有裝置都需要 AWS IoT Core 登錄檔中的項目,以及已連接 AWS IoT 政策的已啟用 X.509 憑證。裝置可分為兩類:
-
Greengrass 核心裝置
Greengrass 核心裝置使用憑證和 AWS IoT 政策來連線至 AWS IoT Core 和 AWS IoT Greengrass。憑證和政策也允許 AWS IoT Greengrass 將元件和組態部署到核心裝置。
-
用戶端裝置
MQTT 用戶端裝置使用憑證和政策來連線至 AWS IoT Core AWS IoT Greengrass 和服務。這可讓用戶端裝置使用 AWS IoT Greengrass 雲端探索來尋找和連線至 Greengrass 核心裝置。用戶端裝置使用相同的憑證來 AWS IoT Core 連線至雲端服務和核心裝置。用戶端裝置也會使用探索資訊與核心裝置進行相互身分驗證。如需詳細資訊,請參閱與本機 IoT 裝置互動。
X.509 憑證
核心裝置和用戶端裝置之間的通訊,以及裝置和 AWS IoT Core 或 之間的通訊 AWS IoT Greengrass 必須經過身分驗證。此相互驗證是根據已註冊的 X.509 裝置憑證和加密金鑰。
在 AWS IoT Greengrass 環境中,裝置使用具有公有和私有金鑰的憑證進行下列 Transport Layer Security (TLS) 連線:
-
Greengrass 核心裝置上的 AWS IoT 用戶端元件,可透過網際網路連線至 AWS IoT Core 和 AWS IoT Greengrass 。
-
AWS IoT Greengrass 透過網際網路連線至 的用戶端裝置,以探索核心裝置。
-
Greengrass 核心上的 MQTT 代理程式元件會透過本機網路連接到群組中的 Greengrass 裝置。
AWS IoT Greengrass 核心裝置會將憑證存放在 Greengrass 根資料夾中。
憑證授權機構 (CA) 憑證
Greengrass 核心裝置和用戶端裝置會下載根 CA 憑證,用於使用 AWS IoT Core 和 AWS IoT Greengrass 服務進行身分驗證。我們建議您使用 Amazon Trust Service (ATS) 根憑證授權機構憑證,例如 Amazon 根 CA 1
用戶端裝置也會下載 Greengrass 核心裝置 CA 憑證。他們使用此憑證在相互身分驗證期間驗證核心裝置上的 MQTT 伺服器憑證。
本機 MQTT 代理程式上的憑證輪換
當您啟用用戶端裝置支援時,Greengrass 核心裝置會產生本機 MQTT 伺服器憑證,供用戶端裝置用於相互身分驗證。此憑證由核心裝置 CA 憑證簽署,核心裝置會存放在 AWS IoT Greengrass 雲端。用戶端裝置會在發現核心裝置時擷取核心裝置 CA 憑證。他們使用核心裝置 CA 憑證,在連線至核心裝置時驗證核心裝置的 MQTT 伺服器憑證。核心裝置 CA 憑證會在 5 年後過期。
MQTT 伺服器憑證預設會每 7 天過期一次,而且您可以將此持續時間設定為 2 到 10 天。此有限期間是依據安全最佳實務。此輪換有助於減輕攻擊者竊取 MQTT 伺服器憑證和私有金鑰以模擬 Greengrass 核心裝置的威脅。
Greengrass 核心裝置會在 MQTT 伺服器憑證過期前 24 小時輪換 MQTT 伺服器憑證。Greengrass 核心裝置會產生新的憑證,並重新啟動本機 MQTT 代理程式。發生這種情況時,連接到 Greengrass 核心裝置的所有用戶端裝置都會中斷連線。用戶端裝置可以在短時間內重新連線至 Greengrass 核心裝置。
AWS IoT 資料平面操作的 政策
使用 AWS IoT 政策來授權存取 AWS IoT Core 和 AWS IoT Greengrass 資料平面。 AWS IoT Core 資料平面可為裝置、使用者和應用程式提供操作。這些操作包括連線至 AWS IoT Core 和訂閱 主題的功能。 AWS IoT Greengrass 資料平面提供 Greengrass 裝置的操作。如需詳細資訊,請參閱AWS IoT Greengrass V2 政策動作。這些操作包括解析元件相依性及下載公有元件成品的功能。
AWS IoT 政策是類似 IAM 政策的 JSON 文件。它包含一或多個指定下列屬性的政策陳述式:
-
Effect
。 存取模式,可以是Allow
或Deny
。 -
Action
。 政策允許或拒絕的動作清單。 -
Resource
。 允許或拒絕動作的資源清單。
AWS IoT 政策支援*
做為萬用字元,並將 MQTT 萬用字元 (+
和 #
) 視為文字字串。如需*
萬用字元的詳細資訊,請參閱AWS Identity and Access Management 《 使用者指南》中的在資源 ARNs 中使用萬用字元。
如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的AWS IoT 政策和AWS IoT 政策動作。
重要
核心裝置或 Greengrass 資料平面操作的政策不支援 的物件政策變數 (iot:Connection.Thing.
)。 AWS IoT 反之,您可以使用萬用字元來比對多個名稱類似的裝置。例如,您可以指定 *
MyGreengrassDevice*
來比對 MyGreengrassDevice2
、 MyGreengrassDevice1
等。
注意
AWS IoT Core 可讓您將 AWS IoT 政策連接至物件群組,以定義裝置群組的許可。物件群組政策不允許存取 AWS IoT Greengrass 資料平面操作。若要允許物件存取 AWS IoT Greengrass 資料平面操作,請將 許可新增至您連接至物件憑證 AWS IoT 的政策。
AWS IoT Greengrass V2 政策動作
AWS IoT Greengrass V2 定義下列政策動作,Greengrass 核心裝置和用戶端裝置可在 AWS IoT 政策中使用。若要指定政策動作的資源,您可以使用 資源的 Amazon Resource Name (ARN)。
核心裝置動作
greengrass:GetComponentVersionArtifact
-
准許取得預先簽章的 URL,以下載公有元件成品或 Lambda 元件成品。
當核心裝置收到指定具有成品之公有元件或 Lambda 的部署時,會評估此許可。如果核心裝置已有成品,則不會再次下載成品。
資源類型:
componentVersion
資源 ARN 格式:
arn:aws:greengrass:
region
:account-id
:components:component-name
:versions:component-version
greengrass:ResolveComponentCandidates
-
准許識別符合部署元件、版本和平台需求的元件清單。如果要求衝突,或不存在符合要求的元件,此操作會傳回錯誤,且裝置上的部署會失敗。
當核心裝置收到指定元件的部署時,會評估此許可。
資源類型:無
資源 ARN 格式:
*
greengrass:GetDeploymentConfiguration
-
准許取得預先簽章的 URL 來下載大型部署文件。
當核心裝置收到指定大於 7 KB (如果部署目標為物件) 或 31 KB (如果部署目標為物件群組) 的部署文件時,會評估此許可。部署文件包含元件組態、部署政策和部署中繼資料。如需詳細資訊,請參閱將 AWS IoT Greengrass 元件部署至裝置。
此功能適用於 Greengrass 核元件的 v2.3.0 和更新版本。
資源類型:無
資源 ARN 格式:
*
greengrass:ListThingGroupsForCoreDevice
-
准許取得核心裝置的物件群組階層。
當核心裝置收到部署時,會檢查此許可 AWS IoT Greengrass。核心裝置使用此動作來識別自上次部署以來是否從物件群組中移除。如果核心裝置已從物件群組中移除,且該物件群組是部署到核心裝置的目標,則核心裝置會移除該部署所安裝的元件。
此功能由 Greengrass 核元件的 v2.5.0 和更新版本使用。
資源類型:
thing
(核心裝置)資源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/core-device-thing-name
greengrass:VerifyClientDeviceIdentity
-
准許驗證連接到核心裝置的用戶端裝置身分。
當核心裝置執行用戶端裝置驗證元件,並從用戶端裝置接收 MQTT 連線時,會評估此許可。用戶端裝置會顯示其 AWS IoT 裝置憑證。然後,核心裝置會將裝置憑證 AWS IoT Greengrass 傳送至雲端服務,以驗證用戶端裝置的身分。如需詳細資訊,請參閱與本機 IoT 裝置互動。
資源類型:無
資源 ARN 格式:
*
greengrass:VerifyClientDeviceIoTCertificateAssociation
-
准許驗證用戶端裝置是否與 AWS IoT 憑證相關聯。
當核心裝置執行用戶端裝置驗證元件,並授權用戶端裝置透過 MQTT 連線時,會評估此許可。如需詳細資訊,請參閱與本機 IoT 裝置互動。
注意
若要讓核心裝置使用此操作,Greengrass 服務角色必須與您的 建立關聯, AWS 帳戶 並允許
iot:DescribeCertificate
許可。資源類型:
thing
(用戶端裝置)資源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/client-device-thing-name
-
准許上傳用戶端裝置可下載的憑證授權機構 (CA) 憑證,以驗證核心裝置。
當核心裝置安裝並執行用戶端裝置驗證元件時,會評估此許可。此元件會建立本機憑證授權單位,並使用此操作來上傳其 CA 憑證。用戶端裝置使用探索操作來尋找可以連線的核心裝置時,會下載這些 CA 憑證。當用戶端裝置連接到核心裝置上的 MQTT 代理程式時,他們會使用這些 CA 憑證來驗證核心裝置的身分。如需詳細資訊,請參閱與本機 IoT 裝置互動。
資源類型:無
ARN 格式:
*
greengrass:GetConnectivityInfo
-
准許取得核心裝置的連線資訊。此資訊說明用戶端裝置如何連線到核心裝置。
當核心裝置安裝並執行用戶端裝置驗證元件時,會評估此許可。此元件會使用連線資訊來產生有效的 CA 憑證,以使用 PutCertificateAuthories 操作上傳至 AWS IoT Greengrass 雲端服務。用戶端裝置使用這些 CA 憑證來驗證核心裝置的身分。如需詳細資訊,請參閱與本機 IoT 裝置互動。
您也可以在 AWS IoT Greengrass 控制平面上使用此操作來檢視核心裝置的連線資訊。如需詳細資訊,請參閱 AWS IoT Greengrass V1 API 參考中的 GetConnectivityInfo。
資源類型:
thing
(核心裝置)資源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/core-device-thing-name
greengrass:UpdateConnectivityInfo
-
准許更新核心裝置的連線資訊。此資訊說明用戶端裝置如何連線到核心裝置。
當核心裝置執行 IP 偵測器元件時,會評估此許可。此元件可識別用戶端裝置連線到本機網路上核心裝置所需的資訊。然後,此元件會使用此操作將連線資訊上傳至 AWS IoT Greengrass 雲端服務,以便用戶端裝置可以使用探索操作擷取此資訊。如需詳細資訊,請參閱與本機 IoT 裝置互動。
您也可以在 AWS IoT Greengrass 控制平面上使用此操作來手動更新核心裝置的連線資訊。如需詳細資訊,請參閱 AWS IoT Greengrass V1 API 參考中的 UpdateConnectivityInfo。
資源類型:
thing
(核心裝置)資源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/core-device-thing-name
用戶端裝置動作
greengrass:Discover
-
准許探索用戶端裝置可連線之核心裝置的連線資訊。此資訊說明用戶端裝置如何連線到核心裝置。用戶端裝置只能透過使用 BatchAssociateClientDeviceWithCoreDevice 操作來探索您已與其相關聯的核心裝置。如需詳細資訊,請參閱與本機 IoT 裝置互動。
資源類型:
thing
(用戶端裝置)資源 ARN 格式:
arn:aws:iot:
region
:account-id
:thing/client-device-thing-name
更新核心裝置的 AWS IoT 政策
您可以使用 AWS IoT Greengrass 和 AWS IoT 主控台或 AWS IoT API 來檢視和更新核心裝置的 AWS IoT 政策。
注意
如果您使用 AWS IoT Greengrass Core 軟體安裝程式佈建資源,您的核心裝置具有允許存取所有 AWS IoT Greengrass 動作 () AWS IoT 的政策greengrass:*
。您可以遵循下列步驟,以限制僅存取核心裝置使用的動作。
-
在AWS IoT Greengrass 主控台
導覽功能表中,選擇核心裝置。 -
在核心裝置頁面上,選擇要更新的核心裝置。
-
在核心裝置詳細資訊頁面上,選擇核心裝置物件的連結。此連結會在 主控台中 AWS IoT 開啟物件詳細資訊頁面。
-
在物件詳細資訊頁面上,選擇憑證。
-
在憑證索引標籤中,選擇物件的作用中憑證。
-
在憑證詳細資訊頁面上,選擇政策。
-
在政策索引標籤中,選擇要檢閱和更新 AWS IoT 的政策。您可以將所需的許可新增至連接到核心裝置作用中憑證的任何政策。
注意
如果您使用 AWS IoT Greengrass Core 軟體安裝程式佈建資源,則有兩個 AWS IoT 政策。如果GreengrassV2IoTThingPolicy存在,建議您選擇名為 的政策。您使用快速安裝程式建立的核心裝置預設會使用此政策名稱。如果您將許可新增至此政策,您也會將這些許可授予使用此政策的其他核心裝置。
-
在政策概觀中,選擇編輯作用中版本。
-
檢閱政策,並視需要新增、移除或編輯許可。
-
若要將新的政策版本設定為作用中版本,請在政策版本狀態下,選取將編輯版本設定為此政策的作用中版本。
-
選擇儲存為新版本。
-
列出核心裝置 AWS IoT 物件的主體。物件主體可以是 X.509 裝置憑證或其他識別符。執行下列命令,並以核心裝置的名稱取代
MyGreengrassCore
。aws iot list-thing-principals --thing-name
MyGreengrassCore
操作會傳回回應,列出核心裝置的物件主體。
{ "principals": [ "arn:aws:iot:us-west-2:123456789012:cert/
certificateId
" ] } -
識別核心裝置的作用中憑證。執行下列命令,並將
certificateId
取代為上一個步驟的每個憑證 ID,直到您找到作用中憑證為止。憑證 ID 是憑證 ARN 結尾的十六進位字串。--query
引數指定 僅輸出憑證的狀態。aws iot describe-certificate --certificate-id
certificateId
--query 'certificateDescription.status'操作會以字串形式傳回憑證狀態。例如,如果憑證處於作用中狀態,此操作會輸出
"ACTIVE"
。 -
列出連接到憑證 AWS IoT 的政策。執行下列命令,並將憑證 ARN 取代為憑證的 ARN。
aws iot list-principal-policies --principal
arn:aws:iot:us-west-2:123456789012:cert/certificateId
操作會傳回回應,列出連接到憑證 AWS IoT 的政策。
{ "policies": [ { "policyName": "GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassTESCertificatePolicyMyGreengrassCoreTokenExchangeRoleAlias" }, { "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy" } ] }
-
選擇要檢視和更新的政策。
注意
如果您使用 AWS IoT Greengrass Core 軟體安裝程式佈建資源,則有兩個 AWS IoT 政策。如果GreengrassV2IoTThingPolicy存在,建議您選擇名為 的政策。您使用快速安裝程式建立的核心裝置預設會使用此政策名稱。如果您將許可新增至此政策,您也會將這些許可授予使用此政策的其他核心裝置。
-
取得政策的文件。執行下列命令,並將
GreengrassV2IoTThingPolicy
取代為政策的名稱。aws iot get-policy --policy-name
GreengrassV2IoTThingPolicy
操作會傳回回應,其中包含政策的文件和政策的其他資訊。政策文件是序列化為字串的 JSON 物件。
{ "policyName": "GreengrassV2IoTThingPolicy", "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\"iot:Connect\\",\ \\"iot:Publish\\",\ \\"iot:Subscribe\\",\ \\"iot:Receive\\",\ \\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "defaultVersionId": "1", "creationDate": "2021-02-05T16:03:14.098000-08:00", "lastModifiedDate": "2021-02-05T16:03:14.098000-08:00", "generationId": "f19144b798534f52c619d44f771a354f1b957dfa2b850625d9f1d0fde530e75f" }
-
使用線上轉換器或其他工具將政策文件字串轉換為 JSON 物件,然後將其儲存至名為 的檔案
iot-policy.json
。例如,如果您已安裝 jq
工具,您可以執行下列命令來取得政策文件、將其轉換為 JSON 物件,並將政策文件儲存為 JSON 物件。 aws iot get-policy --policy-name
GreengrassV2IoTThingPolicy
--query 'policyDocument' | jq fromjson >> iot-policy.json -
檢閱政策文件,並視需要新增、移除或編輯許可。
例如,在以 Linux 為基礎的系統上,您可以執行下列命令來使用 GNU nano 來開啟檔案。
nano iot-policy.json
完成後,政策文件可能看起來類似於核心裝置的最小 AWS IoT 政策。
-
將變更儲存為政策的新版本。執行下列命令,並將
GreengrassV2IoTThingPolicy
取代為政策的名稱。aws iot create-policy-version --policy-name
GreengrassV2IoTThingPolicy
--policy-document file://iot-policy.json --set-as-default如果成功, 操作會傳回類似下列範例的回應。
{ "policyArn": "arn:aws:iot:us-west-2:123456789012:policy/GreengrassV2IoTThingPolicy", "policyDocument": "{\ \\"Version\\": \\"2012-10-17\\",\ \\"Statement\\": [\ {\ \\"Effect\\": \\"Allow\\",\ \\"Action\\": [\ \\t\\t\\"iot:Connect\\",\ \\t\\t\\"iot:Publish\\",\ \\t\\t\\"iot:Subscribe\\",\ \\t\\t\\"iot:Receive\\",\ \\t\\t\\"greengrass:*\\"\ ],\ \\"Resource\\": \\"*\\"\ }\ ]\ }", "policyVersionId": "2", "isDefaultVersion": true }
AWS IoT Greengrass V2 核心裝置的最低 AWS IoT 政策
重要
較新版本的 Greengrass 核元件需要最低 AWS IoT 政策的額外許可。您可能需要更新核心裝置 AWS IoT 的政策,以授予其他許可。
-
執行 Greengrass nucleus 2.5.0 版及更新版本的核心裝置,會在您從物件群組中移除核心裝置時,使用
greengrass:ListThingGroupsForCoreDevice
許可來解除安裝元件。 -
執行 Greengrass nucleus 2.3.0 版及更新版本的核心裝置會使用
greengrass:GetDeploymentConfiguration
許可來支援大型部署組態文件。
以下範例政策包含支援核心裝置基本 Greengrass 功能所需的最少動作組合。
-
此
Connect
政策包含核心裝置物件名稱後面的*
萬用字元 (例如
)。核心裝置使用相同的裝置憑證對 進行多個並行訂閱 AWS IoT Core,但連線中的用戶端 ID 可能不完全符合核心裝置物件名稱。在前 50 個訂閱之後,核心裝置會使用core-device-thing-name
*
做為用戶端 ID,其中每增加 50 個訂閱core-device-thing-name
#number
。例如,當名為 的核心裝置number
MyCoreDevice
建立 150 個並行訂閱時,它會使用下列用戶端 IDs:-
訂閱 1 到 50:
MyCoreDevice
-
訂閱 51 到 100:
MyCoreDevice#2
-
訂閱 101 到 150:
MyCoreDevice#3
萬用字元可讓核心裝置在使用這些具有尾碼IDs 時連線。
-
-
政策會列出可供核心裝置發佈訊息、訂閱和接收訊息的 MQTT 主題和主題篩選條件,包括用於陰影狀態的主題。若要支援訊息交換 AWS IoT Core、Greengrass 元件和用戶端裝置,請指定您要允許的主題和主題篩選條件。如需詳細資訊,請參閱《 AWS IoT Core 開發人員指南》中的發佈/訂閱政策範例。
-
此政策授予許可,以發佈至下列遙測資料主題。
$aws/things/
core-device-thing-name
/greengrass/health/json您可以針對停用遙測的核心裝置移除此許可。如需詳細資訊,請參閱從 AWS IoT Greengrass 核心裝置收集系統運作狀態遙測資料。
-
政策授予透過角色別名擔任 IAM AWS IoT 角色的許可。核心裝置使用此角色,稱為權杖交換角色,以取得可用於驗證 AWS 請求的 AWS 登入資料。如需詳細資訊,請參閱授權核心裝置與服務 AWS 互動。
安裝 AWS IoT Greengrass Core 軟體時,您可以建立並連接第二個 AWS IoT 政策,其中僅包含此許可。如果您在核心裝置的主要 AWS IoT 政策中包含此許可,您可以分離和刪除其他 AWS IoT 政策。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "arn:aws:iot:
region
:account-id
:client/core-device-thing-name
*" }, { "Effect": "Allow", "Action": [ "iot:Receive", "iot:Publish" ], "Resource": [ "arn:aws:iot:region
:account-id
:topic/$aws/things/core-device-thing-name
/greengrass/health/json", "arn:aws:iot:region
:account-id
:topic/$aws/things/core-device-thing-name
/greengrassv2/health/json", "arn:aws:iot:region
:account-id
:topic/$aws/things/core-device-thing-name
/jobs/*", "arn:aws:iot:region
:account-id
:topic/$aws/things/core-device-thing-name
/shadow/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/core-device-thing-name
/jobs/*", "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/core-device-thing-name
/shadow/*" ] }, { "Effect": "Allow", "Action": "iot:AssumeRoleWithCertificate", "Resource": "arn:aws:iot:region
:account-id
:rolealias/token-exchange-role-alias-name
" }, { "Effect": "Allow", "Action": [ "greengrass:GetComponentVersionArtifact", "greengrass:ResolveComponentCandidates", "greengrass:GetDeploymentConfiguration", "greengrass:ListThingGroupsForCoreDevice" ], "Resource": "*" } ] }
支援用戶端裝置的最少 AWS IoT 政策
下列範例政策包含支援與核心裝置上的用戶端裝置互動所需的最低動作集。若要支援用戶端裝置,核心裝置除了基本操作的最低 AWS IoT 政策之外,還必須具有此 AWS IoT 政策中的許可。
-
此政策允許核心裝置更新自己的連線資訊。只有在您將 IP 偵測器元件部署到核心裝置時,才需要此許可 (
greengrass:UpdateConnectivityInfo
)。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:
region
:account-id
:topic/$aws/things/core-device-thing-name
-gci/shadow/get" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/core-device-thing-name
-gci/shadow/update/delta", "arn:aws:iot:region
:account-id
:topicfilter/$aws/things/core-device-thing-name
-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account-id
:topic/$aws/things/core-device-thing-name
-gci/shadow/update/delta", "arn:aws:iot:region
:account-id
:topic/$aws/things/core-device-thing-name
-gci/shadow/get/accepted" ] }, { "Effect": "Allow", "Action": [ "greengrass:PutCertificateAuthorities", "greengrass:VerifyClientDeviceIdentity" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "greengrass:VerifyClientDeviceIoTCertificateAssociation" ], "Resource": "arn:aws:iot:region
:account-id
:thing/*" }, { "Effect": "Allow", "Action": [ "greengrass:GetConnectivityInfo", "greengrass:UpdateConnectivityInfo" ], "Resource": [ "arn:aws:iot:region
:account-id
:thing/core-device-thing-name
" ] } ] }
用戶端裝置的最低 AWS IoT 政策
下列範例政策包含用戶端裝置透過 MQTT 連線和通訊時,探索核心裝置所需的最低動作集。用戶端裝置的 AWS IoT 政策必須包含 greengrass:Discover
動作,以允許裝置探索其相關聯 Greengrass 核心裝置的連線資訊。在 Resource
區段中,指定用戶端裝置的 Amazon Resource Name (ARN),而非 Greengrass 核心裝置的 ARN。
-
此政策允許在所有 MQTT 主題上進行通訊。若要遵循最佳實務,請將
iot:Publish
、iot:Subscribe
和iot:Receive
許可限制為用戶端裝置對您的使用案例所需的一組最少主題。 -
此政策允許物件探索所有 AWS IoT 物件的核心裝置。若要遵循最佳安全實務,請將
greengrass:Discover
許可限制為用戶端裝置的 AWS IoT 物件或符合一組 AWS IoT 物件的萬用字元。重要
核心裝置或 Greengrass 資料平面操作的政策不支援 的物件政策變數 (
iot:Connection.Thing.
)。 AWS IoT 反之,您可以使用萬用字元來比對名稱類似的多個裝置。例如,您可以指定*
MyGreengrassDevice*
來比對MyGreengrassDevice2
、MyGreengrassDevice1
等。 -
用戶端裝置的 AWS IoT 政策通常不需要
iot:GetThingShadow
、iot:UpdateThingShadow
或iot:DeleteThingShadow
動作的許可,因為 Greengrass 核心裝置會處理用戶端裝置的陰影同步操作。若要讓核心裝置能夠處理用戶端裝置影子,請檢查核心裝置 AWS IoT 的政策是否允許這些動作,以及Resource
區段是否包含用戶端裝置的 ARNs。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:Connect" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iot:Publish" ], "Resource": [ "arn:aws:iot:
region
:account-id
:topic/*" ] }, { "Effect": "Allow", "Action": [ "iot:Subscribe" ], "Resource": [ "arn:aws:iot:region
:account-id
:topicfilter/*" ] }, { "Effect": "Allow", "Action": [ "iot:Receive" ], "Resource": [ "arn:aws:iot:region
:account-id
:topic/*" ] }, { "Effect": "Allow", "Action": [ "greengrass:Discover" ], "Resource": [ "arn:aws:iot:region
:account-id
:thing/*" ] } ] }