RANGER-203: Framework to extend Ranger security to new components in a pluggable way
Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/e99d911d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/e99d911d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/e99d911d Branch: refs/heads/stack Commit: e99d911dc94fd70ad46e6c2e5568aa64d9eb1bab Parents: 06ca853 Author: Madhan Neethiraj <[email protected]> Authored: Thu Dec 18 14:47:56 2014 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Thu Dec 18 14:47:56 2014 -0800 ---------------------------------------------------------------------- plugin-common/pom.xml | 42 + .../plugin/manager/ServiceDefManager.java | 141 +++ .../ranger/plugin/manager/ServiceManager.java | 250 ++++ .../plugin/model/RangerBaseModelObject.java | 166 +++ .../ranger/plugin/model/RangerPolicy.java | 633 ++++++++++ .../ranger/plugin/model/RangerService.java | 190 +++ .../ranger/plugin/model/RangerServiceDef.java | 1146 ++++++++++++++++++ .../policyengine/RangerAccessRequest.java | 42 + .../policyengine/RangerAccessRequestImpl.java | 98 ++ .../plugin/policyengine/RangerPolicyEngine.java | 32 + .../policyengine/RangerPolicyEngineImpl.java | 114 ++ .../plugin/policyengine/RangerResource.java | 31 + .../plugin/policyengine/RangerResourceImpl.java | 137 +++ .../ranger/plugin/store/ServiceDefStore.java | 38 + .../ranger/plugin/store/ServiceStore.java | 56 + .../ranger/plugin/store/file/BaseFileStore.java | 354 ++++++ .../plugin/store/file/ServiceDefFileStore.java | 357 ++++++ .../plugin/store/file/ServiceFileStore.java | 577 +++++++++ .../service-defs/ranger-servicedef-hbase.json | 51 + .../service-defs/ranger-servicedef-hdfs.json | 61 + .../service-defs/ranger-servicedef-hive.json | 45 + .../service-defs/ranger-servicedef-knox.json | 34 + .../service-defs/ranger-servicedef-storm.json | 46 + .../plugin/manager/TestServiceManager.java | 203 ++++ pom.xml | 1 + security-admin/pom.xml | 5 + 26 files changed, 4850 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/pom.xml ---------------------------------------------------------------------- diff --git a/plugin-common/pom.xml b/plugin-common/pom.xml new file mode 100644 index 0000000..f0d4efe --- /dev/null +++ b/plugin-common/pom.xml @@ -0,0 +1,42 @@ +<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/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <groupId>org.apache.ranger</groupId> + <artifactId>ranger</artifactId> + <version>0.4.0</version> + </parent> + <artifactId>plugin-common</artifactId> + <name>ranger-plugin-common</name> + <description>Ranger Plugin Common Library</description> + <dependencies> + <dependency> + <groupId>org.codehaus.jackson</groupId> + <artifactId>jackson-core-asl</artifactId> + <version>${codehaus.jackson.version}</version> + </dependency> + <dependency> + <groupId>org.codehaus.jackson</groupId> + <artifactId>jackson-mapper-asl</artifactId> + <version>${codehaus.jackson.version}</version> + </dependency> + <dependency> + <groupId>log4j</groupId> + <artifactId>log4j</artifactId> + <version>${log4j.version}</version> + </dependency> + <dependency> + <groupId>commons-logging</groupId> + <artifactId>commons-logging</artifactId> + <version>${commons.logging.version}</version> + </dependency> + <dependency> + <groupId>org.apache.hadoop</groupId> + <artifactId>hadoop-common</artifactId> + <version>${hadoop-common.version}</version> + </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + </dependency> + </dependencies> +</project> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceDefManager.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceDefManager.java b/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceDefManager.java new file mode 100644 index 0000000..ce7dbf0 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceDefManager.java @@ -0,0 +1,141 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.manager; + +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.ranger.plugin.model.RangerServiceDef; +import org.apache.ranger.plugin.store.ServiceDefStore; +import org.apache.ranger.plugin.store.file.ServiceDefFileStore; + + +public class ServiceDefManager { + private static final Log LOG = LogFactory.getLog(ServiceDefManager.class); + + private ServiceDefStore sdStore = null; + + public ServiceDefManager() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.ServiceDefManager()"); + } + + init(); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.ServiceDefManager()"); + } + } + + public RangerServiceDef create(RangerServiceDef serviceDef) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.create(" + serviceDef + ")"); + } + + RangerServiceDef ret = sdStore.create(serviceDef); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.create(" + serviceDef + "): " + ret); + } + + return ret; + } + + public RangerServiceDef update(RangerServiceDef serviceDef) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.update(" + serviceDef + ")"); + } + + RangerServiceDef ret = sdStore.update(serviceDef); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.update(" + serviceDef + "): " + ret); + } + + return ret; + } + + public void delete(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.delete(" + id + ")"); + } + + sdStore.delete(id); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.delete(" + id + ")"); + } + } + + public RangerServiceDef get(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.get(" + id + ")"); + } + + RangerServiceDef ret = sdStore.get(id); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.get(" + id + ")"); + } + + return ret; + } + + public RangerServiceDef getByName(String name) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.getByName(" + name + ")"); + } + + RangerServiceDef ret = sdStore.getByName(name); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.getByName(" + name + "): " + ret); + } + + return ret; + } + + public List<RangerServiceDef> getAll() throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.getAll()"); + } + + List<RangerServiceDef> ret = sdStore.getAll(); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.getAll(): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + + private void init() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceDefManager.init()"); + } + + sdStore = new ServiceDefFileStore(); // TODO: store type should be configurable + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceDefManager.init()"); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceManager.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceManager.java b/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceManager.java new file mode 100644 index 0000000..7b947ea --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/manager/ServiceManager.java @@ -0,0 +1,250 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.manager; + +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerService; +import org.apache.ranger.plugin.store.ServiceStore; +import org.apache.ranger.plugin.store.file.ServiceFileStore; + + +public class ServiceManager { + private static final Log LOG = LogFactory.getLog(ServiceManager.class); + + private ServiceStore svcStore = null; + + public ServiceManager() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.ServiceManager()"); + } + + init(); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.ServiceManager()"); + } + } + + public RangerService create(RangerService service) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.create(" + service + ")"); + } + + RangerService ret = svcStore.create(service); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.create(" + service + "): " + ret); + } + + return ret; + } + + public RangerService update(RangerService service) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.update(" + service + ")"); + } + + RangerService ret = svcStore.update(service); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.update(" + service + "): " + ret); + } + + return ret; + } + + public void delete(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.delete(" + id + ")"); + } + + svcStore.delete(id); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.delete(" + id + ")"); + } + } + + public RangerService get(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.get(" + id + ")"); + } + + RangerService ret = svcStore.get(id); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.get(" + id + "): " + ret); + } + + return ret; + } + + public RangerService getByName(String name) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.getByName(" + name + ")"); + } + + RangerService ret = svcStore.getByName(name); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.getByName(" + name + "): " + ret); + } + + return ret; + } + + public List<RangerService> getAll() throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.getAll()"); + } + + List<RangerService> ret = svcStore.getAll(); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.getAll(): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + + public void validateConfig(RangerService service) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.validateConfig(" + service + ")"); + } + + // TODO: call validateConfig() on the implClass + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.validateConfig(" + service + ")"); + } + } + + public RangerPolicy createPolicy(RangerPolicy policy) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.createPolicy(" + policy + ")"); + } + + RangerPolicy ret = svcStore.createPolicy(policy); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.createPolicy(" + policy + "): " + ret); + } + + return ret; + } + + public RangerPolicy updatePolicy(RangerPolicy policy) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.updatePolicy(" + policy + ")"); + } + + RangerPolicy ret = svcStore.updatePolicy(policy); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.updatePolicy(" + policy + "): " + ret); + } + + return ret; + } + + public void deletePolicy(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.deletePolicy(" + id + ")"); + } + + svcStore.deletePolicy(id); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.deletePolicy(" + id + ")"); + } + } + + public RangerPolicy getPolicy(Long id) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.getPolicy(" + id + ")"); + } + + RangerPolicy ret = svcStore.getPolicy(id); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.getPolicy(" + id + "): " + ret); + } + + return ret; + } + + public List<RangerPolicy> getPolicies(Long svcId) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.getPolicies(" + svcId + ")"); + } + + List<RangerPolicy> ret = svcStore.getServicePolicies(svcId); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.getPolicies(" + svcId + "): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + + public RangerPolicy getPolicyByName(String svcName, String policyName) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.getPolicyByName(" + svcName + "," + policyName + ")"); + } + + RangerPolicy ret = svcStore.getPolicyByName(svcName, policyName); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.getPolicyByName(" + svcName + "," + policyName + "): " + ret); + } + + return ret; + } + + public List<RangerPolicy> getAllPolicies() throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.getAllPolicies()"); + } + + List<RangerPolicy> ret = svcStore.getAllPolicies(); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== getAllPolicies.getAll(): count=" + (ret == null ? 0 : ret.size())); + } + + return ret; + } + + private void init() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> ServiceManager.init()"); + } + + svcStore = new ServiceFileStore(); // TODO: store type should be configurable + + if(LOG.isDebugEnabled()) { + LOG.debug("<== ServiceManager.init()"); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java new file mode 100644 index 0000000..85bbb3e --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerBaseModelObject.java @@ -0,0 +1,166 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.model; + +import java.util.Date; +import java.util.Map; +import java.util.UUID; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; + +@JsonAutoDetect(getterVisibility=Visibility.NONE, setterVisibility=Visibility.NONE, fieldVisibility=Visibility.ANY) +@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL ) +@JsonIgnoreProperties(ignoreUnknown=true) +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class RangerBaseModelObject implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private Long id = null; + private String guid = null; + private String createdBy = null; + private String updatedBy = null; + private Date createTime = null; + private Date updateTime = null; + private Long version = null; + + /** + * + */ + public RangerBaseModelObject() { + } + + public void updateFrom(RangerBaseModelObject other) { + // Nothing to copy + } + + /** + * @return the id + */ + public Long getId() { + return id; + } + /** + * @param id the id to set + */ + public void setId(Long id) { + this.id = id; + } + /** + * @return the guid + */ + public String getGuid() { + return guid; + } + /** + * @param guid the guid to set + */ + public void setGuid(String guid) { + this.guid = guid; + } + /** + * @return the createdBy + */ + public String getCreatedBy() { + return createdBy; + } + /** + * @param createdBy the createdBy to set + */ + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + /** + * @return the updatedBy + */ + public String getUpdatedBy() { + return updatedBy; + } + /** + * @param updatedBy the updatedBy to set + */ + public void setUpdatedBy(String updatedBy) { + this.updatedBy = updatedBy; + } + /** + * @return the createTime + */ + public Date getCreateTime() { + return createTime; + } + /** + * @param createTime the createTime to set + */ + public void setCreateTime(Date createTime) { + this.createTime = createTime; + } + /** + * @return the updateTime + */ + public Date getUpdateTime() { + return updateTime; + } + /** + * @param updateTime the updateTime to set + */ + public void setUpdateTime(Date updateTime) { + this.updateTime = updateTime; + } + /** + * @return the version + */ + public Long getVersion() { + return version; + } + /** + * @param version the version to set + */ + public void setVersion(Long version) { + this.version = version; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("id={").append(id).append("} "); + sb.append("guid={").append(guid).append("} "); + sb.append("createdBy={").append(createdBy).append("} "); + sb.append("updatedBy={").append(updatedBy).append("} "); + sb.append("createTime={").append(createTime).append("} "); + sb.append("updateTime={").append(updateTime).append("} "); + sb.append("version={").append(version).append("} "); + + return sb; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java new file mode 100644 index 0000000..13a9c4d --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerPolicy.java @@ -0,0 +1,633 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.model; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility; +import org.codehaus.jackson.map.annotate.JsonSerialize; + + +@JsonAutoDetect(getterVisibility=Visibility.NONE, setterVisibility=Visibility.NONE, fieldVisibility=Visibility.ANY) +@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL ) +@JsonIgnoreProperties(ignoreUnknown=true) +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class RangerPolicy extends RangerBaseModelObject implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String service = null; + private String name = null; + private String description = null; + private Boolean isEnabled = null; + private Boolean isAuditEnabled = null; + private List<RangerPolicyResource> resources = null; + private List<RangerPolicyItem> policyItems = null; + + + /** + * @param type + */ + public RangerPolicy() { + this(null, null, null, null, null, null); + } + + /** + * @param type + * @param name + * @param description + * @param isEnabled + * @param configs + */ + public RangerPolicy(String service, String name, String description, Boolean isEnabled, List<RangerPolicyResource> resources, List<RangerPolicyItem> policyItems) { + super(); + + setService(service); + setName(name); + setDescription(description); + setIsEnabled(isEnabled); + setIsAuditEnabled(null); + setResources(resources); + setPolicyItems(policyItems); + } + + public void updateFrom(RangerPolicy other) { + super.updateFrom(other); + + setService(other.getService()); + setName(other.getName()); + setDescription(other.getDescription()); + setIsEnabled(other.getIsEnabled()); + setIsAuditEnabled(other.getIsAuditEnabled()); + setResources(other.getResources()); + setPolicyItems(other.getPolicyItems()); + } + + /** + * @return the type + */ + public String getService() { + return service; + } + + /** + * @param type the type to set + */ + public void setService(String service) { + this.service = service; + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the isEnabled + */ + public Boolean getIsEnabled() { + return isEnabled; + } + + /** + * @param isEnabled the isEnabled to set + */ + public void setIsEnabled(Boolean isEnabled) { + this.isEnabled = isEnabled == null ? Boolean.TRUE : isEnabled; + } + + /** + * @return the isAuditEnabled + */ + public Boolean getIsAuditEnabled() { + return isAuditEnabled; + } + + /** + * @param isEnabled the isEnabled to set + */ + public void setIsAuditEnabled(Boolean isAuditEnabled) { + this.isAuditEnabled = isAuditEnabled == null ? Boolean.TRUE : isAuditEnabled; + } + + /** + * @return the resources + */ + public List<RangerPolicyResource> getResources() { + return resources; + } + + /** + * @param configs the resources to set + */ + public void setResources(List<RangerPolicyResource> resources) { + this.resources = new ArrayList<RangerPolicyResource>(); + + if(resources != null) { + for(RangerPolicyResource resource : resources) { + this.resources.add(resource); + } + } + } + + /** + * @return the policyItems + */ + public List<RangerPolicyItem> getPolicyItems() { + return policyItems; + } + + /** + * @param policyItems the policyItems to set + */ + public void setPolicyItems(List<RangerPolicyItem> policyItems) { + this.policyItems = new ArrayList<RangerPolicyItem>(); + + if(policyItems != null) { + for(RangerPolicyItem policyItem : policyItems) { + this.policyItems.add(policyItem); + } + } + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerPolicy={"); + + super.toString(sb); + + sb.append("service={").append(service).append("} "); + sb.append("name={").append(name).append("} "); + sb.append("description={").append(description).append("} "); + sb.append("isEnabled={").append(isEnabled).append("} "); + sb.append("isAuditEnabled={").append(isAuditEnabled).append("} "); + + sb.append("resources={"); + if(resources != null) { + for(RangerPolicyResource resource : resources) { + if(resource != null) { + resource.toString(sb); + } + } + } + sb.append("} "); + + sb.append("policyItems={"); + if(policyItems != null) { + for(RangerPolicyItem policyItem : policyItems) { + if(policyItem != null) { + policyItem.toString(sb); + } + } + } + sb.append("} "); + + sb.append("}"); + + return sb; + } + + + public static class RangerPolicyResource implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String type = null; + private String value = null; + private Boolean isExcludes = null; + private Boolean isRecursive = null; + + + public RangerPolicyResource() { + this(null, null, null, null); + } + + public RangerPolicyResource(String type, String value, Boolean isExcludes, Boolean isRecursive) { + setType(type); + setValue(value); + setIsExcludes(isExcludes); + setIsRecursive(isRecursive); + } + + /** + * @return the type + */ + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + + /** + * @return the value + */ + public String getValue() { + return value; + } + + /** + * @param value the value to set + */ + public void setValue(String value) { + this.value = value; + } + + /** + * @return the isExcludes + */ + public Boolean getIsExcludes() { + return isExcludes; + } + + /** + * @param isExcludes the isExcludes to set + */ + public void setIsExcludes(Boolean isExcludes) { + this.isExcludes = isExcludes == null ? Boolean.FALSE : isExcludes; + } + + /** + * @return the isRecursive + */ + public Boolean getIsRecursive() { + return isRecursive; + } + + /** + * @param isRecursive the isRecursive to set + */ + public void setIsRecursive(Boolean isRecursive) { + this.isRecursive = isRecursive == null ? Boolean.FALSE : isRecursive; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerPolicyResource={"); + sb.append("type={").append(type).append("} "); + sb.append("value={").append(value).append("} "); + sb.append("isExcludes={").append(isExcludes).append("} "); + sb.append("isRecursive={").append(isRecursive).append("} "); + sb.append("}"); + + return sb; + } + } + + public static class RangerPolicyItem implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private List<RangerPolicyItemAccess> accesses = null; + private List<String> users = null; + private List<String> groups = null; + private List<RangerPolicyItemCondition> conditions = null; + private Boolean delegateAdmin = null; + + public RangerPolicyItem() { + this(null, null, null, null, null); + } + + public RangerPolicyItem(List<RangerPolicyItemAccess> accessTypes, List<String> users, List<String> groups, List<RangerPolicyItemCondition> conditions, Boolean delegateAdmin) { + setAccesses(accessTypes); + setUsers(users); + setGroups(groups); + setConditions(conditions); + setDelegateAdmin(delegateAdmin); + } + + /** + * @return the accesses + */ + public List<RangerPolicyItemAccess> getAccesses() { + return accesses; + } + /** + * @param accesses the accesses to set + */ + public void setAccesses(List<RangerPolicyItemAccess> accesses) { + this.accesses = new ArrayList<RangerPolicyItemAccess>(); + + if(accesses != null) { + for(RangerPolicyItemAccess access : accesses) { + this.accesses.add(access); + } + } + } + /** + * @return the users + */ + public List<String> getUsers() { + return users; + } + /** + * @param users the users to set + */ + public void setUsers(List<String> users) { + this.users = new ArrayList<String>(); + + if(users != null) { + for(String user : users) { + this.users.add(user); + } + } + } + /** + * @return the groups + */ + public List<String> getGroups() { + return groups; + } + /** + * @param groups the groups to set + */ + public void setGroups(List<String> groups) { + this.groups = new ArrayList<String>(); + + if(groups != null) { + for(String group : groups) { + this.groups.add(group); + } + } + } + /** + * @return the conditions + */ + public List<RangerPolicyItemCondition> getConditions() { + return conditions; + } + /** + * @param conditions the conditions to set + */ + public void setConditions(List<RangerPolicyItemCondition> conditions) { + this.conditions = new ArrayList<RangerPolicyItemCondition>(); + + if(conditions != null) { + for(RangerPolicyItemCondition condition : conditions) { + this.conditions.add(condition); + } + } + } + + /** + * @return the delegateAdmin + */ + public Boolean getDelegateAdmin() { + return delegateAdmin; + } + + /** + * @param delegateAdmin the delegateAdmin to set + */ + public void setDelegateAdmin(Boolean delegateAdmin) { + this.delegateAdmin = delegateAdmin == null ? Boolean.FALSE : delegateAdmin; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerPolicyItem={"); + + sb.append("accessTypes={"); + if(accesses != null) { + for(RangerPolicyItemAccess access : accesses) { + if(access != null) { + access.toString(sb); + } + } + } + sb.append("} "); + + sb.append("users={"); + if(users != null) { + for(String user : users) { + if(user != null) { + sb.append(user).append(" "); + } + } + } + sb.append("} "); + + sb.append("groups={"); + if(groups != null) { + for(String group : groups) { + if(group != null) { + sb.append(group).append(" "); + } + } + } + sb.append("} "); + + sb.append("conditions={"); + if(conditions != null) { + for(RangerPolicyItemCondition condition : conditions) { + if(condition != null) { + condition.toString(sb); + } + } + } + sb.append("} "); + + sb.append("delegateAdmin={").append(delegateAdmin).append("} "); + sb.append("}"); + + return sb; + } + } + + public static class RangerPolicyItemAccess implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String type = null; + private Boolean isAllowed = null; + + public RangerPolicyItemAccess() { + this(null, null); + } + + public RangerPolicyItemAccess(String type, Boolean value) { + setType(type); + setValue(value); + } + + /** + * @return the type + */ + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + + /** + * @return the value + */ + public Boolean getValue() { + return isAllowed; + } + + /** + * @param value the value to set + */ + public void setValue(Boolean isAllowed) { + this.isAllowed = isAllowed == null ? Boolean.FALSE : isAllowed; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerPolicyItemAccess={"); + sb.append("type={").append(type).append("} "); + sb.append("isAllowed={").append(isAllowed).append("} "); + sb.append("}"); + + return sb; + } + } + + public static class RangerPolicyItemCondition implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String type = null; + private String value = null; + + public RangerPolicyItemCondition() { + this(null, null); + } + + public RangerPolicyItemCondition(String type, String value) { + setType(type); + setValue(value); + } + + /** + * @return the type + */ + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + + /** + * @return the value + */ + public String getValue() { + return value; + } + + /** + * @param value the value to set + */ + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerPolicyItemCondition={"); + sb.append("type={").append(type).append("} "); + sb.append("value={").append(value).append("} "); + sb.append("}"); + + return sb; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java new file mode 100644 index 0000000..9bdb086 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerService.java @@ -0,0 +1,190 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.model; + +import java.util.HashMap; +import java.util.Map; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility; +import org.codehaus.jackson.map.annotate.JsonSerialize; + + +@JsonAutoDetect(getterVisibility=Visibility.NONE, setterVisibility=Visibility.NONE, fieldVisibility=Visibility.ANY) +@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL ) +@JsonIgnoreProperties(ignoreUnknown=true) +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class RangerService extends RangerBaseModelObject implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String type = null; + private String name = null; + private String description = null; + private Boolean isEnabled = null; + private Map<String, String> configs = null; + + + /** + * @param type + */ + public RangerService() { + this(null, null, null, null, null); + } + + /** + * @param type + * @param name + * @param description + * @param isEnabled + * @param configs + */ + public RangerService(String type, String name, String description, Boolean isEnabled, Map<String, String> configs) { + super(); + + setType(type); + setName(name); + setDescription(description); + setIsEnabled(isEnabled); + setConfigs(configs); + } + + public void updateFrom(RangerService other) { + super.updateFrom(other); + + setType(other.getType()); + setName(other.getName()); + setDescription(other.getDescription()); + setIsEnabled(other.getIsEnabled()); + setConfigs(other.getConfigs()); + } + + /** + * @return the type + */ + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the isEnabled + */ + public Boolean getIsEnabled() { + return isEnabled; + } + + /** + * @param isEnabled the isEnabled to set + */ + public void setIsEnabled(Boolean isEnabled) { + this.isEnabled = isEnabled == null ? Boolean.TRUE : isEnabled; + } + + /** + * @return the configs + */ + public Map<String, String> getConfigs() { + return configs; + } + + /** + * @param configs the configs to set + */ + public void setConfigs(Map<String, String> configs) { + this.configs = new HashMap<String, String>(); + + if(configs != null) { + for(Map.Entry<String, String> e : configs.entrySet()) { + this.configs.put(e.getKey(), e.getValue()); + } + } + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerService={"); + + super.toString(sb); + sb.append("name={").append(name).append("} "); + sb.append("type={").append(type).append("} "); + sb.append("description={").append(description).append("} "); + sb.append("isEnabled={").append(isEnabled).append("} "); + + sb.append("configs={"); + if(configs != null) { + for(Map.Entry<String, String> e : configs.entrySet()) { + sb.append(e.getKey()).append("={").append(e.getValue()).append("} "); + } + } + sb.append("} "); + + sb.append("}"); + + return sb; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java new file mode 100644 index 0000000..524abea --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/model/RangerServiceDef.java @@ -0,0 +1,1146 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.model; + +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.annotation.XmlAccessType; +import javax.xml.bind.annotation.XmlAccessorType; +import javax.xml.bind.annotation.XmlRootElement; + +import org.codehaus.jackson.annotate.JsonAutoDetect; +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.annotate.JsonAutoDetect.Visibility; +import org.codehaus.jackson.map.annotate.JsonSerialize; + + +@JsonAutoDetect(getterVisibility=Visibility.NONE, setterVisibility=Visibility.NONE, fieldVisibility=Visibility.ANY) +@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL ) +@JsonIgnoreProperties(ignoreUnknown=true) +@XmlRootElement +@XmlAccessorType(XmlAccessType.FIELD) +public class RangerServiceDef extends RangerBaseModelObject implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private String implClass = null; + private String label = null; + private String description = null; + private String rbKeyLabel = null; + private String rbKeyDescription = null; + private List<RangerServiceConfigDef> configs = null; + private List<RangerResourceDef> resources = null; + private List<RangerAccessTypeDef> accessTypes = null; + private List<RangerPolicyConditionDef> policyConditions = null; + private List<RangerEnumDef> enums = null; + + + public RangerServiceDef() { + this(null, null, null, null, null, null, null, null, null); + } + + public RangerServiceDef(String name, String implClass, String label, String description, List<RangerServiceConfigDef> configs, List<RangerResourceDef> resources, List<RangerAccessTypeDef> accessTypes, List<RangerPolicyConditionDef> policyConditions, List<RangerEnumDef> enums) { + super(); + + setName(name); + setImplClass(implClass); + setLabel(label); + setDescription(description); + setConfigs(configs); + setResources(resources); + setAccessTypes(accessTypes); + setPolicyConditions(policyConditions); + setEnums(enums); + } + + public void updateFrom(RangerServiceDef other) { + setName(other.getName()); + setImplClass(other.getImplClass()); + setLabel(other.getLabel()); + setDescription(other.getDescription()); + setConfigs(other.getConfigs()); + setResources(other.getResources()); + setAccessTypes(other.getAccessTypes()); + setPolicyConditions(other.getPolicyConditions()); + setEnums(other.getEnums()); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the implClass + */ + public String getImplClass() { + return implClass; + } + + /** + * @param implClass the implClass to set + */ + public void setImplClass(String implClass) { + this.implClass = implClass; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the rbKeyLabel + */ + public String getRbKeyLabel() { + return rbKeyLabel; + } + + /** + * @param rbKeyLabel the rbKeyLabel to set + */ + public void setRbKeyLabel(String rbKeyLabel) { + this.rbKeyLabel = rbKeyLabel; + } + + /** + * @return the rbKeyDescription + */ + public String getRbKeyDescription() { + return rbKeyDescription; + } + + /** + * @param rbKeyDescription the rbKeyDescription to set + */ + public void setRbKeyDescription(String rbKeyDescription) { + this.rbKeyDescription = rbKeyDescription; + } + + /** + * @return the configs + */ + public List<RangerServiceConfigDef> getConfigs() { + return configs; + } + + /** + * @param configs the configs to set + */ + public void setConfigs(List<RangerServiceConfigDef> configs) { + this.configs = new ArrayList<RangerServiceConfigDef>(); + + if(configs != null) { + for(RangerServiceConfigDef config : configs) { + this.configs.add(config); + } + } + } + + /** + * @return the resources + */ + public List<RangerResourceDef> getResources() { + return resources; + } + + /** + * @param resources the resources to set + */ + public void setResources(List<RangerResourceDef> resources) { + this.resources = new ArrayList<RangerResourceDef>(); + + if(resources != null) { + for(RangerResourceDef resource : resources) { + this.resources.add(resource); + } + } + } + + /** + * @return the accessTypes + */ + public List<RangerAccessTypeDef> getAccessTypes() { + return accessTypes; + } + + /** + * @param accessTypes the accessTypes to set + */ + public void setAccessTypes(List<RangerAccessTypeDef> accessTypes) { + this.accessTypes = new ArrayList<RangerAccessTypeDef>(); + + if(accessTypes != null) { + for(RangerAccessTypeDef accessType : accessTypes) { + this.accessTypes.add(accessType); + } + } + } + + /** + * @return the policyConditions + */ + public List<RangerPolicyConditionDef> getPolicyConditions() { + return policyConditions; + } + + /** + * @param policyConditions the policyConditions to set + */ + public void setPolicyConditions(List<RangerPolicyConditionDef> policyConditions) { + this.policyConditions = new ArrayList<RangerPolicyConditionDef>(); + + if(policyConditions != null) { + for(RangerPolicyConditionDef policyCondition : policyConditions) { + this.policyConditions.add(policyCondition); + } + } + } + + /** + * @return the enums + */ + public List<RangerEnumDef> getEnums() { + return enums; + } + + /** + * @param enums the enums to set + */ + public void setEnums(List<RangerEnumDef> enums) { + this.enums = new ArrayList<RangerEnumDef>(); + + if(enums != null) { + for(RangerEnumDef enum1 : enums) { + this.enums.add(enum1); + } + } + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerServiceDef={"); + + super.toString(sb); + + sb.append("name={").append(name).append("} "); + sb.append("implClass={").append(implClass).append("} "); + sb.append("label={").append(label).append("} "); + sb.append("description={").append(description).append("} "); + sb.append("rbKeyLabel={").append(rbKeyLabel).append("} "); + sb.append("rbKeyDescription={").append(rbKeyDescription).append("} "); + + sb.append("configs={"); + if(configs != null) { + for(RangerServiceConfigDef config : configs) { + if(config != null) { + config.toString(sb); + } + } + } + sb.append("} "); + + sb.append("resources={"); + if(resources != null) { + for(RangerResourceDef resource : resources) { + if(resource != null) { + resource.toString(sb); + } + } + } + sb.append("} "); + + sb.append("accessTypes={"); + if(accessTypes != null) { + for(RangerAccessTypeDef accessType : accessTypes) { + if(accessType != null) { + accessType.toString(sb); + } + } + } + sb.append("} "); + + sb.append("policyConditions={"); + if(policyConditions != null) { + for(RangerPolicyConditionDef policyCondition : policyConditions) { + if(policyCondition != null) { + policyCondition.toString(sb); + } + } + } + sb.append("} "); + + sb.append("enums={"); + if(enums != null) { + for(RangerEnumDef e : enums) { + if(e != null) { + e.toString(sb); + } + } + } + sb.append("} "); + + sb.append("}"); + + return sb; + } + + + public static class RangerEnumDef implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private List<RangerEnumElementDef> elements = null; + private Integer defaultIndex = null; + + + public RangerEnumDef() { + this(null, null, null); + } + + public RangerEnumDef(String name, List<RangerEnumElementDef> elements, Integer defaultIndex) { + setName(name); + setElements(elements); + setDefaultIndex(defaultIndex); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the elements + */ + public List<RangerEnumElementDef> getElements() { + return elements; + } + + /** + * @param elements the elements to set + */ + public void setElements(List<RangerEnumElementDef> elements) { + this.elements = new ArrayList<RangerEnumElementDef>(); + + if(elements != null) { + for(RangerEnumElementDef element : elements) { + this.elements.add(element); + } + } + } + + /** + * @return the defaultIndex + */ + public Integer getDefaultIndex() { + return defaultIndex; + } + + /** + * @param defaultIndex the defaultIndex to set + */ + public void setDefaultIndex(Integer defaultIndex) { + this.defaultIndex = (defaultIndex != null && this.elements.size() > defaultIndex) ? defaultIndex : 0; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerEnumDef={"); + sb.append("name={").append(name).append("} "); + sb.append("elements={"); + if(elements != null) { + for(RangerEnumElementDef element : elements) { + if(element != null) { + element.toString(sb); + } + } + } + sb.append("} "); + sb.append("defaultIndex={").append(defaultIndex).append("} "); + sb.append("}"); + + return sb; + } + } + + + public static class RangerEnumElementDef implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private String label = null; + private String rbKeyLabel = null; + + + public RangerEnumElementDef() { + this(null, null, null); + } + + public RangerEnumElementDef(String name, String label, String rbKeyLabel) { + setName(name); + setLabel(label); + setRbKeyLabel(rbKeyLabel); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the rbKeyLabel + */ + public String getRbKeyLabel() { + return rbKeyLabel; + } + + /** + * @param rbKeyLabel the rbKeyLabel to set + */ + public void setRbKeyLabel(String rbKeyLabel) { + this.rbKeyLabel = rbKeyLabel; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerEnumElementDef={"); + sb.append("name={").append(name).append("} "); + sb.append("label={").append(label).append("} "); + sb.append("rbKeyLabel={").append(rbKeyLabel).append("} "); + sb.append("}"); + + return sb; + } + } + + + public static class RangerServiceConfigDef implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private String type = null; + private String subType = null; + private Boolean mandatory = null; + private String defaultValue = null; + private String label = null; + private String description = null; + private String rbKeyLabel = null; + private String rbKeyDescription = null; + + + public RangerServiceConfigDef() { + this(null, null, null, null, null, null, null, null, null); + } + + public RangerServiceConfigDef(String name, String type, String subType, Boolean mandatory, String defaultValue, String label, String description, String rbKeyLabel, String rbKeyDescription) { + setName(name); + setType(type); + setSubType(subType); + setMandatory(mandatory); + setDefaultValue(defaultValue); + setLabel(label); + setDescription(description); + setRbKeyLabel(rbKeyLabel); + setRbKeyDescription(rbKeyDescription); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the type + */ + public String getType() { + return type; + } + + /** + * @param type the type to set + */ + public void setType(String type) { + this.type = type; + } + + /** + * @return the type + */ + public String getSubType() { + return subType; + } + + /** + * @param type the type to set + */ + public void setSubType(String subType) { + this.subType = subType; + } + + /** + * @return the mandatory + */ + public Boolean getMandatory() { + return mandatory; + } + + /** + * @param mandatory the mandatory to set + */ + public void setMandatory(Boolean mandatory) { + this.mandatory = mandatory == null ? Boolean.FALSE : mandatory; + } + + /** + * @return the defaultValue + */ + public String getDefaultValue() { + return defaultValue; + } + + /** + * @param defaultValue the defaultValue to set + */ + public void setDefaultValue(String defaultValue) { + this.defaultValue = defaultValue; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the rbKeyLabel + */ + public String getRbKeyLabel() { + return rbKeyLabel; + } + + /** + * @param rbKeyLabel the rbKeyLabel to set + */ + public void setRbKeyLabel(String rbKeyLabel) { + this.rbKeyLabel = rbKeyLabel; + } + + /** + * @return the rbKeyDescription + */ + public String getRbKeyDescription() { + return rbKeyDescription; + } + + /** + * @param rbKeyDescription the rbKeyDescription to set + */ + public void setRbKeyDescription(String rbKeyDescription) { + this.rbKeyDescription = rbKeyDescription; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerServiceConfigDef={"); + sb.append("name={").append(name).append("} "); + sb.append("type={").append(type).append("} "); + sb.append("subType={").append(subType).append("} "); + sb.append("mandatory={").append(mandatory).append("} "); + sb.append("defaultValue={").append(defaultValue).append("} "); + sb.append("label={").append(label).append("} "); + sb.append("description={").append(description).append("} "); + sb.append("rbKeyLabel={").append(rbKeyLabel).append("} "); + sb.append("rbKeyDescription={").append(rbKeyDescription).append("} "); + sb.append("}"); + + return sb; + } + } + + + public static class RangerResourceDef implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private Integer level = null; + private String parent = null; + private Boolean mandatory = null; + private Boolean lookupSupported = null; + private Boolean recursiveSupported = null; + private Boolean excludesSupported = null; + private String label = null; + private String description = null; + private String rbKeyLabel = null; + private String rbKeyDescription = null; + + + public RangerResourceDef() { + this(null, null, null, null, null, null, null, null, null, null, null); + } + + public RangerResourceDef(String name, Integer level, String parent, Boolean mandatory, Boolean lookupSupported, Boolean recursiveSupported, Boolean excludesSupported, String label, String description, String rbKeyLabel, String rbKeyDescription) { + setName(name); + setLevel(level); + setParent(parent); + setMandatory(mandatory); + setLookupSupported(lookupSupported); + setRecursiveSupported(recursiveSupported); + setExcludesSupported(excludesSupported); + setLabel(label); + setDescription(description); + setRbKeyLabel(rbKeyLabel); + setRbKeyDescription(rbKeyDescription); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the level + */ + public Integer getLevel() { + return level; + } + + /** + * @param level the level to set + */ + public void setLevel(Integer level) { + this.level = level == null ? 1 : level; + } + + /** + * @return the parent + */ + public String getParent() { + return parent; + } + + /** + * @param parent the parent to set + */ + public void setParent(String parent) { + this.parent = parent; + } + + /** + * @return the mandatory + */ + public Boolean getMandatory() { + return mandatory; + } + + /** + * @param mandatory the mandatory to set + */ + public void setMandatory(Boolean mandatory) { + this.mandatory = mandatory == null ? Boolean.FALSE : mandatory; + } + + /** + * @return the lookupSupported + */ + public Boolean getLookupSupported() { + return lookupSupported; + } + + /** + * @param lookupSupported the lookupSupported to set + */ + public void setLookupSupported(Boolean lookupSupported) { + this.lookupSupported = lookupSupported == null ? Boolean.FALSE : lookupSupported; + } + + /** + * @return the recursiveSupported + */ + public Boolean getRecursiveSupported() { + return recursiveSupported; + } + + /** + * @param recursiveSupported the recursiveSupported to set + */ + public void setRecursiveSupported(Boolean recursiveSupported) { + this.recursiveSupported = recursiveSupported == null ? Boolean.FALSE : recursiveSupported; + } + + /** + * @return the excludesSupported + */ + public Boolean getExcludesSupported() { + return excludesSupported; + } + + /** + * @param excludesSupported the excludesSupported to set + */ + public void setExcludesSupported(Boolean excludesSupported) { + this.excludesSupported = excludesSupported == null ? Boolean.FALSE : excludesSupported; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the rbKeyLabel + */ + public String getRbKeyLabel() { + return rbKeyLabel; + } + + /** + * @param rbKeyLabel the rbKeyLabel to set + */ + public void setRbKeyLabel(String rbKeyLabel) { + this.rbKeyLabel = rbKeyLabel; + } + + /** + * @return the rbKeyDescription + */ + public String getRbKeyDescription() { + return rbKeyDescription; + } + + /** + * @param rbKeyDescription the rbKeyDescription to set + */ + public void setRbKeyDescription(String rbKeyDescription) { + this.rbKeyDescription = rbKeyDescription; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerResourceDef={"); + sb.append("name={").append(name).append("} "); + sb.append("level={").append(level).append("} "); + sb.append("parent={").append(parent).append("} "); + sb.append("mandatory={").append(mandatory).append("} "); + sb.append("lookupSupported={").append(lookupSupported).append("} "); + sb.append("recursiveSupported={").append(recursiveSupported).append("} "); + sb.append("excludesSupported={").append(excludesSupported).append("} "); + sb.append("label={").append(label).append("} "); + sb.append("description={").append(description).append("} "); + sb.append("rbKeyLabel={").append(rbKeyLabel).append("} "); + sb.append("rbKeyDescription={").append(rbKeyDescription).append("} "); + sb.append("}"); + + return sb; + } + } + + + public static class RangerAccessTypeDef implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private String label = null; + private String rbKeyLabel = null; + + + public RangerAccessTypeDef() { + this(null, null, null); + } + + public RangerAccessTypeDef(String name, String label, String rbKeyLabel) { + setName(name); + setLabel(label); + setRbKeyLabel(rbKeyLabel); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the rbKeyLabel + */ + public String getRbKeyLabel() { + return rbKeyLabel; + } + + /** + * @param rbKeyLabel the rbKeyLabel to set + */ + public void setRbKeyLabel(String rbKeyLabel) { + this.rbKeyLabel = rbKeyLabel; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerAccessTypeDef={"); + sb.append("name={").append(name).append("} "); + sb.append("label={").append(label).append("} "); + sb.append("rbKeyLabel={").append(rbKeyLabel).append("} "); + sb.append("}"); + + return sb; + } + } + + + public static class RangerPolicyConditionDef implements java.io.Serializable { + private static final long serialVersionUID = 1L; + + private String name = null; + private String evalClass = null; + private String label = null; + private String description = null; + private String rbKeyLabel = null; + private String rbKeyDescription = null; + + + public RangerPolicyConditionDef() { + this(null, null, null, null, null, null); + } + + public RangerPolicyConditionDef(String name, String evalClass) { + this(name, evalClass, null, null, null, null); + } + + public RangerPolicyConditionDef(String name, String evalClass, String label) { + this(name, evalClass, label, null, null, null); + } + + public RangerPolicyConditionDef(String name, String evalClass, String label, String description) { + this(name, evalClass, label, description, null, null); + } + + public RangerPolicyConditionDef(String name, String evalClass, String label, String description, String rbKeyLabel, String rbKeyDescription) { + setName(name); + setEvalClass(evalClass); + setLabel(label); + setDescription(description); + setRbKeyLabel(rbKeyLabel); + setRbKeyDescription(rbKeyDescription); + } + + /** + * @return the name + */ + public String getName() { + return name; + } + + /** + * @param name the name to set + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the evalClass + */ + public String getEvalClass() { + return evalClass; + } + + /** + * @param evalClass the evalClass to set + */ + public void setEvalClass(String evalClass) { + this.evalClass = evalClass; + } + + /** + * @return the label + */ + public String getLabel() { + return label; + } + + /** + * @param label the label to set + */ + public void setLabel(String label) { + this.label = label; + } + + /** + * @return the description + */ + public String getDescription() { + return description; + } + + /** + * @param description the description to set + */ + public void setDescription(String description) { + this.description = description; + } + + /** + * @return the rbKeyLabel + */ + public String getRbKeyLabel() { + return rbKeyLabel; + } + + /** + * @param rbKeyLabel the rbKeyLabel to set + */ + public void setRbKeyLabel(String rbKeyLabel) { + this.rbKeyLabel = rbKeyLabel; + } + + /** + * @return the rbKeyDescription + */ + public String getRbKeyDescription() { + return rbKeyDescription; + } + + /** + * @param rbKeyDescription the rbKeyDescription to set + */ + public void setRbKeyDescription(String rbKeyDescription) { + this.rbKeyDescription = rbKeyDescription; + } + + @Override + public String toString( ) { + StringBuilder sb = new StringBuilder(); + + toString(sb); + + return sb.toString(); + } + + public StringBuilder toString(StringBuilder sb) { + sb.append("RangerPolicyConditionDef={"); + sb.append("name={").append(name).append("} "); + sb.append("evalClass={").append(evalClass).append("} "); + sb.append("label={").append(label).append("} "); + sb.append("description={").append(description).append("} "); + sb.append("rbKeyLabel={").append(rbKeyLabel).append("} "); + sb.append("rbKeyDescription={").append(rbKeyDescription).append("} "); + sb.append("}"); + + return sb; + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java new file mode 100644 index 0000000..1abc3f2 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequest.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.policyengine; + +import java.util.Collection; + +public interface RangerAccessRequest { + RangerResource getResource(); + + Collection<String> getAccessTypes(); + + String getRequestUser(); + + Collection<String> getRequestUserGroups(); + + String getClientIPAddress(); + + String getClientType(); + + String getAction(); + + String getRequestData(); + + String getSessionId(); +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java new file mode 100644 index 0000000..5867e67 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerAccessRequestImpl.java @@ -0,0 +1,98 @@ +package org.apache.ranger.plugin.policyengine; + +import java.util.Collection; + + +public class RangerAccessRequestImpl implements RangerAccessRequest { + private RangerResource resource = null; + private Collection<String> accessTypes = null; + private String requestUser = null; + private Collection<String> requestUserGroups = null; + private String clientIPAddress = null; + private String clientType = null; + private String action = null; + private String requestData = null; + private String sessionId = null; + + @Override + public RangerResource getResource() { + return resource; + } + + @Override + public Collection<String> getAccessTypes() { + return accessTypes; + } + + @Override + public String getRequestUser() { + return requestUser; + } + + @Override + public Collection<String> getRequestUserGroups() { + return requestUserGroups; + } + + @Override + public String getClientIPAddress() { + return clientIPAddress; + } + + @Override + public String getClientType() { + return clientType; + } + + @Override + public String getAction() { + return action; + } + + @Override + public String getRequestData() { + return requestData; + } + + @Override + public String getSessionId() { + return sessionId; + } + + + public void setResource(RangerResource resource) { + this.resource = resource; + } + + public void setAccessTypes(Collection<String> accessTypes) { + this.accessTypes = accessTypes; + } + + public void setRequestUser(String requestUser) { + this.requestUser = requestUser; + } + + public void setRequestUserGroups(Collection<String> requestUserGroups) { + this.requestUserGroups = requestUserGroups; + } + + public void setClientIPAddress(String clientIPAddress) { + this.clientIPAddress = clientIPAddress; + } + + public void setClientType(String clientType) { + this.clientType = clientType; + } + + public void setAction(String action) { + this.action = action; + } + + public void setRequestData(String requestData) { + this.requestData = requestData; + } + + public void setSessionId(String sessionId) { + this.sessionId = sessionId; + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngine.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngine.java b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngine.java new file mode 100644 index 0000000..aee6716 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngine.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.policyengine; + +import java.util.List; + +public interface RangerPolicyEngine { + boolean isAccessAllowed(RangerAccessRequest request); + + boolean isAccessAllowed(List<RangerAccessRequest> requests, List<Boolean> results); + + void auditAccess(RangerAccessRequest request); + + void auditAccess(List<RangerAccessRequest> requests, List<Boolean> results); +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java new file mode 100644 index 0000000..71274f3 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerPolicyEngineImpl.java @@ -0,0 +1,114 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.policyengine; + +import java.util.List; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.ranger.plugin.manager.ServiceDefManager; +import org.apache.ranger.plugin.manager.ServiceManager; +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerService; +import org.apache.ranger.plugin.model.RangerServiceDef; + + +public class RangerPolicyEngineImpl implements RangerPolicyEngine { + private static final Log LOG = LogFactory.getLog(RangerPolicyEngineImpl.class); + + private String svcName = null; + private ServiceDefManager sdMgr = null; + private ServiceManager svcMgr = null; + private RangerService service = null; + private RangerServiceDef serviceDef = null; + private List<RangerPolicy> policies = null; + + public RangerPolicyEngineImpl() { + if(LOG.isDebugEnabled()) { + LOG.debug("==> RangerPolicyEngine()"); + } + + sdMgr = new ServiceDefManager(); + svcMgr = new ServiceManager(); + + if(LOG.isDebugEnabled()) { + LOG.debug("<== RangerPolicyEngine()"); + } + } + + public void init(String serviceName) throws Exception { + if(LOG.isDebugEnabled()) { + LOG.debug("==> RangerPolicyEngine.init(" + serviceName + ")"); + } + + svcName = serviceName; + service = svcMgr.getByName(svcName); + + if(service == null) { + LOG.error(svcName + ": service not found"); + } else { + serviceDef = sdMgr.getByName(service.getType()); + + if(serviceDef == null) { + String msg = service.getType() + ": service-def not found"; + + LOG.error(msg); + + throw new Exception(msg); + } + + policies = svcMgr.getPolicies(service.getId()); + + if(LOG.isDebugEnabled()) { + LOG.debug("found " + (policies == null ? 0 : policies.size()) + " policies in service '" + svcName + "'"); + } + } + + if(LOG.isDebugEnabled()) { + LOG.debug("<== RangerPolicyEngine.init(" + serviceName + ")"); + } + } + + @Override + public boolean isAccessAllowed(RangerAccessRequest request) { + // TODO Auto-generated method stub + return false; + } + + @Override + public boolean isAccessAllowed(List<RangerAccessRequest> requests, + List<Boolean> results) { + // TODO Auto-generated method stub + return false; + } + + @Override + public void auditAccess(RangerAccessRequest request) { + // TODO Auto-generated method stub + + } + + @Override + public void auditAccess(List<RangerAccessRequest> requests, + List<Boolean> results) { + // TODO Auto-generated method stub + + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResource.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResource.java b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResource.java new file mode 100644 index 0000000..b07f42a --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResource.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.policyengine; + +import java.util.List; + +public interface RangerResource { + public abstract String getOwnerUser(); + + public abstract String getElementValue(String type); + + public abstract List<String> getElementValues(String type); + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResourceImpl.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResourceImpl.java b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResourceImpl.java new file mode 100644 index 0000000..5d5a81d --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/policyengine/RangerResourceImpl.java @@ -0,0 +1,137 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.policyengine; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + + +public class RangerResourceImpl implements RangerResource { + private String ownerUser = null; + private Map<String, Object> elements = null; + + + public RangerResourceImpl() { + } + + @Override + public String getOwnerUser() { + return ownerUser; + } + + @Override + public String getElementValue(String type) { + String ret = null; + + if(elements != null) { + Object value = elements.get(type); + + if(value != null) { + if(value instanceof String) { + ret = (String)value; + } else { // value must be a List<String> + @SuppressWarnings("unchecked") + List<String> list = (List<String>)value; + + if(list != null && list.size() > 0) { + ret = list.get(0); + } + } + } + } + + return ret; + } + + @Override + public List<String> getElementValues(String type) { + List<String> ret = null; + + if(elements != null) { + Object value = elements.get(type); + + if(value != null) { + if(value instanceof String) { + ret = new ArrayList<String>(); + ret.add((String)value); + } else { // value must be a List<String> + @SuppressWarnings("unchecked") + List<String> tmpList = (List<String>)value; + + ret = tmpList; + } + } + } + + return ret; + } + + public void setOwnerUser(String ownerUser) { + this.ownerUser = ownerUser; + } + + public void setElement(String type, String value) { + if(elements == null) { + elements = new HashMap<String, Object>(); + } + + elements.put(type, value); + } + + public void setElement(String type, List<String> value) { + if(elements == null) { + elements = new HashMap<String, Object>(); + } + + elements.put(type, value); + } + + public void addElement(String type, String value) { + if(elements == null) { + elements = new HashMap<String, Object>(); + } + + Object val = elements.get(type); + + if(val == null) { + elements.put(type, value); + } else { + List<String> list = null; + + if(val instanceof String) { // convert to a list-value + list = new ArrayList<String>(); + + elements.put(type, list); + + list.add((String)val); + } else { // value must be a List<String> + @SuppressWarnings("unchecked") + List<String> tmpList = (List<String>)val; + + list = tmpList; + } + + list.add(value); + } + + } +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceDefStore.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceDefStore.java b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceDefStore.java new file mode 100644 index 0000000..5489031 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceDefStore.java @@ -0,0 +1,38 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.store; + +import java.util.List; + +import org.apache.ranger.plugin.model.RangerServiceDef; + +public interface ServiceDefStore { + RangerServiceDef create(RangerServiceDef serviceDef) throws Exception; + + RangerServiceDef update(RangerServiceDef serviceDef) throws Exception; + + void delete(Long id) throws Exception; + + RangerServiceDef get(Long id) throws Exception; + + RangerServiceDef getByName(String name) throws Exception; + + List<RangerServiceDef> getAll() throws Exception; +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e99d911d/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java ---------------------------------------------------------------------- diff --git a/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java new file mode 100644 index 0000000..c5b0724 --- /dev/null +++ b/plugin-common/src/main/java/org/apache/ranger/plugin/store/ServiceStore.java @@ -0,0 +1,56 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +package org.apache.ranger.plugin.store; + +import java.util.List; + +import org.apache.ranger.plugin.model.RangerPolicy; +import org.apache.ranger.plugin.model.RangerService; + +public interface ServiceStore { + RangerService create(RangerService service) throws Exception; + + RangerService update(RangerService service) throws Exception; + + void delete(Long id) throws Exception; + + RangerService get(Long id) throws Exception; + + RangerService getByName(String name) throws Exception; + + List<RangerService> getAll() throws Exception; + + + RangerPolicy createPolicy(RangerPolicy policy) throws Exception; + + RangerPolicy updatePolicy(RangerPolicy policy) throws Exception; + + void deletePolicy(Long id) throws Exception; + + RangerPolicy getPolicy(Long id) throws Exception; + + RangerPolicy getPolicyByName(String serviceName, String policyName) throws Exception; + + List<RangerPolicy> getServicePolicies(String serviceName) throws Exception; + + List<RangerPolicy> getServicePolicies(Long serviceId) throws Exception; + + List<RangerPolicy> getAllPolicies() throws Exception; +}
