本文介绍 NotPrincipal 、NotResource 和 NotAction 的典型授权场景及操作说明,您可以根据实际情况完成授权。
背景信息
NotPrincipal 和 NotResource 必须和 "Effect":"Deny" 一起使用;NotAction 可以搭配 "Effect":"Deny" 和 "Effect":"Allow" 使用,具体含义说明如下:
关于 NotPrincipal 、 NotResource 和 NotAction 的详细介绍,请参见桶策略模板及参数说明。
使用 NotPrincipal 实现除了指定用户以外,拒绝其他用户访问
本示例介绍如何实现前缀为 test/ 的对象除了 aaa 用户以外,拒绝其他用户访问。
本示例本身不会向 aaa 用户授权,只用于拒绝除了 aaa 用户以外的其他用户的访问。拒绝其他用户权限后,您还需要创建对应的 "Effect":"Allow" 的桶策略,授予 aaa 用户指定对象的权限。
场景说明
- 账号:
aaa 用户。 - 资源:example 桶
test 目录下的对象。 - 动作:GetObject、PutObject、DeleteObject、GetObjectVersion 和 DeleteObjectVersion。
推荐配置方法
本场景下推荐您使用桶策略。
操作步骤
- 登录对象存储控制台。
- 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。
- 在左侧导航栏,选择权限管理 > 存储桶授权策略管理。
- 根据需要选择授权方式。
- 单击创建策略。
- 在创建存储桶授权策略页面底部,选择自定义策略,单击下一步。
- 设置如下参数。
- 策略名称:单击基本配置,设置策略名称。
- 效力:选择拒绝。
- 授权用户:选择指定账号。
- 其他账号:选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。
- 用户策略:选择排除以上用户。
- 资源范围:选中桶内对象,选择指定对象,单击添加字段,设置资源路径为
test/*。 - 资源策略:选择包含以上资源。
- 对象动作:选中 GetObject、PutObject、DeleteObject、GetObjectVersion 和 DeleteObjectVersion。
- 操作策略:选择包含以上动作。
- 条件:单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。
- 设置完成后,单击下一步。
- 确认策略无误后,单击确定。
单击编辑,将以下内容复制到文本框中,单击确定。
{
"Statement": [
{
"Sid": "自定义策略-1e31",
"Effect": "Deny",
"NotPrincipal":["210000****/aaa"],
"Action": [
"tos:GetObject",
"tos:PutObject",
"tos:DeleteObject",
"tos:GetObjectVersion",
"tos:DeleteObjectVersion"
],
"Resource": [
"trn:tos:::example/test/*"
]
}
]
}
后续操作
拒绝其他用户访问后,您还需要授予 aaa 用户对应的权限,才能实现除了前缀为 test/ 的对象除了 aaa 用户以外,拒绝其他用户访问。具体操作,请参见自定义创建桶策略(JSON 视图)。对应的策略内容如下:
{
"Statement": [
{
"Sid": "自定义策略-1e32",
"Effect": "Allow",
"Principal":["210000****/aaa"],
"Action": [
"tos:GetObject",
"tos:PutObject",
"tos:DeleteObject",
"tos:GetObjectVersion",
"tos:DeleteObjectVersion"
],
"Resource": [
"trn:tos:::example/test/*"
]
}
]
}
使用 NotResource 实现除了指定资源以外,拒绝用户访问其余资源
本示例介绍如何使用 NotResource 实现 aaa 用户除了 test/ 资源以外,其他资源都不能访问。
本示例本身不会向 aaa 用户授予 test/ 资源的权限,只用于拒绝除了 test/ 资源以外的其他资源权限。拒绝其他资源权限后,您还需要创建对应的 "Effect":"Allow" 的桶策略,授予 aaa 用户 test/资源的权限。
场景说明
- 账号: aaa 用户。
- 资源:example 桶
test 目录下的对象。 - 动作:GetObject、PutObject、DeleteObject、GetObjectVersion 和 DeleteObjectVersion。
推荐配置方法
本场景下推荐使用桶策略。
操作步骤
- 登录对象存储控制台。
- 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。
- 在左侧导航栏,选择权限管理 > 存储桶授权策略管理。
- 根据需要选择授权方式。
- 单击创建策略。
- 在创建存储桶授权策略页面底部,选择自定义策略,单击下一步。
- 设置如下参数。
- 策略名称:单击基本配置,设置策略名称。
- 效力:选择拒绝。
- 授权用户:选择指定账号。
- 其他账号:选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。
- 用户策略:选择包含以上用户。
- 资源范围:选中桶内对象,选择指定对象,单击添加字段,设置资源路径为
test/*。 - 资源策略:选择排除以上资源。
- 对象动作:选中 GetObject、PutObject、DeleteObject、GetObjectVersion 和 DeleteObjectVersion。
- 操作策略:选择包含以上动作。
- 条件:单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。
- 设置完成后,单击下一步。
- 确认策略无误后,单击确定。
单击编辑,将以下内容复制到文本框中,单击确定。
{
"Statement": [
{
"Sid": "自定义策略-1e33",
"Effect": "Deny",
"Principal":["210000****/aaa"],
"Action": [
"tos:GetObject",
"tos:PutObject",
"tos:DeleteObject",
"tos:GetObjectVersion",
"tos:DeleteObjectVersion"
],
"NotResource": [
"trn:tos:::example/test/*"
]
}
]
}
后续操作
拒绝其他用户访问除了 test/ 资源以外的其他资源后,您还需要授予 aaa 用户test/ 资源的权限,才能实现 aaa 用户除了 test/ 资源以外,其他资源都不能访问。具体操作,请参见自定义创建桶策略(JSON 视图)。对应的策略内容如下:
{
"Statement": [
{
"Sid": "自定义策略-1e34",
"Effect": "Allow",
"Principal":["210000****/aaa"],
"Action": [
"tos:GetObject",
"tos:PutObject",
"tos:DeleteObject",
"tos:GetObjectVersion",
"tos:DeleteObjectVersion"
],
"Resource": [
"trn:tos:::example/test/*"
]
}
]
}
使用 NotAction 授予用户除指定动作外其余动作的执行权限
本示例介绍如何使用 NotAction 授予用户除 DeleteBucket、DeleteObject 外其余动作的执行权限。
场景说明
- 账号:aaa 用户。
- 资源:example 桶
test 目录下的对象。 - 动作:DeleteBucket、DeleteObject 外的其余动作
推荐配置方法
本场景下推荐使用桶策略。
操作步骤
- 登录对象存储控制台。
- 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。
- 在左侧导航栏,选择权限管理 > 存储桶授权策略管理。
- 根据需要选择授权方式。
- 单击创建策略。
- 在创建存储桶授权策略页面底部,选择自定义策略,单击下一步。
- 设置如下参数。
- 策略名称:单击基本配置,设置策略名称。
- 效力:选择允许。
- 授权用户:选择指定账号。
- 其他账号:选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。
- 资源范围:选中桶内对象,选择指定对象,单击添加字段,设置资源路径为
test/*。 - 对象动作:选中 DeleteBucket、DeleteObject。
- 操作策略:选择排除以上动作。
- 条件:单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。
- 设置完成后,单击下一步。
- 确认策略无误后,单击确定。
单击编辑,将以下内容复制到文本框中,单击确定。
{
"Statement": [
{
"Sid": "自定义策略-0de9",
"Effect": "Allow",
"Principal": [
"214748****/aaa"
],
"NotAction": [
"tos:DeleteBucket",
"tos:DeleteObject"
],
"Resource": "trn:tos:::example/test/*"
}
]
}