如何将自己和所有管理员锁定在 S3 存储桶之外?



>我需要创建一个 S3 存储桶并为我们公司的 2 个用户分配权限。但只有这 2 个用户才能对它进行任何形式的访问。

有几个用户,包括我自己,具有管理权限。我需要撤销对所有人的访问权限,包括我自己。我需要确保没有人可以撤销这种撤销,即使是我自己。

这可能吗?

你想要使用 NotPrincipal Deny 模式。 使用 S3 资源策略

  1. 拒绝除具有访问权限的用户之外的所有人
  2. 允许需要访问权限的 2 个用户。 您可以按照下面所述在资源策略中添加访问权限,也可以将其附加到其 IAM 身份策略中。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOthers",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"USER_ARN"
]
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::BUCKET",
"arn:aws:s3:::BUCKET/*"
]
},
{
"Sid": "DenyOthers",
"Effect": "Allow",
"Principal": {
"AWS": [
"USER_ARN"
]
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::BUCKET",
"arn:aws:s3:::BUCKET/*"
]
}
]
}

但是,由于您是管理员,除非您成为根用户,否则您只是将自己锁定在存储桶的管理员之外。因此,您可能需要考虑授予自己没有任何对象访问权限的存储桶权限。

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOthers",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"USER_ARNs",
"ADMIN_ARNs"
]
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::BUCKET",
"arn:aws:s3:::BUCKET/*"
]
},
{
"Sid": "DenyUsersAdminAccess",
"Effect": "Deny",
"Principal": {
"AWS": [
"USER_ARN"
]
},
"NotAction": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::BUCKET"
]
},
{
"Sid": "AllowUsersAccess",
"Effect": "Allow",
"Principal": {
"AWS": [
"USER_ARN"
]
},
"Action": [
"s3:AbortMultipartUpload",
"s3:ListMultipartUploadParts",
"s3:DeleteObject*",
"s3:PutObject*",
"s3:GetObject*",
"s3:RestoreObject*",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::BUCKET",
"arn:aws:s3:::BUCKET/*"
]
},
{
"Sid": "DenyAdminObjectAccess",
"Effect": "Deny",
"Principal": {
"AWS": [
"ADMIN_ARN"
]
},
"Action": [
"s3:*"
],
"Resource": [
"arn:aws:s3:::BUCKET/*",
]
},
{
"Sid": "AllowAdminAccess",
"Effect": "Allow",
"Principal": {
"AWS": [
"ADMIN_ARN"
]
},
"NotAction": [
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::BUCKET",
]
},
]
}

我在管理员访问权限上走了捷径,只在资源中包含存储桶,而不是任何对象 (BUCKET/(。 此外,由于大多数管理员在 IAM 身份策略中都有 S3:访问权限,因此我添加了显式拒绝管理员对象访问以确保。

警告:在您具有根访问权限的账户中测试作为拒绝策略,因为拒绝策略可以轻松地将所有人锁定在存储桶之外。

执行此操作的最佳方法是创建一个单独的 AWS 账户,以便没有人可以访问。这在处理敏感信息(如人力资源数据(时很常见。这些账户可以通过AWS 组织进行连接。

如果您确实想在同一账户中执行此操作,则需要创建一个存储桶策略,该策略拒绝除两个给定用户之外的所有权限。然后,可以撤消这些权限的唯一方法是通过这两个用户(如果他们被授予这样做的权限(或通过帐户的root登录名。

使用此类Deny策略时,事情会变得有点困难和混乱,因为您可能会无意中锁定所有人。因此,我建议使用单独的帐户。

最新更新