【问题标题】:AWS Lambda Alias in Role Policy角色策略中的 AWS Lambda 别名
【发布时间】:2023-02-09 00:33:23
【问题描述】:

有没有一种方法可以设计 Lambda 执行角色策略以使用 Lambda 别名来限制访问。例如,我想要一个别名“Prod”,并且只有具有该别名的函数的执行才有权限写入特定的存储桶。

我尝试使用新的 lambda:SourceFunctionArn 条件,但它似乎不包含别名,或者我没有正确使用它。在下面的示例中,我试图实现我函数的所有变体写入 my-bucket-test 的能力,但只有 Prod 别名能够写入 my-bucket-data。有没有办法做到这一点?

{
    "Version": "2012-10-17",
    "Statement": [{
            "Sid": "Logging",
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "arn:aws:logs:*:*:log-group:/aws/lambda/MyLambda_*"
        },
        {
            "Sid": "S3",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": [
                "arn:aws:s3:::my-bucket-test/*"
            ]
        },
        {
            "Sid": "S3Prod",
            "Effect": "Allow",
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::my-bucket-data/*",
            "Condition": {
                "StringLike": {
                    "lambda:SourceFunctionArn": "*Prod"
                }
            }
        }
    ]
}

谢谢, 亚历克斯

【问题讨论】:

    标签: aws-lambda amazon-iam aws-iam-policy


    【解决方案1】:

    是的,可以通过在执行角色策略中使用条件来限制基于 Lambda 函数别名的访问。您可以在策略的 Condition 元素中使用 arn:aws:lambda:<region>:<account-id>:function:<function-name>:<alias-name> 格式。

    这是实现您描述的限制的示例策略:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "WriteToBucketTest",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::my-bucket-test/*"
                ]
            },
            {
                "Sid": "WriteToBucketData",
                "Effect": "Allow",
                "Action": [
                    "s3:PutObject"
                ],
                "Resource": [
                    "arn:aws:s3:::my-bucket-data/*"
                ],
                "Condition": {
                    "ArnLike": {
                        "aws:SourceArn": "arn:aws:lambda:<region>:<account-id>:function:<function-name>:Prod"
                    }
                }
            }
        ]
    }
    

    在这个例子中,第一条语句允许函数的所有变体写入my-bucket-test,而第二条语句只允许产品别名写入my-bucket-data

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-17
      • 2018-06-08
      • 2018-11-02
      • 2018-09-29
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多