Apache sentry - 获取已分配给定数据库/表的岗哨组

时间:2016-11-03 15:09:34

标签: cloudera apache-sentry

我希望得到一个给定的数据库/表,这个数据库/表已被授予访问权限的组列表。

2 个答案:

答案 0 :(得分:0)

documentation中似乎没有用于此目的的Sentry SHOW命令。

blog post表示您可以直接查询Sentry数据库(假设您使用的是Sentry服务,而不是策略文件)。

  

但是,目前没有命令显示该组的角色   映射。唯一的方法是连接到Sentry   数据库并从中获取此信息   数据库中。

     

如果您正在使用CDH,则可以确定群集中的哪个节点   使用Cloudera Manager运行Sentry数据库,导航到   集群> Sentry,然后单击Sentry Server然后   组态。在这里,您将找到正在使用的数据库类型   (例如MySQL,PostgreSQL,Oracle),数据库运行的服务器   on,它的端口,数据库名称和用户。

您将需要Sentry数据库密码 - 博客文章提供了在您不知道的情况下检索它的建议。

给出了PostgreSQL数据库的示例查询:

SELECT "SENTRY_ROLE"."ROLE_NAME","SENTRY_GROUP"."GROUP_NAME"
FROM "SENTRY_ROLE_GROUP_MAP"
JOIN "SENTRY_ROLE" ON "SENTRY_ROLE"."ROLE_ID"="SENTRY_ROLE_GROUP_MAP"."ROLE_ID"
JOIN "SENTRY_GROUP" ON "SENTRY_GROUP"."GROUP_ID"="SENTRY_ROLE_GROUP_MAP"."GROUP_ID";

但是,我自己没有尝试过这个问题。

答案 1 :(得分:0)

这应该适用于MySQL:

SELECT R.ROLE_NAME, G.GROUP_NAME
FROM SENTRY_ROLE_GROUP_MAP RGM
JOIN SENTRY_ROLE R ON R.ROLE_ID=RGM.ROLE_ID
JOIN SENTRY_GROUP G ON G.GROUP_ID=RGM.GROUP_ID;