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

跨AWS账户:能否通过Secrets Manager轮换调用其他账户的Lambda函数?

跨AWS账户Secrets Manager调用Lambda实现密钥自动轮换解决方案

需求背景

我们希望将Lambda函数打造为可被不同账户的Secrets Manager调用的中心化服务,以此实现跨多账户的密钥自动轮换功能。Secrets Manager与Lambda函数处于同一区域,目标是选择部署在其他AWS账户中的Lambda函数作为轮换触发源。

(示意图说明:Secrets Manager Rotation架构图展示了多账户Secrets Manager调用中心化Lambda函数进行密钥轮换的流程)

已尝试但未成功的操作

  • 通过IAM角色与角色假设实现跨AWS账户访问授权
  • 为Lambda函数添加基于资源的策略

正确配置步骤(需同时满足)

要实现跨账户调用,必须同时配置Lambda资源策略和Secrets Manager轮换角色权限,两者缺一不可:

1. 配置Lambda函数的资源策略

给目标Lambda添加资源策略,明确允许指定账户的Secrets Manager服务调用该函数,示例策略如下(替换占位符为实际值):

{
  "Version": "2012-10-17",
  "Id": "LambdaCrossAccountRotationPolicy",
  "Statement": [
    {
      "Sid": "AllowSecretsManagerInvocation",
      "Effect": "Allow",
      "Principal": {
        "Service": "secretsmanager.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:<区域>:<Lambda所在账户ID>:function:<Lambda函数名>",
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "<Secrets Manager所在账户ID>"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:secretsmanager:<区域>:<Secrets Manager所在账户ID>:secret:*"
        }
      }
    }
  ]
}
  • 必须通过aws:SourceAccount和aws:SourceArn限制调用来源,避免权限过度开放。

2. 配置Secrets Manager所在账户的轮换执行角色

在Secrets Manager所在账户创建IAM角色,需包含两部分配置:

信任关系(允许Secrets Manager扮演该角色)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "secretsmanager.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

权限策略(允许调用Lambda及密钥轮换操作)

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:<区域>:<Lambda所在账户ID>:function:<Lambda函数名>"
    },
    {
      "Effect": "Allow",
      "Action": [
        "secretsmanager:GetSecretValue",
        "secretsmanager:PutSecretValue",
        "secretsmanager:UpdateSecretVersionStage"
      ],
      "Resource": "arn:aws:secretsmanager:<区域>:<当前账户ID>:secret:<目标密钥名>"
    }
  ]
}

3. 配置Secrets Manager轮换规则

在Secrets Manager控制台操作:

  • 启用目标密钥的轮换功能
  • 选择「自定义Lambda函数」,输入跨账户Lambda的完整ARN(格式:arn:aws:lambda:<区域>:<Lambda账户ID>:function:<函数名>)
  • 指定之前创建的轮换执行角色

常见排查点

如果之前配置失败,可检查:

  • Lambda资源策略中的aws:SourceAccount和aws:SourceArn是否与Secrets Manager所在账户及资源匹配
  • 轮换执行角色的信任关系是否正确授权Secrets Manager服务
  • 确认Lambda与Secrets Manager处于同一区域(此为硬性要求)
  • Lambda自身的执行角色是否具备完成轮换逻辑所需的权限(如数据库访问、其他AWS服务调用等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:07:40