Apache Sentry API для управления политиками

apache-sentry

1170 просмотра

2 ответа

Я ищу способ определения политики для роли прагматично. Есть ли API для Sentry? Либо ОТДЫХ / ЯВА?

Любая документация или ссылка будет отличной помощью?

Автор: Shashi Источник Размещён: 08.11.2019 11:27

Ответы (2)


2 плюса

Sentry предоставляет клиентский интерфейс Apache Thrift , здесь вы можете найти определение Thrift API API sentry_policy_service.thrift . Вы можете использовать его для генерации исходного кода клиента.

Кроме того, Cloudera выпускает скомпилированные клиентские библиотеки, совместимые с Sentry Service, распространяемые как часть CDH, т.е.

<dependency>
    <groupId>org.apache.sentry</groupId>
    <artifactId>sentry-provider-db</artifactId>
    <version>1.5.1-cdh5.5.1</version>
</dependency>

доступно в репозитории Maou 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>
Автор: Artur I Размещён: 18.09.2016 05:31

0 плюса

Вот пример программы, использующей «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();
            }
             });


    }
}

Обратитесь к программе ниже, чтобы получить представление о доступных методах.

https://github.com/apache/incubator-sentry/blob/master/sentry-provider/sentry-provider-db/src/main/java/org/apache/sentry/provider/db/service/thrift/SentryPolicyServiceClientDefaultImpl. Ява

Ниже методы и класс могут быть полезны для вас:

открытый класс SentryPolicyServiceClientDefaultImpl реализует SentryPolicyServiceClient

public синхронизированный void importPolicy (Карта >> policyFileMappingData, Строка requestorUserName, логическое isOverwriteRole)

Оставьте комментарий, если вам нужен пример krb5.conf, login.conf и pom.xml

Автор: Anandkumar Размещён: 30.11.2017 05:46
Вопросы из категории :
32x32