配置 Amazon CLI 以使用 Amazon IAM Identity Center (successor to Amazon Single Sign-On) - Amazon Command Line Interface
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

配置 Amazon CLI 以使用 Amazon IAM Identity Center (successor to Amazon Single Sign-On)

如果您的企业使用 Amazon IAM Identity Center (successor to Amazon Single Sign-On)(IAM Identity Center),则您的用户可以登录到 Active Directory 或内置的 IAM Identity Center 目录,或其他连接到 IAM Identity Center 的 IdP,并映射到使您能够运行 Amazon CLI 命令的 Amazon Identity and Access Management (IAM) 角色。无论您使用哪个 IdP,IAM Identity Center 都会将这些区别抽象出来,并且它们都使用 Amazon CLI,如下所述。例如,您可以连接 Microsoft Azure AD,如博客文章 Amazon IAM Identity Center (successor to Amazon Single Sign-On)的下一个演进中所述。

有关 IAM Identity Center 的更多信息,请参阅《Amazon IAM Identity Center (successor to Amazon Single Sign-On) 用户指南》。

本主题介绍如何将 Amazon CLI 配置为使用 IAM Identity Center 对用户进行身份验证,以获取用于运行 Amazon CLI 命令的短期凭证。它包括以下部分:

配置命名配置文件以使用 IAM Identity Center

您可以配置一个或多个 Amazon CLI 命名配置文件以使用来自 IAM Identity Center 的角色。

您可以通过以下方式配置此配置文件:

  • 自动,使用命令 aws configure sso

  • 手动,通过编辑存储命名配置文件的 .aws/config 文件。

自动配置

您可以通过运行以下命令向 Amazon CLI 添加支持 IAM Identity Center 的配置文件,同时提供您的 IAM Identity Center 启动 URL 和托管 Identity Center 目录的 Amazon 区域。

$ aws configure sso SSO start URL [None]: [None]: https://my-sso-portal.awsapps.com/start SSO region [None]:us-east-1

Amazon CLI 尝试打开原定设置浏览器,并开始您的 IAM Identity Center 账户的登录过程。

SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

如果 Amazon CLI 无法打开浏览器,将显示以下消息,其中包含有关如何手动开始登录过程的说明。

Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

IAM Identity Center 使用代码将 IAM Identity Center 会话与当前 Amazon CLI 会话关联。IAM Identity Center 浏览器页面会提示您使用 IAM Identity Center 凭证登录。这使 Amazon CLI(通过与您的 IAM Identity Center 账户关联的权限)能够检索和显示您有权用于 IAM Identity Center 的 Amazon CLI 账户和角色。

接下来,Amazon CLI 会显示可供您使用的 Amazon 账户。如果您只被授权使用一个账户,Amazon CLI 会自动为您选择该账户并跳过提示。可供您使用的 Amazon 账户由 IAM Identity Center 中的用户配置决定。

There are 2 Amazon accounts available to you. > DeveloperAccount, developer-account-admin@example.com (123456789011) ProductionAccount, production-account-admin@example.com (123456789022)

使用箭头键选择要用于此配置文件的账户。左侧的“>”字符指向当前选择。按 Enter 进行选择。

接下来,Amazon CLI 确认您选择的账户,并显示所选账户中可供您使用的 IAM 角色。如果所选账户仅列出一个角色,Amazon CLI 会自动为您选择该角色并跳过提示。可供您使用的角色由 IAM Identity Center 中的用户配置决定。

Using the account ID 123456789011 There are 2 roles available to you. > ReadOnly FullAccess

与之前一样,使用箭头键选择要用于此配置文件的 IAM 角色。左侧的“>”字符指向当前选择。按 <Enter> 进行选择。

Amazon CLI 将确认您的角色选择。

Using the role name "ReadOnly"

