将 Amazon 身份联合到外部服务
IAM 出站身份联合验证使您的 Amazon 工作负载无需存储长期凭证即可安全访问外部服务。您的 Amazon 工作负载可通过调用 GetWebIdentityToken API 从 Amazon Security Token Service(Amazon STS)请求短期的 JSON Web 令牌(JWT)。这些令牌经过加密签名,可公开验证,并包含一组全面的声明,用于向外部服务声明 Amazon 工作负载的身份。您可以将这些令牌用于各种第三方云提供商、SaaS 平台和自托管应用程序。外部服务使用在知名端点发布的 Amazon 验证密钥来验证令牌的真实性,并使用令牌中的信息进行身份验证和授权决策。
出站身份联合验证无需在应用程序代码或环境变量中存储 API 密钥或密码等长期凭证,从而改善了您的安全状况。您可以使用 IAM 策略控制对令牌生成的访问权限并强制执行签名算法、允许的受众和持续时间等令牌属性。所有令牌请求均已在 Amazon 中记录,从而为安全监控与合规性报告提供完整的审计跟踪记录。您还可以使用显示为自定义声明的标签自定义令牌,从而使外部服务能够实现基于属性的精细访问控制。
常见使用案例
使用出站身份联合验证,您的 Amazon 工作负载可以安全地实现以下功能:
-
访问外部云提供商中的资源和服务。例如,处理数据的 Lambda 函数可以将结果写入外部云提供商的存储服务或查询其数据库。
-
与外部软件即服务(SaaS)提供商集成,以进行分析、数据处理、监控等。例如,您的 Lambda 函数可以向可观测性平台发送指标。
-
使用托管在 Amazon、外部云提供商或本地数据中心上的自有应用程序进行身份验证,从而实现安全的混合云和多云架构。例如,您的 Amazon 工作负载可以与在本地 Kubernetes 集群中运行的容器化应用程序进行交互。
工作方式
-
Lambda 函数调用 GetWebIdentityToken API 向 Amazon Security Token Service(Amazon STS)请求 JSON Web 令牌(JWT)。
-
Amazon STS 验证请求并向 Lambda 函数返回已签名的 JWT。
-
Lambda 函数将 JWT 发送到外部服务。
-
外部服务从令牌中提取发布者 URL,验证其是否与已知的可信发布者匹配,并从 OIDC 发现端点获取 Amazon 的验证密钥和元数据。
-
外部服务使用验证密钥来验证令牌的签名,并验证过期时间、主题和受众等声明。
-
成功验证后,外部服务将授予对 Lambda 函数的访问权限。