授權核心裝置與 AWS 服務互動 - AWS IoT Greengrass

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

授權核心裝置與 AWS 服務互動

AWS IoT Greengrass 核心裝置會使用 AWS IoT Core 憑證提供者來授權對 AWS 服務的呼叫。 AWS IoT Core 憑證提供者可讓裝置使用其 X.509 憑證作為唯一裝置身分識別來驗證 AWS 要求。這樣就不需要在 AWS IoT Greengrass 核心設備上 AWS 存儲訪問密鑰 ID 和秘密訪問密鑰。如需詳細資訊,請參閱AWS IoT Core 開發人員指南的授權直接呼叫 AWS 服務

執行 AWS IoT Greengrass Core 軟體時,您可以選擇佈建核心裝置所需的 AWS 資源。這包括核心裝置透過 AWS IoT Core 認證提供者承擔的 AWS Identity and Access Management (IAM) 角色。使用--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核心軟體

您也可以為現有核心裝置設定角色別名。若要這麼做,請設iotRoleAliasGreengrass 核元件的組態參數。

您可以取得此IAM角色的暫時 AWS 認證,以便在自訂元件中執行 AWS 作業。如需詳細資訊,請參閱與AWS服務互動

核心裝置的服務角色權限

此角色可讓下列服務擔任該角色:

  • credentials.iot.amazonaws.com

如果您使用 AWS IoT Greengrass Core 軟體建立此角色,它會使用下列權限原則來允許核心裝置連線並將記錄檔傳送至 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 儲存貯體中的所有檔案。將 amzn-s3-示範儲存貯體取代為 S3 儲存貯體的名稱,以允許核心裝置存取。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::amzn-s3-demo-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 (取代) GreengrassV2TokenExchangeRole 使用您在執行 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 儲存貯體的成品。