Я ищу способ определения политики для роли прагматично. Есть ли API для Sentry? Или REST/JAVA?API Apache Sentry для управления политикой
Любая документация или ссылка будут полезными?
Я ищу способ определения политики для роли прагматично. Есть ли API для Sentry? Или REST/JAVA?API Apache Sentry для управления политикой
Любая документация или ссылка будут полезными?
Sentry предоставляет apache thrift клиентский интерфейс, здесь вы найдете определение бережливости api sentry_policy_service.thrift. Вы можете использовать его для генерации исходного кода клиента.
Кроме того, Cloudera релизы составлены клиентские библиотеки, совместимые Часовая служба, распространяются как часть CDH, а именно:
<dependency>
<groupId>org.apache.sentry</groupId>
<artifactId>sentry-provider-db</artifactId>
<version>1.5.1-cdh5.5.1</version>
</dependency>
доступен в репозитории Maven Cloudera в:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<repositories>
<repository>
<id>cloudera</id>
<url>https://repository.cloudera.com/artifactory/cloudera-repos/</url>
</repository>
</repositories>
</project>
Вот пример программы с использованием «sentry-provider-db», чтобы получить сведения о разрешении конкретной базы данных улья (эта программа может не определять политику для роли, но эта программа может дать вам представление, использовать другие методы для достижения этого)
public class ConnectSentry {
public static void main(String[] args) throws IOException, SentryUserException, LoginException {
String userName=args[0];
String databaseName=args[1];
Configuration conf = new Configuration();
conf.set(ClientConfig.SERVER_RPC_ADDRESS, "servernamexx.domain");
conf.set(ClientConfig.SERVER_RPC_PORT, "8038"); //default port is 8038, verify this setting in configuration of Sentry
System.setProperty("javax.security.auth.login.name", "userName");
System.setProperty("java.security.auth.login.config", "login.conf");
System.setProperty("java.security.krb5.conf", "krb5.conf");
System.setProperty("javax.security.auth.useSubjectCredsOnly", "false");
System.setProperty("sun.security.krb5.debug", "false");
conf.set(ServerConfig.PRINCIPAL, "sentry/<sentry-server-principal>");
SentryPolicyServiceClientDefaultImpl sentryPolicyServiceClientDefaultImpl = new SentryPolicyServiceClientDefaultImpl(
conf);
sentryPolicyServiceClientDefaultImpl.listUserRoles(userName).
forEach(rolesentry -> {//System.out.println(rolesentry.getRoleName());
try {
sentryPolicyServiceClientDefaultImpl.listAllPrivilegesByRoleName(userName, rolesentry.getRoleName()).forEach(
allpriv ->{
String db = allpriv.getDbName();
String permission=allpriv.getAction();
if (db.equals(args[1]))
{
System.out.println("found database and permission is "+permission);
}
}
);
} catch (SentryUserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
});
}
}
см ниже программу, чтобы получить представление о доступных методах
Ниже методов и класса могут быть полезны для вас:
общественный класс SentryPolicyServiceClientDefaultImpl реализует SentryPolicyServiceClient
общественности synchronized void importPolicy (Map >> policyFileMappingData, Строка requestorUserName, boolean isOverwriteRole)
Оставить комментарий, если вам нужен образец krb5.conf, login.conf и pom.xml