2016-08-20 8 views

答えて

1

センテリーapache thriftクライアントインターフェイスを公開しています。ここでは、スリフトAPIの定義sentry_policy_service.thriftを見つけることができます。これを使用してクライアントソースコードを生成することができます。

また、ClouderaのリリースはCDHの一部として配布、歩哨サービスに互換性のあるクライアントライブラリをコンパイルしたすなわち:

ClouderaののMavenのリポジトリで利用可能な
<dependency> 
    <groupId>org.apache.sentry</groupId> 
    <artifactId>sentry-provider-db</artifactId> 
    <version>1.5.1-cdh5.5.1</version> 
</dependency> 

:ここ

<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> 
0

は、使用したサンプル・プログラムであります特定のハイブデータベースのパーミッションの詳細を取得するための "sentry-provider-db"(このプログラムはRoleのポリシーを定義していないかもしれませんが、このプログラムは他の方法を使用して達成するかもしれません)

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.java

についてのアイデアを得るために、以下のプログラムはあなたのために役に立つかもしれません参照してください。

パブリッククラスSentryPolicyServiceClientDefaultImplがSentryPolicyServiceClient

公衆を実装synchronized void importPolicy(Map >> policyFileMappingData、 String requestorUserName、 boolean isOverwriteRole)

サンプルkrb5.conf、login.conf、およびpom.xmlが必要な場合は、

関連する問題