如何限制用户将 public S3 对象创建到私有存储桶中
How to restrict users to create a public S3 object into a private bucket
我创建了一个本质上是私有的 Amazon S3 存储桶,但我不希望我的用户在该存储桶中创建任何 public 对象。我应该如何通过该存储桶的 S3 策略来做到这一点?我试过了,但收到一条错误消息,指出该政策的资源无效。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyPublicReadGetObject",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
" arn:aws:s3:::aws-my-bucket-s3-vk/*"
]
}
]
}
用户应该能够访问存储桶并从具有必要权限的 EC2 实例内部创建新的object/get对象。
在 S3 控制台上,在存储桶名称之后有访问列,应该是 "bucket and object cannot be public"。
默认情况下,所有 Amazon S3 存储桶都是私有的。除非通过 IAM 策略、存储桶策略或对象级权限授予权限,否则任何人都不能 access/use 存储桶或其内容。
您似乎希望特定的 Amazon EC2 实例能够使用存储桶。因此:
- 创建一个 IAM 角色
- 向 IAM 角色授予所需的权限(例如,该存储桶上的
PutObject
和 GetObject
)
- 分配 IAM 角色给 Amazon EC2 实例
- EC2 实例上的应用程序随后将能够访问存储桶
不需要使用Deny
政策。它将始终覆盖其他策略。最好使用 Allow
策略来授予访问权限,但仅限于所需的实体。
以下是一些政策示例:User Policy Examples - Amazon Simple Storage Service
您应该在 S3 存储桶上启用 Block Public Access。这将防止任何人在该存储桶中创建对象 public。您还应该限制哪些 IAM users/roles/policies 有权修改块 Public 访问设置。
Amazon S3 阻止 public 访问设置将覆盖 S3 存储桶策略和对象级权限以阻止 public 访问。
我创建了一个本质上是私有的 Amazon S3 存储桶,但我不希望我的用户在该存储桶中创建任何 public 对象。我应该如何通过该存储桶的 S3 策略来做到这一点?我试过了,但收到一条错误消息,指出该政策的资源无效。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyPublicReadGetObject",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": [
" arn:aws:s3:::aws-my-bucket-s3-vk/*"
]
}
]
}
用户应该能够访问存储桶并从具有必要权限的 EC2 实例内部创建新的object/get对象。
在 S3 控制台上,在存储桶名称之后有访问列,应该是 "bucket and object cannot be public"。
默认情况下,所有 Amazon S3 存储桶都是私有的。除非通过 IAM 策略、存储桶策略或对象级权限授予权限,否则任何人都不能 access/use 存储桶或其内容。
您似乎希望特定的 Amazon EC2 实例能够使用存储桶。因此:
- 创建一个 IAM 角色
- 向 IAM 角色授予所需的权限(例如,该存储桶上的
PutObject
和GetObject
) - 分配 IAM 角色给 Amazon EC2 实例
- EC2 实例上的应用程序随后将能够访问存储桶
不需要使用Deny
政策。它将始终覆盖其他策略。最好使用 Allow
策略来授予访问权限,但仅限于所需的实体。
以下是一些政策示例:User Policy Examples - Amazon Simple Storage Service
您应该在 S3 存储桶上启用 Block Public Access。这将防止任何人在该存储桶中创建对象 public。您还应该限制哪些 IAM users/roles/policies 有权修改块 Public 访问设置。
Amazon S3 阻止 public 访问设置将覆盖 S3 存储桶策略和对象级权限以阻止 public 访问。