• 如何使用 IAM 策略授予对特定 AWS S3 文件夹的用户特定访问权限?


    我想要使用 IAM 用户策略来限制对 Amazon Simple Storage Service(Amazon S3)存储桶中特定文件夹的访问。

    简短描述

    您可以使用 AWS Identity and Access Management(IAM)用户策略来控制对 Amazon S3 存储桶中特定文件夹拥有访问权限的用户。

    解决方法

    单用户策略 – 此示例策略允许某特定 IAM 用户查看存储桶第一级中的特定文件夹,然后对所需文件夹和子文件夹中的对象执行操作。此示例采用以下结构来使用名为 David 的 IAM 用户和名为 my-company 的存储桶:

    /home/Adele/ /home/Bob/ /home/David/ /restricted/ /root-file.txt

    {
     "Version":"2012-10-17",
     "Statement": [
       {
         "Sid": "AllowUserToSeeBucketListInTheConsole",
         "Action": ["s3:ListAllMyBuckets", "s3:GetBucketLocation"],
         "Effect": "Allow",
         "Resource": "*"
       },
      {
         "Sid": "AllowRootAndHomeListingOfCompanyBucket",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::my-company"],
         "Condition":{"StringEquals":{"s3:prefix":["","home/"],"s3:delimiter":["/"]}}
        },
       {
         "Sid": "AllowListingOfUserFolder",
         "Action": ["s3:ListBucket"],
         "Effect": "Allow",
         "Resource": ["arn:aws:s3:::my-company"],
         "Condition":{"StringLike":{"s3:prefix":["home/David/*"]}}
       },
       {
         "Sid": "AllowAllS3ActionsInUserFolder",
         "Effect": "Allow",
         "Action": ["s3:*"],
         "Resource": ["arn:aws:s3:::my-company/home/David/*"]
       }
     ]
    }

    Amazon S3 控制台使用斜杠(/)作为特殊字符来显示文件夹中的对象。前缀 (s3:prefix) 和分隔符 (s3:delimiter) 可帮助您组织和浏览文件夹中的对象。

    多用户策略 - 在某些情况下,您在编写策略时可能不知道资源的精确名称。例如,您可能想要允许每位用户在 Amazon S3 存储桶中都拥有自己的对象,如上例所示。但是,您不想为每个用户创建单独的策略,指定用户名称作为资源的一部分,而是可以创建一个适用于组中所有用户的群组策略。

    您可以通过使用策略变量实现这一点,从而允许您在策略中指定占位符。评估策略后,策略变量将替换为来自请求本身的值。

    该示例展示了使用策略变量 ${aws:username} 的 Amazon S3 存储桶的策略:

    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "AllowUserToSeeBucketListInTheConsole",
          "Action": [
            "s3:ListAllMyBuckets",
            "s3:GetBucketLocation"
          ],
          "Effect": "Allow",
          "Resource": "*"
        },
        {
          "Sid": "AllowRootAndHomeListingOfCompanyBucket",
          "Action": [
            "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::my-company"
          ],
          "Condition": {
            "StringEquals": {
              "s3:prefix": [
                "",
                "home/"
              ],
              "s3:delimiter": [
                "/"
              ]
            }
          }
        },
        {
          "Sid": "AllowListingOfUserFolder",
          "Action": [
            "s3:ListBucket"
          ],
          "Effect": "Allow",
          "Resource": [
            "arn:aws:s3:::my-company"
          ],
          "Condition": {
            "StringLike": {
              "s3:prefix": [
                "home/${aws:username}/*"
              ]
            }
          }
        },
        {
          "Sid": "AllowAllS3ActionsInUserFolder",
          "Effect": "Allow",
          "Action": [
            "s3:*"
          ],
          "Resource": [
            "arn:aws:s3:::my-company/home/${aws:username}/*"
          ]
        }
      ]
    }
  • 相关阅读:
    关于Ubuntu 9.10 的aptget update 一直无法更新源的点点滴滴
    CentOS的安装和搭建文件共享服务器(Samba)
    VirtualBox 下的 Ubuntu 虚拟机中使用 Android 真机做开发调试
    VmWare下安装CentOS6图文安装教程
    CentOS的远程桌面(xdm)
    ubuntu Apache安装设置
    关于母版页的按钮事件
    TSQL使用函数uppercase更新xml
    文章的上一篇和下一篇导航 V2
    数据库用户映射到 SQL Server 登录名
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/15504522.html
Copyright © 2020-2023  润新知