gpt4 book ai didi

amazon-web-services - 如何通过网络限制S3存储桶访问

转载 作者:行者123 更新时间:2023-12-02 03:51:53 25 4
gpt4 key购买 nike

我想允许公众读取我的 S3 存储桶(2 个文件夹除外)。

在 2 个文件夹中,我希望仅允许来自特定网络的访问者访问。

有没有办法定义它?

最佳答案

有多种不同的方法可以授予对 Amazon S3 中存储的数据的访问权限:

  • 对各个对象本身的权限(不鼓励)
  • 存储桶策略,授予对整个存储桶或目录的访问权限
  • IAM 用户策略,向特定 IAM 用户/组授予权限
  • 预签名 URL,授予对对象的临时、限时访问权限(适合通过应用程序以编程方式授予访问权限)

您的用例适合 Bucket Policies .

您可以使用如下策略授予对整个 Amazon S3 存储桶的访问权限:

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action":["s3:GetObject"],
"Resource":["arn:aws:s3:::examplebucket/*"]
}
]
}

您可以根据 IP 地址范围授予访问权限,如下所示:

{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"},
"NotIpAddress": {"aws:SourceIp": "54.240.143.188/32"}
}
}
]
}

您希望“允许公共(public)读取访问我的 S3 存储桶(2 个文件夹除外)”的情况稍微困难一些,因为这是一个“除 2 个文件夹之外的所有内容”用例。

选项 1:特定文件夹

  • 授予公众对特定文件夹的访问权限,并且
  • 授予对特定文件夹的受限访问权限

例如:

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource":["arn:aws:s3:::examplebucket/folder1/*",
"arn:aws:s3:::examplebucket/folder2/*"]
},
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::examplebucket/folder3/*",
"arn:aws:s3:::examplebucket/folder4/*"],
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
]
}

但是,这需要您专门列出每个文件夹。

选项 2:除...之外的所有内容

在此规则中,您授予公共(public)访问权限,但如果某些文件夹不是来自正确的 IP 范围,则拒绝它们:

{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"AddPerm",
"Effect":"Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource":["arn:aws:s3:::examplebucket/*"]
},
{
"Sid": "IPAllow",
"Effect": "Deny",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": ["arn:aws:s3:::examplebucket/folder3/*",
"arn:aws:s3:::examplebucket/folder4/*"],
"Condition": {
"NotIpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
]
}

请注意将 DenyNotIpAddress 一起使用,表示如果请求不是来自定义的 IP 地址范围,则拒绝访问。

但是,DENY 会覆盖 ALLOW,因此这也意味着您将无法访问受限存储桶,除非您来自该 IP 地址范围 - 即使如果您的 IAM 用户已被明确授予 ALLOW 权限,则可以执行此操作。例如,如果您是在 S3 中拥有所有权限的管理员,但如果您来自给定的 IP 范围,您仍然会被拒绝访问受限文件夹。因此,它对您来说可能限制太多,因为它会影响所有使用,即使通过控制台/API 访问也是如此。

关于amazon-web-services - 如何通过网络限制S3存储桶访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45175966/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com