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

mpetrov 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 226b0ab8181 IGNITE-15322 Stop internal compute task public access 
permissions to be checked if executed via Private API. (#10607)
226b0ab8181 is described below

commit 226b0ab81810411eb093178a4bf63f5f07cfbd6a
Author: Mikhail Petrov <[email protected]>
AuthorDate: Mon Mar 27 17:58:35 2023 +0300

    IGNITE-15322 Stop internal compute task public access permissions to be 
checked if executed via Private API. (#10607)
---
 .../org/apache/ignite/common/ComputeTaskPermissionsTest.java |  7 +++++++
 .../ignite/internal/processors/task/GridTaskWorker.java      | 12 +++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git 
a/modules/clients/src/test/java/org/apache/ignite/common/ComputeTaskPermissionsTest.java
 
b/modules/clients/src/test/java/org/apache/ignite/common/ComputeTaskPermissionsTest.java
index f130913f2d7..817536347d0 100644
--- 
a/modules/clients/src/test/java/org/apache/ignite/common/ComputeTaskPermissionsTest.java
+++ 
b/modules/clients/src/test/java/org/apache/ignite/common/ComputeTaskPermissionsTest.java
@@ -271,6 +271,13 @@ public class ComputeTaskPermissionsTest extends 
AbstractSecurityTest {
         try (IgniteClient cli = startClient("no-permissions-login-0")) {
             assertFailed(() -> 
cli.compute().executeAsync2(PublicAccessSystemTask.class.getName(), 
null).get());
         }
+
+        // Internal tasks with public access permissions explicitly specified 
still can be executed via Private API
+        // without permission checks.
+        assertCompleted(
+            () -> 
grid(0).context().task().execute(PublicAccessSystemTask.class, 
null).get(getTestTimeout()),
+            SRV_NODES_CNT
+        );
     }
 
     /** */
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
index 94805dcbcbf..dcabdc34e66 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/processors/task/GridTaskWorker.java
@@ -1777,12 +1777,14 @@ public class GridTaskWorker<T, R> extends GridWorker 
implements GridTimeoutObjec
         }
         else if (executable instanceof PlatformSecurityAwareJob)
             
ctx.security().authorize(((PlatformSecurityAwareJob)executable).name(), 
TASK_EXECUTE);
-        else if (executable instanceof PublicAccessJob)
-            authorizeAll(ctx.security(), 
((PublicAccessJob)executable).requiredPermissions());
         else if (opts.isPublicRequest()) {
-            // We do not allow to execute internal tasks via public API for 
security reasons.
-            throw new SecurityException("Access to Ignite Internal tasks is 
restricted" +
-                " [task=" + task.getClass().getName() + ", job=" + 
job.getClass() + "]");
+            if (executable instanceof PublicAccessJob)
+                authorizeAll(ctx.security(), 
((PublicAccessJob)executable).requiredPermissions());
+            else {
+                // We do not allow to execute internal tasks via public API 
for security reasons.
+                throw new SecurityException("Access to Ignite Internal tasks 
is restricted" +
+                        " [task=" + task.getClass().getName() + ", job=" + 
job.getClass() + "]");
+            }
         }
     }
 

Reply via email to