【问题标题】:IAM tag policy with condition to prevent resource creation带有条件的 IAM 标签策略以防止创建资源
【发布时间】:2020-07-21 14:56:36
【问题描述】:

我的 IAM 用户附加了以下两个策略。

我创建了以下 IAM 策略,如果 lambda 没有 Project 标签,则无法创建它。

 {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Sid": "VisualEditor0",
                "Effect": "Deny",
                "Action": "lambda:*",
                "Resource": "*",
                "Condition": {
                    "Null": {
                        "aws:RequestTag/Project": "true"
                    }
                }
            }
        ]
    }

我还需要在创建 lambda 时附加/创建一个新的执行角色,所以我在下面添加 我的 IAM 用户的 Iam 政策。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Action": "iam:*",
            "Resource": "*"
        }
    ]
}

我使用该 IAM 用户的凭证登录到 aws 控制台并尝试创建没有标签的 lambda 函数,但它没有阻止资源创建。我能够创建没有所需标签的 lambda 函数,但具有以下内容错误。

You are not authorized to perform: cloudformation:DescribeStackResources.
You are not authorized to perform: lambda:GetFunctionEventInvokeConfig.
User: arn:aws:iam::****:user/testuser is not authorized to perform: lambda:ListEventSourceMappings on resource: * with an explicit deny (Service: AWSLambda; Status Code: 403; Error Code: AccessDeniedException; Request ID: 199433ed*****)

如何才能完全阻止资源创建?

https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_example-scps.html#example-require-tag-on-create

最终我想为所有受支持的 aws 资源尝试 aws:RequestTag/{TageKey}。

【问题讨论】:

  • 不应该是该政策中的Deny 吗? SCP 你链接的例子只有 Deny 那里。
  • 感谢 Marcin 指出错误!
  • 没问题。它现在工作了吗?如果,我可以回答以供将来参考?
  • 它仍然让我创建 lambda 函数,但这次我遇到了一些错误。

标签: amazon-web-services amazon-iam


【解决方案1】:

并非所有 AWS 服务/资源都支持 aws:RequestTag 作为条件键。 对于 lambda,这是不允许的。目前 lambda:CreateFunion Action 上支持的条件键是:

  • lambda:图层
  • lambda:VpcIds
  • lambda:SubnetIds
  • lambda:SecurityGroupIds
  • lambda:CodeSigningConfigArn

如“条件键”列上的“AWS Lambda 定义的操作”表中所指定。 https://docs.aws.amazon.com/service-authorization/latest/reference/list_awslambda.html#awslambda-actions-as-permissions

您可以检查该链接并查看任何其他服务并验证特定操作是否支持您需要的条件。 例如,对于 EC2:RunInstances https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html,支持的条件是:

  • aws:RequestTag/${TagKey}

  • aws:TagKeys

  • ec2:AvailabilityZone

  • ec2:EbsOptimized

  • ec2:InstanceMarketType

  • ec2:InstanceProfile

  • ec2:InstanceType

  • ec2:IsLaunchTemplateResource

  • ec2:LaunchTemplate

  • ec2:MetadataHttpEndpoint

  • ec2:MetadataHttpPutResponseHopLimit

  • ec2:MetadataHttpTokens

  • ec2:PlacementGroup

  • ec2:区域

  • ec2:RootDeviceType

  • ec2:租赁

因此,在这种情况下,您可以根据标签的存在来限制在新 EC2 实例上的创建,但对于 Lambda,它不受支持(目前)。

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 2018-09-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2020-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多