标记 Amazon EC2 资源

1 - 标记Owner

创建时标记:使用 CloudFormation 为资源添加标签

创建时标记:为了防止越权,因此真人没有给EC2打标签的权限,可以通过CloudTrail记录创建资源的事件,通过EventBridge规则捕获,并且触发Lambda程序打标签。Lambda代入的角色Trusted entities指定为AWS Service: lambda。角色的IAM授权策略可以自定义创建如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "config:GetComplianceDetailsByConfigRule",
                "config:DescribeConformancePacks",
                "config:BatchGetResourceConfig",
                "tag:getResources",
                "tag:getTagKeys",
                "tag:getTagValues",
                "tag:TagResources"
            ],
            "Resource": "*",
            "Effect": "Allow"
        },
        {
            "Action": [
                "ec2:CreateTags",
                "ec2:DescribeInstances"
            ],
            "Resource": "*",
            "Effect": "Allow"
        }
    ]
}

创建后标记:可以通过AWS Config识别没有打指定标签的资源,然后绑定一个Systems Manager Document自动打标签。SSM代入的角色Trusted entities指定为AWS Service: ssm。角色的IAM授权策略可以用上面的同一个策略。配置方法参见: config: required-tags

2-授权访问EC2

对于打了标签的EC2,可以通过在权限策略中定义授予标签匹配的身份访问EC2。

示例策略授权只有EC2 tag-key 的值和IAM身份的标签key匹配时才能执行操作,启动和停止EC2示例使用时注意确保替换 region, account-id, and tag-key 为你自己实际的值。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "arn:aws:ec2:region:account-id:instance/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/tag-key": "${aws:PrincipalTag/tag-key}",
          "ec2:ResourceTag/tag-key": "${aws:CallerIdentity:PrincipalTag/tag-key}"
        }
      }
    }
  ]
}

官网文档 - https://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/Using_Tags.html#tag-resources

最后更新于