如果请求者不是资源所有者,则AWS策略拒绝访问AWS资源

时间:2016-02-24 19:17:17

标签: amazon-web-services amazon-s3 amazon-ec2 amazon-iam

我有一个用于培训的AWS账户,有大约20个用户。他们目前都有管理员权限。我试图找出一种增加安全性的方法。从理论上讲,他们都知道不会删除其他资源,但这并不能阻止事故的发生。现在每个人都可以删除/终止彼此的资源。我想构建一个允许用户使用他们创建的资源执行任何操作的策略,但我不希望他们能够修改(主要是删除/终止)其他用户资源。通常情况下,我只是拒绝访问特定资源,但在这种情况下,由于资源是每天或每周构建和销毁的,因此尝试和管理需要很多。我已经考虑过根据资源的ownerId和用户ARN拒绝访问。我一直无法找到在策略语句中获取OwnerId的方法,因此我可以对它们进行字符串比较。我目前正在考虑我目前无法做到的事情,寻找你们可能要做到的任何想法。我有这个政策。

"Statement": {
"Effect": "deny",
"Action": "*",
"Resource": "*",
"Condition": {"StringNotEquals": {"Resource:OwnerId": "AccountID"}}

如果AccountID是用户AccountID,我将不得不为每个用户创建一个策略。但是试图找出如何获取用户试图访问的资源的OwnerId。

1 个答案:

答案 0 :(得分:0)

无法创建一个IAM策略来限制基于谁创建资源"的访问权限。这是因为创建者的身份不存储在资源上。 AWS仅检查某人是否有权创建某些内容然后执行此操作。然后,该资源属于该帐户,而不是特定用户。

一些选择:

  • 给每个人一个单独的帐户:这可以保证分离。可以通过Consolidated Billing加入账户以提供一个月结单。然而,它很难分享"资源。

  • 使用标记来标识所有者:请求或强制使用标识来标识创建资源的人员。然后,创建仅在允许标记设置为其标识符时允许某些API调用的IAM规则。如果有没有所有者标记的资源,请将其删除!但是,这需要您自己的代码来执行强制执行,使用AWS Config Rules(通过Lambda)或您自己的代码定期调用API。此外,某些标签只能在创建资源后应用(例如EC2实例),因此需要允许宽限期。

  • 不要让他们直接创建资源:相反,提供一个代表他们创建资源的前端,这也会标记资源。它甚至可以在一段时间后删除资源。