现在,您可以完成配置文件的配置,方法是指定原定设置输出格式、要向其发送命令的原定设置 Amazon Web Services 区域,并提供配置文件名称,以便您可以从本地电脑上定义的所有配置文件中引用此配置文件。在以下示例中,用户输入原定设置区域、原定设置输出格式和配置文件的名称。也可以按下 <ENTER> 以选择方括号之间显示的任何原定设置值。建议的配置文件名称是账户 ID 号,并依次后跟下划线和角色名称。

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>
注意

如果您指定 default 作为配置文件名称,则每当您运行 Amazon CLI 命令但不指定配置文件名称时,此配置文件将变为使用的配置文件。

最后一条消息描述了完成的配置文件配置。

要使用此配置文件,请使用 --profile 指定配置文件名称,如下所示:

aws s3 ls --profile my-dev-profile

前面的示例条目将在 ~/.aws/config 中生成一个命名的配置文件,类似于以下示例。

[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 sso login 命令实际请求和检索运行命令所需的临时凭证。有关说明,请参阅使用启用了 IAM Identity Center 的命名配置文件

注意

您也可以使用指定的配置文件运行 Amazon CLI 命令。如果您当前未登录到 Amazon 访问门户,则它会自动为您启动登录过程,就像您已经手动运行 aws sso login 命令一样。

手动配置

要手动向命名的配置文件添加 IAM Identity Center 支持,必须将以下密钥和值添加到文件 ~/.aws/config(Linux 或 macOS)或 %USERPROFILE%/.aws/config (Windows) 中的配置文件定义中。

sso_start_url

指定指向企业的 Amazon 访问门户的 URL。Amazon CLI 使用此 URL 与 IAM Identity Center 服务建立会话以验证其用户的身份。要查找 Amazon 访问门户 URL,请使用下列操作之一:

  • 打开邀请电子邮件,其中列出了 Amazon 访问门户 URL。

  • 打开 Amazon IAM Identity Center (successor to Amazon Single Sign-On) 控制台,网址为 https://console.aws.amazon.com/singlesignon/。您的设置中将列出 Amazon 访问门户 URL。

sso_start_url = https://my-sso-portal.awsapps.com/start
sso_region

包含 Amazon 访问门户主机的 Amazon 区域。它与默认的 CLI region 参数是分开的,并且可以是不同的区域。

sso_region = us-west-2
sso_account_id

包含要用于此配置文件的 IAM 角色的 Amazon 账户 ID。

sso_account_id = 123456789011
sso_role_name

使用此配置文件时定义用户权限的 IAM 角色的名称。

sso_role_name = ReadAccess

这些密钥的存在将此配置文件识别为使用 IAM Identity Center 对用户进行身份验证的配置文件。

您还可以包括在 .aws/config 文件中有效的任何其他密钥和值,例如 regionoutputs3。但是,您不能包含任何凭证相关值,例如 role_arnaws_secret_access_key。如果这样做,Amazon CLI 会生成错误。

因此,.aws/config 中的典型 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

此时,您有一个可用于请求临时凭证的配置文件。但是,您还不能运行 Amazon CLI 服务命令。您必须首先使用 aws sso login 命令实际请求和检索运行命令所需的临时凭证。有关说明,请参阅下一节 使用启用了 IAM Identity Center 的命名配置文件

使用启用了 IAM Identity Center 的命名配置文件

本节介绍如何使用您在上一节中创建的 IAM Identity Center 配置文件。

登录和获取临时凭证

自动或手动配置命名配置文件后,您可以调用该配置文件以从 Amazon 请求临时凭证。您必须检索和缓存一组临时凭证,然后才能运行 Amazon CLI 服务命令。要获取这些临时凭证,请运行以下命令。

$ aws sso login --profile my-dev-profile

Amazon CLI 打开原定设置浏览器并验证您的 IAM Identity Center 登录。

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,则必须提供您的 IAM Identity Center 凭证。

如果 Amazon CLI 无法打开浏览器,则系统会提示您自行打开浏览器并输入指定的代码。

$ aws sso login --profile my-dev-profile Using a browser, open the following URL: https://my-sso-portal.awsapps.com/verify and enter the following code: QCFK-N451

Amazon CLI 将您的原定设置浏览器打开(或您手动将选择的浏览器打开)到指定页面,然后输入提供的代码。然后,网页会提示您输入 IAM Identity Center 凭证。

系统将缓存您的 IAM Identity Center 会话凭证并包含到期时间戳。凭证过期时,Amazon CLI 会请求您重新登录 IAM Identity Center。

如果您的 IAM Identity Center 凭证有效,则 Amazon CLI 使用它们安全地检索在配置文件中指定的用于 IAM 角色的 Amazon 临时凭证。

Welcome, you have successfully signed-in to the AWS-CLI.

使用支持 IAM Identity Center 的配置文件运行命令

您可以使用这些临时凭证通过关联的命名配置文件来调用 Amazon CLI 命令。以下示例显示该命令是在作为指定账户一部分的代入角色下运行的。

$ aws sts get-caller-identity --profile my-dev-profile { "UserId": "AROA12345678901234567:test-user@example.com", "Account": "123456789011", "Arn": "arn:aws:sts::123456789011:assumed-role/AWSPeregrine_readOnly_12321abc454d123/test-user@example.com" }

只要您登录 IAM Identity Center 并且这些缓存的凭证未过期,Amazon CLI 就会在需要时自动续订过期的 Amazon 临时凭证。但是,如果您的 IAM Identity Center 凭证过期,则必须通过再次登录您的 IAM Identity Center 账户来显式续订它们。

$ aws s3 ls --profile my-sso-profile Your short-term credentials have expired. Please sign-in to renew your credentials SSO authorization page has automatically been opened in your default browser. Follow the instructions in the browser to complete this authorization request.

您可以创建多个支持 IAM Identity Center 的命名配置文件,每个配置文件指向不同的 Amazon 账户或角色。您还可以一次对多个配置文件使用该 aws sso login 命令。如果其中任何一个配置文件共享同一个 IAM Identity Center 用户账户,则您必须只登录到该 IAM Identity Center 用户账户一次,然后它们都将共享一组 IAM Identity Center 缓存凭证。

# The following command retrieves temporary credentials for the Amazon account and role # specified in one named profile. If you are not yet signed in to IAM Identity Center or your # cached credentials have expired, it opens your browser and prompts you for your # IAM Identity Center user name and password. It then retrieves Amazon temporary credentials for # the IAM role associated with this profile. $ aws sso login --profile my-first-sso-profile # The next command retrieves a different set of temporary credentials for the Amazon # account and role specified in the second named profile. It does not overwrite or # in any way compromise the first profile's credentials. If this profile specifies the # same Amazon access portal, then it uses the SSO credentials that you retrieved in the # previous command. The Amazon CLI then retrieves Amazon temporary credentials for the # IAM role associated with the second profile. You don't have to sign in to # IAM Identity Center again. $ aws sso login --profile my-second-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the first profile. $ aws ec2 describe-instances --profile my-first-sso-profile # The following command lists the Amazon EC2 instances accessible to the role # identified in the second profile. $ aws ec2 describe-instances --profile my-second-sso-profile

退出您的 IAM Identity Center 会话

完成使用支持 IAM Identity Center 的配置文件后,您可以选择不执行任何操作,而让 Amazon 临时凭证和您的 IAM Identity Center 凭证过期。但是,您也可以选择运行以下命令来立即删除 SSO 凭证缓存文件夹中的所有缓存凭证和基于 IAM Identity Center 凭证的所有 Amazon 临时凭证。这使得这些凭证不可用于将来的任何命令。

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

如果稍后要使用支持 IAM Identity Center 的配置文件之一来运行命令,则必须再次运行 aws sso login 命令(请参阅上一节)并指定要使用的配置文件。