snowflake-cloud-data-platform - 是否可以使用 SQL 访问用户和角色信息?SHOW USERS 数据存储在哪里?
问题描述
根据我对从ACCOUNTADMIN
角色调用时的以下命令的理解
SHOW USERS;
共享此列表。我试图在一个选择语句中获取每个用户和用户所属的每个角色的列表。就像是
select role, user from roles join users on roles.userid = users.userid.
然后,我可以通过将对象加入表来找出哪些角色已被授予访问哪些对象的权限SNOWFLAKE.INFORMATION_SCHEMA.OBJECT_PRIVILEGES
。
我尝试在存储过程中使用 aSHOW USERS;
后跟RESULT_SCAN
命令来执行此操作,但存储过程不允许执行SHOW USERS
命令。
还有另一种方法可以做到这一点吗?
解决方案
在存储过程 EXECUTED AS OWNER(无论语言如何)SHOW USERS;
中不支持执行。当作为呼叫者执行时,这取决于您是否已将过程的使用权授予进行呼叫的角色。
作为替代方案,您可以使用诸如 python 之类的语言来遍历运行 SHOW GRANTS TO 的用户列表,并将结果写入表中。您可以使用 SHOW GRANTS TO 对每个角色执行相同的操作。从那里您可以使用递归查询来遍历您的 GRANTS_TO_ROLE 表,然后加入您的 GRANTS_TO_USER 表。
推荐阅读
- sql - 如何对列 jsonb 类型使用通配符
- python - 无法访问 docker 容器 Socket 挂起错误
- javascript - removeEventListener 无法按预期工作
- ruby-on-rails - 强制重新编译单个 .js.erb 文件
- google-cloud-platform - 对于 bigtable 实例,gcloud cli 显示的可授予角色少于 gcp 控制台
- xcode - xcodebuild 无法构建项目
- cordova - Cordova 相机插件 DATA_URL 不返回文件名或扩展名
- javascript - 我正在尝试使用 react-redux 存储我的数据,但它没有。我该如何解决这个问题?
- azure-devops - 如何从 azure TFS 2019 日历板上删除休息日
- ios - 从项目 xcode 中删除 git