AWS Identity and Access Management
用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

切换到 IAM 角色 (Windows PowerShell 工具)

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

重要

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

本部分介绍如何在通过 适用于 Windows PowerShell 的 AWS 工具 在命令行上工作时切换角色。

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

注意

出于安全原因,您可以使用 AWS CloudTrail 审核角色在账户中的使用。cmdlet Use-STSRole 必须包括一个值的长度为 2 到 64 个字符的 -RoleSessionName 参数,该值可包含字母、数字和 =,.@- 字符。角色会话名称可在 CloudTrail 日志中标识使用临时安全凭证执行的操作。有关更多信息,请参阅AWS CloudTrail User Guide 中的 CloudTrail 事件引用

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

从 Windows 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-west-2

    有关更多信息,请参阅 适用于 Windows PowerShell 的 AWS 工具 用户指南 中的使用 AWS 凭证

  2. 要检索新角色的凭证,请运行以下命令切换到 123456789012 账户中的 RoleName 角色。您从创建该角色的账户管理员处获取角色 ARN。该命令还需要您提供会话名称。您可以选择该名称的任何文本。以下命令请求凭证,然后从返回的结果对象中捕获 Credentials 属性对象并将其存储在 $Creds 变量中。

    PS C:\> $Creds = (Use-STSRole -RoleArn "arn:aws-cn: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. 要在任何后续命令中使用这些凭证,应使用 -Credentials 参数来包含它们。例如,以下命令使用来自角色的凭证,并只有在角色被授予 iam:ListRoles 权限时,命令才会起作用并可以因此运行 Get-IAMRoles cmdlet:

    PS C:\> get-iamroles -Credential $Creds
  4. 要返回到您的原始凭证,只需停止使用 -Credentials $Creds 参数并允许 PowerShell 恢复为在默认配置文件中存储的凭证。