tencent cloud

文档反馈

权限策略 deny 不生效场景

最后更新时间:2024-01-23 17:54:33
    当权限策略中同时包含允许(allow)和拒绝(deny)的授权语句时,需要根据具体的场景判断 deny 是否生效。
    本文通过查询资源列表类的操作、COS 权限 deny 所有用户(匿名用户 anonymous)、计费相关操作三类典型场景,帮助您理解 deny 不生效的逻辑。

    查询资源列表类的操作

    腾讯云各个服务的操作(action)可以简单划分为增、删、改、查 4 类,其中查询类又可以分为查询单个资源详情和查询某类资源列表,查询某类资源列表的操作。在以下场景中可能存在 deny 不生效,建议对这类操作避免使用 deny,避免使用 string_not_equal、string_like 等条件键

    不生效场景列举:

    场景1:授权允许(allow)子用户访问 CVM 实例 a、b、c,拒绝(deny)访问实例 d,同时又授予子用户访问绑定标签 T 的资源,其中实例 d 绑定了标签T,此时“拒绝(deny)访问实例 d”的策略不会生效。
    例如:授权以下策略,用户在查看 CVM 实例列表的时候仍然能够查看到实例 d。
    {
    "version": "2.0",
    "statement": [
    {
    "effect": "allow",
    "action": [
    "*"
    ],
    "resource": "*",
    "condition": {
    "for_any_value:string_equal": {
    "qcs:resource_tag": [
    "key&T" //标签 T
    ]
    }
    }
    },
    {
    "effect": "allow",
    "action": [
    "*"
    ],
    "resource": [
    "qcs::cvm:ap-guangzhou::instanceid/a", //实例 a
    "qcs::cvm:ap-guangzhou::instanceid/b", //实例 b
    "qcs::cvm:ap-guangzhou::instanceid/c" //实例 c
    ]
    },
    {
    "effect": "deny",
    "action": [
    "*"
    ],
    "resource": [
    "qcs::cvm:ap-guangzhou::instanceid/d" //实例 d
    ]
    }
    ]
    }
    场景2:授权允许子用户访问绑定标签 T1 的资源,拒绝访问绑定标签 T2 的资源,其中资源 a 既绑定了标签 T1,又绑定了标签 T2,则拒绝访问 a 资源的策略不会生效。
    例如:授权以下策略,仍然可以在查看资源列表的时候查看到资源 a。
    {
    "version": "2.0",
    "statement": [
    {
    "effect": "allow",
    "action": [
    "*"
    ],
    "resource": "*",
    "condition": {
    "for_any_value:string_equal": {
    "qcs:resource_tag": [
    "key&T1" //标签 T1
    ]
    }
    }
    },
    {
    "effect": "deny",
    "action": [
    "*"
    ],
    "resource": "*",
    "condition": {
    "for_any_value:string_equal": {
    "qcs:resource_tag": [
    "key&T2" //标签 T2
    ]
    }
    }
    }
    ]
    }
    场景3:权限策略包含 condition 时,支持精确匹配的策略条件键使用 string_equal、ip_equal、ip_not_equal 等才会生效,其他类型条件键(例如 string_not_equal 等)不会生效。
    例如:授权以下策略,用户仍然可能看到关联了标签 T 的资源。
    {
    "version": "2.0",
    "statement": [
    {
    "effect": "allow",
    "action": [
    "*"
    ],
    "resource": "*",
    "condition": {
    "for_any_value:string_not_equal": {
    "qcs:resource_tag": [
    "key&T" //标签 T
    ]
    }
    }
    }
    ]
    }
    场景4:同时授权允许访问所有 resource,以及拒绝访问绑定指定标签的资源时,拒绝访问可能无法生效,即仍然能查看到关联了该标签的资源。
    例如:授权以下策略,用户在查看资源列表的时候仍然可能查看到主账号下所有的资源。
    {
    "version": "2.0",
    "statement": [
    {
    "effect": "allow",
    "action": [
    "*"
    ],
    "resource": "*"
    },
    {
    "effect": "deny",
    "action": [
    "*"
    ],
    "resource": "*",
    "condition": {
    "for_any_value:string_equal": {
    "qcs:resource_tag": [
    "key&T" //标签 T
    ]
    }
    }
    }
    ]
    }

    COS 权限 deny 所有用户(匿名用户 anonymous)

    在 COS 的 Bucket ACL 或 Bucket Policy 中配置 deny 所有用户(匿名用户 anonymous)访问,但如果同时还有另外指定 allow 某个用户,被 allow 的用户仍然可以访问 COS 存储桶。

    计费相关操作

    如果一个子用户关联了 AdministratorAccess 或 QCloudFinanceFullAccess 策略,同时还关联了一个 deny action finance:xx 的策略,这个子用户在 action finance:xx 仍然可以鉴权通过,不会被拒绝访问。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持