【发布时间】:2016-03-21 00:57:51
【问题描述】:
是否可以对临时安全凭证应用资源限制?
例如,每个凭证只允许启动 1x 小实例。
如果不是通过 IAM,是否还有其他挂钩?我无法将 root 帐户限制为单个实例,它必须在用户级别。
谢谢
本
【问题讨论】:
-
您可以将实例限制为特定类型(如 t2.small),但没有 IAM 策略来限制实例数量。
标签: amazon-web-services amazon-ec2 amazon-iam
是否可以对临时安全凭证应用资源限制?
例如,每个凭证只允许启动 1x 小实例。
如果不是通过 IAM,是否还有其他挂钩?我无法将 root 帐户限制为单个实例,它必须在用户级别。
谢谢
本
【问题讨论】:
标签: amazon-web-services amazon-ec2 amazon-iam
没有办法(据我所知)使用 IAM 来控制特定用户可以启动的实例数量。但是,您可以通过在 VPC 中创建一个小型子网并将实例的启动限制在该子网中来实现相同的效果。
如果您使用 CIDR 范围 10.120.10.0/28 创建 subnet-abcd1234,它将在子网中为您提供总共 14 个 IP。根据AWS documenation,IP 1、2 和 3 被保留。这样一来,您就只有 11 个可用 IP。
在您的 IAM 策略中,您可以拒绝在任何其他子网中启动实例:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
},
"Action": "ec2:RunInstances",
"Resource": [
"arn:aws:ec2:eu-west-1:123456789012:network-interface/*"
],
"Condition": {
"ArnNotEquals": {
"ec2:Subnet": "arn:aws:ec2:eu-west-1:123456789012:subnet/subnet-abcd1234"
}
}
}
]
}
eu-west-1 是区域,123456789012 是您的 AWS 账户 ID。
如果您想确保子网中只能运行一个实例,您可以创建 ENI(弹性网络接口),而无需将它们附加到实例。以下是使用 Python 创建接口的方法:
import boto.ec2
connection = boto.ec2.connect_to_region("eu-west-1")
connection.create_network_interface(subnet_id="subnet-abcd1234",
description="placeholder ENI")
如果您创建 10 个 ENI,则尝试在子网中启动多个实例将导致错误,因为没有更多可用 IP。
【讨论】: