This is an automated email from the ASF dual-hosted git repository.
petrov-mg pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 862cb4e37b4 IGNITE-28669 Removed usages of legacy security
compatibility properties (#13444)
862cb4e37b4 is described below
commit 862cb4e37b4d0cf86d6ae5d8028eb0eb7ed88298
Author: Mikhail Petrov <[email protected]>
AuthorDate: Mon Aug 10 08:54:31 2026 +0300
IGNITE-28669 Removed usages of legacy security compatibility properties
(#13444)
---
.../org/apache/ignite/IgniteSystemProperties.java | 3 +
.../managers/discovery/GridDiscoveryManager.java | 24 ------
.../processors/security/SecurityUtils.java | 53 ------------
.../security/SecurityBasicPermissionSet.java | 20 +----
.../ignite/spi/discovery/tcp/ServerImpl.java | 21 +----
.../GridDiscoveryManagerAttributesSelfTest.java | 93 ----------------------
6 files changed, 7 insertions(+), 207 deletions(-)
diff --git
a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
index 965da1fa93b..da5fb38349c 100644
--- a/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
+++ b/modules/core/src/main/java/org/apache/ignite/IgniteSystemProperties.java
@@ -989,10 +989,13 @@ public final class IgniteSystemProperties extends
IgniteCommonsSystemProperties
* <p>
* Default is {@code false}, which means that service security
permissions will be respected.
* </p>
+ *
+ * @deprecated Has no usage.
*/
@SystemProperty("Enables Ignite to switch to compatibility mode with
versions that " +
"don't support service security permissions. In this case security
permissions will be ignored (if they set)." +
" Default is false, which means that service security permissions will
be respected")
+ @Deprecated
public static final String IGNITE_SECURITY_COMPATIBILITY_MODE =
"IGNITE_SECURITY_COMPATIBILITY_MODE";
/** Ignite cluster name. Defaults to {@link IgniteCluster#id()}. */
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
index 5c09f3660f2..74af20d016c 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManager.java
@@ -151,7 +151,6 @@ import static java.util.concurrent.TimeUnit.MILLISECONDS;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_DISCOVERY_HISTORY_SIZE;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_SECURITY_COMPATIBILITY_MODE;
import static org.apache.ignite.IgniteSystemProperties.getInteger;
import static org.apache.ignite.cluster.ClusterState.ACTIVE;
import static org.apache.ignite.cluster.ClusterState.INACTIVE;
@@ -172,13 +171,11 @@ import static
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_MARSHALLER_US
import static
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_MARSHALLER_USE_DFLT_SUID;
import static
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_OFFHEAP_SIZE;
import static
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_PEER_CLASSLOADING;
-import static
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SECURITY_COMPATIBILITY_MODE;
import static
org.apache.ignite.internal.IgniteNodeAttributes.ATTR_SHUTDOWN_POLICY;
import static org.apache.ignite.internal.IgniteNodeAttributes.ATTR_USER_NAME;
import static org.apache.ignite.internal.IgniteVersionUtils.VER;
import static
org.apache.ignite.internal.events.DiscoveryCustomEvent.EVT_DISCOVERY_CUSTOM_EVT;
import static
org.apache.ignite.internal.processors.metric.impl.MetricUtils.metricName;
-import static
org.apache.ignite.internal.processors.security.SecurityUtils.isSecurityCompatibilityMode;
import static
org.apache.ignite.internal.processors.security.SecurityUtils.nodeSecurityContext;
import static org.apache.ignite.internal.util.lang.ClusterNodeFunc.eqNodes;
import static
org.apache.ignite.internal.util.lang.ClusterNodeFunc.nodeConsistentIds;
@@ -508,9 +505,6 @@ public class GridDiscoveryManager extends
GridManagerAdapter<DiscoverySpi> {
spi.setMetricsProvider(createMetricsProvider());
if (ctx.security().enabled()) {
- if (isSecurityCompatibilityMode())
- ctx.addNodeAttribute(ATTR_SECURITY_COMPATIBILITY_MODE, true);
-
spi.setAuthenticator(new DiscoverySpiNodeAuthenticator() {
@Override public SecurityContext authenticateNode(ClusterNode
node, SecurityCredentials cred) {
try {
@@ -1246,8 +1240,6 @@ public class GridDiscoveryManager extends
GridManagerAdapter<DiscoverySpi> {
boolean locDelayAssign =
locNode.attribute(ATTR_LATE_AFFINITY_ASSIGNMENT);
- Boolean locSecurityCompatibilityEnabled =
locNode.attribute(ATTR_SECURITY_COMPATIBILITY_MODE);
-
WALMode locWalMode = nodeWalMode(locNode);
for (ClusterNode n : nodes) {
@@ -1339,22 +1331,6 @@ public class GridDiscoveryManager extends
GridManagerAdapter<DiscoverySpi> {
", rmtAddrs=" + U.addressesAsString(n) + ", rmtNode=" +
U.toShortString(n) + "]");
}
- if (ctx.security().enabled()) {
- Boolean rmtSecurityCompatibilityEnabled =
n.attribute(ATTR_SECURITY_COMPATIBILITY_MODE);
-
- if (!Objects.equals(locSecurityCompatibilityEnabled,
rmtSecurityCompatibilityEnabled)) {
- throw new IgniteCheckedException("Local node's " +
IGNITE_SECURITY_COMPATIBILITY_MODE +
- " property value differs from remote node's value " +
- "(to make sure all nodes in topology have identical
Ignite security compatibility mode enabled, " +
- "configure system property explicitly) " +
- "[locSecurityCompatibilityEnabled=" +
locSecurityCompatibilityEnabled +
- ", rmtSecurityCompatibilityEnabled=" +
rmtSecurityCompatibilityEnabled +
- ", locNodeAddrs=" + U.addressesAsString(locNode) +
- ", rmtNodeAddrs=" + U.addressesAsString(n) +
- ", locNodeId=" + locNode.id() + ", rmtNode=" +
U.toShortString(n) + "]");
- }
- }
-
WALMode rmtWalMode = nodeWalMode(n);
if (locWalMode != null && rmtWalMode != null && locWalMode !=
rmtWalMode) {
diff --git
a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityUtils.java
b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityUtils.java
index a8aa2f64c82..e83a1cda5da 100644
---
a/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityUtils.java
+++
b/modules/core/src/main/java/org/apache/ignite/internal/processors/security/SecurityUtils.java
@@ -39,7 +39,6 @@ import java.util.concurrent.Callable;
import java.util.stream.Collectors;
import org.apache.ignite.IgniteCheckedException;
import org.apache.ignite.IgniteException;
-import org.apache.ignite.IgniteSystemProperties;
import org.apache.ignite.cluster.ClusterNode;
import org.apache.ignite.internal.GridKernalContext;
import org.apache.ignite.internal.IgniteInternalWrapper;
@@ -75,16 +74,6 @@ public class SecurityUtils {
/** Ignite internal package. */
public static final String IGNITE_INTERNAL_PACKAGE =
"org.apache.ignite.internal";
- /** Default serialization version. */
- private static final int DFLT_SERIALIZE_VERSION =
isSecurityCompatibilityMode() ? 1 : 2;
-
- /** Current serialization version. */
- private static final ThreadLocal<Integer> SERIALIZE_VERSION = new
ThreadLocal<Integer>() {
- @Override protected Integer initialValue() {
- return DFLT_SERIALIZE_VERSION;
- }
- };
-
/** Permissions that contain {@code AllPermission}. */
public static final Permissions ALL_PERMISSIONS;
@@ -101,48 +90,6 @@ public class SecurityUtils {
private SecurityUtils() {
}
- /**
- * @return Security compatibility mode flag.
- */
- public static boolean isSecurityCompatibilityMode() {
- return
IgniteSystemProperties.getBoolean(IgniteSystemProperties.IGNITE_SECURITY_COMPATIBILITY_MODE,
false);
- }
-
- /**
- * @param ver Serialize version.
- */
- public static void serializeVersion(int ver) {
- SERIALIZE_VERSION.set(ver);
- }
-
- /**
- * @return Serialize version.
- */
- public static int serializeVersion() {
- return SERIALIZE_VERSION.get();
- }
-
- /**
- * Sets default serialize version {@link #DFLT_SERIALIZE_VERSION}.
- */
- public static void restoreDefaultSerializeVersion() {
- serializeVersion(DFLT_SERIALIZE_VERSION);
- }
-
- /**
- * @return Allow all service permissions.
- */
- public static Map<String, EnumSet<SecurityPermission>>
compatibleServicePermissions() {
- Map<String, EnumSet<SecurityPermission>> srvcPerms = new HashMap<>();
-
- srvcPerms.put("*", EnumSet.of(
- SecurityPermission.SERVICE_CANCEL,
- SecurityPermission.SERVICE_DEPLOY,
- SecurityPermission.SERVICE_INVOKE));
-
- return srvcPerms;
- }
-
/** */
public static Map<String, EnumSet<SecurityPermission>>
normalizeResourcePermissions(
Map<String, ? extends Collection<SecurityPermission>> rsrcPerms
diff --git
a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityBasicPermissionSet.java
b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityBasicPermissionSet.java
index 627cd5a2250..3736f88bd2b 100644
---
a/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityBasicPermissionSet.java
+++
b/modules/core/src/main/java/org/apache/ignite/plugin/security/SecurityBasicPermissionSet.java
@@ -22,7 +22,6 @@ import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.ObjectStreamField;
import java.util.Collection;
-import java.util.Collections;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.Map;
@@ -34,10 +33,7 @@ import org.apache.ignite.internal.util.typedef.internal.S;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.jetbrains.annotations.Nullable;
-import static
org.apache.ignite.internal.processors.security.SecurityUtils.compatibleServicePermissions;
-import static
org.apache.ignite.internal.processors.security.SecurityUtils.isSecurityCompatibilityMode;
import static
org.apache.ignite.internal.processors.security.SecurityUtils.normalizeResourcePermissions;
-import static
org.apache.ignite.internal.processors.security.SecurityUtils.serializeVersion;
import static
org.apache.ignite.internal.processors.security.SecurityUtils.toEnumSet;
/**
@@ -69,9 +65,7 @@ public class SecurityBasicPermissionSet implements
SecurityPermissionSet {
/** Service permissions. */
@GridToStringInclude
@Order(2)
- transient Map<String, EnumSet<SecurityPermission>> srvcPermissions =
isSecurityCompatibilityMode()
- ? compatibleServicePermissions()
- : new HashMap<>();
+ transient Map<String, EnumSet<SecurityPermission>> srvcPermissions = new
HashMap<>();
/** System permissions. */
@GridToStringInclude
@@ -192,8 +186,7 @@ public class SecurityBasicPermissionSet implements
SecurityPermissionSet {
out.writeFields();
- if (serializeVersion() >= 2)
- U.writeMap(out, srvcPermissions);
+ U.writeMap(out, srvcPermissions);
}
/** */
@@ -209,14 +202,7 @@ public class SecurityBasicPermissionSet implements
SecurityPermissionSet {
sysPermissions = sysPerms == null ? null : toEnumSet(sysPerms);
- Map<String, ? extends Collection<SecurityPermission>> srvcPerms =
serializeVersion() >= 2 ? U.readMap(in) : null;
-
- if (srvcPerms == null) {
- // Allow all for compatibility mode
- srvcPerms = serializeVersion() < 2 ?
compatibleServicePermissions() : Collections.emptyMap();
- }
-
- srvcPermissions = normalizeResourcePermissions(srvcPerms);
+ srvcPermissions = normalizeResourcePermissions(U.readMap(in));
}
/** {@inheritDoc} */
diff --git
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
index 1d70baed0aa..c17346d10e7 100644
---
a/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
+++
b/modules/core/src/main/java/org/apache/ignite/spi/discovery/tcp/ServerImpl.java
@@ -89,7 +89,6 @@ import
org.apache.ignite.internal.processors.failure.FailureProcessor;
import org.apache.ignite.internal.processors.metric.MetricRegistryImpl;
import org.apache.ignite.internal.processors.metric.impl.MaxValueMetric;
import org.apache.ignite.internal.processors.security.SecurityContext;
-import org.apache.ignite.internal.processors.security.SecurityUtils;
import org.apache.ignite.internal.thread.context.Scope;
import org.apache.ignite.internal.thread.pool.IgniteThreadPoolExecutor;
import org.apache.ignite.internal.util.GridBoundedLinkedHashSet;
@@ -1333,16 +1332,7 @@ class ServerImpl extends TcpDiscoveryImpl {
try {
IgniteSpiOperationTimeoutHelper timeoutHelper = new
IgniteSpiOperationTimeoutHelper(spi, true);
- Integer res;
-
- try {
- SecurityUtils.serializeVersion(1);
-
- res = sendMessageDirectly(joinMsg, addr,
timeoutHelper);
- }
- finally {
- SecurityUtils.restoreDefaultSerializeVersion();
- }
+ Integer res = sendMessageDirectly(joinMsg, addr,
timeoutHelper);
assert res != null;
@@ -3662,8 +3652,6 @@ class ServerImpl extends TcpDiscoveryImpl {
prepareNodeAddedMessage(msg, next.id(),
pendingMsgs.msgs);
try {
- SecurityUtils.serializeVersion(1);
-
long tsNanos = System.nanoTime();
if (timeoutHelper == null)
@@ -3706,8 +3694,6 @@ class ServerImpl extends TcpDiscoveryImpl {
}
}
finally {
- SecurityUtils.restoreDefaultSerializeVersion();
-
clearNodeAddedMessage(msg);
}
@@ -6827,8 +6813,6 @@ class ServerImpl extends TcpDiscoveryImpl {
while (!isInterrupted()) {
try {
- SecurityUtils.serializeVersion(1);
-
// Use inifinite timeout for accepting new messages.
TcpDiscoveryAbstractMessage msg = spi.readMessage(ses,
0);
@@ -7121,9 +7105,6 @@ class ServerImpl extends TcpDiscoveryImpl {
return;
}
- finally {
- SecurityUtils.restoreDefaultSerializeVersion();
- }
}
}
catch (UnknownMessageException e) {
diff --git
a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
index a89a8dfb11f..21e4b555482 100644
---
a/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
+++
b/modules/core/src/test/java/org/apache/ignite/internal/managers/discovery/GridDiscoveryManagerAttributesSelfTest.java
@@ -23,13 +23,11 @@ import org.apache.ignite.configuration.DeploymentMode;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.IgniteEx;
import org.apache.ignite.marshaller.Marshallers;
-import org.apache.ignite.spi.discovery.TestReconnectSecurityPluginProvider;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_BINARY_MARSHALLER_USE_STRING_SERIALIZATION_VER_2;
import static
org.apache.ignite.IgniteSystemProperties.IGNITE_OPTIMIZED_MARSHALLER_USE_DEFAULT_SUID;
-import static
org.apache.ignite.IgniteSystemProperties.IGNITE_SECURITY_COMPATIBILITY_MODE;
import static org.apache.ignite.configuration.DeploymentMode.CONTINUOUS;
import static org.apache.ignite.configuration.DeploymentMode.SHARED;
@@ -46,9 +44,6 @@ public class GridDiscoveryManagerAttributesSelfTest extends
GridCommonAbstractTe
/** */
private static boolean p2pEnabled;
- /** Security enabled. */
- private static boolean secEnabled;
-
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String
igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
@@ -57,9 +52,6 @@ public class GridDiscoveryManagerAttributesSelfTest extends
GridCommonAbstractTe
cfg.setDeploymentMode(mode);
cfg.setPeerClassLoadingEnabled(p2pEnabled);
- if (secEnabled)
- cfg.setPluginProviders(new TestReconnectSecurityPluginProvider());
-
return cfg;
}
@@ -230,91 +222,6 @@ public class GridDiscoveryManagerAttributesSelfTest
extends GridCommonAbstractTe
}
}
- /**
- * @throws Exception If failed.
- */
- @Test
- public void testSecurityCompatibilityEnabled() throws Exception {
- secEnabled = true;
-
- try {
- doTestSecurityCompatibilityEnabled(true, null, true);
- doTestSecurityCompatibilityEnabled(true, false, true);
- doTestSecurityCompatibilityEnabled(false, true, true);
- doTestSecurityCompatibilityEnabled(null, true, true);
-
- doTestSecurityCompatibilityEnabled(null, null, false);
- doTestSecurityCompatibilityEnabled(null, false, false);
- doTestSecurityCompatibilityEnabled(false, false, false);
- doTestSecurityCompatibilityEnabled(false, null, false);
- doTestSecurityCompatibilityEnabled(true, true, false);
- }
- finally {
- secEnabled = false;
- }
- }
-
- /**
- * @param first Service compatibility enabled flag for first node.
- * @param second Service compatibility enabled flag for second node.
- * @param fail Fail flag.
- * @throws Exception If failed.
- */
- private void doTestSecurityCompatibilityEnabled(Object first, Object
second, boolean fail) throws Exception {
- doTestCompatibilityEnabled(IGNITE_SECURITY_COMPATIBILITY_MODE, first,
second, fail);
- }
-
- /**
- * @param prop System property.
- * @param first Service compatibility enabled flag for first node.
- * @param second Service compatibility enabled flag for second node.
- * @param fail Fail flag.
- * @throws Exception If failed.
- */
- private void doTestCompatibilityEnabled(String prop, Object first, Object
second, boolean fail) throws Exception {
- String backup = System.getProperty(prop);
- try {
- if (first != null)
- System.setProperty(prop, String.valueOf(first));
- else
- System.clearProperty(prop);
-
- IgniteEx ignite = startGrid(0);
-
- checkIsClientFlag(ignite);
-
- // Ignore if disabled security plugin used.
- if (IGNITE_SECURITY_COMPATIBILITY_MODE.equals(prop) &&
!ignite.context().security().enabled())
- return;
-
- if (second != null)
- System.setProperty(prop, String.valueOf(second));
- else
- System.clearProperty(prop);
-
- try {
- IgniteEx g = startClientGrid(1);
-
- checkIsClientFlag(g);
-
- if (fail)
- fail("Node must not join");
- }
- catch (Exception e) {
- if (!fail)
- fail("Node must join: " + e.getMessage());
- }
- }
- finally {
- stopAllGrids();
-
- if (backup != null)
- System.setProperty(prop, backup);
- else
- System.clearProperty(prop);
- }
- }
-
/**
* @throws Exception If failed.
*/