You need to enable JavaScript to run this app.
导航

使用 NotPrincipal 和 NotResource 拒绝访问

最近更新时间2023.12.19 14:06:01

首次发布时间2023.11.17 10:55:32

本文介绍使用 NotPrincipal 和 NotResource 的典型授权场景及操作说明,您可以根据实际情况完成授权。

背景信息

NotPrincipalNotResource 必须和 "Effect":"Deny" 一起使用。搭配 "Effect":"Deny" 后的效果说明如下:

  • NotPrincipal:除了 NotPrincipal 指定的用户以外,将拒绝其他用户的访问。
  • NotResource:除了 NotResource 指定的资源以外,将拒绝访问其他资源。

关于 NotPrincipalNotResource 的详细介绍,请参见桶策略模板及参数说明

使用 NotPrincipal 实现除了指定用户以外,拒绝其他用户访问

本示例以 aaa 用户为例,介绍如何实现前缀为 test/ 的对象除了 aaa 用户以外,拒绝其他用户访问。本示例本身不会向 aaa 用户授权,只用于拒绝除了 aaa 用户以外的其他用户的访问。拒绝其他用户权限后,您还需要创建对应的 "Effect":"Allow" 的桶策略,授予 aaa 用户指定对象的权限。

  1. 登录对象存储控制台

  2. 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。

  3. 在左侧导航栏,选择权限管理 > 存储桶授权策略管理,在右侧页面,单击创建策略

  4. 创建存储桶授权策略页面底部,选择自定义策略,单击下一步

  5. 创建存储桶授权策略页面,设置如下参数。

    类型

    参数

    说明

    基本配置

    策略配置方式

    单击基本配置,选择可视化视图

    策略名称

    设置您创建的策略名称。

    说明

    同一存储桶内,策略名称不允许重名。

    效力

    效力

    选择拒绝。

    被授权用户

    授权用户

    选择指定账号

    其他账号

    选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。

    用户策略

    选择排除以上用户

    资源

    资源范围

    勾选桶内对象,选择指定对象,单击添加字段,设置资源路径test/*

    资源策略

    选择包含以上资源

    动作

    对象动作

    勾选 GetObjectPutObject、DeleteObjectGetObjectVersionDeleteObjectVersion

    操作策略

    选择包含以上动作

    条件(可选)

    条件

    单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。

  6. 设置完成后,单击下一步

  7. 确认当前配置的策略信息无误后,单击确定

相关操作
除了使用可视化视图创建的 NotPrincipal 桶策略外,您也可以使用 JSON 视图创建对应策略,具体操作,请参见自定义创建桶策略(JSON 视图)。对应的策略内容如下:

{
  "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 实现除了指定资源以外,拒绝访问其他资源

本示例以 test/ 资源为例,介绍如何使用 NotResource 实现 aaa 用户除了 test/ 资源以外,其他资源都不能访问。本示例本身不会向 aaa 用户授予 test/ 资源的权限,只用于拒绝除了 test/ 资源以外的其他资源权限。拒绝其他资源权限后,您还需要创建对应的 "Effect":"Allow" 的桶策略,授予 aaa 用户 test/资源的权限。

  1. 登录对象存储控制台

  2. 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。

  3. 在左侧导航栏,选择权限管理 > 存储桶授权策略管理,在存储桶授权策略管理页面,单击创建策略

  4. 创建存储桶授权策略页面底部,选择自定义策略,单击下一步

  5. 创建存储桶授权策略页面,设置如下界面参数。

    类型

    参数

    说明

    基本配置

    策略配置方式

    单击基本配置,选择可视化视图

    策略名称

    设置您创建的策略名称。

    说明

    同一存储桶内,策略名称不允许重名。

    效力

    效力

    选择拒绝。

    被授权用户

    授权用户

    选择指定账号

    其他账号

    选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。

    用户策略

    选择包含以上用户

    资源

    资源范围

    勾选桶内对象,选择指定对象,单击添加字段,设置资源路径test/*

    资源策略

    选择排除以上资源

    动作

    对象动作

    勾选 GetObject、PutObject、DeleteObjectGetObjectVersionDeleteObjectVersion。

    操作策略

    选择包含以上动作

    条件(可选)

    条件

    单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。

  6. 设置完成后,单击下一步

  7. 确认当前配置的策略信息无误后,单击确定

相关操作
除了使用可视化视图创建 NotResource 桶策略外,您也可以使用 JSON 视图创建对应策略,具体操作,请参见自定义创建桶策略(JSON 视图)。对应的策略内容如下:

{
  "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/*"
      ]
    } 
  ]
}