Apache sentry - получает группы, для которых была назначена заданная база данных / таблицы.

Я хочу получить для заданной базы данных / таблицы список групп, которым этой базе данных / таблице был предоставлен доступ в карауле.

1 ответ

Похоже, что в документации нет команды Sentry SHOW для этой цели.

В этом сообщении говорится, что вместо этого вы можете напрямую запросить базу данных Sentry (при условии, что вы используете службу Sentry, а не файлы политики).

Однако в настоящее время нет команды для отображения группы на роль. Единственный способ сделать это - подключиться к базе данных Sentry и получить эту информацию из таблиц в базе данных.

Если вы используете CDH, вы можете определить, на каком узле в кластере запущена база данных Sentry, с помощью Cloudera Manager, перейдя в "Кластеры"> "Sentry", затем нажмите "Sentry Server", а затем "Конфигурация". Здесь вы найдете тип используемой базы данных (например, MySQL, PostgreSQL, Oracle), сервер, на котором работают базы данных, его порт, имя базы данных и пользователь.

Вам понадобится пароль базы данных 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";

Однако я не пробовал этот запрос сам.

Это должно работать для 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;
Другие вопросы по тегам