

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

# 向使用者授予切換角色的許可
<a name="id_roles_use_permissions-to-switch"></a>

當管理員[建立用於跨帳戶存取的角色](id_roles_create_for-user.md)時，他們會在擁有角色和資源的帳戶 (信任帳戶) 和包含使用者的帳戶 (可信帳戶) 之間建立信任。若要執行此操作，信任帳戶的系統管理員要在角色的信任政策中將可信的帳戶編號指定為 `Principal`。這*可能*會允許可信帳戶中的任何使用者擔任該角色。要完成設定，信任帳戶的管理員必須為該帳戶中的特定群組或使用者提供切換到該角色的許可。

**要授予許可以切換到角色**

1. 身為可信帳戶的管理員，請為使用者建立新政策，或編輯現有政策來新增必要元素。如需詳細資訊，請參閱[建立或編輯政策](#roles-usingrole-createpolicy)。

1. 然後，選擇您想要如何共享角色資訊：
   + **角色連結：**向使用者傳送連結，讓他們進入已填寫所有詳細資訊的 **Switch Role** (切換角色) 頁面。
   + **帳戶 ID 或別名：**為每個使用者提供角色名稱以及帳戶 ID 號碼或帳戶別名。使用者接著前往 **Switch Role (切換角色)** 頁面，然後手動新增詳細資訊。

   如需詳細資訊，請參閱[提供資訊給使用者](#roles-usingrole-giveuser)。

請注意，只有當您做為 IAM 使用者、SAML 聯合角色或 Web 聯合身分角色登入時，才能切換角色。如果您以 AWS 帳戶根使用者登入，則無法切換角色。

**重要**  
您無法將 中的角色切換 AWS 管理主控台 為需要 [ExternalId](id_roles_common-scenarios_third-party.md#id_roles_third-party_external-id) 值的角色。您只能透過呼叫支援 `ExternalId` 參數的 [https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html) API 來切換到此類角色。

**備註**  
本主題討論*使用者*的政策，因為您最終會向使用者授予完成任務的許可。不過，我們不建議您直接向個別使用者授予許可。當使用者擔任角色時，他們會被指派得到與該角色關聯的許可。
當您在 中切換角色時 AWS 管理主控台，主控台一律會使用您的原始登入資料來授權切換。無論您作為 IAM 使用者、SAML 聯合角色還是 Web 聯合身分角色登入，上述情形均適用。例如，如果您切換到 RoleA，IAM 會使用您的原始使用者或聯合角色憑證確定是否允許您擔任 RoleA。如果您*在使用 RoleA 時*嘗試切換到 RoleB，仍會使用您的**原始**使用者或聯合身分角色憑證對您切換到 RoleB 的嘗試進行授權。RoleA 的憑證不會用於此動作。

**Topics**
+ [建立或編輯政策](#roles-usingrole-createpolicy)
+ [提供資訊給使用者](#roles-usingrole-giveuser)

## 建立或編輯政策
<a name="roles-usingrole-createpolicy"></a>

授予使用者擔任角色的許可政策必須包含在下列項目中擁有 `Allow` 效果的陳述式：
+ `sts:AssumeRole` 動作
+ 在 `Resource` 元素中的角色的 Amazon Resource Name (ARN)。

取得政策的使用者被允許在所列資源上切換角色 (無論是透過群組成員還是直接連接)。

**注意**  
如果 `Resource` 已設定為 `*`，則使用者可以在信任使用者帳戶的任何帳戶中擔任任何角色。(換句話說，角色的信任政策會將使用者的帳戶指定為 `Principal`)。最佳實務是建議您遵循[最低權限原則](http://en.wikipedia.org/wiki/Principle_of_least_privilege)，並且僅為使用者所需的角色指定完整的 ARN。

以下範例顯示一個政策，該政策僅允許使用者擔任一個帳戶中的角色。此外，政策使用萬用字元 (\$1) 指定，如果角色名稱以字元 `Test` 開頭並後跟任何其他字元組合，則使用者只能切換到該帳戶中的角色。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": {
        "Effect": "Allow",
        "Action": "sts:AssumeRole",
        "Resource": "arn:aws:iam::111122223333:role/Test*"
    }
}
```

------

**注意**  
角色向使用者授予的許可不會新增到使用者已獲得的許可。當使用者切換到某個角色時，使用者可臨時放棄其原始許可以換取由該角色授予的許可。使用者退出該角色時，將自動恢復原始使用者許可。例如，如果使用者的許可允許使用 Amazon EC2 執行個體，但是角色的許可政策未授予這些許可。在這種情況下，在使用角色的同時，使用者不能使用在主控台中的 Amazon EC2 執行個體。此外，透過 `AssumeRole` 取得的暫時憑證不可透過程式設計方式使用 Amazon EC2 執行個體。

## 提供資訊給使用者
<a name="roles-usingrole-giveuser"></a>

建立一個角色並向使用者授予切換為該角色的許可後，您必須提供使用者下列項目：
+ 角色的名稱
+ 包含角色的帳戶 ID 或別名

您可以向使用者發送使用帳戶 ID 和角色名稱預先配置的連結，以簡化他們的存取操作。完成**建立角色**精靈後，您可以選取**檢視角色**橫幅，或在任何跨帳戶啟用之角色的**角色摘要**頁面上查看角色連結。

您還可使用以下格式來手動建構連結。請用您的帳戶 ID 或別名及角色名稱來替換下列範例中的兩個參數：

`https://signin.aws.amazon.com/switchrole?account=your_account_ID_or_alias&roleName=optional_path/role_name`

我們建議您將使用者導向到 [從使用者切換至 IAM 角色 (主控台)](id_roles_use_switch-role-console.md)，以便向他們演練該過程。若要排除您在擔任角色時可能遇到的常見問題，請參閱 [我無法擔任角色](troubleshoot_roles.md#troubleshoot_roles_cant-assume-role)。

**考量事項**
+ 如果您以程式設計方式建立角色，則可使用路徑以及名稱來建立角色。如果您這麼做，則必須為您的使用者提供完整的路徑和角色名稱以便在 AWS 管理主控台的 **Switch Role** (切換角色) 頁面上輸入。例如：`division_abc/subdivision_efg/role_XYZ`。
+ 如果您以程式設計方式建立角色，則除了 `RoleName` 外，您還可以新增最長 512 個字元的 `Path`。角色名稱長度上限為 64 個字元。不過，若要搭配 中的**切換角色**功能使用角色 AWS 管理主控台，合併 `Path`和 `RoleName`不得超過 64 個字元。
+ 基於安全考量，您可以[檢閱 AWS CloudTrail 日誌](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)，以了解在其中執行動作的人員 AWS。您可以使用角色信任政策中的 `sts:SourceIdentity` 條件金鑰，請求使用者在擔任角色時指定身分。例如，您可以請求 IAM 使用者將自己的使用者名稱指定為其來源身分。這可以協助您判斷哪位使用者在 AWS中執行了特定動作。如需詳細資訊，請參閱[`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity)。您亦可以使用 [`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname)，請求使用者在擔任角色時指定工作階段名稱。當不同的主體使用角色時，這可協助您區分角色工作階段。