我研究了在此处找到的GRANT文档(https://docs.aws.amazon.com/redshift/latest/dg/r_GRANT.html),我试图查看是否有内置函数可以让我了解数据库中的可访问性级别。当然有:
\ dp和\ dp mytablename
但这不显示我的帐户有权访问的内容。我想查看我有权访问或使用的所有架构。谁能告诉我是否有一个命令可以检查我在Postgres / Redshift中的访问级别(是否具有CREATE,USAGE特权)?如果是这样,该命令将是什么?和数据库一样(是否具有CREATE,TEMP,TEMPORARY特权)
答案 0 :(得分:1)
确保您熟悉Postgres用于用户/角色的模型: 来自the Postgres documentation
PostgreSQL使用角色的概念来管理数据库访问权限。可以将角色视为数据库用户或一组数据库用户,这取决于角色的设置方式。角色可以拥有数据库对象(例如,表和函数),并且可以将这些对象的特权分配给其他角色,以控制谁有权访问哪些对象
因此,您应该考虑“用户X分配了哪些角色,这些角色可以访问哪些对象(以及哪种访问类型)?”同时要记住用户X 也是一个角色。
还请记住,“模式”和“数据库”是名称空间,而不是对象。表和列是对象。询问架构/数据库权限将不会很有用,因为这些不是应用特权的对象。
尝试这个实验:
您应注意,授予USAGE仅将测试用户添加到名称空间。授予select应该已经对实际的数据库对象(表)应用了权限。
您可能正在寻找这样的东西:
select * from information_schema.role_table_grants
,可能还有其他role_表:
information_schema.role_column_grants
information_schema.role_routine_grants
information_schema.role_table_grants
information_schema.role_udt_grants
information_schema.role_usage_grants