本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用配置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。有关更多信息,请参阅 安装或更新到最新版本的 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身份中心信息:
-
在您的 AWS 访问门户中,选择用于开发的权限集,然后选择访问密钥链接。
-
在 “获取凭据” 对话框中,选择与您的操作系统匹配的选项卡。
-
选择 Id IAMentity Center 凭证方法以获取需要运行的
SSO Start URL
和SSO Region
值aws configure sso
。有关要注册哪些范围值的信息,请参阅 Ident IAMity Center 用户指南中的 OAuth2.0 访问范围。
使用 aws
configure sso
向导配置您的配置文件
要为您配置IAM身份中心配置文件,请执行 AWS CLI以下操作:
-
在您的首选终端中,运行该
aws configure sso
命令。 -
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
-
从显示的列表中选择要使用的 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
) -
从显示的列表中选择要使用的IAM角色。如果只有一个角色可用,则 AWS CLI 会自动选择该角色并跳过提示。
Using the account ID
123456789011
There are 2 roles available to you. > ReadOnly FullAccess -
指定默认输出格式、向 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> -
最后一条消息描述了完成的配置文件配置。现在,您可以使用此配置文件来请求凭证。使用
aws sso login
命令请求和检索运行命令所需的凭证。有关说明,请参阅 登录IAM身份中心会话。
这些步骤导致在文件中创建sso-session
截面和命名配置config
文件,如下所示:
使用 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-sessionmy-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
[profileprod
] sso_session =my-sso
sso_account_id =111122223333
sso_role_name =SampleRole2
[sso-sessionmy-sso
] sso_region =us-east-1
sso_start_url =https://my-sso-portal.awsapps.com/start
但是sso_account_id
,sso_role_name
并非所有SSO令牌配置场景都需要 and。如果您的应用程序仅使用支持持有者身份验证的 AWS 服务,则不需要传统 AWS
凭证。持有人身份验证是一种使用称为不记名令牌的安全令牌的HTTP身份验证方案。在这种情况下,不需要 sso_account_id
和 sso_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身份中心会话并检索您的临时证书。
有关 config
和 credentials
文件的更多信息,请参阅 中的配置和凭据文件设置 AWS CLI。
登录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请参阅,了解故障排除步骤。
相关资源
其他资源如下。
-
aws configure sso
在AWS CLI 版本 2 中参考 -
aws configure sso-session
在AWS CLI 版本 2 中参考 -
aws sso login
在AWS CLI 版本 2 中参考 -
aws sso logout
在AWS CLI 版本 2 中参考 -
在 Amazon CodeCatalyst 用户指南 CodeCatalyst中 AWS CLI 进行设置以与一起使用
-
《IAM身份中心用户指南》中的@@ 入门教程