的版本 5 (V5) AWS Tools for PowerShell 已经发布!
要开始使用新版本的工具,请参阅《AWS Tools for PowerShell 用户指南(V5)》,特别是关于迁移到 V5 的主题。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 AWS CLI 进行门户登录
从 Tools for PowerShell 的 4.1.538 版本开始,配置 SSO 凭证并启动 AWS 访问门户会话的推荐方法是使用 Initialize-AWSSSOConfiguration 和 Invoke-AWSSSOLogin cmdlet,如 使用 AWS 配置工具身份验证 中所述。如果您无法访问该版本(或更高版本)的 Tools for PowerShell 或无法使用这些 cmdlet,您仍然可以通过使用 AWS CLI 来执行这些任务。
通过 AWS CLI 配置 Tools for PowerShell 以使用 IAM Identity Center。
如果尚未完成,请确保在继续操作之前启用并配置 IAM Identity Center。
关于如何通过 AWS CLI 配置 Tools for PowerShell 以使用 IAM Identity Center 的信息位于《AWS SDK 和工具参考指南》中 IAM Identity Center 身份验证主题的步骤 2 中。完成此配置后,您的系统应包含以下元素:
-
AWS CLI,您可用于在运行应用程序之前启动 AWS 访问门户会话。
-
该共享 AWS
config文件包含一个[default]配置文件,在该配置文件中包含一组配置值,可以从适用于 PowerShell 的工具中引用这些配置值。要查找此文件的位置,请参阅《AWS 开发工具包和工具参考指南》中的共享文件的位置。适用于 PowerShell 的工具在向 AWS 发送请求之前,使用配置文件的 SSO 令牌提供程序获取凭证。sso_role_name值是与 IAM Identity Center 权限集关联的 IAM 角色,应允许访问您的应用程序中使用的 AWS 服务。以下示例
config文件显示了使用 SSO 令牌提供程序设置的[default]配置文件。配置文件的sso_session设置是指所指定的sso-session节。sso-session节包含启动 AWS 访问门户会话的设置。[default] sso_session = my-sso sso_account_id =111122223333sso_role_name =SampleRoleregion = us-east-1 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url =https://provided-domain.awsapps.com/startsso_registration_scopes = sso:account:access
重要
您的 PowerShell 会话必须安装并导入以下模块,这样 SSO 解析才能生效:
-
AWS.Tools.SSO -
AWS.Tools.SSOOIDC
如果您使用的是旧版本的 Tools for PowerShell 且没有这些模块,您将收到类似于以下的错误:“找不到程序集 AWSSDK.SSOOIDC...”。
开始 AWS 访问门户会话
在运行访问 AWS 服务 的命令之前,您需要有一个活动的 AWS 访问门户会话,以便 Windows PowerShell 工具可以使用 IAM Identity Center 身份验证来解析凭证。根据您配置的会话时长,您的访问权限最终将过期,并且适用于 Windows PowerShell 的工具将遇到身份验证错误。要登录 AWS 访问门户,请在 AWS CLI 中运行以下命令。
aws sso login
由于您正在使用 [default] 配置文件,因此无需使用 --profile 选项调用命令。如果您的 SSO 令牌提供程序配置使用命名配置文件,则该命令为 aws sso login --profile 。有关命名配置文件的更多信息,请参阅《AWS SDK 和工具参考指南》中的配置文件部分。named-profile
要测试您是否已拥有活动会话,请运行以下 AWS CLI 命令(命名配置文件的注意事项相同):
aws sts get-caller-identity
对此命令的响应应该报告共享 config 文件中配置的 IAM Identity Center 账户和权限集。
注意
如果您已经有一个有效的 AWS 访问门户会话并且运行了 aws sso login,则无需提供凭证。
登录过程可能会提示您允许 AWS CLI 访问您的数据。由于 AWS CLI 基于适用于 Python 的 SDK 而构建,因此权限消息可能包含 botocore 名称的变体。
示例
以下示例说明如何将 IAM Identity Center 与适用于 PowerShell 的工具一起使用。该示例假定以下内容:
-
您已启用 IAM IAM Identity Center,并按照本主题前面所述对其进行了配置。SSO 属性位于
[default]配置文件中。 -
当您使用
aws sso login通过 AWS CLI 登录时,该用户至少具有 Amazon S3 的只读权限。 -
某些 S3 存储桶可供该用户查看。
使用以下 PowerShell 命令显示 S3 存储桶的列表:
Install-Module AWS.Tools.Installer Install-AWSToolsModule S3 # And if using an older version of the AWS Tools for PowerShell: Install-AWSToolsModule SSO, SSOOIDC # In older versions of the AWS Tools for PowerShell, we're not invoking a cmdlet from these modules directly, # so we must import them explicitly: Import-Module AWS.Tools.SSO Import-Module AWS.Tools.SSOOIDC # Older versions of the AWS Tools for PowerShell don't support the SSO login flow, so login with the CLI aws sso login # Now we can invoke cmdlets using the SSO profile Get-S3Bucket
如上所述,由于您正在使用 [default] 配置文件,因此无需使用 -ProfileName 选项调用 Get-S3Bucket cmdlet。如果您的 SSO 令牌提供程序配置在使用指定的配置文件,则命令为 Get-S3Bucket -ProfileName
。有关命名配置文件的更多信息,请参阅《AWS SDK 和工具参考指南》中的配置文件部分。named-profile
其他信息
-
有关适用于 PowerShell 的工具身份验证的更多选项,例如配置文件和环境变量的使用,请参阅《AWS 开发工具包和工具参考指南》中的配置章节。
某些命令需要指定 AWS 区域。有多种方法可以实现,包括
-Regioncmdlet 选项、[default]配置文件和AWS_REGION环境变量。有关更多信息,请参阅本指南中的 指定 AWS 区域 以及《AWS SDK 和工具参考指南》中的 AWS 区域。-
有关最佳实践的更多信息,请参阅《IAM 用户指南》中的 IAM 中的安全最佳实践。
-
要创建短期 AWS 凭证,请参阅《IAM 用户指南》中的临时安全凭证。
-
要了解其他凭证提供程序,请参阅《AWS 开发工具包和工具参考指南》中的标准化凭证提供程序。