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

嵌入CCP的自定义Web应用:如何为Lambda调用添加认证保护

解决方案:为Connect Streams事件触发的Lambda调用添加认证保护

核心思路

你的CCP已经通过SAML和IAM身份提供商完成认证,可以复用这套已有的信任关系,确保只有经过认证的Connect用户触发的请求才能调用Lambda。下面是几种可落地的实现方式:

方式1:后端服务代理Lambda调用(推荐)

既然你是在服务端通过DOM事件监听触发调用,让后端做中间层校验是最稳妥的方案:

  • 当onConnected事件触发时,前端从CCP获取当前用户的Connect用户ID(通过connect.contact.getIdentity().userId),将这个标识传给你的后端服务。
  • 后端服务调用Amazon Connect的DescribeUser API,传入用户ID,确认该用户属于你的Connect实例且状态合法(后端需要配置IAM权限允许调用Connect的DescribeUser接口)。
  • 验证通过后,后端服务再调用Lambda函数——后端用IAM角色授权调用Lambda,无需暴露Lambda的公网调用权限。

方式2:API Gateway + 自定义Lambda授权器

如果要直接让前端触发Lambda调用,可将Lambda挂载到API Gateway并配置自定义授权器:

  • 前端在onConnected事件中,从CCP获取用户的SAML断言或Connect用户ID,作为请求头参数传给API Gateway。
  • 自定义授权器Lambda接收参数后,要么调用Connect的DescribeUser验证用户合法性,要么用IAM身份提供商的公钥验证SAML断言的签名与有效期,返回授权决策。
  • 只有授权通过的请求,API Gateway才会转发到目标Lambda。

方式3:直接为Lambda配置IAM资源级权限

如果你的后端服务已拥有合法IAM身份(比如ECS实例角色、EC2实例角色),可直接给该角色添加调用Lambda的权限:

  • 编写IAM政策,允许该角色调用目标Lambda:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:你的区域:账号ID:function:你的Lambda函数名"
    }
  ]
}
  • 后端服务调用Lambda时会自动使用自身IAM身份认证,无需额外传递凭证,确保只有你的服务端能触发调用。

关键注意事项

  • 绝对不要放开Lambda的公网调用权限,必须通过IAM或API Gateway的授权机制限制调用者。
  • 前端传来的用户标识不能直接信任,必须通过Connect官方API或SAML验证流程确认合法性。
  • 使用SAML断言时,要检查断言的有效期与签名有效性,避免使用过期或篡改的凭证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 06:22:07