本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用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身份中心信息:
-
在您的 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
文件的更多信息,请参阅 配置和凭证文件设置。
登录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身份中心用户指南》中的@@ 入门教程