Search in sources :

Example 1 with KylinConfig

use of org.apache.kylin.common.KylinConfig in project ranger by apache.

the class RangerKylinAccessRequest method checkPermission.

@Override
public boolean checkPermission(String user, List<String> groups, String entityType, String entityUuid, Permission permission) {
    if (LOG.isDebugEnabled()) {
        LOG.debug("==> RangerKylinAuthorizer.checkPermission( user=" + user + ", groups=" + groups + ", entityType=" + entityType + ", entityUuid=" + entityUuid + ", permission=" + permission + ")");
    }
    boolean ret = false;
    if (kylinPlugin != null) {
        String projectName = null;
        KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
        if (AclEntityType.PROJECT_INSTANCE.equals(entityType)) {
            ProjectInstance projectInstance = ProjectManager.getInstance(kylinConfig).getPrjByUuid(entityUuid);
            if (projectInstance != null) {
                projectName = projectInstance.getName();
            } else {
                if (LOG.isWarnEnabled()) {
                    LOG.warn("Could not find kylin project for given uuid=" + entityUuid);
                }
            }
        }
        String accessType = ExternalAclProvider.transformPermission(permission);
        String clusterName = kylinPlugin.getClusterName();
        RangerKylinAccessRequest request = new RangerKylinAccessRequest(projectName, user, groups, accessType, clusterName, clientIPAddress);
        RangerAccessResult result = kylinPlugin.isAccessAllowed(request);
        if (result != null && result.getIsAllowed()) {
            ret = true;
        }
    }
    if (LOG.isDebugEnabled()) {
        LOG.debug("<== RangerKylinAuthorizer.checkPermission(): result=" + ret);
    }
    return ret;
}
Also used : KylinConfig(org.apache.kylin.common.KylinConfig) ProjectInstance(org.apache.kylin.metadata.project.ProjectInstance) RangerAccessResult(org.apache.ranger.plugin.policyengine.RangerAccessResult)

Example 2 with KylinConfig

use of org.apache.kylin.common.KylinConfig in project ranger by apache.

the class RangerKylinAuthorizerTest method mockKylinProjects.

/**
 * Help function: mock kylin projects, to match projectUuid and projectName
 */
private static void mockKylinProjects() {
    KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
    ProjectManager projectManager = mock(ProjectManager.class);
    @SuppressWarnings({ "rawtypes", "unchecked" }) Map<Class, Object> managersCache = (Map<Class, Object>) ReflectionTestUtils.getField(kylinConfig, "managersCache");
    managersCache.put(ProjectManager.class, projectManager);
    Answer<ProjectInstance> answer = new Answer<ProjectInstance>() {

        @Override
        public ProjectInstance answer(InvocationOnMock invocation) throws Throwable {
            Object[] args = invocation.getArguments();
            if (args == null || args.length == 0) {
                return null;
            }
            String uuid = (String) args[0];
            return uuid2Projects.get(uuid);
        }
    };
    when(projectManager.getPrjByUuid(anyString())).thenAnswer(answer);
}
Also used : KylinConfig(org.apache.kylin.common.KylinConfig) ProjectInstance(org.apache.kylin.metadata.project.ProjectInstance) ArgumentMatchers.anyString(org.mockito.ArgumentMatchers.anyString) ProjectManager(org.apache.kylin.metadata.project.ProjectManager) Answer(org.mockito.stubbing.Answer) InvocationOnMock(org.mockito.invocation.InvocationOnMock) BeforeClass(org.junit.BeforeClass) AfterClass(org.junit.AfterClass) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map)

Aggregations

KylinConfig (org.apache.kylin.common.KylinConfig)2 ProjectInstance (org.apache.kylin.metadata.project.ProjectInstance)2 HashMap (java.util.HashMap)1 LinkedHashMap (java.util.LinkedHashMap)1 Map (java.util.Map)1 ProjectManager (org.apache.kylin.metadata.project.ProjectManager)1 RangerAccessResult (org.apache.ranger.plugin.policyengine.RangerAccessResult)1 AfterClass (org.junit.AfterClass)1 BeforeClass (org.junit.BeforeClass)1 ArgumentMatchers.anyString (org.mockito.ArgumentMatchers.anyString)1 InvocationOnMock (org.mockito.invocation.InvocationOnMock)1 Answer (org.mockito.stubbing.Answer)1