我有一个用于培训的AWS账户,有大约20个用户。他们目前都有管理员权限。我试图找出一种增加安全性的方法。从理论上讲,他们都知道不会删除其他资源,但这并不能阻止事故的发生。现在每个人都可以删除/终止彼此的资源。我想构建一个允许用户使用他们创建的资源执行任何操作的策略,但我不希望他们能够修改(主要是删除/终止)其他用户资源。通常情况下,我只是拒绝访问特定资源,但在这种情况下,由于资源是每天或每周构建和销毁的,因此尝试和管理需要很多。我已经考虑过根据资源的ownerId和用户ARN拒绝访问。我一直无法找到在策略语句中获取OwnerId的方法,因此我可以对它们进行字符串比较。我目前正在考虑我目前无法做到的事情,寻找你们可能要做到的任何想法。我有这个政策。
"Statement": {
"Effect": "deny",
"Action": "*",
"Resource": "*",
"Condition": {"StringNotEquals": {"Resource:OwnerId": "AccountID"}}
如果AccountID是用户AccountID,我将不得不为每个用户创建一个策略。但是试图找出如何获取用户试图访问的资源的OwnerId。
答案 0 :(得分:0)
无法创建一个IAM策略来限制基于谁创建资源"的访问权限。这是因为创建者的身份不存储在资源上。 AWS仅检查某人是否有权创建某些内容然后执行此操作。然后,该资源属于该帐户,而不是特定用户。
一些选择:
给每个人一个单独的帐户:这可以保证分离。可以通过Consolidated Billing加入账户以提供一个月结单。然而,它很难分享"资源。
使用标记来标识所有者:请求或强制使用标识来标识创建资源的人员。然后,创建仅在允许标记设置为其标识符时允许某些API调用的IAM规则。如果有没有所有者标记的资源,请将其删除!但是,这需要您自己的代码来执行强制执行,使用AWS Config Rules(通过Lambda)或您自己的代码定期调用API。此外,某些标签只能在创建资源后应用(例如EC2实例),因此需要允许宽限期。
不要让他们直接创建资源:相反,提供一个代表他们创建资源的前端,这也会标记资源。它甚至可以在一段时间后删除资源。