S3存储桶策略示例

2020-08-06 03:18:39
639次阅读
0个评论
存储桶策略指定了该策略所附加到的存储桶的访问权限。 使用S3 PutBucketPolicy API配置存储桶策略。

可以根据以下命令使用AWS CLI配置存储桶策略:


> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json


示例:允许所有人对存储桶进行只读访问
在此示例中,所有人(包括匿名用户)都可以列出存储桶中的对象,并对存储桶中的所有对象执行“获取对象”操作。 所有其他操作将被拒绝。 请注意,此策略可能不会特别有用,因为除root帐户外,没有人有权写入存储桶。

{ 
  "Statement": [
    {
      "Sid": "AllowEveryoneReadOnlyAccess",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:GetObject", "s3:ListBucket" ],
      "Resource": ["urn:sgws:s3:::examplebucket","urn:sgws:s3:::examplebucket/*"]
    }
  ]
}

示例:允许一个帐户中的每个人都具有完全访问权限,而另一个帐户中的每个人都对存储桶具有只读访问权限
在此示例中,一个指定帐户中的每个人都被允许完全访问存储桶,而另一个指定帐户中的每个人仅被允许列出存储桶并以“ shared/”对象键前缀开头对存储桶中的对象执行GetObject操作。
注意:在StorageGRID Webscale中,由非所有者帐户(包括匿名帐户)创建的对象由存储桶所有者帐户拥有。 桶策略适用于这些对象。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "SGWS": "95390887230002558202"
      },
      "Action": "s3:*",
      "Resource": [
        "urn:sgws:s3:::examplebucket",
        "urn:sgws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": {
        "SGWS": "31181711887329436680"
      },
      "Action": "s3:GetObject",
      "Resource": "urn:sgws:s3:::examplebucket/shared/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "SGWS": "31181711887329436680"
      },
      "Action": "s3:ListBucket",
      "Resource": "urn:sgws:s3:::examplebucket",
      "Condition": {
        "StringLike": {
          "s3:prefix": "shared/*"
        }
      }
    }  
  ]
}

示例:允许所有人对存储桶进行只读访问,并允许指定组进行完全访问
在此示例中,所有人(包括匿名用户)都可以列出存储桶并对该存储桶中的所有对象执行GET Object操作,而只有指定帐户中属于Marketing组的用户才被允许完全访问。

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "SGWS": "urn:sgws:identity::95390887230002558202:federated-group/Marketing"
      },
      "Action": "s3:*",
      "Resource": [
        "urn:sgws:s3:::examplebucket",
        "urn:sgws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:ListBucket","s3:GetObject"],
      "Resource": [
        "urn:sgws:s3:::examplebucket",
        "urn:sgws:s3:::examplebucket/*"
      ]
    }
  ]
}

示例:如果客户端在IP范围内,则允许所有人对存储桶进行读写访问
在此示例中,只要请求来自指定的IP范围(54.240.143.0到54.240.143.255,54.240.143.188除外),则允许所有人(包括匿名用户)列出存储区并对存储区中的所有对象执行任何对象操作。 )。 所有其他操作将被拒绝,并且IP范围之外的所有请求都将被拒绝。
注意:“租户管理器”(StorageGRID Webscale版本10.4或更高版本)仅支持“条件”关键字。

{ 
  "Statement": [
    {
      "Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange",
      "Effect": "Allow",
      "Principal": "*",
      "Action": [ "s3:*Object", "s3:ListBucket" ],
      "Resource": ["urn:sgws:s3:::examplebucket","urn:sgws:s3:::examplebucket/*"],
      "Condition": {
        "IpAddress": {"sgws:SourceIp": "54.240.143.0/24"},
        "NotIpAddress": {"sgws:SourceIp": "54.240.143.188"} 
      }
    }
  ]
}

示例:仅允许指定的联盟用户完全访问存储桶
在此示例中,允许联合用户Bob完全访问examplebucket存储桶及其对象。 所有其他用户(包括“ root”)均被明确拒绝所有操作。 但是请注意,永远不会拒绝“ root”用户对Put / Get / DeleteBucketPolicy的权限

{
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "SGWS": "urn:sgws:identity::95390887230002558202:federated-user/Bob"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "urn:sgws:s3:::examplebucket",
        "urn:sgws:s3:::examplebucket/*"
      ]
    },
    {
      "Effect": "Deny",
      "NotPrincipal": {
        "SGWS": "urn:sgws:identity::95390887230002558202:federated-user/Bob"
      },
      "Action": [
        "s3:*"
      ],
      "Resource": [
        "urn:sgws:s3:::examplebucket",
        "urn:sgws:s3:::examplebucket/*"
      ]
    }
  ]
}


收藏00

登录 后评论。没有帐号? 注册 一个。