如果我对 AWS 中的 IAM 服务具有读写访问权限,我可以提升我的权限吗?
Can I escalate my privileges if I have read-write access to IAM service in AWS?
我们正试图说服我们公司的人授予开发人员对“开发”帐户中所有服务的全部权限(当前政策不允许开发人员在我们的 AWS 帐户中创建任何东西,因为“安全性”)。
人们说我们可能会授予您对某些服务的全部权限,例如S3,但某些服务(特别是 IAM)将被禁止使用。争论是,如果用户在我们的帐户中 read/write 可以访问 IAM 服务,那么他们将能够授予自己所有类型的权限。
在以下情况下:
- AWS 账户中有两个 S3 存储桶(
s1
和 s2
)。
- 用户
thekashyap
被授予对 s1
的完全控制权,但不是 s2
(他看不到/read/write/access/manage s2
)。
- 用户
thekashyap
被授予对 IAM 服务的完全控制权。
问题:
thekashyap
可以通过在 IAM 中执行某些操作来授予自己访问 s2
的权限吗?
- 能否
thekashyap
创建一个有权访问s2
的新IAM用户?
- 如果对 1 或 2 的回答是肯定的,那么除了撤销
thekashyap
的所有 IAM 权限之外,还有其他方法可以防止它吗?
我读过:
- Limiting other AWS IAM roles from interacting with resources/privilege escalation
- How to avoid privilege escalation in AWS?
还有一些..
是的,用户可以授予对任何和所有 S3 存储桶的访问权限。
是的,用户可以创建可以访问任何和所有存储桶(以及 AWS 账户中的任何其他内容)的新 IAM 用户。
您可以非常具体可以授予哪些 IAM 访问权限(例如,只能将用户置于特定的 IAM 组中),但这可能会带走您最初想要访问 IAM 的原因。
帐户需要是“任何人都可以做任何事情”(结果是其他人可能 modify/destroy 资源 你 创建),或者你需要为每个开发人员提供他们自己的 AWS 帐户,将其视为 'sandbox',其他人无法影响它。
in-between 选项可能是允许用户部署 AWS CloudFormation 堆栈,它可以创建基础设施但(通常)不允许现有基础设施受到影响。
- 是
- 是
- 是的,您可以通过添加存储桶策略来实现。
打开存储桶 > 权限 > 存储桶策略
然后添加类似于以下的策略:
{
"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"
]
}]
}
此策略拒绝用户访问存储桶,即使用户具有管理员权限也是如此。
我们正试图说服我们公司的人授予开发人员对“开发”帐户中所有服务的全部权限(当前政策不允许开发人员在我们的 AWS 帐户中创建任何东西,因为“安全性”)。
人们说我们可能会授予您对某些服务的全部权限,例如S3,但某些服务(特别是 IAM)将被禁止使用。争论是,如果用户在我们的帐户中 read/write 可以访问 IAM 服务,那么他们将能够授予自己所有类型的权限。
在以下情况下:
- AWS 账户中有两个 S3 存储桶(
s1
和s2
)。 - 用户
thekashyap
被授予对s1
的完全控制权,但不是s2
(他看不到/read/write/access/manages2
)。 - 用户
thekashyap
被授予对 IAM 服务的完全控制权。
问题:
thekashyap
可以通过在 IAM 中执行某些操作来授予自己访问s2
的权限吗?- 能否
thekashyap
创建一个有权访问s2
的新IAM用户? - 如果对 1 或 2 的回答是肯定的,那么除了撤销
thekashyap
的所有 IAM 权限之外,还有其他方法可以防止它吗?
我读过:
- Limiting other AWS IAM roles from interacting with resources/privilege escalation
- How to avoid privilege escalation in AWS?
还有一些..
是的,用户可以授予对任何和所有 S3 存储桶的访问权限。
是的,用户可以创建可以访问任何和所有存储桶(以及 AWS 账户中的任何其他内容)的新 IAM 用户。
您可以非常具体可以授予哪些 IAM 访问权限(例如,只能将用户置于特定的 IAM 组中),但这可能会带走您最初想要访问 IAM 的原因。
帐户需要是“任何人都可以做任何事情”(结果是其他人可能 modify/destroy 资源 你 创建),或者你需要为每个开发人员提供他们自己的 AWS 帐户,将其视为 'sandbox',其他人无法影响它。
in-between 选项可能是允许用户部署 AWS CloudFormation 堆栈,它可以创建基础设施但(通常)不允许现有基础设施受到影响。
- 是
- 是
- 是的,您可以通过添加存储桶策略来实现。
打开存储桶 > 权限 > 存储桶策略
然后添加类似于以下的策略:
{
"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"
]
}]
}
此策略拒绝用户访问存储桶,即使用户具有管理员权限也是如此。