授權核心設備與AWS服務 - AWS IoT Greengrass

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

授權核心設備與AWS服務

AWS IoT Greengrass核心裝置使用AWS IoT Core證書提供程序授權調用AWS服務。所以此AWS IoT Core憑據提供程序允許設備使用其 X.509 證書作為唯一設備標識進行身份驗證AWS請求。這讓您不需要將AWS存取金鑰 ID 和私密存取金鑰AWS IoT Greengrass核心裝置。如需詳細資訊,請參閱「」授權直接呼叫AWS服務中的AWS IoT Core開發人員指南

當您運行AWS IoT Greengrass核心軟件,您可以選擇配置AWS核心設備所需的資源。其中包括AWS Identity and Access Management(IAM) 角色,您的核心設備通過AWS IoT Core登入資料提供者。使用--provision true參數來配置允許核心設備獲取臨時AWS登入資料。此參數還配置一個AWS IoT指向此 IAM 角色的角色別名。您可以指定 IAM 角色的名稱,AWS IoT角色別名。如果指定--provision true沒有這些其他名稱參數,Greengrass 核心設備將創建並使用以下默認資源:

  • IAM 角色:GreengrassV2TokenExchangeRole

    此角色具有名為GreengrassV2TokenExchangeRoleAccess並建立信任關係credentials.iot.amazonaws.com來擔任此角色。該策略包括核心設備的最低權限。

    重要

    此策略不包括對 S3 存儲桶中文件的訪問權限。您必須向角色添加許可,以允許核心設備從 S3 儲存貯體檢索組件。如需詳細資訊,請參閱 允許存取 S3 儲存貯體的存取

  • AWS IoT角色別名:GreengrassV2TokenExchangeRoleAlias

    此角色別名指的是 IAM 角色。

如需詳細資訊,請參閱 步驟 3:安裝AWS IoT Greengrass核心軟體

您還可以為現有核心設備設置角色別名。若要執行此作業,請將iotRoleAlias配置參數的Greengrass 核組成

您可以獲得臨時AWSIAM 角色若要執行的登入資料AWS操作。如需詳細資訊,請參閱 與AWS服務互動

核心裝置的服務角色許可

此角色允許下列服務擔任此角色:

  • credentials.iot.amazonaws.com

如果您使用AWS IoT Greengrass核心軟件創建此角色時,它使用以下權限策略允許核心設備連接並將日誌發送到AWS。策略的名稱默認為 IAM 角色的名稱,以Access。例如,如果您使用默認 IAM 角色名稱,則此策略的名稱為GreengrassV2TokenExchangeRoleAccess

Greengrass nucleus v2.5.0 and later
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
v2.4.x
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "s3:GetBucketLocation" ], "Resource": "*" } ] }
Earlier than v2.4.0
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iot:DescribeCertificate", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams", "iot:Connect", "iot:Publish", "iot:Subscribe", "iot:Receive", "s3:GetBucketLocation" ], "Resource": "*" } ] }

允許存取 S3 儲存貯體的存取

默認核心設備角色不允許核心設備訪問 S3 存儲桶。要部署 S3 存儲桶中包含工件的組件,您必須將s3:GetObject權限以允許核心設備下載組件工件。您可以向核心設備角色添加新策略以授予此權限。

添加允許訪問 Amazon S3 中組件項目的策略
  1. 建立名為component-artifact-policy.json並將下列 JSON 複製到檔案。此政策允許存取 S3 儲存貯體中的所有檔案。Replace文檔示例存儲桶,其中包括 S3 儲存貯體的名稱,以允許核心設備存取。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::DOC-EXAMPLE-BUCKET/*" } ] }
  2. 執行下列命令,從component-artifact-policy.json

    Linux or Unix
    aws iam create-policy \ --policy-name MyGreengrassV2ComponentArtifactPolicy \ --policy-document file://component-artifact-policy.json
    Windows Command Prompt (CMD)
    aws iam create-policy ^ --policy-name MyGreengrassV2ComponentArtifactPolicy ^ --policy-document file://component-artifact-policy.json
    PowerShell
    aws iam create-policy ` --policy-name MyGreengrassV2ComponentArtifactPolicy ` --policy-document file://component-artifact-policy.json

    從輸出中的政策元數據複製政策 Amazon 資源名稱 (ARN)。在下一步驟中,您可以使用此 ARN 將此政策連接至核心設備角色。

  3. 執行下列命令將政策連接至核心裝置角色。Replace綠色草案 2-代幣交換中指定的角色名稱,其中包括您運行AWS IoT Greengrass核心軟體。然後,將政策 ARN 取代成先前步驟中的 ARN。

    Linux or Unix
    aws iam attach-role-policy \ --role-name GreengrassV2TokenExchangeRole \ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
    Windows Command Prompt (CMD)
    aws iam attach-role-policy ^ --role-name GreengrassV2TokenExchangeRole ^ --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy
    PowerShell
    aws iam attach-role-policy ` --role-name GreengrassV2TokenExchangeRole ` --policy-arn arn:aws:iam::123456789012:policy/MyGreengrassV2ComponentArtifactPolicy

    如果命令沒有輸出,則會成功,並且您的核心設備可以訪問您上傳到此 S3 存儲桶的工件。