

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

# Greengrass 服務角色
<a name="greengrass-service-role"></a>

<a name="greengrass-service-role-intro"></a>Greengrass 服務角色是 AWS Identity and Access Management (IAM) 服務角色，授權 代表您 AWS IoT Greengrass 存取來自 AWS 服務的資源。此角色可讓 AWS IoT Greengrass 驗證用戶端裝置的身分，並管理核心裝置連線資訊。

**注意**  
AWS IoT Greengrass V1 也會使用此角色來執行基本任務。如需詳細資訊，請參閱《 *AWS IoT Greengrass V1 開發人員指南*》中的 [Greengrass 服務角色](https://docs.aws.amazon.com/greengrass/v1/developerguide/service-role.html)。

若要允許 AWS IoT Greengrass 存取您的 資源，Greengrass 服務角色必須與 相關聯， AWS 帳戶 並指定 AWS IoT Greengrass 為信任的實體。此角色必須包含 [AWSGreengrassResourceAccessRolePolicy](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy) 受管政策或自訂政策，該政策會為您使用 AWS IoT Greengrass 的功能定義同等許可。 AWS 會維護此政策，此政策會定義 AWS IoT Greengrass 用於存取 AWS 資源的一組許可。如需詳細資訊，請參閱[AWS 受管政策：AWSGreengrassResourceAccessRolePolicy](security-iam-aws-managed-policies.md#aws-managed-policies-AWSGreengrassResourceAccessRolePolicy)。

您可以重複使用相同的 Greengrass 服務角色 AWS 區域，但必須在您使用的每個 AWS 區域 中將其與您的帳戶建立關聯 AWS IoT Greengrass。如果服務角色未在目前的 中設定 AWS 區域，核心裝置將無法驗證用戶端裝置，也無法更新連線資訊。

下列各節說明如何使用 AWS 管理主控台 或 建立和管理 Greengrass 服務角色 AWS CLI。

**Topics**
+ [管理 Greengrass 服務角色 （主控台）](#manage-greengrass-service-role-console)
+ [管理 Greengrass 服務角色 (CLI)](#manage-service-role-cli)
+ [另請參閱](#service-role-see-also)

**注意**  
除了授權服務層級存取的服務角色之外，您還可以將*權杖交換角色*指派給 Greengrass 核心裝置。字符交換角色是獨立的 IAM 角色，可控制核心裝置上的 Greengrass 元件和 Lambda 函數如何存取 AWS 服務。如需詳細資訊，請參閱[授權核心裝置與 AWS 服務互動](device-service-role.md)。

## 管理 Greengrass 服務角色 （主控台）
<a name="manage-greengrass-service-role-console"></a>

 AWS IoT 主控台可讓您輕鬆管理您的 Greengrass 服務角色。例如，當您設定核心裝置的用戶端裝置探索時，主控台會檢查 是否 AWS 帳戶 連接到目前 中的 Greengrass 服務角色 AWS 區域。如果未連接，主控台可以為您建立和設定服務角色。如需詳細資訊，請參閱[建立 Greengrass 服務角色 (主控台)](#create-greengrass-service-role-console)。

您可以使用 主控台執行下列角色管理任務：

**Topics**
+ [尋找您的 Greengrass 服務角色 (主控台)](#get-greengrass-service-role-console)
+ [建立 Greengrass 服務角色 (主控台)](#create-greengrass-service-role-console)
+ [變更 Greengrass 服務角色 (主控台)](#update-greengrass-service-role-console)
+ [分離 Greengrass 服務角色 (主控台)](#remove-greengrass-service-role-console)

**注意**  
登入主控台的使用者必須擁有可檢視、建立或變更服務角色的許可。

### 尋找您的 Greengrass 服務角色 (主控台)
<a name="get-greengrass-service-role-console"></a>

使用下列步驟來尋找目前 AWS IoT Greengrass 中使用的服務角色 AWS 區域。

1. <a name="open-iot-console"></a>導覽至 [AWS IoT 主控台](https://console.aws.amazon.com/iot)。

1. <a name="open-iot-settings"></a>在導覽窗格中，選擇**設定**。

1. 捲動至 **Greengrass service role (Greengrass 服務角色)** 區段，查看您的服務角色及其政策。

   如果您沒有看到服務角色，主控台可以為您建立或設定。如需詳細資訊，請參閱[建立 Greengrass 服務角色](#create-greengrass-service-role-console)。

### 建立 Greengrass 服務角色 (主控台)
<a name="create-greengrass-service-role-console"></a>

主控台可以為您建立和設定預設的 Greengrass 服務角色。這個角色具有以下屬性：


| 屬性 | Value | 
| --- | --- | 
| 名稱 | Greengrass\$1ServiceRole | 
| 信任實體 | AWS service: greengrass | 
| 政策 | [AWSGreengrassResourceAccessRolePolicy (AWSGreengrassResourceAccessRolePolicy)](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy) | 

**注意**  
如果您使用[AWS IoT Greengrass V1 裝置設定指令碼](https://docs.aws.amazon.com/greengrass/v1/developerguide/quick-start.html)建立此角色，則角色名稱為 `GreengrassServiceRole_random-string`。

當您設定核心裝置的用戶端裝置探索時，主控台會檢查 Greengrass 服務角色是否與目前 AWS 帳戶 中的 相關聯 AWS 區域。如果沒有，主控台會提示您允許 代表您 AWS IoT Greengrass 讀取和寫入 AWS 服務。

如果您授予許可，主控台會檢查 `Greengrass_ServiceRole`中是否存在名為 的角色 AWS 帳戶。
+ 如果角色存在，主控台會將服務角色連接到目前 AWS 帳戶 中的 AWS 區域。
+ 如果角色不存在，主控台會建立預設 Greengrass 服務角色，並將其連接到目前 AWS 帳戶 中的 AWS 區域。

**注意**  
如果您想要使用自訂角色政策建立服務角色，請使用 IAM 主控台來建立或修改角色。如需詳細資訊，請參閱[《IAM 使用者指南》中的建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html)[或修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html)。 **請確定角色會授與與您所使用功能和資源之 `AWSGreengrassResourceAccessRolePolicy` 受管政策相同的許可。我們建議您也在信任政策中包含 `aws:SourceArn`和 `aws:SourceAccount`全域條件內容金鑰，以協助防止*混淆代理人*安全問題。條件內容索引鍵會限制存取，只允許來自指定帳戶和 Greengrass 工作區的這些請求。如需有關混淆代理人問題的詳細資訊，請參閱 [預防跨服務混淆代理人](cross-service-confused-deputy-prevention.md)。  
如果您建立服務角色，請返回 AWS IoT 主控台，並將該角色連接到您的 AWS 帳戶。您可以在**設定**頁面上的 **Greengrass 服務角色**下執行此操作。

### 變更 Greengrass 服務角色 (主控台)
<a name="update-greengrass-service-role-console"></a>

使用下列程序選擇不同的 Greengrass 服務角色，以在主控台 AWS 區域 目前選取的 AWS 帳戶 中連接至您的 。

1. <a name="open-iot-console"></a>導覽至 [AWS IoT 主控台](https://console.aws.amazon.com/iot)。

1. <a name="open-iot-settings"></a>在導覽窗格中，選擇**設定**。

1. 在 **Greengrass 服務角色**下，選擇**變更角色**。

   **更新 Greengrass 服務角色**對話方塊隨即開啟，並顯示 中定義為 AWS IoT Greengrass 信任實體 AWS 帳戶 的 IAM 角色。

1. 選擇要連接的 Greengrass 服務角色。

1. 選擇**連接角色**。

### 分離 Greengrass 服務角色 (主控台)
<a name="remove-greengrass-service-role-console"></a>

使用下列程序，在目前的 中將 Greengrass 服務角色從 AWS 您的帳戶分離 AWS 區域。這會撤銷 AWS IoT Greengrass 存取目前 AWS 服務的權限 AWS 區域。

**重要**  
分離服務角色可能會中斷作用中的操作。

1. <a name="open-iot-console"></a>導覽至 [AWS IoT 主控台](https://console.aws.amazon.com/iot)。

1. <a name="open-iot-settings"></a>在導覽窗格中，選擇**設定**。

1. 在 **Greengrass 服務角色**下，選擇**分離角色**。

1. 在確認對話方塊中，選擇 **Detach** (分離)。

**注意**  
如果您不再需要該角色，您可以在 IAM 主控台中刪除該角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[刪除角色或執行個體描述檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)。  
其他角色可能允許 AWS IoT Greengrass 存取您的 資源。若要尋找允許 代表您 AWS IoT Greengrass 擔任許可的所有角色，請在 IAM 主控台的角色****頁面上，尋找包含**AWS 服務的角色：信任實體欄中的 greengrass**。 ****

## 管理 Greengrass 服務角色 (CLI)
<a name="manage-service-role-cli"></a>

在下列程序中，我們假設 AWS Command Line Interface 已安裝並設定為使用您的 AWS 帳戶。如需詳細資訊，請參閱*AWS Command Line Interface 《 使用者指南*》中的[安裝、更新和解除安裝 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/installing.html) 和[設定 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-getting-started.html)。

您可以使用 AWS CLI 執行下列角色管理任務：

**Topics**
+ [取得 Greengrass 服務角色 (CLI)](#get-service-role)
+ [建立 Greengrass 服務角色 (CLI)](#create-service-role)
+ [移除 Greengrass 服務角色 (CLI)](#remove-service-role)

### 取得 Greengrass 服務角色 (CLI)
<a name="get-service-role"></a>

使用下列程序來了解 Greengrass 服務角色是否與 AWS 帳戶 中的 相關聯 AWS 區域。
+ 取得服務角色。將*區域*取代為您的 AWS 區域 （例如，`us-west-2`)。

  ```
  aws greengrassv2 get-service-role-for-account --region region
  ```

  如果 Greengrass 服務角色已與您的帳戶建立關聯，則請求會傳回下列角色中繼資料。

  ```
  {
    "associatedAt": "timestamp",
    "roleArn": "arn:aws:iam::account-id:role/path/role-name"
  }
  ```

  如果請求未傳回角色中繼資料，則必須建立服務角色 （如果不存在），並將其與 中的帳戶建立關聯 AWS 區域。

### 建立 Greengrass 服務角色 (CLI)
<a name="create-service-role"></a>

使用下列步驟來建立角色，並將其與您的 建立關聯 AWS 帳戶。

**使用 IAM 建立服務角色**

1. 使用允許 AWS IoT Greengrass 擔任角色的信任政策來建立角色。此範例會建立名為 `Greengrass_ServiceRole` 的角色，但您可以使用不同的名稱。我們建議您也在信任政策中包含 `aws:SourceArn`和 `aws:SourceAccount`全域條件內容金鑰，以協助防止*混淆代理人*安全問題。條件內容索引鍵會限制存取，只允許來自指定帳戶和 Greengrass 工作區的這些請求。如需有關混淆代理人問題的詳細資訊，請參閱 [預防跨服務混淆代理人](cross-service-confused-deputy-prevention.md)。

------
#### [ Linux or Unix ]

   ```
   aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "greengrass.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "ArnLike": {
             "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
           },
           "StringEquals": {
             "aws:SourceAccount": "account-id"
           }
         }
       }
     ]
   }'
   ```

------
#### [ Windows Command Prompt (CMD) ]

   ```
   aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document "{\"Version\":\"2012-10-17\",		 	 	 \"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"Service\":\"greengrass.amazonaws.com\"},\"Action\":\"sts:AssumeRole\",\"Condition\":{\"ArnLike\":{\"aws:SourceArn\":\"arn:aws:greengrass:region:account-id:*\"},\"StringEquals\":{\"aws:SourceAccount\":\"account-id\"}}}]}"
   ```

------
#### [ PowerShell ]

   ```
   aws iam create-role --role-name Greengrass_ServiceRole --assume-role-policy-document '{
     "Version": "2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "greengrass.amazonaws.com"
         },
         "Action": "sts:AssumeRole",
         "Condition": {
           "ArnLike": {
             "aws:SourceArn": "arn:aws:greengrass:region:account-id:*"
           },
           "StringEquals": {
             "aws:SourceAccount": "account-id"
           }
         }
       }
     ]
   }'
   ```

------

1. 從輸出中的角色中繼資料，複製角色 ARN。您使用 ARN 將角色與您的帳戶相關聯。

1. 將 `AWSGreengrassResourceAccessRolePolicy` 政策連接到角色。

   ```
   aws iam attach-role-policy --role-name Greengrass_ServiceRole --policy-arn arn:aws:iam::aws:policy/service-role/AWSGreengrassResourceAccessRolePolicy
   ```

**將服務角色與 建立關聯 AWS 帳戶**
+ 將角色與您的帳戶相關聯。將 *role-arn* 取代為服務角色 ARN，並將 *region* 取代為 your AWS 區域 （例如，`us-west-2`)。

  ```
  aws greengrassv2 associate-service-role-to-account --role-arn role-arn --region region
  ```

  如果成功，請求會傳回下列回應。

  ```
  {
    "associatedAt": "timestamp"
  }
  ```

### 移除 Greengrass 服務角色 (CLI)
<a name="remove-service-role"></a>

使用下列步驟取消 Greengrass 服務角色與 的關聯 AWS 帳戶。
+ 將服務角色與您的帳戶取消關聯。將*區域*取代為您的 AWS 區域 （例如，`us-west-2`)。

  ```
  aws greengrassv2 disassociate-service-role-from-account --region region
  ```

  如果成功，會傳回下列回應。

  ```
  {
    "disassociatedAt": "timestamp"
  }
  ```
**注意**  
如果您未在任何 中使用服務角色，您應該將其刪除 AWS 區域。首先，使用 [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html) 將 `AWSGreengrassResourceAccessRolePolicy` 受管政策從角色中分離，然後使用 [https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html) 來刪除角色。如需詳細資訊，請參閱 *IAM 使用者指南*中的[刪除角色或執行個體描述檔](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)。

## 另請參閱
<a name="service-role-see-also"></a>
+ 《*IAM 使用者指南*》中的[建立角色以將許可委派給 AWS 服務](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-service.html) 
+ *IAM 使用者指南*中的[修改角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_modify.html) 
+ 《*IAM 使用者指南*》中的[刪除角色或執行個體描述](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html)檔
+ AWS IoT Greengrass 命令*AWS CLI 參考中的 命令*
  + [associate-service-role-to-account](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/associate-service-role-to-account.html)
  + [disassociate-service-role-from-account](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/disassociate-service-role-from-account.html)
  + [get-service-role-for-account](https://docs.aws.amazon.com/cli/latest/reference/greengrassv2/get-service-role-for-account.html)
+ 《 命令*AWS CLI 參考》中的 IAM 命令*
  + [attach-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/attach-role-policy.html)
  + [create-role](https://docs.aws.amazon.com/cli/latest/reference/iam/create-role.html)
  + [delete-role](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role.html)
  + [delete-role-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/delete-role-policy.html)