Amazon web services 如何在IAM策略中限制所有者使用AWS AMI?

Amazon web services 如何在IAM策略中限制所有者使用AWS AMI?,amazon-web-services,amazon-iam,Amazon Web Services,Amazon Iam,以下是一个精简但格式化的策略片段: { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:us-east-1::image/ami-*" ], "Condition": { "StringEquals":

以下是一个精简但格式化的策略片段:

{
   "Version": "2012-10-17",
   "Statement": [{
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1::image/ami-*"
      ],
      "Condition": {
         "StringEquals": {
            "ec2:Owner": "987654321000"
         }
      }
   },
   {
      "Effect": "Allow",
      "Action": "ec2:RunInstances",
      "Resource": [ 
         "arn:aws:ec2:us-east-1:000123456789:instance/*",
         "arn:aws:ec2:us-east-1:000123456789:subnet/*",
         "arn:aws:ec2:us-east-1:000123456789:volume/*",
         "arn:aws:ec2:us-east-1:000123456789:network-interface/*",
         "arn:aws:ec2:us-east-1:000123456789:key-pair/*",
         "arn:aws:ec2:us-east-1:000123456789:security-group/*"
         ]
      }
   ]
}
假设000123456789是策略处于活动状态的帐户。 假设987654321000是AMI共享的帐户,并且是所有者

此策略在策略模拟器中失败,我应用了正确的条件条目,并且在目标帐户中未按预期工作-它失败

我忽略了什么

当我读到这篇文章时:

允许ec2:使用us-east-1中的任何AMI在us-east-1中运行实例,其中所有者为98765432100,给定目标帐户000123456789中位于us-east-1中的任何实例、子网、卷、eni、密钥对或sg


是什么导致了这个失败?

我认为这就是你想要的,用AMI使用代替角色创建


基于使用

你的政策对我来说很有效。以下是我所做的:

创建了一个新的IAM用户,并通过aws configure-profile foo存储了他们的凭据 向该IAM用户提供了您的策略,但是: 更改区域我使用ap-东南-2 将000123456789更改为我的帐户ID 在其他帐户中创建AMI,与第一个帐户共享,并将987654321000更改为该帐户的ID 从AWS CLI启动了一个实例: 它成功地启动了实例。但是,从其他帐户指定AMI会导致启动失败


我注意到的一点是,使用AWS提供的AMI启动需要将ec2:Owner设置为amazon,而不是帐号。

Close。应用权限边界是一个很好的实践,您希望让您的开发人员实现敏捷——假设您将PB定义为您愿意接受的最大爆炸半径。我用这些来降低风险。不过,在上面的例子中,逻辑让我有些失望。假设上面的政策就是它的全部——没有别的了。如果我运行ec2:RunInstances,在满足条件的情况下,应该会得到一个允许的结果,但它失败了——没有太多关于原因的信息。谢谢——我不是疯了,这确实在某些地方起作用。数学不是坏的。不管怎样,在政治之外,虚假并不等于真实。狗和猫不能和谐地生活在一起。没有集体歇斯底里症。
aws ec2 run-instances --image-id ami-xxx --security-group-id sg-xxx --instance-type t2.nano --region ap-southeast-2 --profile xxx