

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

# 在串流執行個體上存取 WorkSpaces 和指令碼
<a name="using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances"></a>

在 WorkSpaces 串流執行個體上執行的應用程式和指令碼必須在其 AWSAPI 請求中包含AWS登入資料。您可以建立 IAM 角色來管理這些憑證。IAM 角色會指定一組可用於存取 AWS資源的許可。不過，此角色並非與某個人單獨關聯。反之，任何需要此角色的任何人都可以擔任此角色。

您可以將 IAM 角色套用至 WorkSpaces 串流執行個體。當串流執行個體切換為 (擔任) 該角色時，該角色會提供暫時安全登入資料。您的應用程式或指令碼會使用這些憑證，在串流執行個體上執行 API 動作和管理任務。WorkSpaces 會為您管理臨時登入資料切換。

**Topics**
+ [搭配 WorkSpaces 串流執行個體使用 IAM 角色的最佳實務](#best-practices-for-using-iam-role-with-streaming-instances)
+ [設定現有的 IAM 角色以搭配 WorkSpaces 串流執行個體使用](#configuring-existing-iam-role-to-use-with-streaming-instances)
+ [如何建立 IAM 角色以搭配 WorkSpaces 串流執行個體使用](#how-to-create-iam-role-to-use-with-streaming-instances)
+ [如何搭配 WorkSpaces 串流執行個體使用 IAM 角色](#how-to-use-iam-role-with-streaming-instances)

## 搭配 WorkSpaces 串流執行個體使用 IAM 角色的最佳實務
<a name="best-practices-for-using-iam-role-with-streaming-instances"></a>

當您搭配 WorkSpaces 串流執行個體使用 IAM 角色時，建議您遵循下列實務：
+ 限制您授予 AWSAPI 動作和資源的許可。

  當您建立 IAM 政策並將其連接至與 WorkSpaces 串流執行個體相關聯的 IAM 角色時，請遵循最低權限原則。當您使用需要存取 AWSAPI 動作或資源的應用程式或指令碼時，請判斷所需的特定動作和資源。然後，建立允許應用程式或指令碼僅執行那些動作的政策。如需詳細資訊，請參閱*《IAM 使用者指南》*中的[授予最低權限](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#grant-least-privilege)。
+ 為每個 WorkSpaces 資源建立 IAM 角色。

  為每個 WorkSpaces 資源建立唯一的 IAM 角色是遵循最低權限原則的做法。這樣做也可讓您修改資源的許可，而不會影響其他資源。
+ 限制可使用登入資料的位置。

  IAM 政策可讓您定義可使用 IAM 角色來存取資源的條件。例如，您可以包含條件，以指定請求可能來自的 IP 地址範圍。這樣做可防止登入資料在您的環境外遭到使用。如需詳細資訊，請參閱《IAM 使用者指南》**中的[使用政策條件提供額外的安全性](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html#use-policy-conditions)。

## 設定現有的 IAM 角色以搭配 WorkSpaces 串流執行個體使用
<a name="configuring-existing-iam-role-to-use-with-streaming-instances"></a>

本主題說明如何設定現有的 IAM 角色，以便與 WorkSpaces 搭配使用。

**先決條件**

您想要與 WorkSpaces 搭配使用的 IAM 角色必須符合下列先決條件：
+ IAM 角色必須與 WorkSpaces 串流執行個體位於相同的 Amazon Web Services 帳戶中。
+ IAM 角色不能是服務角色。
+ 連接至 IAM 角色的信任關係政策必須包含 WorkSpaces 服務做為委託人。*委託*人是 中的實體AWS，可執行動作和存取資源。政策也必須包含 `sts:AssumeRole` 動作。此政策組態將 WorkSpaces 定義為信任的實體。

  
+ 如果您要將 IAM 角色套用至 WorkSpaces，WorkSpaces 必須執行 2019 年 9 月 3 日當天或之後發行的 WorkSpaces 代理程式版本。如果您要將 IAM 角色套用至 WorkSpaces，WorkSpaces 必須使用在相同日期或之後發行的代理程式版本映像。

**若要讓 WorkSpaces 服務主體擔任現有的 IAM 角色**

若要執行以下步驟，您必須以有權列出和更新 IAM 角色的 IAM 使用者身分登入帳戶。如果您沒有所需許可，可請 Amazon Web Services 帳戶管理員在您的帳戶中執行這些步驟，或授予您必要的許可。

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**。

1. 在您帳戶的角色清單中，選擇您想要修改的角色名稱。

1. 選擇 **Trust Relationships (信任關係)** 標籤，然後選擇 **Edit Trust Relationship (編輯信任關係)**。

1. 在 **Policy Document (政策文件)** 下，確認信任關係政策包含適用於 `workspaces.amazonaws.com` 服務委託人的 `sts:AssumeRole` 動作：

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "workspaces.amazonaws.com"
           ]
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. 當您完成編輯您的信任政策，請選擇 **Update Trust Policy (更新信任政策)** 來儲存您的變更。

1. 您選取的 IAM 角色會顯示在 WorkSpaces 主控台中。此角色會將許可授予應用程式和指令碼，來在串流執行個體上執行 API 動作和管理任務。

## 如何建立 IAM 角色以搭配 WorkSpaces 串流執行個體使用
<a name="how-to-create-iam-role-to-use-with-streaming-instances"></a>

本主題說明如何建立新的 IAM 角色，以便與 WorkSpaces 搭配使用

1. 在以下網址開啟 IAM 主控台：[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在導覽窗格中，選擇**角色**，然後選擇**建立角色**。

1. 對於 **Select type of trusted entity (選取信任的實體類型)**，選擇 **AWSservice ( 服務)**。

1. 從AWS服務清單中，選擇 **WorkSpaces**。

1. 在**選取您的使用案例**下，已選取 **WorkSpaces — 允許 WorkSpaces 執行個體代表您呼叫 AWS服務**。選擇**下一步：許可**。

1. 可以的話，請選取用於許可政策的政策，或者選擇 **Create policy (建立政策)** 以開啟新的瀏覽器標籤，並從頭建立新的政策。如需詳細資訊，請參閱《IAM 使用者指南》**中的[建立 IAM 政策 (主控台)](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html#access_policies_create-start) 程序的步驟 4。

   在您建立政策後，關閉該標籤並返回您的原始標籤。選取您希望 WorkSpaces 擁有的許可政策旁的核取方塊。

1. (選用) 設定許可界限。這是進階功能，可用於服務角色，而不是服務連結的角色。如需詳細資訊，請參閱《IAM 使用者指南》**中的 [IAM 實體許可界限](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_boundaries.html)。

1. 選擇下**一步：標籤**。您可以選擇將標籤附加為金鑰值配對。如需詳細資訊，請參閱《IAM 使用者指南》**中的[標記 IAM 使用者和角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_tags.html)。

1. 選擇下**一步：檢閱**。

1. 在**角色名稱**中，輸入您 Amazon Web Services 帳戶中的唯一角色名稱。由於其他AWS資源可能會參考角色，因此您無法在建立角色之後編輯角色的名稱。

1. 在 **Role description** (角色描述) 中，保留預設角色描述或輸入新的角色描述。

1. 檢閱角色，然後選擇 **Create role** (建立角色)。

## 如何搭配 WorkSpaces 串流執行個體使用 IAM 角色
<a name="how-to-use-iam-role-with-streaming-instances"></a>

建立 IAM 角色之後，您可以在啟動 WorkSpaces 時將其套用至 WorkSpaces。您也可以將 IAM 角色套用至現有的 WorkSpaces。

當您將 IAM 角色套用至 WorkSpaces 時，WorkSpaces 會擷取臨時登入資料，並在執行個體上建立 **workspaces\$1machine\$1role** 登入資料設定檔。臨時憑證的有效期為 1 小時，而且每小時都會擷取新的憑證。之前的登入資料不會過期，因此您可以在有效期間進行使用。您可以使用登入資料設定檔，使用AWS Command Line Interface (AWSCLI)、AWSTools for PowerShell 或 AWSSDK 搭配您選擇的語言，以程式設計方式呼叫 AWS服務。

當您進行 API 呼叫時，請指定 **workspaces\$1machine\$1role** 做為登入資料設定檔。否則，此操作會因許可不足而失敗。

佈建串流執行個體時，WorkSpaces 會擔任指定的角色。由於 WorkSpaces 使用連接到 VPC 的彈性網路界面進行 AWSAPI 呼叫，因此您的應用程式或指令碼必須等待彈性網路界面變成可用，才能進行 AWSAPI 呼叫。如果在彈性網路界面變成可用前已進行 API 呼叫，則呼叫會失敗。

下列範例示範如何使用 **workspaces\$1machine\$1role** 登入資料描述檔來描述串流執行個體 (EC2 執行個體） 和建立 Boto 用戶端。Boto 是適用於 Python 的 Amazon Web Services (AWS) SDK。

**使用 CLI 描述串流執行個體 (EC2 AWS執行個體）**

```
aws ec2 describe-instances --region us-east-1 --profile workspaces_machine_role
```

**使用 AWSTools for PowerShell 描述串流執行個體 (EC2 執行個體）**

您必須使用 AWSTools for PowerShell 3.3.563.1 版或更新版本，搭配 Amazon Web Services SDK for .NET 3.3.103.22 版或更新版本。您可以從 Tools for PowerShell 網站下載 AWSTools for Windows 安裝程式，其中包括 AWSTools for [AWS PowerShell 和 Amazon Web Services SDK for ](https://aws.amazon.com/powershell/).NET。

```
Get-EC2Instance -Region us-east-1 -ProfileName workspaces_machine_role
```

**使用適用於 Python 的 AWSSDK 建立 Boto 用戶端**

```
session = boto3.Session(profile_name=workspaces_machine_role')
```