You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在dev账户的自定义授权Lambda中集成跨AWS账户的两个Cognito用户池?

跨AWS账户集成Cognito用户池与自定义授权Lambda的可行性及替代方案

问题描述

我有一个AWS dev账户,已部署Cognito用户池和自定义授权Lambda,该Lambda通过客户端凭证授予流使用此用户池完成用户认证,当前运行正常。

现在需要将另一个AWS test账户中的Cognito用户池与dev账户的自定义授权Lambda集成,使test账户的用户也能通过dev账户的授权Lambda完成认证与授权。

我的计划是在test账户创建一个跨账户IAM角色,允许dev账户的授权Lambda扮演该角色,从而调用test账户Cognito服务的describe_user_pool_client接口获取client_name,相关代码如下:

app_client_details = cognito_idp_client.describe_user_pool_client(
        UserPoolId = cognito_user_pool_id,
        ClientId = client_id
    )

client_name = app_client_details['UserPoolClient']['ClientName']

client_name = client_name.split(' ')[0].lower()

补充说明:必须同时使用dev和test账户的用户池,因此合并两个用户池并非可行选项。

回答

方案可行性判断

你的方案是可行的,但需要确保以下关键配置正确:

  • 跨账户IAM角色信任策略:在test账户创建的角色中,信任策略需明确允许dev账户中授权Lambda的执行角色ARN(或dev账户ID+Lambda服务主体)作为可信实体,确保只有指定的Lambda能扮演该角色。
  • 角色权限配置:test账户的IAM角色需添加cognito-idp:DescribeUserPoolClient权限,且资源需限定为目标用户池和客户端ID(遵循最小权限原则),示例权限策略:
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "cognito-idp:DescribeUserPoolClient",
                "Resource": "arn:aws:cognito-idp:<test-region>:<test-account-id>:userpool/<user-pool-id>/client/<client-id>"
            }
        ]
    }
    
  • Lambda内角色切换逻辑:dev账户的授权Lambda在调用test账户的Cognito API前,需通过STS服务调用AssumeRole获取test账户角色的临时凭证,再用该凭证初始化Cognito IDP客户端,而非使用Lambda自身的执行角色凭证。

替代方案

  1. test账户部署代理Lambda
    在test账户部署一个代理Lambda,该Lambda拥有调用本地Cognito DescribeUserPoolClient的权限。dev账户的授权Lambda通过跨账户Lambda调用(需配置test账户Lambda的资源策略允许dev账户访问)获取所需的client_name,无需直接跨账户扮演角色,权限管控更清晰。

  2. 预同步客户端信息
    如果test账户的Cognito客户端信息(如client_name)不频繁变动,可将这些信息提前同步到dev账户的存储服务(如DynamoDB)。dev账户的授权Lambda直接从本地存储读取数据,避免实时跨账户API调用,提升性能同时降低权限复杂度。

  3. Cognito联合身份池(按需评估)
    虽然不能合并用户池,但可通过Cognito联合身份池将两个账户的用户池配置为身份提供者,实现用户身份的统一认证。不过该方案更偏向用户身份认证场景,若你的需求聚焦于客户端凭证流的授权,需结合实际业务场景评估适用性。

内容的提问来源于stack exchange,提问作者Naxi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 18:05:46