You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by me...@apache.org on 2023/08/28 06:26:36 UTC

[ranger] branch master updated: RANGER-4319: Restricting policy name character to configurable length

This is an automated email from the ASF dual-hosted git repository.

mehul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ranger.git


The following commit(s) were added to refs/heads/master by this push:
     new 5f8e3c1b7 RANGER-4319: Restricting policy name character to configurable length
5f8e3c1b7 is described below

commit 5f8e3c1b7572d842f19a045dde6ed44209246806
Author: RakeshGuptaDev <ra...@gmail.com>
AuthorDate: Mon Jul 17 11:22:03 2023 +0530

    RANGER-4319: Restricting policy name character to configurable length
    
    Signed-off-by: Mehul Parikh <me...@apache.org>
---
 .../main/java/org/apache/ranger/rest/ServiceREST.java    | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
index 429b9e5bc..86959423c 100644
--- a/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
+++ b/security-admin/src/main/java/org/apache/ranger/rest/ServiceREST.java
@@ -261,6 +261,9 @@ public class ServiceREST {
 	private RangerPolicyEngineOptions defaultAdminOptions;
 	private final RangerAdminConfig   config = RangerAdminConfig.getInstance();
 
+	private final int maxPolicyNameLength = config.getInt("ranger.policyname.maxlength", 255);
+	private final boolean isPolicyNameLengthValidationEnabled = config.getBoolean("ranger.policyname.maxlength.validation.enabled", true);
+
 	public ServiceREST() {
 	}
 
@@ -1809,6 +1812,13 @@ public class ServiceREST {
 			if(RangerPerfTracer.isPerfTraceEnabled(PERF_LOG)) {
 				perf = RangerPerfTracer.getPerfTracer(PERF_LOG, "ServiceREST.updatePolicy(policyId=" + policy.getId() + ")");
 			}
+			if (isPolicyNameLengthValidationEnabled) {
+				if (policy.getName().length() > maxPolicyNameLength) {
+					throw restErrorUtil.createRESTException(
+							"Policy name should not be longer than " + maxPolicyNameLength + " characters",
+							MessageEnums.INPUT_DATA_OUT_OF_BOUND, null, "policy name", "" + policy.getName());
+				}
+			}
 			RangerPolicyValidator validator = validatorFactory.getPolicyValidator(svcStore);
 			validator.validate(policy, Action.UPDATE, bizUtil.isAdmin() || isServiceAdmin(policy.getService()) || isZoneAdmin(policy.getZoneName()));
 
@@ -4470,6 +4480,12 @@ public class ServiceREST {
 			if (LOG.isDebugEnabled()) {
 				LOG.debug("Policy did not have its name set!  Ok, setting name to [" + name + "]");
 			}
+		} else if (isPolicyNameLengthValidationEnabled) {
+			if (policy.getName().length() > maxPolicyNameLength) {
+				throw restErrorUtil.createRESTException(
+						"Policy name should not be longer than " + maxPolicyNameLength + " characters",
+						MessageEnums.INPUT_DATA_OUT_OF_BOUND, null, "policy name", "" + policy.getName());
+			}
 		}
 		RangerPolicyValidator validator = validatorFactory.getPolicyValidator(svcStore);
 		validator.validate(policy, Action.CREATE, bizUtil.isAdmin() || isServiceAdmin(policy.getService()) || isZoneAdmin(policy.getZoneName()));