【问题标题】:Is there an S3 policy for limiting access to only see/access one bucket?是否有限制访问仅查看/访问一个存储桶的 S3 策略?
【发布时间】:2011-09-30 16:56:05
【问题描述】:

我的 S3 和其他包含备份等的存储桶上有一个看起来像 images.mysite.com 的简单存储桶。

我希望允许特定用户能够访问 images.mysite.com 存储桶以上传图片。但是,我不希望他看到任何其他桶;甚至不存在。

我无法制定这样的政策;每次我尝试一些限制性的东西时,它最终都会阻止任何存储桶的列表。

【问题讨论】:

标签: amazon-s3 policy bucket


【解决方案1】:

与上述其他人描述的类似:

{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket"
         ],
         "Resource":"arn:aws:s3:::awsexamplebucket"
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:PutObject",
            "s3:GetObject"
         ],
         "Resource":"arn:aws:s3:::awsexamplebucket/*"
      }
   ]
}

然而,这是缺少的部分。虽然无法通过 S3->Home 访问存储桶,但可以通过直接链接仅访问所需的存储桶。

https://s3.console.aws.amazon.com/s3/buckets/yourawsbucket/

您可以在以下帖子中找到更多信息:

https://aws.amazon.com/premiumsupport/knowledge-center/s3-console-access-certain-bucket/

