[
https://issues.apache.org/jira/browse/GEODE-3974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16322977#comment-16322977
]
ASF GitHub Bot commented on GEODE-3974:
---------------------------------------
sboorlagadda closed pull request #1265: GEODE-3974: Improve permissions for
geode-connectors functions
URL: https://github.com/apache/geode/pull/1265
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterConnectionFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterConnectionFunction.java
index 7ac8240753..68a3cb7a22 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterConnectionFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterConnectionFunction.java
@@ -14,6 +14,8 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import org.apache.geode.annotations.Experimental;
@@ -23,6 +25,8 @@
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class AlterConnectionFunction
@@ -86,4 +90,9 @@ private CliFunctionResult createSuccessResult(String
connectionName, String memb
String message = "Altered JDBC connection " + connectionName + " on " +
member;
return new CliFunctionResult(member, xmlEntity, message);
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_MANAGE);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterMappingFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterMappingFunction.java
index f7f0045007..9d44c46c06 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterMappingFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/AlterMappingFunction.java
@@ -14,6 +14,8 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Map;
import org.apache.geode.annotations.Experimental;
@@ -23,6 +25,8 @@
import
org.apache.geode.connectors.jdbc.internal.RegionMappingNotFoundException;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class AlterMappingFunction extends JdbcCliFunction<RegionMapping,
CliFunctionResult> {
@@ -84,4 +88,9 @@ private CliFunctionResult createSuccessResult(String
connectionName, String memb
String message = "Altered JDBC connection " + connectionName + " on " +
member;
return new CliFunctionResult(member, xmlEntity, message);
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_MANAGE);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionFunction.java
index 55b435844d..65c5301814 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateConnectionFunction.java
@@ -14,6 +14,9 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import
org.apache.geode.connectors.jdbc.internal.ConnectionConfigExistsException;
@@ -21,6 +24,8 @@
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class CreateConnectionFunction
@@ -53,4 +58,9 @@ private CliFunctionResult createSuccessResult(String
connectionName, String memb
String message = "Created JDBC connection " + connectionName + " on " +
member;
return new CliFunctionResult(member, xmlEntity, message);
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_MANAGE);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
index a7fb1a5d74..2b5f0467ec 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingFunction.java
@@ -14,6 +14,9 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
@@ -21,6 +24,8 @@
import org.apache.geode.connectors.jdbc.internal.RegionMappingExistsException;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class CreateMappingFunction extends JdbcCliFunction<RegionMapping,
CliFunctionResult> {
@@ -57,4 +62,9 @@ private CliFunctionResult createSuccessResult(String
regionName, String member,
String message = "Created JDBC mapping for region " + regionName + " on "
+ member;
return new CliFunctionResult(member, xmlEntity, message);
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_MANAGE);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionFunction.java
index 73c1cb8983..9f3feca749 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeConnectionFunction.java
@@ -14,10 +14,15 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class DescribeConnectionFunction extends JdbcCliFunction<String,
ConnectionConfiguration> {
@@ -31,4 +36,9 @@ ConnectionConfiguration
getFunctionResult(JdbcConnectorService service,
FunctionContext<String> context) {
return service.getConnectionConfig(context.getArguments());
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_READ);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
index 49c56a3188..d8b54a03df 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DescribeMappingFunction.java
@@ -14,10 +14,15 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class DescribeMappingFunction extends JdbcCliFunction<String,
RegionMapping> {
@@ -30,4 +35,9 @@
RegionMapping getFunctionResult(JdbcConnectorService service,
FunctionContext<String> context) {
return service.getMappingForRegion(context.getArguments());
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_READ);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyConnectionFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyConnectionFunction.java
index e69710db8e..de8135300d 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyConnectionFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyConnectionFunction.java
@@ -14,12 +14,17 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class DestroyConnectionFunction extends JdbcCliFunction<String,
CliFunctionResult> {
@@ -76,4 +81,9 @@ private CliFunctionResult createNotFoundResult(String member,
String connectionN
String message = "Connection named \"" + connectionName + "\" not found";
return new CliFunctionResult(member, false, message);
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_MANAGE);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyMappingFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyMappingFunction.java
index 643aea6bcc..9f739ed760 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyMappingFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/DestroyMappingFunction.java
@@ -14,12 +14,17 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.connectors.jdbc.internal.RegionMapping;
import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class DestroyMappingFunction extends JdbcCliFunction<String,
CliFunctionResult> {
@@ -76,4 +81,9 @@ private CliFunctionResult createNotFoundResult(String member,
String regionName)
String message = "Region mapping for region \"" + regionName + "\" not
found";
return new CliFunctionResult(member, false, message);
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_MANAGE);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunction.java
index 3cc583d597..fc39da0840 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/JdbcCliFunction.java
@@ -14,12 +14,17 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
+
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.Function;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.internal.InternalEntity;
import org.apache.geode.management.internal.configuration.domain.XmlEntity;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public abstract class JdbcCliFunction<T1, T2> implements Function<T1>,
InternalEntity {
@@ -54,6 +59,11 @@ public void execute(FunctionContext<T1> context) {
}
}
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_READ);
+ }
+
String getMember(FunctionContext<T1> context) {
return argumentProvider.getMember(context);
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListConnectionFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListConnectionFunction.java
index 58866a6f5c..23926bc118 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListConnectionFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListConnectionFunction.java
@@ -14,12 +14,16 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.ConnectionConfiguration;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class ListConnectionFunction extends JdbcCliFunction<Void,
ConnectionConfiguration[]> {
@@ -42,4 +46,9 @@
private Set<ConnectionConfiguration>
getConnectionConfigs(JdbcConnectorService service) {
return service.getConnectionConfigs();
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_READ);
+ }
}
diff --git
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListMappingFunction.java
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListMappingFunction.java
index 7b472e191d..15497a0105 100644
---
a/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListMappingFunction.java
+++
b/geode-connectors/src/main/java/org/apache/geode/connectors/jdbc/internal/cli/ListMappingFunction.java
@@ -14,12 +14,16 @@
*/
package org.apache.geode.connectors.jdbc.internal.cli;
+import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
import org.apache.geode.annotations.Experimental;
import org.apache.geode.cache.execute.FunctionContext;
import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
import org.apache.geode.connectors.jdbc.internal.RegionMapping;
+import org.apache.geode.management.internal.security.ResourcePermissions;
+import org.apache.geode.security.ResourcePermission;
@Experimental
public class ListMappingFunction extends JdbcCliFunction<Void,
RegionMapping[]> {
@@ -41,4 +45,9 @@
private Set<RegionMapping> getRegionMappings(JdbcConnectorService service) {
return service.getRegionMappings();
}
+
+ @Override
+ public Collection<ResourcePermission> getRequiredPermissions(String
regionName) {
+ return Collections.singletonList(ResourcePermissions.CLUSTER_READ);
+ }
}
diff --git
a/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/JDBCConnectorFunctionsSecurityTest.java
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/JDBCConnectorFunctionsSecurityTest.java
new file mode 100644
index 0000000000..050bfc833a
--- /dev/null
+++
b/geode-connectors/src/test/java/org/apache/geode/connectors/jdbc/internal/cli/JDBCConnectorFunctionsSecurityTest.java
@@ -0,0 +1,150 @@
+/*
+ * 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.geode.connectors.jdbc.internal.cli;
+
+import org.junit.BeforeClass;
+import org.junit.ClassRule;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.experimental.categories.Category;
+
+import org.apache.geode.cache.execute.Function;
+import org.apache.geode.cache.execute.FunctionContext;
+import org.apache.geode.cache.execute.FunctionService;
+import org.apache.geode.connectors.jdbc.internal.JdbcConnectorService;
+import org.apache.geode.examples.SimpleSecurityManager;
+import org.apache.geode.management.internal.cli.functions.CliFunctionResult;
+import org.apache.geode.test.junit.categories.IntegrationTest;
+import org.apache.geode.test.junit.rules.ConnectionConfiguration;
+import org.apache.geode.test.junit.rules.GfshCommandRule;
+import org.apache.geode.test.junit.rules.ServerStarterRule;
+
+class InheritsDefaultPermissionsJDBCFunction extends JdbcCliFunction<String,
CliFunctionResult> {
+
+ InheritsDefaultPermissionsJDBCFunction() {
+ super(new FunctionContextArgumentProvider(), new ExceptionHandler());
+ }
+
+ @Override
+ CliFunctionResult getFunctionResult(JdbcConnectorService service,
+ FunctionContext<String> context) {
+ return new CliFunctionResult();
+ }
+}
+
+
+@Category({IntegrationTest.class, SecurityException.class})
+public class JDBCConnectorFunctionsSecurityTest {
+
+ private static Function alterConnectionFunction = new
AlterConnectionFunction();
+ private static Function alterMappingFunction = new AlterMappingFunction();
+ private static Function createConnectionFunction = new
CreateConnectionFunction();
+ private static Function createMappingFunction = new CreateMappingFunction();
+ private static Function describeConnectionFunction = new
DescribeConnectionFunction();
+ private static Function describeMappingFunction = new
DescribeMappingFunction();
+ private static Function destroyConnectionFunction = new
DestroyConnectionFunction();
+ private static Function destroyMappingFunction = new
DestroyMappingFunction();
+ private static Function listConnectionFunction = new
ListConnectionFunction();
+ private static Function listMappingFunction = new ListMappingFunction();
+ private static Function inheritsDefaultPermissionsFunction =
+ new InheritsDefaultPermissionsJDBCFunction();
+
+ @ClassRule
+ public static ServerStarterRule server = new
ServerStarterRule().withJMXManager()
+ .withSecurityManager(SimpleSecurityManager.class).withAutoStart();
+
+ @Rule
+ public GfshCommandRule gfsh =
+ new GfshCommandRule(server::getJmxPort,
GfshCommandRule.PortType.jmxManager);
+
+ @BeforeClass
+ public static void setupClass() {
+ FunctionService.registerFunction(alterConnectionFunction);
+ FunctionService.registerFunction(alterMappingFunction);
+ FunctionService.registerFunction(createConnectionFunction);
+ FunctionService.registerFunction(createMappingFunction);
+ FunctionService.registerFunction(describeConnectionFunction);
+ FunctionService.registerFunction(describeMappingFunction);
+ FunctionService.registerFunction(destroyConnectionFunction);
+ FunctionService.registerFunction(destroyMappingFunction);
+ FunctionService.registerFunction(listConnectionFunction);
+ FunctionService.registerFunction(listMappingFunction);
+ FunctionService.registerFunction(inheritsDefaultPermissionsFunction);
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForAlterConnectionFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
alterConnectionFunction.getId())
+ .containsOutput("not authorized for CLUSTER:MANAGE").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForAlterMappingFunction() throws Exception
{
+ gfsh.executeAndAssertThat("execute function --id=" +
alterMappingFunction.getId())
+ .containsOutput("not authorized for CLUSTER:MANAGE").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForCreateConnectionFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
createConnectionFunction.getId())
+ .containsOutput("not authorized for CLUSTER:MANAGE").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForCreateMappingFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
createMappingFunction.getId())
+ .containsOutput("not authorized for CLUSTER:MANAGE").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForDescribeConnectionFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
describeConnectionFunction.getId())
+ .containsOutput("not authorized for CLUSTER:READ").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForDescribeMappingFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
describeMappingFunction.getId())
+ .containsOutput("not authorized for CLUSTER:READ").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForDestroyConnectionFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
destroyConnectionFunction.getId())
+ .containsOutput("not authorized for CLUSTER:MANAGE").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForDestroyMappingFunction() throws
Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
destroyMappingFunction.getId())
+ .containsOutput("not authorized for CLUSTER:MANAGE").statusIsSuccess();
+ }
+
+ @Test
+ @ConnectionConfiguration(user = "dataWrite", password = "dataWrite")
+ public void testInvalidPermissionsForFunctionInheritingDefaultPermissions()
throws Exception {
+ gfsh.executeAndAssertThat("execute function --id=" +
inheritsDefaultPermissionsFunction.getId())
+ .containsOutput("not authorized for CLUSTER:READ").statusIsSuccess();
+ }
+}
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
> improve permission for Internal functions
> -----------------------------------------
>
> Key: GEODE-3974
> URL: https://issues.apache.org/jira/browse/GEODE-3974
> Project: Geode
> Issue Type: Bug
> Components: docs, management
> Reporter: Jinmei Liao
> Fix For: 1.5.0
>
>
> Internal functions needs to be updated to require appropriate permissions
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)