使用IAM身份中心身份 AWS CLI 验证配置 - AWS Command Line Interface

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用IAM身份中心身份 AWS CLI 验证配置

本主题提供有关如何使用 AWS IAM Identity Center (Ident IAM ity Center)配置以检索 AWS CLI 用于运行命令的凭据的说明。 AWS CLI 主要有两种方法可以通过 Identity Center 对用户进行IAM身份验证,以获取通过config文件运行 AWS CLI 命令的凭据:

  • (推荐)SSO令牌提供者配置。

  • 遗留的不可刷新配置。

有关使用不使用账户 ID 和角色的不记名身份验证的信息,请参阅 A mazon CodeCatalyst 用户指南 CodeCatalyst中的设置 AWS CLI 与使用

注意

有关使用带有 AWS CLI 命令的 Ident IAM ity Center 的指导过程,请参阅教程:使用IAM身份中心运行 Amazon S3 命令

主题

先决条件

  • 安装 AWS CLI。有关更多信息,请参阅 安装或更新到最新版本的 AWS CLI

  • 您必须首先有权访问SSO身份中心内的IAM身份验证。选择以下方法之一来访问您的 AWS 证书。

请按照《AWS IAM Identity Center 用户指南》入门中的说明操作。此过程激活 Ident IAM ity Center、创建管理用户并添加相应的最低权限权限集。

注意

创建应用最低权限权限的权限集。除非您的雇主已为此目的创建自定义权限集,否则建议使用预定义的 PowerUserAccess 权限集。

退出门户并再次登录以查看您的 AWS 账户编程访问详细信息以及Administrator或选项PowerUserAccess。使用PowerUserAccess时选择SDK。

AWS 通过身份提供商的门户网站登录。如果您的云管理员已授予您PowerUserAccess(开发者)权限,则您 AWS 账户 会看到您有权访问的权限和权限集。在您的权限集名称旁边,可以看到有关使用该权限集手动或以编程方式访问账户的选项。

自定义实现可能会产生不同的体验,例如不同的权限集名称。如果您不确定要使用哪个权限集,请联系 IT 团队以寻求帮助。

AWS 通过您的 AWS 访问门户登录。如果您的云管理员已授予您PowerUserAccess(开发者)权限,则您 AWS 账户 会看到您有权访问的权限和权限集。在您的权限集名称旁边,可以看到有关使用该权限集手动或以编程方式访问账户的选项。

请联系您的 IT 团队以寻求帮助。

获得IAM身份中心的访问权限后,通过执行以下操作收集您的IAM身份中心信息:

  1. 在您的 AWS 访问门户中,选择用于开发的权限集,然后选择访问密钥链接。

  2. 在 “获取凭据” 对话框中,选择与您的操作系统匹配的选项卡。

  3. 选择 Id IAMentity Center 凭证方法以获取需要运行的SSO Start URLSSO Regionaws configure sso。有关要注册哪些范围值的信息,请参阅 Ident IAMity Center 用户指南中的 OAuth2.0 访问范围

使用 aws configure sso 向导配置您的配置文件

要为您配置IAM身份中心配置文件,请执行 AWS CLI以下操作:
  1. 在您的首选终端中,运行该aws configure sso命令。

    IAM Identity Center

    创建会话名称,提供您的 Ident IAM ity Center 起点URL、托管 Ident IAM ity Center 目录的,以及注册范围。 AWS 区域

    $ aws configure sso SSO session name (Recommended): my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access
    Legacy IAM Identity Center

    跳过会话名称并提供您的IAM身份中心起始位置URL和托管身份中心目录的 AWS 区域。

    $ aws configure sso SSO session name (Recommended): SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1
  2. AWS CLI 尝试打开您的默认浏览器以进行IAM身份中心帐户的登录过程。此过程可能会提示您允许 AWS CLI 访问您的数据。由于 AWS CLI 是在SDK适用于 Python 的基础上构建的,因此权限消息可能包含botocore名称的变体。

    • 如果 AWS CLI 无法打开浏览器,则会显示手动启动登录过程的说明。

      If the browser does not open or you wish to use a different device to authorize this request, open the following URL: https://device.sso.us-west-2.amazonaws.com/ Then enter the code: QCFK-N451
  3. 从显示的列表中选择要使用的 AWS 帐户。如果您只能使用一个帐户,则 AWS CLI 会自动选择该帐户并跳过提示。

    There are 2 AWS accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)
  4. 从显示的列表中选择要使用的IAM角色。如果只有一个角色可用,则 AWS CLI 会自动选择该角色并跳过提示。

    Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess
  5. 指定默认输出格式、向 AWS 区域其发送命令的默认格式以及配置文件的名称。如果您指定default为配置文件名称,则此配置文件将成为使用的默认配置文件。在以下示例中,用户输入默认区域、默认输出格式和配置文件的名称。

    CLI default client Region [None]: us-west-2<ENTER> CLI default output format [None]: json<ENTER> CLI profile name [123456789011_ReadOnly]: my-dev-profile<ENTER>
  6. 最后一条消息描述了完成的配置文件配置。现在,您可以使用此配置文件来请求证书。使用 aws sso login 命令请求和检索运行命令所需的凭证。有关说明,请参阅登录IAM身份中心会话

这些步骤导致在文件中创建sso-session截面和命名配置config文件,如下所示:

