gpt4 book ai didi

amazon-web-services - 在权限策略中将 AWS Lambda 设置为委托(delegate)人

转载 作者:行者123 更新时间:2023-12-04 12:06:16 26 4
gpt4 key购买 nike

我有一个非常具体的 AWS Lambda 函数,我想将其设为 AWS Secret Manager 的 Principal 权限策略,以便它可以检索 secret 。

我只想专门将此权限授予我的 Lambda。我创建了一个角色并将该角色分配给策略。

但是,我希望能够明确地写出 Principal (为了学习和第一眼知道它的作用)。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Lambda Get Secret File",
"Effect": "Allow",
"Action": "secretsmanager:GetSecretValue",
"Principal": {
"AWS": "arn:aws:iam::XXXXXXXXXX:role/My-Lambda"
},
"Resource": "arn:aws:secretsmanager:us-west-2:XXXXXX:secret:My-Secret"
}
]
}

这是不允许的。
写这个的方法是什么?

我看到的一切都是为了让 Lambda 旋转,我不想旋转。

最佳答案

在使用 AWS 身份/权限时,了解有两种类型的策略很重要:

  • 基于身份的策略(您将这些附加到身份)
  • 基于资源的策略(您将这些附加到资源)

  • 前者基于身份的策略附加到 IAM 用户、组或角色。这些策略允许您指定该身份(用户、组或角色)可以做什么。这些策略没有 Principal 元素,因为该策略适用的主体隐含地是提供凭据的用户或进程。
    后者是基于资源的策略,附加到资源上。这些策略指定谁可以访问给定资源以及他们可以做什么。最常见的是,您会在 S3 存储桶中看到这些,但它们也可以与其他资源类型相关联。这些策略必须具有 Principal 元素。
    在您的情况下,您应该为 Secrets Manager key 配置基于资源的策略,控制谁可以访问该 key 。
    我能够将以下策略添加到 Secrets Manager key 中(我将此策略保存在名为 mysecret.json 的文件中:
    {
    "Version": "2012-10-17",
    "Statement": [
    {
    "Sid": "secureme",
    "Effect": "Allow",
    "Action": "secretsmanager:GetSecretValue",
    "Principal": {
    "AWS": "arn:aws:iam::123456789012:role/mylambdarole"
    },
    "Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:mysecret-xyz"
    }
    ]
    }
    据我所知,您不能使用 AWS 控制台将此策略应用于 key ,但您可以使用 awscli 或开发工具包。我使用了awscli,如下:
    aws secretsmanager put-resource-policy \
    --secret-id mysecret \
    --resource-policy file://mysecret.json

    关于amazon-web-services - 在权限策略中将 AWS Lambda 设置为委托(delegate)人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56192833/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com