0

在我正在处理的一个项目中,机密存储在一个集中的公司机密管理器中,在一个特定的 AWS 账户 (SECRETS_ACCOUNT) 中。

项目资源(包括 lambda 函数)位于项目特定帐户 (PROJECT_ACCOUNT) 中。

我正在尝试设置秘密轮换,但我遇到了以下错误消息:

AccessDeniedException: Secrets Manager cannot invoke the specified Lambda function. Ensure that the function policy grants access to the principal secretsmanager.amazonaws.com.

基于 lambda 资源的策略:

{
  "Version": "2012-10-17",
  "Id": "default",
  "Statement": [
    {
      "Sid": "SecretsManager",
      "Effect": "Allow",
      "Principal": {
        "Service": "secretsmanager.amazonaws.com"
      },
      "Action": "lambda:InvokeFunction",
      "Resource": "arn:aws:lambda:eu-west-1:PROJECT_ACCOUNT:function:secret-rotation"
    }
  ]
}

lambda 角色信任关系:

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

我不知道这是否重要,两个帐户都在同一个地区。

我错过了什么?我是否需要添加额外的权限以允许来自另一个账户的 Secrets Manager 调用 lambda?lambda 和秘密是否必须在同一个帐户中?

提前致谢,

4

1 回答 1

0

请运行以下命令来解决错误“ AccessDeniedException:Secrets Manager 无法调用指定的 Lambda 函数。确保函数策略授予对主体 secretsmanager.amazonaws.com 的访问权限。” 在 AWS 命令​​行中

aws lambda add-permission --function-name arn:aws:lambda:us-east-1:757147756798:function:"此处不带引号的秘密名称" --principal secretsmanager.amazonaws.com --action lambda:InvokeFunction --statement -id SecretsManagerAccess

于 2021-06-16T04:46:29.567 回答