IAM Identity Center
[profile my-dev-profile] sso_session = my-sso sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access
Legacy IAM Identity Center
[profile my-dev-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-east-1 sso_account_id = 123456789011 sso_role_name = readOnly region = us-west-2 output = json

使用 aws configure sso-session 向导仅配置您的 sso-session 部分

注意

此配置与旧版IAM身份中心不兼容。

aws configure sso-session命令更新~/.aws/config文件中的sso-session部分。运行aws configure sso-session命令并提供您的IAM身份中心起始URL位置和托管IAM身份中心目录的 AWS 区域。

$ aws configure sso-session SSO session name: my-sso SSO start URL [None]: https://my-sso-portal.awsapps.com/start SSO region [None]: us-east-1 SSO registration scopes [None]: sso:account:access

使用 config 文件手动配置

IAMIdentity Center 的配置信息存储在config文件中,可以使用文本编辑器进行编辑。要手动向指定配置文件添加 Ident IAM ity Center 支持,必须向config文件中添加密钥和值。

config文件的sso-session部分用于对用于获取SSO访问令牌的配置变量进行分组,然后可以使用这些变量来获取 AWS 凭证。使用了以下设置:

您可以定义sso-session截面并将其与截面关联。必须在该sso-session部分中sso_start_url设置sso_region和设置。通常,sso_role_name必须在profile部分中设置sso_account_id和,以便SDK可以请求SSO证书。

以下示例将配置为请求SSO凭证并支持自动刷新令牌:SDK

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

这也允许在多个配置文件中重复使用 sso-session 配置:

[profile dev] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole [profile prod] sso_session = my-sso sso_account_id = 111122223333 sso_role_name = SampleRole2 [sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start

但是sso_account_idsso_role_name并非所有SSO令牌配置场景都需要 and。如果您的应用程序仅使用支持持有者身份验证的 AWS 服务,则不需要传统 AWS 凭证。持有人身份验证是一种使用称为不记名令牌的安全令牌的HTTP身份验证方案。在这种情况下,不需要 sso_account_idsso_role_name。请参阅您的 AWS 服务的个人指南,以确定其是否支持不记名令牌授权。

此外,可以作为 sso-session 的一部分配置注册范围。Scope 是 OAuth 2.0 中的一种机制,用于限制应用程序对用户帐户的访问权限。应用程序可以请求一个或多个范围,向应用程序签发的访问令牌将仅限于授予的范围。这些范围定义了为注册OIDC客户端请求授权的权限以及客户端检索的访问令牌。以下示例将 sso_registration_scopes 设置为提供已列出账户/角色的访问权限:

[sso-session my-sso] sso_region = us-east-1 sso_start_url = https://my-sso-portal.awsapps.com/start sso_registration_scopes = sso:account:access

身份验证令牌缓存到 sso/cache 目录下的磁盘上,文件名基于会话名称。

注意

使用遗留的不可刷新配置不支持自动令牌刷新。我们建议使用令SSO牌配置。

要手动向指定配置文件添加 Ident IAM ity Center 支持,必须将以下键和值添加到文件中的配置config文件定义中。

您可以在.aws/config文件中包含任何其他有效的键和值。以下示例是IAM身份中心配置文件:

[profile my-sso-profile] sso_start_url = https://my-sso-portal.awsapps.com/start sso_region = us-west-2 sso_account_id = 111122223333 sso_role_name = SSOReadOnlyRole region = us-west-2 output = json

要运行命令,您必须先请求登录IAM身份中心会话并检索您的临时证书。

有关 configcredentials 文件的更多信息,请参阅 配置和凭证文件设置

登录IAM身份中心会话

注意

登录过程可能会提示您允许 AWS CLI 访问您的数据。由于 AWS CLI 是在SDK适用于 Python 的基础上构建的,因此权限消息可能包含botocore名称的变体。

要检索和缓存一组 Ident IAM ity Center 凭据,请运行以下命令 AWS CLI 以打开您的默认浏览器并验证您的 Ident IAM ity Center 登录信息。

$ aws sso login --profile my-dev-profile SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request. Successfully logged into Start URL: https://my-sso-portal.awsapps.com/start

您的 IAM Identity Center 会话凭 AWS 证将被缓存,并 AWS CLI 使用它们安全地检索配置文件中指定IAM角色的凭证。

如果 AWS CLI 无法打开您的浏览器,它会提示您自己打开浏览器并输入指定的代码。

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://device.sso.us-west-2.amazonaws.com/ and enter the following code: QCFK-N451

在使用 aws sso login 命令的 --sso-session 参数登录时,您还可以指定使用哪个 sso-session 配置文件。该sso-session选项不适用于旧版IAM身份中心。

$ aws sso login --sso-session my-dev-session

身份验证令牌缓存到磁盘上的~/.aws/sso/cache目录下,其文件名基于sso_start_url

使用您的IAM身份中心个人资料运行命令

登录后,您可以使用您的凭据调用带有关联命名配置文件的 AWS CLI 命令。以下示例显示了使用配置文件的命令:

$ aws sts get-caller-identity --profile my-dev-profile

只要您登录到 Ident IAM ity Center 并且这些缓存的凭据未过期,则会在需要时 AWS CLI 自动续订过期的 AWS 证书。但是,如果您的 IAM Identity Center 凭证过期,则必须通过再次登录您的 Ident IAM ity Center 账户来明确续订这些凭证。

退出您的IAM身份中心会话

使用完您的 Ident IAM ity Center 个人资料后,您可以让您的证书过期,也可以运行以下命令来删除缓存的凭证。

$ aws sso logout Successfully signed out of all SSO profiles.

故障排除

如果您在使用时遇到问题 AWS CLI,解决 AWS CLI 错误请参阅,了解故障排除步骤。

相关资源

其他资源如下。