如何检查Snowflake中具有行访问策略的表

问题描述 投票:0回答:2

我使用“创建或替换行访问策略..”命令在架构和行访问策略中创建了一些表。 然后,我使用“alter table add row access policy ...”将行访问策略添加到表中

它正在按预期工作。我的问题是,将来,如果我想获取架构中具有行访问策略的表的列表,我怎样才能得到它?

“显示表..”命令不显示该表具有行访问策略。

security schema snowflake-cloud-data-platform row-level-security
2个回答
1
投票

我刚刚遇到了同样的问题,我想我已经解决了。

查看此处的文档 - https://docs.snowflake.com/en/sql-reference/functions/policy_references.html

您可以根据策略名称或要检查的对象名称搜索行访问策略。

在您的示例中,假设您的表名为 my_db.my_schema.my_table。要查看表上的行访问策略,只需运行:

use database my_db;
use schema information_schema;
select *
  from table(information_schema.policy_references(ref_entity_name => 'my_db.my_schema.my_table', ref_entity_domain => 'table'));


0
投票

jsrathnayake在评论中自我回答。这是一个很好的答案,我在这里重复一遍,以免丢失。

找到了。可以使用以下查询。从表中选择*( information_schema.policy_references(policy_name=>''));

SELECT * FROM TABLE(DATABASE_NAME.INFORMATION_SCHEMA.POLICY_REFERENCES(policy_name=>'NAME_OF_POLICY'));

确实返回应用了该策略的对象。

POLICY_DB             |POLICY_SCHEMA         |POLICY_NAME                   |POLICY_KIND      |REF_DATABASE_NAME     |REF_SCHEMA_NAME       |REF_ENTITY_NAME |REF_ENTITY_DOMAIN|REF_COLUMN_NAME|REF_ARG_COLUMN_NAMES|TAG_DATABASE|TAG_SCHEMA|TAG_NAME|POLICY_STATUS|
----------------------+----------------------+------------------------------+-----------------+----------------------+----------------------+----------------+-----------------+---------------+--------------------+------------+----------+--------+-------------+
DATABASE_NAME         |SCHEMA_NAME           |NAME_OF_POLICY                |ROW_ACCESS_POLICY|DATABASE_NAME         |SCHEMA_NAME           |OBJECT_NAME     |VIEW             |               |[ "ARGUMENT" ]      |            |          |        |ACTIVE       |
© www.soinside.com 2019 - 2024. All rights reserved.