

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

# 切換至 IAM 角色 (Tools for Windows PowerShell)
<a name="id_roles_use_switch-role-twp"></a>

「角色」**指定一組許可，您可以使用它來存取所需的 AWS 資源。從這個意義上說，類似於 [AWS Identity and Access Management中的使用者](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) (IAM)。當您以使用者身分登入時，您將取得一組特定的許可。不過，您不登入角色，但一旦登入後就可以切換角色。這會暫時擱置了原始使用者許可，而不是為您提供指派給該角色的許可。該角色可以在您自己的帳戶或任何其他 AWS 帳戶中。如需有關角色、其優勢以及建立和設定方式的詳細資訊，請參閱 [IAM 角色](id_roles.md) 和 [IAM 角色建立](id_roles_create.md)。

**重要**  
您的 IAM 使用者以及您切換到任何角色的許可都不會累計。每次只有一組許可是作用中。當您切換角色時，您會暫時放棄使用者許可並使用指派給該角色的許可。當您退出角色後，您的使用者許可會自動恢復。

本節說明在 AWS Tools for Windows PowerShell命令列中如何切換角色。

假設您在開發環境中有一個帳戶，偶爾需要使用 [Tools for Windows PowerShell](https://aws.amazon.com/powershell/) 在命令列中使用生產環境。您已經有一個存取金鑰憑證組可供您使用。這些可以是指派給標準 IAM 使用者的存取金鑰對。或者，如果您以 SAML 或 OIDC 聯合身分主體身分登入，則它們可以是最初指派給您的角色的存取金鑰對。您可以使用這些憑證來執行 `Use-STSRole` cmdlet，該 cmdlet 將新角色的 ARN 做為參數傳送。該命令傳回所請求角色的臨時安全憑證。然後，您可以在後續 PowerShell 命令中使用這些憑證，並使用角色的許可存取生產中的資源。使用該角色時，您無法在開發帳戶中使用您的使用者許可，因為一次只能有一組許可有效。

**注意**  
基於安全考量，管理員可以[檢閱 AWS CloudTrail 日誌](cloudtrail-integration.md#cloudtrail-integration_signin-tempcreds)，以了解在其中執行動作的人員 AWS。當您擔任角色時，系統管理員可能需要您指定來源身分或角色工作階段名稱 。如需詳細資訊，請參閱[`sts:SourceIdentity`](reference_policies_iam-condition-keys.md#ck_sourceidentity)及[`sts:RoleSessionName`](reference_policies_iam-condition-keys.md#ck_rolesessionname)。

請注意，所有存取金鑰和權杖僅為範例，不能如下所示般使用。以您實際環境中的適當值取代。

**切換至角色 (Tools for Windows PowerShell)**

1. 開啟 PowerShell 命令提示字元並設定預設設定檔以使用來自目前 IAM 使用者或聯合身分角色的存取金鑰。如果您之前已使用 Tools for Windows PowerShell，則可能已經完成。請注意，只有在以 IAM 使用者身分 (而非 AWS 帳戶根使用者) 登入時才能切換角色。

   ```
   PS C:\> Set-AWSCredentials -AccessKey {{AKIAIOSFODNN7EXAMPLE}} -SecretKey {{wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY}} -StoreAs {{MyMainUserProfile}}
   PS C:\> Initialize-AWSDefaults -ProfileName {{MyMainUserProfile}} -Region {{us-east-2}}
   ```

   如需詳細資訊，請參閱*AWS Tools for PowerShell 《 使用者指南*》中的[使用 AWS 登入](https://docs.aws.amazon.com/powershell/latest/userguide/specifying-your-aws-credentials.html)資料。

1. 若要擷取新角色的憑證，請執行下列命令以切換到 123456789012 帳戶中的 `{{RoleName}}` 角色。您從建立角色的帳戶管理員處取得角色 ARN。此命令還需要您提供工作階段名稱。您可以為此選擇任何文字。以下命令請求憑證，然後從傳回的結果物件中擷取 `Credentials` 屬性物件，並將其存放在 `$Creds` 變數中。

   ```
   PS C:\> $Creds = (Use-STSRole -RoleArn "arn:aws:iam::{{123456789012}}:role/{{RoleName}}" -RoleSessionName "{{MyRoleSessionName}}").Credentials
   ```

   `$Creds` 是一個物件，現在包含您在下列步驟中所需的 `AccessKeyId`、 `SecretAccessKey` 和 `SessionToken` 元素。以下範例命令說明典型的值：

   ```
   PS C:\> $Creds.AccessKeyId
   AKIAIOSFODNN7EXAMPLE
   
   PS C:\> $Creds.SecretAccessKey
   wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
   
   PS C:\> $Creds.SessionToken
   AQoDYXdzEGcaEXAMPLE2gsYULo+Im5ZEXAMPLEeYjs1M2FUIgIJx9tQqNMBEXAMPLECvSRyh0FW7jEXAMPLEW+vE/7s1HRp
   XviG7b+qYf4nD00EXAMPLEmj4wxS04L/uZEXAMPLECihzFB5lTYLto9dyBgSDyEXAMPLE9/g7QRUhZp4bqbEXAMPLENwGPy
   Oj59pFA4lNKCIkVgkREXAMPLEjlzxQ7y52gekeVEXAMPLEDiB9ST3UuysgsKdEXAMPLE1TVastU1A0SKFEXAMPLEiywCC/C
   s8EXAMPLEpZgOs+6hz4AP4KEXAMPLERbASP+4eZScEXAMPLEsnf87eNhyDHq6ikBQ==
   
   PS C:\> $Creds.Expiration
   Thursday, June 18, 2018 2:28:31 PM
   ```

1. 若要將這些憑證用於任何後續命令，請將它們包含在 `-Credential` 參數中。例如，以下命令使用角色中的憑證，僅在角色被授予 `iam:ListRoles` 許可且因此可以執行 `Get-IAMRoles` cmdlet 時才起作用：

   ```
           PS C:\> get-iamroles -Credential $Creds
   ```

1. 若要傳回原始憑證，只需停止使用 `-Credentials $Creds` 參數，並允許 PowerShell 恢復存放在預設設定檔中的憑證。