如果我对 AWS 中的 IAM 服务具有读写访问权限,我可以提升我的权限吗?

Can I escalate my privileges if I have read-write access to IAM service in AWS?

我们正试图说服我们公司的人授予开发人员对“开发”帐户中所有服务的全部权限(当前政策不允许开发人员在我们的 AWS 帐户中创建任何东西,因为“安全性”)。

人们说我们可能会授予您对某些服务的全部权限,例如S3,但某些服务(特别是 IAM)将被禁止使用。争论是,如果用户在我们的帐户中 read/write 可以访问 IAM 服务,那么他们将能够授予自己所有类型的权限。

在以下情况下:

问题:

  1. thekashyap 可以通过在 IAM 中执行某些操作来授予自己访问 s2 的权限吗?
  2. 能否thekashyap创建一个有权访问s2的新IAM用户?
  3. 如果对 1 或 2 的回答是肯定的,那么除了撤销 thekashyap 的所有 IAM 权限之外,还有其他方法可以防止它吗?

我读过:

还有一些..

  1. 是的,用户可以授予对任何和所有 S3 存储桶的访问权限。

  2. 是的,用户可以创建可以访问任何和所有存储桶(以及 AWS 账户中的任何其他内容)的新 IAM 用户。

  3. 您可以非常具体可以授予哪些 IAM 访问权限(例如,只能将用户置于特定的 IAM 组中),但这可能会带走您最初想要访问 IAM 的原因。

帐户需要是“任何人都可以做任何事情”(结果是其他人可能 modify/destroy 资源 创建),或者你需要为每个开发人员提供他们自己的 AWS 帐户,将其视为 'sandbox',其他人无法影响它。

in-between 选项可能是允许用户部署 AWS CloudFormation 堆栈,它可以创建基础设施但(通常)不允许现有基础设施受到影响。

  1. 是的,您可以通过添加存储桶策略来实现。

打开存储桶 > 权限 > 存储桶策略

然后添加类似于以下的策略:

{
    "Version": "2012-10-17",
    "Statement": [{
        "Effect": "Deny",
        "Principal": {
            "AWS": "arn:aws:iam::ACCOUNT_ID:user/USERNAME"
        },
        "Action": "s3:*",
        "Resource": [
            "arn:aws:s3:::YOUR_BUCKET_NAME/*",
            "arn:aws:s3:::YOUR_BUCKET_NAME"
        ]

    }]
}

此策略拒绝用户访问存储桶,即使用户具有管理员权限也是如此。