как создать политику облачной информации ec2 с instancetype t2.micro - PullRequest
1 голос
/ 07 апреля 2020

Я пытаюсь создать политику, в которой какой-либо пользователь может запустить экземпляр с помощью amid: ami-0fc61db8544a617ed Speci c и instancetype: t2.micro в указанном c регионе с указанным c хранилищем, например, 8 ГБ. У меня есть это Шаблон

AWSTemplateFormatVersion: 2010-09-09
    Description: ---
      Policita para usuarios test
    Parameters:
      GroupTest1Parameter:
        Type: String
        Default: GroupTest1
        Description: Este es el valor de entrada GroupTest1Parameter
    Resources:
      PolictyTest1:
        Type: AWS::IAM::Policy
        Properties:
          PolicyName: PolictyTest1
          Groups:
            - Fn::ImportValue: !Sub "${GroupTest1Parameter}-VPCID"
          PolicyDocument:
            Version: '2012-10-17'
            Statement:
              - Effect: Allow
                Action:
                  - 'ec2:RunInstances'
                  - 'cloudformation:Describe*'
                  - 'cloudformation:List*'
                  - 'cloudformation:Get*'
                Resource: 'arn:aws:ec2:*:*:instance/*'
                # Condition:
                #   StringEquals: 
                #     ec2:ImageType: ami-0fc61db8544a617ed
    Outputs:
      PolictyTest1:
        Description: politica que deniega
        Value: !Ref PolictyTest1
        Export:
          Name: !Sub "${AWS::StackName}-VPCID"

Но это не работает. Шаблон создается нормально, но когда я пытаюсь проверить политику с помощью пользовательского теста, связанного с этой политикой, он не может запустить экземпляры ec2. Я читаю https://docs.aws.amazon.com/IAM/latest/UserGuide/list_amazonec2.html#amazonec2 -actions-as-permissions

1 Ответ

0 голосов
/ 07 апреля 2020

Чтобы проверить ваш сценарий, я сделал следующее:

  • Создал пользователя IAM
  • Назначил пользователю эту встроенную политику:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:ACCOUNT:network-interface/*",
                "arn:aws:ec2:*:ACCOUNT:volume/*",
                "arn:aws:ec2:*:ACCOUNT:key-pair/*",
                "arn:aws:ec2:*:ACCOUNT:security-group/*",
                "arn:aws:ec2:*:ACCOUNT:subnet/*",
                "arn:aws:ec2:*::image/ami-*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": "ec2:RunInstances",
            "Resource": [
                "arn:aws:ec2:*:ACCOUNT:instance/*"
            ],
            "Condition": {
                "StringEquals": {
                    "ec2:InstanceType": "t2.micro"
                }
            }
        }
    ]
}

(где ACCOUNT было установлено для моего AWS идентификатора учетной записи.)

После этого я смог успешно запустить экземпляр t2.micro, используя:

aws ec2 run-instances --image-id ami-xxx --security-group-id sg-xxx --instance-type t2.micro

I попытался изменить его на t2.nano и получил ошибку UnauthorizedOperation.

Обратите внимание, что приведенная выше команда run-instances была минимальной. Он намеренно не пытался указать такие вещи, как:

  • Роль IAM
  • Теги
  • Пара ключей

Эти элементы требуют предоставления дополнительных разрешения для пользователя. Поэтому при тестировании вашей политики используйте минимальный набор требований (аналогичный приведенному выше) для тестирования политики.

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