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

使用 NotPrincipal 和 NotResource 拒绝访问

最近更新时间2024.03.26 16:32:21

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

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

背景信息

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

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

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

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

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

  • 账号:aaa 用户。
  • 资源:test 目录下的对象。
  • 动作:GetObject、PutObject、DeleteObject、GetObjectVersion 和 DeleteObjectVersion。

推荐配置方法
本场景下推荐您使用桶策略。
操作步骤

  1. 登录对象存储控制台
  2. 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。
  3. 在左侧导航栏,选择权限管理 > 存储桶授权策略管理
  4. 根据需要选择授权方式。
  1. 单击创建策略
  2. 创建存储桶授权策略页面底部,选择自定义策略,单击下一步
  3. 设置如下参数。
    • 策略名称:单击基本配置,设置策略名称。
    • 效力:选择拒绝。
    • 授权用户:选择指定账号
    • 其他账号:选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。
    • 用户策略:选择排除以上用户
    • 资源范围:勾选桶内对象,选择指定对象,单击添加字段,设置资源路径test/*
    • 资源策略:选择包含以上资源
    • 对象动作:勾选 GetObjectPutObject、DeleteObjectGetObjectVersionDeleteObjectVersion
    • 操作策略:选择包含以上动作
    • 条件:单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。
  4. 设置完成后,单击下一步
  5. 确认策略无误后,单击确定

后续操作
拒绝其他用户访问后,您还需要授予 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 用户。
  • 资源:test 目录下的对象。
  • 动作:GetObject、PutObject、DeleteObject、GetObjectVersion 和 DeleteObjectVersion。

推荐配置方法
本场景下推荐使用桶策略。
操作步骤

  1. 登录对象存储控制台
  2. 在左侧导航栏,单击桶列表,在桶列表页面单击目标桶名称。
  3. 在左侧导航栏,选择权限管理 > 存储桶授权策略管理
  4. 根据需要选择授权方式。
  1. 单击创建策略
  2. 创建存储桶授权策略页面底部,选择自定义策略,单击下一步
  3. 设置如下参数。
    • 策略名称:单击基本配置,设置策略名称。
    • 效力:选择拒绝。
    • 授权用户:选择指定账号
    • 其他账号:选择当前主账号,单击添加字段,在在子用户名称的下拉框选择子用户,本文设置为 aaa。
    • 用户策略:选择包含以上用户
    • 资源范围:勾选桶内对象,选择指定对象,单击添加字段,设置资源路径test/*
    • 资源策略:选择排除以上资源
    • 对象动作:勾选 GetObject、PutObject、DeleteObjectGetObjectVersionDeleteObjectVersion。
    • 操作策略:选择包含以上动作
    • 条件:单击添加字段图标,设置您所需要的条件及值。关于条件的参数说明,请参见条件说明。本场景无需设置条件。
  4. 设置完成后,单击下一步
  5. 确认策略无误后,单击确定

后续操作
拒绝其他用户访问除了 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/*"
      ]
    } 
  ]
}