【问题标题】:Using aws:ResourceTag in conditions on an IAM policy for lambda functions does not work在 lambda 函数的 IAM 策略条件下使用 aws:ResourceTag 不起作用
【发布时间】:2023-01-04 16:55:18
【问题描述】:

我需要分配给开发人员的角色才能读取具有特定标签的 lambda 函数。

为此,我在所有资源上分配了以下标签:

Tag Value
team developers, devops, etc...
environment dev, stg, prod

团队标签可以有多个团队,以空格分隔,因为多个团队可以拥有同一资源。

  1. 例1:team: developers
  2. 例子2:team: developers devops finance

    根据显示可以grant access by tags 的 AWS 文档(尽管有部分支持,因为有些操作不允许这样做),我为分配给开发人员的 IAM 角色创建了以下策略,包括标签的条件:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "AllowReadingFunctionsByTags",
                "Effect": "Allow",
                "Action": [
                    "lambda:ListTags",
                    "lambda:GetFunction"
                ],
                "Resource": "*",
                "Condition": {
                    "StringLike": { "aws:ResourceTag/team": "*developers*" },
                    "StringEquals": { "aws:ResourceTag/environment": [ "dev" , "stg" ] }
                }
            },
            {
                "Sid": "ListAllFunctions",
                "Effect": "Allow",
                "Action": [
                    "lambda:ListFunctions",
                    "lambda:GetAccountSettings"
                ],
                "Resource": "*"
            }
        ]
    }
    

    最后,为了对其进行测试,我承担了在 AWS 控制台上分配策略的角色。

    我期待我可以看到没有错误的功能,但是,显示以下错误:

    User: arn:aws:sts::[REDACTED]:assumed-role/lambda_role/[REDACTED] is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:eu-central-1:[REDACTED]:function:[LAMBDA NAME] because no identity-based policy allows the lambda:GetFunction action
    

    我还尝试了以下内容:

    • 无条件限制为特定资源:有效。
    • 限制为具有条件的特定资源:不工作。
    • 仅使用团队标签:不起作用。
    • 仅使用环境标签:不起作用。
    • 在团队标签上使用 StringEquals,资源只有一个团队:不起作用。
    • 添加支持“AllowReadingFunctionsByTags”条件的所有 Lambda 读取和列表操作:不起作用。
    • 使用arn:aws:lambda:*:*:function:* 作为资源选择器:不工作。

    此外,IAM 策略模拟器根据输入显示以下内容。

    该政策有什么问题,我该如何进一步调试它?

【问题讨论】:

  • 也许问题在于你担任角色的方式。重新检查您授予您的用户承担该角色的权限,并且该角色与您的用户有信任关系
  • @Mink 我已经尝试使用附加了策略的 IAM 用户,但它仍然无法正常工作。与该角色的信任关系正常,因为其他策略按预期工作。

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


【解决方案1】:

在我们与 AWS 支持人员交谈后,他们发现有一个关于使用标签过滤的功能在旧帐户上被禁用,以防止破坏。此功能块未在新帐户上设置。

要解决此问题,您需要联系 AWS Support。

【讨论】:

    猜你喜欢
    • 2017-05-03
    • 2020-03-18
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2022-09-28
    相关资源
    最近更新 更多