【问题标题】:Question about Lambda execution role when configuring credential rotation for Secret Manager为 Secret Manager 配置凭证轮换时有关 Lambda 执行角色的问题
【发布时间】:2020-05-17 01:37:28
【问题描述】:

我手动创建了一个轮换函数并将其链接到 Secret Manager,我已设法启用轮换,但是当我在 CloudWatch 中检查此轮换 lambda 的日志时,它显示错误:

[ERROR] ClientError: An error occurred (AccessDeniedException) 
when calling the DescribeSecret operation: 
User: arn:awsxxxxxxx:assumed-role/xxxxx-lambda-exec-role/
MyLambdaName is not authorized to perform: secretsmanager:DescribeSecret 
on resource: MysecretARN

我知道我的执行角色出了点问题,所以我检查了附加到这个角色的政策,它有:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "lambda:InvokeFunction",
                "secretsmanager:PutSecretValue",
                "secretsmanager:UpdateSecretVersionStage",
                "secretsmanager:RotateSecret"
            ],
            "Resource": [
                "arn:aws:secretsmanager:us-east-1:xxx",
                "arn:aws:lambda:us-east-1:xxx"
            ]
        }
    ]
}

我还将“AWSLambdaBasicExecutionRole”附加到我的 exec 角色中,我是否遗漏了其他内容?为什么我一直收到这个错误,我一直在搞乱这整个轮换的事情,筋疲力尽!请帮忙

我还尝试添加一些 KMS 操作,但仍然出现相同的错误...我已经为此工作了几天,AWS 文档非常混乱,有些甚至完全误导了我不同的方向……为什么要配置一个血腥的旋转这么复杂……(哭)

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-iam credentials aws-secrets-manager


    【解决方案1】:

    确保密钥 arn 出现在策略的“资源”部分。错误消息提到 - 'MyLambdaName 无权执行:secretsmanager:DescribeSecret on resource: MysecretARN'

    但我没有在您允许 lambda 访问的资源列表中看到 MysecretARN

    【讨论】:

    • 您是对的,我只粘贴了秘密名称而不是 ARN(略有不同,很难发现),我会再试一次。后续问题:我是否需要为执行角色添加 KMS 策略?
    【解决方案2】:

    秘密管理器中的所有秘密都使用密钥(AWS KMS)加密。请确保您的 lambda 具有读取所需密钥的权限

    UPD:我的意思是逻辑如下 - Lambda 必须有权限读取 Secret 并使用密钥 (KMS) 解密 Secret 的值。

    【讨论】:

    • 您好,您能说得更具体一点吗,如何确保我的 lambda 具有读取所需密钥的权限?
    • 您附加的文档是针对 Amazon Kinesis Data Streams 的,为了配置它,我需要在 Lambda 执行角色中添加密钥策略吗?
    • The Lambda must have the permission to read the Secret and to use key (KMS) to decrypt the value of Secret 我怎样才能做到这一点?谢谢
    • @elbik 如果是这种情况,实际错误是缺少读取密钥的权限。它应该在错误消息中说。说缺少“DescribeSecret”权限只会让人感到困惑
    猜你喜欢
    • 2020-05-14
    • 2020-05-16
    • 1970-01-01
    • 2021-05-18
    • 2020-07-07
    • 2020-05-15
    • 2021-06-01
    • 2018-12-09
    • 2020-12-22
    相关资源
    最近更新 更多