You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@knox.apache.org by lm...@apache.org on 2018/07/06 14:56:55 UTC
knox git commit: KNOX-1204 - begin work to combine policies
Repository: knox
Updated Branches:
refs/heads/KNOX-1204 e4b75908d -> 8350e75d9
KNOX-1204 - begin work to combine policies
Project: http://git-wip-us.apache.org/repos/asf/knox/repo
Commit: http://git-wip-us.apache.org/repos/asf/knox/commit/8350e75d
Tree: http://git-wip-us.apache.org/repos/asf/knox/tree/8350e75d
Diff: http://git-wip-us.apache.org/repos/asf/knox/diff/8350e75d
Branch: refs/heads/KNOX-1204
Commit: 8350e75d991a15c2863577a99499831368d9d2cb
Parents: e4b7590
Author: Larry McCay <lm...@HW14155.local>
Authored: Fri Jun 29 08:39:40 2018 -0400
Committer: Larry McCay <lm...@HW14155.local>
Committed: Fri Jul 6 10:56:42 2018 -0400
----------------------------------------------------------------------
.../service/idbroker/aws/AWSPolicyModel.java | 8 ++-
.../service/knoxs3/S3BucketsResourceTest.java | 70 +++++++++++++++++++-
2 files changed, 76 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/knox/blob/8350e75d/gateway-service-idbroker/src/main/java/org/apache/knox/gateway/service/idbroker/aws/AWSPolicyModel.java
----------------------------------------------------------------------
diff --git a/gateway-service-idbroker/src/main/java/org/apache/knox/gateway/service/idbroker/aws/AWSPolicyModel.java b/gateway-service-idbroker/src/main/java/org/apache/knox/gateway/service/idbroker/aws/AWSPolicyModel.java
index 404ba05..d7cfb60 100644
--- a/gateway-service-idbroker/src/main/java/org/apache/knox/gateway/service/idbroker/aws/AWSPolicyModel.java
+++ b/gateway-service-idbroker/src/main/java/org/apache/knox/gateway/service/idbroker/aws/AWSPolicyModel.java
@@ -24,6 +24,7 @@ import java.util.Map;
import org.apache.knox.gateway.util.JsonUtils;
public class AWSPolicyModel {
+ private static final String ACTION = "Action";
HashMap<String, Object> policyModel = new HashMap<String, Object>();
ArrayList<String> actionArray = new ArrayList<String>();
HashMap<String, Object> statementMap = new HashMap<String, Object>();
@@ -34,7 +35,7 @@ public class AWSPolicyModel {
ArrayList<Map<String, Object>> statement = new ArrayList<Map<String, Object>>();
policyModel.put("Statement", statement );
statement.add(statementMap);
- statementMap.put("Action", actionArray );
+ statementMap.put(ACTION, actionArray );
statementMap.put("Resource", resourcesArray);
}
@@ -57,4 +58,9 @@ public class AWSPolicyModel {
public String toString() {
return JsonUtils.renderAsJsonString(policyModel);
}
+
+ public void combine(AWSPolicyModel model) {
+ ArrayList<Map<String, Object>> statement = (ArrayList<Map<String, Object>>) policyModel.get("Statement");
+ statement.add((Map<String, Object>)model.statementMap);
+ }
}
http://git-wip-us.apache.org/repos/asf/knox/blob/8350e75d/gateway-service-idbroker/src/test/java/org/apache/knox/gateway/service/knoxs3/S3BucketsResourceTest.java
----------------------------------------------------------------------
diff --git a/gateway-service-idbroker/src/test/java/org/apache/knox/gateway/service/knoxs3/S3BucketsResourceTest.java b/gateway-service-idbroker/src/test/java/org/apache/knox/gateway/service/knoxs3/S3BucketsResourceTest.java
index 651c407..8291421 100644
--- a/gateway-service-idbroker/src/test/java/org/apache/knox/gateway/service/knoxs3/S3BucketsResourceTest.java
+++ b/gateway-service-idbroker/src/test/java/org/apache/knox/gateway/service/knoxs3/S3BucketsResourceTest.java
@@ -76,5 +76,73 @@ public class S3BucketsResourceTest {
model.addResource("this");
model.addResource("that");
System.out.println(model);
-}
+ }
+
+ @Test
+ public void testCombinedPolicyCreation() {
+
+ String policy = "{\n" +
+ " \"Version\": \"2012-10-17\",\n" +
+ " \"Statement\": [\n" +
+ " {\n" +
+ " \"Effect\": \"Allow\",\n" +
+ " \"Action\": [\n" +
+ " \"s3:Get*\",\n" +
+ " \"s3:List*\"\n" +
+ // " \"s3:Delete*\"\n" +
+ " ],\n" +
+ " \"Resource\": \"*\"\n" +
+ " }\n" +
+ " {\n" +
+ " \"Effect\": \"Allow\",\n" +
+ " \"Action\": [\n" +
+ " \"s3:Get*\",\n" +
+ " \"s3:List*\"\n" +
+ " \"s3:Delete*\"\n" +
+ " ],\n" +
+ " \"Resource\": \"ljm\"\n" +
+ " }\n" +
+ " ]\n" +
+ "}";
+ System.out.println(policy);
+
+ HashMap<String, Object> policyModel = new HashMap<String, Object>();
+ policyModel.put("Version", "2012-10-17");
+ ArrayList<Map<String, Object>> statement = new ArrayList<Map<String, Object>>();
+
+ policyModel.put("Version", "2012-10-17");
+ policyModel.put("Statement", statement );
+ HashMap<String, Object> statementMap = new HashMap<String, Object>();
+ statementMap.put("Effect", "Allow");
+ ArrayList<String> actionArray = new ArrayList<String>();
+ actionArray.add("s3:Get*");
+ actionArray.add("s3:List*");
+ statementMap.put("Action", actionArray );
+ statement.add(statementMap);
+ policyModel.put("Resource", "*");
+
+ System.out.println(JsonUtils.renderAsJsonString(policyModel));
+
+ AWSPolicyModel model = new AWSPolicyModel();
+ model.setEffect("Allow");
+ model.addAction("s3:Get*");
+ model.addAction("s3:List*");
+ model.setResource("*");
+ System.out.println(model);
+
+ AWSPolicyModel model2 = new AWSPolicyModel();
+ model2.setEffect("Allow");
+ model2.addAction("s3:Get*");
+ model2.addAction("s3:List*");
+ model2.addResource("this");
+ model2.addResource("that");
+ System.out.println(model2);
+
+ ArrayList<AWSPolicyModel> models = new ArrayList<AWSPolicyModel>();
+ models.add(model);
+ models.add(model2);
+
+ model.combine(model2);
+ System.out.println("Aggregate: " + model);
+ }
}
\ No newline at end of file