切换到 IAM 角色 (Tools for Windows PowerShell) - Amazon Identity and Access Management
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

切换到 IAM 角色 (Tools for Windows PowerShell)

角色 指定可用于访问所需的 Amazon 资源的一组权限。在这种意义上,它类似于 Amazon Identity and Access Management 中的用户 (IAM)。作为用户登录时,您会获取一组特定权限。但是,您没有登录到角色,不过一旦登录,您就可以切换为角色。这会临时搁置原始用户权限,而向您提供分配给角色的权限。角色可以在您自己的账户中或任何其他 Amazon Web Services 账户 中。有关角色、其权益以及如何创建和配置角色的更多信息,请参阅IAM 角色创建 IAM 角色

重要

您的 IAM 用户权限和切换为的角色的权限不会累积。一次只有一组权限处于活动状态。切换到一个角色后,您将临时放弃用户权限并使用分配给该角色的权限。退出该角色后,您的用户权限将自动恢复。

本部分介绍如何在通过 Amazon Tools for Windows PowerShell 在命令行上工作时切换角色。

假设您在开发环境中有一个账户,并且您有时需要使用 Tools for Windows PowerShell 在命令行上操作生产环境。您已经有一组可用的访问密钥凭证。这些凭证可以是分配给您的标准 IAM 用户的访问密钥对。或者,如果您以联合身份用户身份登录,则其可以是最初分配给您的角色的访问密钥对。您可以使用这些凭证运行 Use-STSRole cmdlet,这会将新角色的 ARN 作为参数传递。该命令将返回请求的角色的临时安全凭证。然后可利用该角色的权限在后续 PowerShell 命令中使用那些凭证来使用访问生产中的资源。在使用角色时,您不能使用开发账户中的用户权限,因为一次只有一组权限有效。

注意

为了安全起见,管理员可以查看 Amazon CloudTrail 日志以了解已在 Amazon 中执行操作的人员。您的管理员可能会要求您在代入角色时指定源身份或角色会话名称。有关更多信息,请参阅 sts:SourceIdentitysts:RoleSessionName

请注意,所有访问密钥和令牌都只是示例,不能原样照用。请用您的实际环境的适当值替换。

要切换到某个角色 (Tools for Windows PowerShell)
  1. 打开 PowerShell 命令提示符并将您的默认配置文件配置为使用来自您的当前 IAM 用户或联合角色的访问密钥。如果您以前使用过 Tools for Windows PowerShell,则可能已完成此设置。请注意,您只能在以 IAM 用户身份(而非 Amazon Web Services 账户根用户 身份)登录时切换角色。

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

    有关更多信息,请参阅 Amazon Tools for Windows PowerShell 用户指南中的使用 Amazon 凭证

  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 恢复为在默认配置文件中存储的凭证。