【讨论】:

    【解决方案2】:

    我找到了这个解决方案:
    AWS FLOW:

    存储桶策略:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:*",
          "Resource": [
            "arn:aws:s3:::MyExampleBucket",
            "arn:aws:s3:::MyExampleBucket/*"
          ],
          "Condition": {
            "StringNotLike": {
              "aws:userId": [
                "AROAEXAMPLEID:*", #Role ID
                "111111111111" #AccountID
              ]
            }
          }
        }
      ]
    }

    IAM 政策:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Deny",
          "Principal": "*",
          "Action": "s3:*",
          "Resource": [
            "arn:aws:s3:::MyExampleBucket",
            "arn:aws:s3:::MyExampleBucket/*"
          ],
          "Condition": {
            "StringNotLike": {
              "aws:userId": [
                "AROAEXAMPLEID:*",  #Role ID
                "AIDAEXAMPLEID",  #UserID
                "111111111111"  #AccountID
              ]
            }
          }
        }
      ]
    }

    aws iam get-user --user-name USER-NAME --profile=ExampleProfile

    aws iam get-role --role-name ROLE-NAME --profile=ExampleProfile

    来源:https://aws.amazon.com/blogs/security/how-to-restrict-amazon-s3-bucket-access-to-a-specific-iam-role/

    附: 小心存储桶策略,你可以在没有权限的情况下置身事外

    【讨论】:

      【解决方案3】:

      试试这个政策。用户不能列出任何存储桶,他们必须使用直接链接到允许的存储桶。

      例如:s3.console.aws.amazon.com/s3/buckets/bucketname/?region=us-east-1&tab=overview

      {
        "Statement": [
          {
            "Action": [
              "s3:ListBucket"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::bucketname"
            ]
          },
          {
            "Action": [
              "s3:PutObject",
              "s3:GetObject"
            ],
            "Effect": "Allow",
            "Resource": [
              "arn:aws:s3:::bucketname*"
            ]
          },
      
        ],
        "Version": "2012-10-17"
      }
      

      【讨论】:

        【解决方案4】:

        不,目前无法限制用户在根目录或其他任何位置查看选择性存储桶。您现在只有这 3 个选项。

        我选择让客户端明确使用存储桶名称。

        【讨论】:

          【解决方案5】:

          正如上面已经充分讨论过的,在控制台上只列出一个存储桶是不可能的。但如果 S3 存储桶的访问权限附加到 IAM,如果存储桶的 URL 可用,IAM 可以直接访问该存储桶。 S3 存储桶网址如下:

          https://s3.console.aws.amazon.com/s3/buckets/BucketName

          BucketName 是 IAM 有权访问的存储桶的名称

          【讨论】:

          • 我认为这也是2018年唯一可行的解​​决方案。
          【解决方案6】:

          我已经尝试了一段时间,终于想出了一个可行的解决方案。您必须根据您正在执行的操作类型使用不同的“资源”。此外,我在上一个答案中包含了一些缺失的操作(如DeleteObject)并限制了更多操作(如PutBucketAcl)。

          以下 IAM 政策现在对我有效:

          {
            "Version": "2012-10-17",
            "Statement": [
              {
                "Effect": "Allow",
                "Action": [
                  "s3:ListBucket",
                  "s3:GetBucketLocation",
                  "s3:ListBucketMultipartUploads"
                ],
                "Resource": "arn:aws:s3:::itnighq",
                "Condition": {}
              },
              {
                "Effect": "Allow",
                "Action": [
                  "s3:AbortMultipartUpload",
                  "s3:DeleteObject",
                  "s3:DeleteObjectVersion",
                  "s3:GetObject",
                  "s3:GetObjectAcl",
                  "s3:GetObjectVersion",
                  "s3:GetObjectVersionAcl",
                  "s3:PutObject",
                  "s3:PutObjectAcl",
                  "s3:PutObjectVersionAcl"
                ],
                "Resource": "arn:aws:s3:::itnighq/*",
                "Condition": {}
              },
              {
                "Effect": "Allow",
                "Action": "s3:ListAllMyBuckets",
                "Resource": "*",
                "Condition": {}
              }
            ]
          }
          

          关于桶的动作和关于对象的动作必须有不同的arn。

          【讨论】:

          • 这是一个很好的答案,谢谢。可能值得注意的是 s3:ListAllMyBuckets 权限的含义是该策略的接收者可以看到您的所有(根)存储桶。没有直接的数据披露,但可能存在围绕存储桶名称的敏感性/混淆。删除此特定权限是可行的,事情应该仍然有效(尽管“s3cmd ls”等不会返回目标存储桶)。
          • 这不会阻止用户查看其他存储桶名称!
          • @metdos 您可以通过删除最后一个策略来阻止用户看到其他存储桶名称。
          • 为了在控制台中查看存储桶列表(并因此使用控制台访问存储桶),您必须 授予 ListAllMyBucketsGetBucketLocation所有 S3 存储桶("arn:aws:s3:::*" 将起作用,而不是"*" 用于资源)。正如this AWS blog post 中所述,“顺便说一句,您目前无法选择性地过滤掉某些存储桶,因此用户必须有权列出所有存储桶以供控制台访问。”
          • 这是一个可怕的建议。这是危险的,特别是 OP 不想要的。请参阅Andreas StankewitzBFar 的答案,了解可行的解决方法。
          【解决方案7】:

          我们想出的一个很好的简单解决方案是阻止用户登录到根目录。因此,他们必须使用设置为所需文件夹的远程路径登录。

           {
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": "s3:*",
                  "Resource": "arn:aws:s3:::folder-name*",
                  "Condition": {}
              }
          ]
          }
          

          【讨论】:

            【解决方案8】:

            虽然无法将 s3:ListAllMyBuckets 操作限制为特定存储桶,但作为解决方法,您可以向他们发送特定存储桶的控制台 URL,例如

            • https://s3.console.aws.amazon.com/s3/buckets/BUCKET_NAME/

            来源:Restricting list of S3 buckets from the S3 Console

            为此,您需要为给定用户或组指定以下策略文档:

            {
                "Version": "2012-10-17",
                "Statement": [
                    {
                        "Effect": "Allow",
                        "Action": [
                            "s3:ListBucket",
                            "s3:GetBucketLocation",
                            "s3:ListBucketMultipartUploads"
                        ],
                        "Resource": [
                            "arn:aws:s3:::my-bucket-1",
                            "arn:aws:s3:::my-bucket-2"
                        ]
                    },
                    {
                        "Effect": "Allow",
                        "Action": [
                            "s3:AbortMultipartUpload",
                            "s3:DeleteObject",
                            "s3:DeleteObjectVersion",
                            "s3:GetObject",
                            "s3:GetObjectAcl",
                            "s3:GetObjectVersion",
                            "s3:GetObjectVersionAcl",
                            "s3:PutObject",
                            "s3:PutObjectAcl",
                            "s3:PutObjectVersionAcl"
                        ],
                        "Resource": [
                            "arn:aws:s3:::my-bucket-1/*",
                            "arn:aws:s3:::my-bucket-2/*"
                        ]
                    },
                    {
                        "Effect": "Allow",
                        "Action": [
                            "s3:ListAllMyBuckets"
                        ],
                        "Resource": "arn:aws:s3:::*"
                    }
                ]
            }
            

            my-bucket-1my-bucket-2 是您提供读写访问权限的存储桶。

            相关:

            【讨论】:

              【解决方案9】:

              这对我来说很完美。用户可以上传、下载和获取文件列表,但无法查看其他存储桶中的文件。

               {    
              
              "Statement": [    
              
              {
                  "Effect": "Allow",
                  "Action": [
                      "s3:GetObject",
                      "s3:PutObject",
                      "s3:GetObjectAcl",
                      "s3:PutObjectAcl",
                      "s3:ListBucket",
                      "s3:GetBucketAcl",
                      "s3:PutBucketAcl",
                      "s3:GetBucketLocation"
                  ],
                  "Resource": "arn:aws:s3:::mybucketname/*",
                  "Condition": {}
              },
              {
                  "Effect": "Allow",
                  "Action": "s3:ListAllMyBuckets",
                  "Resource": "*",
                  "Condition": {}
              },
              {
                  "Effect": "Deny",
                  "Action": [
                      "s3:DeleteBucket",
                      "s3:DeleteBucketPolicy",
                      "s3:DeleteBucketWebsite",
                      "s3:DeleteObject",
                      "s3:DeleteObjectVersion"
                  ],
                  "Resource": "arn:aws:s3:::mybucketname/*",    
              
                  "Condition": {}    
              
              }
              ]
              }      
              

              【讨论】:

                【解决方案10】:

                使用 AWS Organizations 有一种简单的方法或解决方法可以做到这一点。 AWS 组织允许您拥有多个用户账户。您的主账户可以有多个 AWS 账户(子),并且无论在哪个 AWS 账户中添加任何服务(s3/EC2/*),只有这些资源是可见的。

                请参考https://aws.amazon.com/blogs/aws/aws-organizations-policy-based-management-for-multiple-aws-accounts/ https://aws.amazon.com/organizations/

                Organization On My account page

                【讨论】:

                  【解决方案11】:

                  为您不想访问的存储桶添加Deny 子句。请记住,它们可能仍会列出,但您将无法访问其中的内容。

                  { “版本”:“2012-10-17”, “陈述”: [ { “效果”:“允许”, “行动”:“s3:*”, “资源”:“*” }, { “效果”:“拒绝”, “行动”:“s3:*”, “资源”:[ "arn:aws:s3::: 桶名", “arn:aws:s3:::桶名/*” ] } ] }

                  【讨论】:

                  • 您应该明确授予对资源的访问权限。当您默认授予对所有资源的访问权限时,您可能会不小心忽略要保密的资源。此外,授予对所有 S3 操作的访问权限意味着用户可以公开资源或设置静态托管或做其他有害的事情。
                  【解决方案12】:

                  我将此问题解释为:“我可以允许访问一个存储桶,而其他存储桶将无法访问并因此不可见。”因为,显示没有被授予访问权限的存储桶的名称仍然等同于信息泄露。

                  正确答案是否定的。所需的权限是 ListAllMyBuckets,这将允许用户查看所有存储桶。忽略此权限将使控制台无法使用。

                  【讨论】:

                    【解决方案13】:

                    我使用以下内容对其他用户隐藏存储桶的内容。这不仅有助于隐藏其他存储桶(不要使用 ListAllMyBuckets),还有助于隐藏同一存储桶中的文件夹,当您创建一个存储桶但希望其中包含子文件夹为 IAM 用户/子文件夹分配适当的权限时。

                    以下策略适用于 IAM 组,并且所有用户都在该组中。您需要将aws:userid 并在存储桶中创建一个同名的子文件夹。

                    可取UserID:aws iam get-user --user-name "user_name_for_folder_access":

                    {
                        "Version": "2012-10-17",
                        "Statement": [
                            {
                                "Effect": "Allow",
                                "Action": [
                                    "s3:*"
                                ],
                                "Resource": [
                                    "arn:aws:s3:::bucket_name/${aws:userid}/*"
                                ]
                            },
                            {
                                "Effect": "Allow",
                                "Action": [
                                    "s3:ListBucket"
                                ],
                                "Resource": [
                                    "arn:aws:s3:::bucket_name"
                                ]
                            }
                        ]
                    }
                    

                    【讨论】:

                      【解决方案14】:

                      试试这个政策。还要考虑到没有办法让用户只列出选定的存储桶。您可以列出所有存储桶,也可以不列出。

                      {
                          "Statement": [
                              {
                                  "Effect": "Allow",
                                  "Action": [
                                      "s3:GetObject",
                                      "s3:PutObject",
                                      "s3:GetObjectAcl",
                                      "s3:PutObjectAcl",
                                      "s3:ListBucket",
                                      "s3:GetBucketAcl",
                                      "s3:PutBucketAcl",
                                      "s3:GetBucketLocation"
                                  ],
                                  "Resource": "arn:aws:s3:::your_bucket_here/*",
                                  "Condition": {}
                              },
                              {
                                  "Effect": "Allow",
                                  "Action": "s3:ListAllMyBuckets",
                                  "Resource": "*",
                                  "Condition": {}
                              }
                          ]
                      }
                      

                      【讨论】:

                      • 效果很好!我必须将操作更改为 s3:* 才能让它为我工作。我也有"Resource": ["arn:aws:s3:::your_bucket_here", "arn:aws:s3:::your_bucket_here/*"],但这可能不需要。
                      • s3:* 授予执行任何操作的权限,包括删除存储桶。你确定要那个?
                      【解决方案15】:

                      可能是最简单的用例:

                      {
                        "Version": "2012-10-17",
                        "Statement": [
                          {
                            "Effect": "Allow",
                            "Action": ["s3:ListBucket"],
                            "Resource": ["arn:aws:s3:::bucket-name"]
                          },
                          {
                            "Effect": "Allow",
                            "Action": [
                              "s3:PutObject",
                              "s3:GetObject",
                              "s3:DeleteObject"
                            ],
                            "Resource": ["arn:aws:s3:::bucket-name/*"]
                          }
                        ]
                      }
                      

                      【讨论】:

                      • AWS 回复:This policy contains the following error: The policy must contain a valid version string
                      • 没错 - 我更正了我的回复 ->
                        这里只有两个可能的值:
                        *2012-10-17* 和 2008-10-17。
                        更多参考可以在这里找到:
                        docs.aws.amazon.com/IAM/latest/UserGuide/…
                      • 知道(listing included) 的意思是如何只列出允许用户进入的存储桶吗?到目前为止(根据所有其他答案),AWS 似乎不允许您这样做。
                      【解决方案16】:

                      我设法使以下工作。意味着列出其他存储桶收到拒绝访问消息。但是如果我将存储桶名称设置为路径,仍然能够看到我想要的存储桶。

                      {
                        "Version": "2012-10-17",
                        "Statement": [
                          {
                            "Effect": "Allow",
                            "Action": [
                              "s3:GetBucketLocation",
                              "s3:ListAllMyBuckets"
                            ],
                            "Resource": "arn:aws:s3:::test"
                          },
                          {
                            "Effect": "Allow",
                            "Action": ["s3:ListBucket"],
                            "Resource": ["arn:aws:s3:::test"]
                          },
                          {
                            "Effect": "Allow",
                            "Action": [
                              "s3:PutObject",
                              "s3:GetObject",
                              "s3:DeleteObject"
                            ],
                            "Resource": ["arn:aws:s3:::test/*"]
                          }
                        ]
                      }
                      

                      我正在使用 Cyber​​duck 测试此连接。

                      【讨论】:

                        【解决方案17】:

                        我只是添加了一个类似的需求,通过这个解决了:

                        {
                          "Version": "2012-10-17",
                          "Statement": [
                            {
                                "Effect": "Allow",
                                "Action": [
                                    "s3:Get*",
                                    "s3:Put*",
                                    "s3:DeleteObject",
                                    "s3:ListBucket"
                                ],
                                "Resource": [
                                    "arn:aws:s3:::my-bucket-name",
                                    "arn:aws:s3:::my-bucket-name/*"
                                ]
                            }
                          ]
                        }
                        

                        【讨论】:

                          【解决方案18】:

                          如果不授予 ListAllMyBuckets 权限,则无法提供对 S3 控制台的访问权限。

                          在我的情况下(也许还有你的未来读者),一个可接受的替代方法是将登录用户直接重定向到你希望他们看到的存储桶。

                          要完成此操作,请将以下内容附加到您的 IAM 登录网址: /s3/?bucket=bucket-name

                          完整的登录 URL(替换 your-aliasbucket-name):

                          https://your-alias.signin.aws.amazon.com/console/s3/?bucket=bucket-name

                          IAM 政策(替换 bucket-name):

                          {
                              "Statement": [
                                  {
                                      "Effect": "Allow",
                                      "Action": "s3:ListAllMyBuckets",
                                      "Resource": "arn:aws:s3:::*"
                                  },
                                  {
                                      "Effect": "Allow",
                                      "Action": "s3:*",
                                      "Resource": [
                                          "arn:aws:s3:::bucket-name",
                                          "arn:aws:s3:::bucket-name/*"
                                      ]
                                  }
                              ]
                          }
                          

                          有关如何为用户创建存储桶特定权限的更多信息,请阅读此博客:http://mikeferrier.com/2011/10/27/granting-access-to-a-single-s3-bucket-using-amazon-iam/

                          【讨论】:

                          • 这很好用。如果用户无法在存储桶视图之外进行探索,那将是最佳选择......但我会接受。谢谢@BFar。
                          • 这是一个正确的答案,所有其他人都会列出每个存储桶 - 根据原始请求应该隐藏。
                          • 正是我需要的。谢谢。
                          • 此策略包含以下错误:托管策略必须具有版本字符串有关 IAM 策略语法的更多信息,请参阅 AWS IAM 策略
                          【解决方案19】:

                          下面的解决方案对我有用。我想要一个策略来授予特定用户 my_iam_user 在特定存储桶 my-s3-bucket 上的访问权限。

                          此策略允许我的用户列出、删除、获取特定 s3 存储桶上的文件。

                          {
                              "Version": "2012-10-17",
                              "Statement": [
                                  {
                                      "Sid": "ListBucket",
                                      "Effect": "Allow",
                                      "Principal": {
                                          "AWS": "arn:aws:iam::123456789012:user/my_iam_user"
                                      },
                                      "Action": [
                                          "s3:ListBucket"
                                      ],
                                      "Resource": "arn:aws:s3:::my-s3-bucket"
                                  },
                                  {
                                      "Sid": "AddDeleteFiles",
                                      "Effect": "Allow",
                                      "Principal": {
                                          "AWS": "arn:aws:iam::123456789012:user/my_iam_user"
                                      },
                                      "Action": [
                                          "s3:DeleteObject",
                                          "s3:GetObject",
                                          "s3:PutObject"
                                      ],
                                      "Resource": "arn:aws:s3:::my-s3-bucket/*"
                                  }
                              ]
                          }
                          

                          【讨论】:

                            【解决方案20】:
                            【解决方案21】:

                            我们的用例:为我们的云应用程序的客户端提供备份空间,客户端可以使用常用的 S3 工具直接访问。当然,任何客户都不应该看到其他客户拥有什么。

                            正如 cloudberryman 解释的那样,“您可以列出所有存储桶,也可以不列出。”因此我们必须想出一个变通办法。背景:

                            需要向用户授予 ListAllMyBuckets 权限,以便 AWS S3 控制台或 S3Fox 连接时不会出现错误消息。但是 ListAllMyBuckets 列出了所有存储桶,无论分配的资源如何(实际上,只有 arn:...:::* 有效)。如果你问我,那是一个严重的错误。顺便提一句。拒绝所有存储桶的 ListBucket 并不会阻止它们被列出,因为 ListBucket 授予列出存储桶内容的权限。

                            我认为有 3 种可能性可以解决。我选择了最后一个。

                            (1) 使用神秘的存储桶名称,例如GUID

                            优点:易于设置

                            缺点:难以管理,尤其是对客户而言。 (想象一下在数千个其他 GUID 中找到一个特定的 GUID。)还显示了存储桶的数量 = 使用备份服务的客户端数量。

                            (2) 使用一个带有客户端特定文件夹的存储桶

                            这就是 Amazon 在其 S3/IAM 示例中建议的方式,以提供仅供特定用户或用户组访问的空间。看: AWS Example IAM Policies

                            优势:设置相当容易,符合 AWS 的想法

                            缺点:强制公开所有存储桶的存在,因此客户端可以找到他们的“家”存储桶。 AWS 会计提供存储桶使用情况的统计信息,但不提供文件夹使用情况的统计信息,这使得客户难以计算成本。

                            (3) 不授予 ListAllMyBuckets 的访问权限

                            优势:你得到你想要的:客户看不到其他客户的桶

                            缺点:客户看不到自己的桶。 S3Browser 带有一个很好的“不能做”消息,并要求输入存储桶名称。 S3Fox 在连接到根时会引发错误消息,但如果存储桶名称已知,则允许直接导航到客户端的存储桶。 Amazon S3 控制台根本不起作用。

                            希望这有助于您根据需要处理 S3 IAM。

                            【讨论】:

                            • 另外,对于解决方案(1),如果您想使用带有存储桶的虚拟主机,那么存储桶名称必须与域名匹配。
                            【解决方案22】:

                            对为什么没有检查答案感到困惑?

                            让我们分解上述解决方案中的每个政策声明:

                            此政策声明 from 适用于存储桶的内容,但不适用于 buck 本身。这可能不是问题所要求的,因为您看不到存储桶中的内容。

                            {
                            "Effect": "Allow",
                            "Action": [
                            "s3:GetObject",
                            "s3:PutObject",
                            "s3:GetObjectAcl",
                            "s3:PutObjectAcl",
                            "s3:ListBucket",
                            "s3:GetBucketAcl",
                            "s3:PutBucketAcl",
                            "s3:GetBucketLocation"
                            ],
                            "Resource": "arn:aws:s3:::your_bucket_here/*",
                            "Condition": {}
                            }
                            

                            这两条语句策略derived from 授予对 (arn:aws:s3:::your_bucket_here/) 存储桶的只读访问权限只读,但仍允许对存储桶的内容进行 CRUD 操作 (arn:aws:s3:::your_bucket_here/*)。

                            {
                              "Effect": "Allow",
                              "Action": [
                                "s3:ListBucket",
                                "s3:GetBucketLocation",
                                "s3:ListBucketMultipartUploads"
                              ],
                              "Resource": "arn:aws:s3:::your_bucket_here",
                              "Condition": {}
                            },
                            {
                              "Effect": "Allow",
                              "Action": [
                                "s3:AbortMultipartUpload",
                                "s3:DeleteObject",
                                "s3:DeleteObjectVersion",
                                "s3:GetObject",
                                "s3:GetObjectAcl",
                                "s3:GetObjectVersion",
                                "s3:GetObjectVersionAcl",
                                "s3:PutObject",
                                "s3:PutObjectAcl",
                                "s3:PutObjectAclVersion"
                              ],
                              "Resource": "arn:aws:s3:::your_bucket_here/*",
                              "Condition": {}
                            }
                            

                            但是,该策略包含以下语句,允许用户查看端点上的所有存储桶。这可能不是问题所要求的。

                            {
                            "Effect": "Allow",
                            "Action": "s3:ListAllMyBuckets",
                            "Resource": "*",
                            "Condition": {}
                            }
                            

                            但是,如果您使用浏览 S3 商店的客户端,上述内容非常有用。如果您的客户端直接访问存储而不是存储桶,那么您需要访问根目录下的存储桶列表。

                            【讨论】:

                              【解决方案23】:

                              有一种很好的方法可以让用户在不了解其他存储桶的情况下访问特定存储桶。如下所示的组策略将只允许用户看到“存储桶 a”。唯一的问题是,如果用户连接到给定的存储桶端点,他们将只能访问存储桶。对于下面的示例,它将是 bucket-a.s3.amazonaws.com。存储桶可能还必须允许“经过身份验证的用户”才能发生这种情况。

                              {
                                  "Statement": [
                                   {
                                       "Sid": "<EXAMPLE_SID>",
                                       "Action": [
                                         "s3:ListBucket",
                                         "s3:GetBucketLocation"
                                        ],
                                       "Effect": "Allow",
                                       "Resource": [
                                         "arn:aws:s3:::bucket-a"
                                       ]
                                   },
                                   {
                                    "Sid": "<EXAMPLE_SID>",
                                    "Action": "s3:*",
                                    "Effect": "Allow",
                                    "Resource": [
                                      "arn:aws:s3:::bucket-a/*"
                                    ]
                                   }
                                 ]
                              }
                              

                              此方法已在 Mac OS/X 上使用 Cyber​​duck 进行了测试,并使用了 s3cmd 包

                              ./s3cmd ls s3://bucket-a --access_key=ACCESS_KEY --secret_key=SECRET_KEY --bucket-locat
                              ion=ap-southeast-2
                              

                              【讨论】:

                              • 我仍然可以看到所有存储桶的列表。不工作:(
                              猜你喜欢
                              • 1970-01-01
                              • 1970-01-01
                              • 2021-09-27
                              • 2019-09-09
                              • 2022-01-21
                              • 2018-08-09
                              • 2018-01-10
                              • 1970-01-01
                              相关资源
                              最近更新 更多