如何在PostgreSQL中读取/列出列上的安全标签

qyuhtwio  于 2022-11-23  发布在  PostgreSQL
关注(0)|答案(1)|浏览(119)

我已经在我的数据库上设置了带有安全标签的PostgreSQL Anonymizer,一切都正常。
我尝试定期检查我的数据库的列上是否缺少安全标签,以便告诉开发人员在下一个版本中添加它们,但我找不到读取安全标签的方法。
有人知道怎么做吗?

于2022年10月11日编辑

多亏了@Shiva,我最终完成了以下查询:

select cl."oid", col.ordinal_position, col.table_schema, col.table_name, col.column_name
FROM information_schema.columns col
join pg_catalog.pg_class cl on cl.relname = col.table_name
WHERE col.table_schema = 'XXXX'
and not exists (select objoid FROM pg_seclabel where provider = 'anon' and objsubid = col.ordinal_position and objoid = cl."oid");
axr492tv

axr492tv1#

您必须查询pg_seclabel目录以获取安全标签列表。

SELECT objsubid, provider, label FROM pg_seclabel WHERE objoid::regclass = 'mytable'::regclass

objsubid是列号,通过查询information_schema.columns目录可以找到对应的列名。

SELECT column_name FROM information_schema.columns WHERE table_name = 'mytable' AND ordinal_position = <column_number>

您可以合并以上两个查询来寻找没有必要安全性标签的栏。

相关问题