在 IAM 策略中限制 EC2 实例的类型
Posted
技术标签:
【中文标题】在 IAM 策略中限制 EC2 实例的类型【英文标题】:Limit the type of EC2 instance in IAM policy 【发布时间】:2020-12-01 12:28:08 【问题描述】:我想创建一个 IAM 策略,其中 IAM 用户将无法在 us-east-1 区域中启动除 t2.micro Ubuntu 之外的任何实例。我在 IAM 策略中添加了 ami,但 AWS 不仅允许 Ubuntu ami,还允许 IAM 用户启动所有实例。可能是什么问题
"Version": "2012-10-17",
"Statement": [
"Sid": "TheseActionsDontSupportResourceLevelPermissions",
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
,
"Sid": "TheseActionsSupportResourceLevelPermissions",
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:StartInstances"
],
"Resource": "arn:aws:ec2:us-east-1:196687784845:instance/ami-0885b1f6bd170450c"
]
【问题讨论】:
您是说要限制 Instance Type 并且 限制它们使用特定的 AMI?实例类型限制应放在RunInstances
和ModifyInstanceAttribute
上。 AMI 限制应放在RunInstances
。
【参考方案1】:
这应该为您指明正确的方向
"Version":"2012-10-17",
"Statement":[
"Sid":"TheseActionsDontSupportResourceLevelPermissions",
"Effect":"Allow",
"Action":[
"ec2:Describe*"
],
"Resource":"*"
,
"Sid":"TheseActionsSupportResourceLevelPermissions",
"Effect":"Allow",
"Action":[
"ec2:RunInstances",
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:StartInstances"
],
"Resource":"arn:aws:ec2:us-east-1:196687784845:instance/ami-0885b1f6bd170450c",
"Condition":
"ForAnyValue:StringLike":
"ec2:ImageType":"t2.micro"
]
【讨论】:
使用它我也可以启动其他 amis,而我只想要 us-east-1 中的“ami-0885b1f6bd170450c”。感谢您调查它。非常感谢。 "ec2:ImageType | string like | t2.micro 不是此操作支持的条件键。"这似乎是 StartInstance、StopInstance、ec2:TerminateInstances 的错误。【参考方案2】:如果使用了错误的实例类型或错误的 ami,我建议使用 Deny
规则来禁止启动实例。请注意,我删除了 Sid
参数,因为它是可选的。
明确的Deny
规则将覆盖任何Allow
规则。这样可以更轻松地禁止不需要的操作,而不是尝试排除允许的操作。见https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_evaluation-logic.html#policy-eval-denyallow
尝试以下方法:
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Action": [
"ec2:Describe*"
],
"Resource": "*"
,
"Effect": "Allow",
"Action": [
"ec2:RunInstances",
"ec2:TerminateInstances",
"ec2:StopInstances",
"ec2:StartInstances"
],
"Resource": "*"
,
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"Resource": "*",
"Condition":
"StringNotLike":
"ec2:ImageType": "t2.micro"
,
"Effect": "Deny",
"Action": [
"ec2:RunInstances"
],
"NotResource": "arn:aws:ec2:us-east-1:196687784845:instance/ami-0885b1f6bd170450c"
]
【讨论】:
我试过了,它似乎允许启动每个实例,而不是“ami-0885b1f6bd170450c”。感谢回复。非常感谢。以上是关于在 IAM 策略中限制 EC2 实例的类型的主要内容,如果未能解决你的问题,请参考以下文章
如何创建 IAM 策略以根据子网名称标签控制对 Amazon EC2 资源的访问?