Назад | Перейти на главную страницу

Роль AWS IAM для использования в классе

Я пытаюсь создать роль AWS IAM для использования в классе.

Цель состоит в том, чтобы иметь одну учетную запись для централизованного выставления счетов, но у каждого студента есть набор учетных данных для входа в консоль AWS, которым они могут управлять определенными ресурсами. Например, я хочу, чтобы пользователи могли запускать / останавливать экземпляры EC2 в us-east-1 размера t2.micro или t2.small на основе официальных AMI.

Насколько я понимаю, это сценарий 2 из https://d0.awsstatic.com/whitepapers/aws-setting-up-multiuser-environments-education.pdf. Однако я не могу найти рабочих примеров политик IAM.

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

Важно, чтобы только пользователи, которые создают экземпляр, просматривают / управляют им.

Вот что я пробовал:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeImages", "ec2:DescribeKeyPairs", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups" ], "Resource": [ "arn:aws:ec2:us-east-1:account:instance/*", "arn:aws:ec2:us-east-1:account:key-pair/*", "arn:aws:ec2:us-east-1:account:security-group/*", "arn:aws:ec2:us-east-1:account:network-interface/*", "arn:aws:ec2:us-east-1:account:volume/*" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:us-east-1:account:instance/*", "arn:aws:ec2:us-east-1:account:key-pair/*", "arn:aws:ec2:us-east-1:account:security-group/*", "arn:aws:ec2:us-east-1:account:network-interface/*", "arn:aws:ec2:us-east-1:account:volume/*" ] }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:us-east-1:account:instance:instance/*" ], "Condition": { "StringEquals": { "ec2:InstanceType": "t1.small" } } }, { "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:us-east-1::image/ami-*" ], "Condition": { "StringEquals": { "ec2:Owner": "amazon" } } }, { "Effect": "Allow", "Action": [ "ec2:TerminateInstances", "ec2:StopInstances", "ec2:StartInstances" ], "Resource": "arn:aws:ec2:us-east-1:account:instance/*" } ] }

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

Важно, чтобы только те пользователи, которые создают экземпляр, просматривают / управляют им.

Это очень сложно сделать с пользователями в одной учетной записи (и технический документ, на который вы ссылаетесь, не дает никаких обещаний по этому поводу). Вы можете легко ограничить фактический доступ к оболочке экземпляра с помощью ключей SSH, но части управления экземпляром на уровне AWS сложнее разделить. Разрешения EC2 IAM не предлагают статически определяемого способа разрешить конкретному пользователю создать экземпляр, а затем быть единственным пользователем, который может изменить или завершить этот экземпляр. (Вы можете ограничить возможность завершения и изменения экземпляра пользователя только конкретным экземпляром, используя идентификатор экземпляра, который создается только после того, как этот экземпляр был создан.) (Кроме того, вы также не сможете ограничить количество экземпляров, которые один пользователь может запускать одновременно. Опять же, возможности AWS просто не предлагаются.)

Если вы хотите такое разделение способностей, вам нужно будет использовать сценарий 1 (вы создаете экземпляры и управляете ими, и каждый студент получает уникальный ключ ssh только на своем назначенном сервере) или 3 (каждый студент получает отдельную учетную запись. (хотя, опять же, вы, вероятно, захотите создать и управлять ролями IAM и ограничениями экземпляров для каждой учетной записи, чтобы предотвратить непредвиденные расходы).