IAM Identity Center 凭证提供者 - AWS SDK 和工具

IAM Identity Center 凭证提供者

注意

如需获得相关帮助,以了解设置页面的布局或解释后面的 AWS SDK 和工具支持表,请参阅了解本指南的设置页面

此身份验证机制使用 AWS IAM Identity Center 获取您的代码的单点登录(SSO)访问 AWS 服务 权限。

注意

在 AWS SDK API 文档中,IAM Identity Center 凭证提供者被称为 SSO 凭证提供者。

启用 IAM Identity Center 后,您可在共享 AWS config 文件中为其设置定义配置文件。此配置文件用于连接到 IAM Identity Center 访问门户。当用户成功通过 IAM Identity Center 进行身份验证后,门户将返回与该用户关联的 IAM 角色的短期凭证。要了解 SDK 如何从配置中获取临时凭证并将其用于 AWS 服务 请求,请参阅 如何解决 AWS SDK 和工具的 IAM Identity Center 身份验证问题

通过 config 文件配置 IAM Identity Center 有两种方式:

  • (推荐)SSO 令牌提供者配置:延长会话时长。包括对自定义会话时长的支持。

  • 旧版不可刷新配置:使用固定的八小时会话。

在这两种配置中,您都需要在会话到期后重新登录。

以下两份指南包含有关 IAM Identity Center 的其他信息:

要深入了解 SDK 和工具如何采用此配置以使用和刷新凭证,请参阅 如何解决 AWS SDK 和工具的 IAM Identity Center 身份验证问题

先决条件

您必须先启用 IAM Identity Center。有关启用 IAM Identity Center 身份验证的详细信息,请参阅《AWS IAM Identity Center 用户指南》 中的 Enabling AWS IAM Identity Center

注意

有关本页详细介绍的完整先决条件所需的共享 config 文件配置,请参阅有关设置使用 IAM Identity Center 进行 AWS SDK 和工具的身份验证的指导说明。

SSO 令牌提供商配置

使用 SSO 令牌提供者配置时,您的 AWS SDK 或工具会自动刷新会话,直到延长的会话时长。有关会话时长和最大时长的更多信息,请参阅《AWS IAM Identity Center 用户指南》中的 Configure the session duration of the AWS access portal and IAM Identity Center integrated applications

config 文件的 sso-session 部分用于对获取 SSO 访问令牌的配置变量进行分组,然后可以用来获取 AWS 凭证。有关 config 文件中此节的更多详细信息,请参阅 配置文件的格式

以下共享 config 文件示例使用 dev 配置文件将 SDK 或工具配置为请求 IAM Identity Center 凭证。

[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_registration_scopes = sso:account:access

上面的示例展示您可以定义 sso-session 节并将其关联到某个配置文件。通常,sso_account_idsso_role_name 必须在 profile 节中进行设置,以便 SDK 可以请求 AWS 凭证。sso_regionsso_start_urlsso_registration_scopes 必须在 sso-session 节中设置。

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

注册范围配置为 sso-session 的一部分。范围是 OAuth 2.0 中的一种机制,用于限制应用程序对用户账户的申请访问。上例设置了 sso_registration_scopes,来提供列出账户和角色的必要访问权限。

下例展示了如何在多个配置文件中重复使用相同的 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_registration_scopes = sso:account:access

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

遗留的不可刷新配置

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

要使用传统的不可刷新配置,您必须在配置文件中指定以下设置:

  • sso_start_url

  • sso_region

  • sso_account_id

  • sso_role_name

可以使用 sso_start_urlsso_region 设置为配置文件指定用户门户。可以使用 sso_account_idsso_role_name 设置来指定权限。

以下示例设置了 config 文件中的四个必需值。

[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

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

IAM Identity Center 凭证提供者设置

使用以下方法配置此功能:

sso_start_url - 共享 AWS config 文件设置

指向您所在组织的 IAM Identity Center 颁发者 URL 或访问门户 URL 的 URL。有关详细信息,请参阅《AWS IAM Identity Center 用户指南》中的 Using the AWS access portal

要找到此值,请打开 IAM Identity Center 控制台,查看控制面板,然后找到 AWS 访问门户 URL

  • 从版本 2.22.0 的 AWS CLI 开始,您也可改为使用 AWS 颁发者 URL 的值。

sso_region - 共享 AWS config 文件设置

AWS 区域 包含您的 IAM Identity Center 门户主机;也就是您在启用 IAM Identity Center 之前选择的区域。这与您的默认 AWS 区域无关,也可能有所不同。

有关 AWS 区域 及其代码的完整列表,请参阅 Amazon Web Services 一般参考 中的 区域端点。要查找此值,请打开 IAM Identity Center 控制台,查看控制 面板,然后查找 区域

sso_account_id - 共享 AWS config 文件设置

通过 AWS Organizations 服务添加 AWS 账户 的用于身份验证的数字 ID。

要查看可用账户列表,请前往 IAM Identity Center 控制台 并打开 AWS 账户 页面。还可在 AWS IAM Identity Center 门户 API 参考中使用 ListAccounts API 方法查看可用账户列表。例如,您可以调用 账户列表 AWS CLI 的方法。

sso_role_name - 共享 AWS config 文件设置

以 IAM 角色配置的权限集的名称,用于定义用户生成的权限。该角色必须存在于 sso_account_id 指定的 AWS 账户 中。使用角色名称,而不是角色的 Amazon 资源名称(ARN)。

权限集附有 IAM policy 和自定义权限策略,并定义了用户对其分配的 AWS 账户 的访问权限级别。

要查看每个 AWS 账户 的可用权限集的列表,请前往 IAM Identity Center 控制台 并打开 AWS 账户 页面。选择 AWS 账户 表中列出的正确权限集名称。还可在 AWS IAM Identity Center 门户 API 参考 中使用 ListAccountRoles API 方法查看可用权限集列表。例如,您可以调用 账户角色列表 AWS CLI 的方法。

sso_registration_scopes - 共享 AWS config 文件设置

要为 sso-session 授权的范围的逗号分隔列表。应用程序可以请求一个或多个范围,向应用程序签发的访问令牌将仅限于授予的范围。要从 IAM Identity Center 服务中取回刷新后的令牌,必须赋予 sso:account:access 最小范围。有关可用访问范围选项的列表,请参阅《AWS IAM Identity Center 用户指南》中的 Access scopes

这些范围定义了为已注册的 OIDC 客户端请求授权的权限和客户端检索的访问令牌。范围授权对 IAM Identity Center 持有者令牌授权端点的访问。

此设置不适用于遗留的不可刷新配置。使用传统配置发布的令牌被隐式限制在 sso:account:access 作用域范围内。

AWS SDK 和工具支持

以下 SDK 支持本主题中所述的功能和设置。所有部分例外情况均已注明。任何 JVM 系统属性设置都仅支持 适用于 Java 的 AWS SDK 和 适用于 Kotlin 的 AWS SDK。