切換至 IAM 角色 (適用於視窗的工具 PowerShell) - AWS Identity and Access Management

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

切換至 IAM 角色 (適用於視窗的工具 PowerShell)

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

重要

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

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

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

注意

基於安全考量,管理員可以檢閱 AWS CloudTrail 記錄檔,以瞭解中執行動作的人員 AWS。當您擔任角色時,系統管理員可能需要您指定來源身分或角色工作階段名稱 。如需詳細資訊,請參閱 sts:SourceIdentitysts:RoleSessionName

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

若要切換到角色 (視窗工具 PowerShell)
  1. 開啟 PowerShell 命令提示字元並將預設設定檔設定為使用目前 IAM 使用者或聯合身分角色的存取金鑰。如果您以前使用過 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 Windows PowerShell 〈使用 AWS 認證

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

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

    $Creds 是一個物件,現在包含您在下列步驟中所需的 AccessKeyIdSecretAccessKeySessionToken 元素。以下範例命令說明典型的值:

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

    PS C:\> get-iamroles -Credential $Creds
  4. 若要返回原始認證,只要停止使用-Credentials $Creds參數,並 PowerShell 允許還原為預設設定檔中儲存的認證即可。