View a markdown version of this page

Enable AWS 客户托管应用程序的账户访问权限 - AWS IAM Identity Center

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

Enable AWS 客户托管应用程序的账户访问权限

您可以通过配置可信令牌颁发者在 IAM Identity Center 中为客户托管的应用程序启用 AWS 账户访问权限。可信令牌发行者是 OAuth 2.0 授权服务器,它代表经过身份验证的用户颁发签名令牌。IAM Identity Center 将这些令牌交换为证书,允许您的应用程序以编程方式访问分配给这些用户的 AWS 账户和角色。可信令牌发行者也可用于访问 AWS 托管应用程序。有关更多信息,请参阅 通过可信令牌发布者使用应用程序

注意

您只能为 IAM Identity Center 的组织实例启用此功能。只有管理账户管理员或授权管理员才能为客户托管的应用程序启用sso:account:access作用域。如果您是成员账户中的应用程序构建者,请联系您的 IAM Identity Center 管理员为您的应用程序启用此范围。

工作原理

管理员启用客户托管应用程序的sso:account:access作用域后,将出现以下工作流程:

  1. 用户通过您的外部身份提供商 (IdP) 登录您的应用程序。

  2. 您的应用程序会收到来自 IdP 的签名 JWT 令牌。

  3. 您的应用程序通过调用 JWT 持有者授权类型 () urn:ietf:params:oauth:grant-type:jwt-bearerCreateTokenWithIAM API,将此令牌兑换 IAM 身份中心令牌。此调用需要签名版本 4 (Sigv4) 身份验证。有关更多信息,请参阅 CreateTokenWithIAMIAM 身份中心 OIDC API 参考中的。

  4. 您的应用程序使用 IAM Identity Center 令牌调用门户 API 操作ListAccountsListAccountRoles、、GetRoleCredentials),以发现分配给用户的账户和角色并代表他们检索临时 AWS 证书。

  5. 用户无需任何额外的登录步骤即可通过您的应用程序访问 AWS 资源。

如果您在设置应用程序时启用了刷新令牌授权,则CreateTokenWithIAM还会在访问令牌旁边返回刷新令牌。您的应用程序可以使用此刷新令牌来获取新的访问令牌,而无需重复完整的 JWT Bearer 令牌交换。要刷新访问令牌,请CreateTokenWithIAM使用refresh_token授权类型调用。

先决条件

在为客户管理的应用程序启用账户访问权限之前,您需要:

  • 在 IAM 身份中心配置的支持 JSON 网络令牌 (JWT) 的客户托管应用程序。应用程序必须具有可以安全存储凭据的后端服务器组件。 Browser-based 此功能不支持诸如单页应用程序 (SPA) 之类的应用程序和其他公共客户端。

  • 附加到您的应用程序的可信令牌发行者

  • 访问 IAM Identity Center 的 AWS Organizations 管理账户或委托管理员账户。成员账户中的应用程序生成器无法直接启用此范围。

启用账户访问权限

为客户托管的应用程序启用 sso: account: acces s 范围
  1. AWS 管理控制台 使用贵组织的管理账户或委派管理员账户登录。

  2. 打开 IAM Identity Center 控制台

  3. 在导航窗格中,选择 应用程序

  4. 选择客户托管选项卡。

  5. 选择要配置的应用程序的名称。

  6. 在 “AWS 账户访问权限” 部分,打开 “启用 AWS 账户访问权限”。

启用账户访问权限后,应用程序可以通过编程方式调用 Identity Portal API 操作来列出账户和角色,并检索经过身份验证的用户有权访问的角色的临时 AWS 证书。

重要

启用应用程序的sso:account:access作用域后,该应用程序可以通过分配权限集访问经过身份验证的用户可用的所有账户和角色。您不能将应用程序限制为特定的账户或角色。在启用此功能之前,请确保您了解此访问级别。

以编程方式访问

您可以使用 PutApplicationAccessScope API 以编程方式为客户托管的应用程序启用sso:account:access范围。您必须使用组织的管理账户或委派管理员账户调用 API。

AWS CLI

aws sso-admin put-application-access-scope \ --application-arn arn:aws:sso::123456789012:application/ssoins-1234567890abcdef/apl-1234567890abcdef \ --scope "sso:account:access"

API 请求:

{ "ApplicationArn": "arn:aws:sso::123456789012:application/ssoins-1234567890abcdef/apl-1234567890abcdef", "Scope": "sso:account:access" }

要禁用账户访问权限,请使用具有相同应用程序 ARN 和范围值的 DeleteApplicationAccessScope API。

有关更多信息,请参阅 IAM 身份中心 API 参考DeleteApplicationAccessScope中的PutApplicationAccessScope和。

安全最佳实践

  • sso:account:access作用域授予应用程序对经过身份验证的用户可用的所有账户和角色的访问权限。您不能限制对特定账户或角色的访问权限。仅对需要此级别访问权限的应用程序启用此范围。

  • 将 IAM 身份中心访问令牌和刷新令牌保存在您的后端服务器上。切勿将它们暴露给客户端代码。

  • 不要在应用程序日志、错误消息或调试输出中记录令牌或凭据。

  • 不要在 URL 查询参数中传递令牌。使用标x-amz-sso_bearer_token头作为访问令牌。

  • AWS CloudTrail用于监控您的应用程序发出的 API 调用。