存储分段策略示例
使用本节中的示例为分段构建StorageGRID 访问策略。
存储分段策略用于指定附加此策略的存储分段的访问权限。存储分段策略使用 S3 PutBucketPolicy API 进行配置。请参见 "对存储分段执行的操作"。
可以按照以下命令使用 AWS 命令行界面配置存储分段策略:
> aws s3api put-bucket-policy --bucket examplebucket --policy file://policy.json
示例:允许每个人对某个存储分段进行只读访问
在此示例中,允许包括匿名用户在内的所有人列出存储分段中的对象,并对存储分段中的所有对象执行 GET Object 操作。所有其他操作都将被拒绝。请注意、此策略可能并不特别有用、因为除了帐户root之外、没有其他人有权向存储分段写入数据。
{ "Statement": [ { "Sid": "AllowEveryoneReadOnlyAccess", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"] } ] }
示例:允许一个帐户中的每个人完全访问某个存储分段,而另一帐户中的每个人只读访问某个存储分段
在此示例中、一个指定帐户中的每个人都可以完全访问某个存储分段、而另一个指定帐户中的每个人只能列出存储分段并对以开头的存储分段中的对象执行GetObject操作 shared/
对象密钥前缀。
在 StorageGRID 中,非所有者帐户创建的对象(包括匿名帐户)归存储分段所有者帐户所有。存储分段策略适用场景 这些对象。 |
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "95390887230002558202" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::examplebucket", "arn:aws:s3:::examplebucket/*" ] }, { "Effect": "Allow", "Principal": { "AWS": "31181711887329436680" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::examplebucket/shared/*" }, { "Effect": "Allow", "Principal": { "AWS": "31181711887329436680" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::examplebucket", "Condition": { "StringLike": { "s3:prefix": "shared/*" } } } ] }
示例:允许每个人对某个存储分段进行只读访问,并允许指定组进行完全访问
在此示例中、允许包括anonymous在内的所有人列出存储分段并对存储分段中的所有对象执行GET Object操作、而只允许用户属于该组 Marketing
在指定帐户中、允许完全访问。
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::95390887230002558202:federated-group/Marketing" }, "Action": "s3:*", "Resource": [ "arn:aws:s3:::examplebucket", "arn:aws:s3:::examplebucket/*" ] }, { "Effect": "Allow", "Principal": "*", "Action": ["s3:ListBucket","s3:GetObject"], "Resource": [ "arn:aws:s3:::examplebucket", "arn:aws:s3:::examplebucket/*" ] } ] }
示例:如果客户端位于 IP 范围内,则允许每个人对存储分段进行读写访问
在此示例中,允许包括匿名用户在内的所有人列出存储分段并对存储分段中的所有对象执行任何对象操作,前提是这些请求来自指定的 IP 范围( 54.240.143.0 到 54.240.143.255 ,但 54.240.143.188 除外)。所有其他操作都将被拒绝,并且 IP 范围以外的所有请求都将被拒绝。
{ "Statement": [ { "Sid": "AllowEveryoneReadWriteAccessIfInSourceIpRange", "Effect": "Allow", "Principal": "*", "Action": [ "s3:*Object", "s3:ListBucket" ], "Resource": ["arn:aws:s3:::examplebucket","arn:aws:s3:::examplebucket/*"], "Condition": { "IpAddress": {"aws:SourceIp": "54.240.143.0/24"}, "NotIpAddress": {"aws:SourceIp": "54.240.143.188"} } } ] }
示例:允许指定的联合用户完全访问某个存储分段
在此示例中、允许联合用户Alex完全访问 examplebucket
存储分段及其对象。包括 "`root` " 在内的所有其他用户均被明确拒绝所有操作。但请注意, "`root` " 从不会被拒绝 PUT , Get/DeleteBucketPolicy 的权限。
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex" }, "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::examplebucket", "arn:aws:s3:::examplebucket/*" ] }, { "Effect": "Deny", "NotPrincipal": { "AWS": "arn:aws:iam::95390887230002558202:federated-user/Alex" }, "Action": [ "s3:*" ], "Resource": [ "arn:aws:s3:::examplebucket", "arn:aws:s3:::examplebucket/*" ] } ] }
示例: PutOverwriteObject 权限
在此示例中、将显示 Deny
对PutOverwriteObject和DeleteObject的影响可确保任何人都不能覆盖或删除对象的数据、用户定义的元数据和S3对象标记。
{ "Statement": [ { "Effect": "Deny", "Principal": "*", "Action": [ "s3:PutOverwriteObject", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::wormbucket/*" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup" }, "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::wormbucket" }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::95390887230002558202:federated-group/SomeGroup" }, "Action": "s3:*", "Resource": "arn:aws:s3:::wormbucket/*" } ] }