用于课堂内的 AWS IAM 角色

用于课堂内的 AWS IAM 角色

我正在尝试创建一个可在课堂上使用的 AWS IAM 角色。

目标是拥有一个用于集中计费的帐户,但每个学生都有一组凭证来登录 AWS 控制台,以便管理某些资源。例如,我希望用户能够根据官方 AMI 启动/停止 us-east-1 中大小为 t2.micro 或 t2.small 的 EC2 实例。

据我了解,这是情景 2https://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/*" } ] }

我假设帐户是一个特殊的关键字,指的是应用该策略的帐户。

答案1

重要的是,只有创建实例并查看/管理它们的用户。

对于同一帐户中的用户来说,这非常困难(您链接到的白皮书对此不作任何承诺)。您可以通过 SSH 密钥轻松限制实际的实例 shell 访问,但 AWS 级实例管理部分更难分离。EC2 IAM 权限不提供静态可定义的方式来允许特定用户创建实例,然后成为唯一可以修改或终止该实例的用户。(您只能使用实例 ID 将用户的实例终止和修改能力限制到特定实例,该 ID 仅在创建该实例后创建。)(顺便说一句,您也无法限制单个用户可以同时运行的实例数量。同样,AWS 根本不提供此功能。)

如果您想要这种能力分离,那么您要么需要采用白皮书场景 1(您创建和管理实例,并且每个学生在其指定的服务器上获得一个唯一的 ssh 密钥)或 3(每个学生获得一个单独的帐户,尽管您可能再次希望为每个帐户创建和管理 IAM 角色和实例限制,以防止意外开支)。

相关内容