실용적인 역할에 대한 정책을 정의하는 방법을 찾고 있습니다. Sentry에 사용할 수있는 API가 있습니까? REST/JAVA?정책 관리를위한 Apache Sentry API
모든 문서 또는 링크가 도움이 될 것입니다.
실용적인 역할에 대한 정책을 정의하는 방법을 찾고 있습니다. Sentry에 사용할 수있는 API가 있습니까? REST/JAVA?정책 관리를위한 Apache Sentry API
모든 문서 또는 링크가 도움이 될 것입니다.
센트리는 apache thrift 클라이언트 인터페이스를 노출합니다. 여기서는 절약형 API 정의 sentry_policy_service.thrift을 찾을 수 있습니다. 클라이언트 소스 코드를 생성하는 데 사용할 수 있습니다.
또한, 클라우 데라의 출시 CDH의 일부로 배포, 센트리 서비스 호환 클라이언트 라이브러리를 컴파일 예 :
클라우 데라의 메이븐 저장소에서 사용할 수<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>
사용하여 샘플 프로그램입니다 "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, 문자열 요청자 사용자 이름, 부울 isOverwriteRole)
샘플 krb5.conf, login.conf 및 pom.xml이 필요하면 의견을 게시하십시오.