Политика AWS IAM EC2 ограничена исходящим экземпляром - PullRequest
0 голосов
/ 15 марта 2019

Я работаю над настройкой, в которой мне нужно завершить работу экземпляров AWS из-за неактивности (то есть, ничего нового в журналах доступа веб-сервера с определенного периода времени).Эти экземпляры являются тестовыми и автоматически создаются программным обеспечением CI / CD.

Я хотел бы, чтобы эти случаи идентифицировали себя, что они покинули себя и прекратили себя.Я хочу назначить общую роль iam каждой из них, которая позволит экземпляру только самому завершению, а не одноранговым экземплярам.

Пока я здесь: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ExamplePolicies_EC2.html https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_variables.html#policy-vars-wheretouse https://www.reddit.com/r/aws/comments/4gglxk/iam_policy_to_allow_ec2_instance_to_only_query/ https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_iam_mfa-selfmanage.html

И выяснил, что в политиках доступны 2 переменные:

ec2-instance-id
ec2:SourceInstanceARN

Я пришелс несколькими вариантами моей ролевой политики, но ни одна из них не работает:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:TerminateInstances",
            "Resource": "*",
            "Condition": {
                "ArnEquals": {
                    "ec2:SourceInstanceARN": "arn:aws:ec2:*:*:instance/${ec2-instance-id}"
                }
            }
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:TerminateInstances",
            "Resource": "arn:aws:ec2:*:*:instance/${ec2-instance-id}"
        }
    ]
}
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": "ec2:TerminateInstances",
            "Resource": "${ec2:SourceInstanceARN}"
        }
    ]
}

Возможно ли достичь желаемого поведения, то есть разрешить экземпляру выполнять только определенные действия над собой (например прекращение)?

ОБНОВЛЕНИЕ:
Я знаю, что могу работать с тегами, это то, чем я занимаюсь, но это означает, что все тегированные экземпляры могут завершить работу своих пиров.Это слишком слабое ограничение, я бы хотел ограничить его экземпляром

AWS IAM: разрешить экземпляру EC2 останавливать себя
Политика IAM дляразрешить доступ к API экземпляра EC2 только для изменения самого себя

1 Ответ

2 голосов
/ 07 июля 2019

Вы были близки с вашим condition.Хитрость заключается в том, чтобы сравнить экземпляр ARN с ec2:sourceInstanceARN:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:DeleteTags",
                "ec2:DescribeTags",
                "ec2:CreateTags",
                "ec2:TerminateInstances",
                "ec2:StopInstances"
            ],
            "Resource": "*",
            "Condition": {
                "StringEquals": {
                    "aws:ARN": "${ec2:SourceInstanceARN}"
                }
            }
        }
    ]
}

Ясно, что для целей тестирования я позволил своим экземплярам с этой политикой помечать и останавливать себя.

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