Политика AWS IAM по внедрению Taging

Есть ли способ применения тегов при создании экземпляров EC2? Пользователь не может запустить экземпляр без определенных тегов. И можно ли использовать эти теги, чтобы передать управление конкретному экземпляру в зависимости от тега?

3 ответа

У меня был похожий вариант использования, когда я работал на клиента. Ответ да, вы можете!

Вы можете заставить пользователей применять определенные теги с помощью политик IAM.

Например, вы можете прикрепить политику к пользователю / роли (предпочтительно роли), которая запрещает действие ec2:RunInstances с условием, которое проверяет, соответствуют ли тег Key и Value тому, что вы ожидаете. Это может немного сбивать с толку, так как эта политика использует двойное отрицание, Deny и StringNotLike, но я считаю, что проще применять теги таким образом, поскольку вы можете добавить эту политику к роли, которая имеет политику Администратора и все еще работает.

    {
        "Sid": "ConditionalEC2creationName",
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotLike": {
                "aws:RequestTag/Name": "*"
            }
        }
    },
    {
        "Sid": "ConditionalEC2creationEnv",
        "Effect": "Deny",
        "Action": "ec2:RunInstances",
        "Resource": "arn:aws:ec2:*:*:instance/*",
        "Condition": {
            "StringNotLike": {
                "aws:RequestTag/Env": "*"
            }
        }
    }

К сожалению, я не мог заставить это работать в единственном блоке, потому что у меня не было времени, чтобы оптимизировать это. Я думаю, что это связано с ForAllValues, ForAnyValue.

ForAllValues - условие возвращает true, если есть совпадение между каждым из указанных значений ключа в запросе и хотя бы одним значением в политике. Он также возвращает true, если в запросе нет совпадающего ключа или значения ключа разрешаются в пустой набор данных, например в пустую строку.

ForAnyValue - условие возвращает true, если любое из ключевых значений в запросе соответствует какому-либо одному из значений условия в политике. Если нет соответствующего ключа или пустого набора данных, условие возвращает false.

Вы можете добиться этого с помощью Amazon Config.

Select Rules -> Add Rule -> required tag

Вы не помешаете кому-либо создать экземпляр без тега, но вы сможете увидеть его помеченным на информационной панели Config или запустить действие SNS, чтобы уведомить вас по электронной почте.

Да, вы должны использовать условие "ec2:CreateAction", чтобы ограничить создание тега при создании ресурса (экземпляр / том), и условие "aws:RequestTag", чтобы указать, какое значение ключа тега требуется для создания ресурса.

Здесь приведены примеры политик, и для получения дополнительной информации, пожалуйста, обратитесь к блогу.

Да, создание EC2 вполне возможно с возможностью выбора значений тегов, попробуйте

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotLike": {
                    "aws:RequestTag/Env": [
                        "Dev",
                        "Prod"
                    ]
                }
            }
        }
    ]
}
Другие вопросы по тегам