This is an automated email from the ASF dual-hosted git repository.
fuweng11 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 02ebba2fc8 [INLONG-12179][Manager] Cluster node adds permission
verification (#12180)
02ebba2fc8 is described below
commit 02ebba2fc84a4607a205e45bc7f77b89737b7c71
Author: fuweng11 <[email protected]>
AuthorDate: Tue Aug 11 15:46:28 2026 +0800
[INLONG-12179][Manager] Cluster node adds permission verification (#12180)
* [INLONG-12179][Manager] Cluster node adds permission verification
* [INLONG-12179][Manager] Cluster node adds permission verification
* [INLONG-12179][Manager] Cluster node adds permission verification
---------
Co-authored-by: wakefu <[email protected]>
---
.../web/controller/InlongClusterController.java | 18 ++++++++++++++----
.../openapi/OpenInLongClusterController.java | 17 +++++++++++++++++
2 files changed, 31 insertions(+), 4 deletions(-)
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
index 9ebe381b4c..5e16180529 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
@@ -48,7 +48,6 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
-import org.apache.shiro.authz.annotation.Logical;
import org.apache.shiro.authz.annotation.RequiresRoles;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
@@ -89,6 +88,7 @@ public class InlongClusterController {
@GetMapping(value = "/cluster/tag/get/{id}")
@ApiOperation(value = "Get cluster tag by id")
@ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<ClusterTagResponse> getTag(@PathVariable Integer id) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.getTag(id, currentUser));
@@ -96,6 +96,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/tag/list")
@ApiOperation(value = "List cluster tags")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<PageResult<ClusterTagResponse>> listTag(@RequestBody
ClusterTagPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
request.setIsAdminRole(LoginUserUtils.isInlongAdminOrTenantAdmin());
@@ -132,6 +133,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/tenant/tag/list")
@ApiOperation(value = "List tenant cluster tags")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<PageResult<TenantClusterTagInfo>>
listTenantTag(@RequestBody TenantClusterTagPageRequest request) {
return Response.success(clusterService.listTenantTag(request));
}
@@ -162,7 +164,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/save")
@ApiOperation(value = "Save cluster")
@OperationLog(operation = OperationType.CREATE, operationTarget =
OperationTarget.CLUSTER)
- @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN,
UserRoleCode.TENANT_ADMIN})
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Integer> save(@Validated(SaveValidation.class)
@RequestBody ClusterRequest request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.save(request, currentUser));
@@ -171,6 +173,7 @@ public class InlongClusterController {
@GetMapping(value = "/cluster/get/{id}")
@ApiOperation(value = "Get cluster by id")
@ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<ClusterInfo> get(@PathVariable Integer id) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.get(id, currentUser));
@@ -178,6 +181,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/list")
@ApiOperation(value = "List clusters")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<PageResult<ClusterInfo>> list(@RequestBody
ClusterPageRequest request) {
request.setCurrentUser(LoginUserUtils.getLoginUser().getName());
request.setIsAdminRole(
@@ -248,6 +252,7 @@ public class InlongClusterController {
@GetMapping(value = "/cluster/node/get/{id}")
@ApiOperation(value = "Get cluster node by id")
@ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<ClusterNodeResponse> getNode(@PathVariable Integer id) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.getNode(id, currentUser));
@@ -255,6 +260,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/node/list")
@ApiOperation(value = "List cluster nodes by pagination")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<PageResult<ClusterNodeResponse>> listNode(@RequestBody
ClusterPageRequest request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.listNode(request, currentUser));
@@ -287,6 +293,7 @@ public class InlongClusterController {
@ApiOperation(value = "Delete cluster node")
@OperationLog(operation = OperationType.DELETE, operationTarget =
OperationTarget.CLUSTER_NODE)
@ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> deleteNode(@PathVariable Integer id) {
return Response.success(clusterService.deleteNode(id,
LoginUserUtils.getLoginUser().getName()));
}
@@ -295,26 +302,28 @@ public class InlongClusterController {
@ApiOperation(value = "Delete cluster node")
@OperationLog(operation = OperationType.DELETE, operationTarget =
OperationTarget.CLUSTER_NODE)
@ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> unloadNode(@PathVariable Integer id) {
return Response.success(clusterService.unloadNode(id,
LoginUserUtils.getLoginUser().getName()));
}
@RequestMapping(value = "/cluster/node/getManagerSSHPublicKey", method =
RequestMethod.GET)
@ApiOperation(value = "Obtain the SSH public key from the manager to
install the agent.")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<String> getManagerSSHPublicKey() {
return Response.success(clusterService.getManagerSSHPublicKey());
}
@PostMapping("/cluster/node/testSSHConnection")
@ApiOperation(value = "Test SSH connection for inlong cluster node")
- @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN,
UserRoleCode.TENANT_ADMIN})
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> testSSHConnection(@RequestBody ClusterNodeRequest
request) {
return Response.success(clusterService.testSSHConnection(request));
}
@PostMapping("/cluster/testConnection")
@ApiOperation(value = "Test connection for inlong cluster")
- @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN,
UserRoleCode.TENANT_ADMIN})
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> testConnection(@Validated @RequestBody
ClusterRequest request) {
return Response.success(clusterService.testConnection(request));
}
@@ -323,6 +332,7 @@ public class InlongClusterController {
@ApiOperation(value = "Start inlong cluster process")
@OperationLog(operation = OperationType.START, operationTarget =
OperationTarget.CLUSTER)
@ApiImplicitParam(name = "clusterTag", value = "Inlong cluster tag",
dataTypeClass = String.class)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> startProcess(@PathVariable String clusterTag,
@RequestParam(required = false, defaultValue = "false") boolean
sync) {
String operator = LoginUserUtils.getLoginUser().getName();
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
index 0e6224eaee..6e24b5bd2d 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/openapi/OpenInLongClusterController.java
@@ -77,6 +77,7 @@ public class OpenInLongClusterController {
@GetMapping(value = "/cluster/tag/get/{id}")
@ApiOperation(value = "Get cluster tag by id")
@ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<ClusterTagResponse> getTag(@PathVariable Integer id) {
Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, "tag
id cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -85,6 +86,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/tag/list")
@ApiOperation(value = "List cluster tags")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<List<ClusterTagResponse>> listTag(@RequestBody
ClusterTagPageRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -96,6 +98,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/tag/save")
@ApiOperation(value = "Save cluster tag")
@OperationLog(operation = OperationType.CREATE, operationTarget =
OperationTarget.CLUSTER)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Integer> saveTag(@Validated(SaveValidation.class)
@RequestBody ClusterTagRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -105,6 +108,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/tag/update")
@OperationLog(operation = OperationType.UPDATE, operationTarget =
OperationTarget.CLUSTER)
@ApiOperation(value = "Update cluster tag")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> updateTag(@Validated(UpdateValidation.class)
@RequestBody ClusterTagRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -115,6 +119,7 @@ public class OpenInLongClusterController {
@ApiOperation(value = "Delete cluster tag by id")
@OperationLog(operation = OperationType.DELETE, operationTarget =
OperationTarget.CLUSTER)
@ApiImplicitParam(name = "id", value = "Cluster tag ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> deleteTag(@PathVariable Integer id) {
Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER, "tag
id cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -124,6 +129,7 @@ public class OpenInLongClusterController {
@GetMapping(value = "/cluster/get/{id}")
@ApiOperation(value = "Get cluster by id")
@ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<ClusterInfo> get(@PathVariable Integer id) {
Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER,
"cluster id cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -132,6 +138,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/list")
@ApiOperation(value = "List clusters")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<List<ClusterInfo>> list(@RequestBody ClusterPageRequest
request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -143,6 +150,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/save")
@ApiOperation(value = "Save cluster")
@OperationLog(operation = OperationType.CREATE, operationTarget =
OperationTarget.CLUSTER)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Integer> save(@Validated(SaveValidation.class)
@RequestBody ClusterRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -152,6 +160,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/update")
@ApiOperation(value = "Update cluster")
@OperationLog(operation = OperationType.UPDATE, operationTarget =
OperationTarget.CLUSTER)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> update(@Validated(UpdateByIdValidation.class)
@RequestBody ClusterRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -161,6 +170,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/bindTag")
@ApiOperation(value = "Bind or unbind cluster tag")
@OperationLog(operation = OperationType.UPDATE, operationTarget =
OperationTarget.CLUSTER)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> bindTag(@Validated @RequestBody BindTagRequest
request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -171,6 +181,7 @@ public class OpenInLongClusterController {
@ApiOperation(value = "Delete cluster by id")
@OperationLog(operation = OperationType.DELETE, operationTarget =
OperationTarget.CLUSTER)
@ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> delete(@PathVariable Integer id) {
Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER,
"cluster id cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -180,6 +191,7 @@ public class OpenInLongClusterController {
@GetMapping(value = "/cluster/node/get/{id}")
@ApiOperation(value = "Get cluster node by id")
@ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<ClusterNodeResponse> getNode(@PathVariable Integer id) {
Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER,
"Cluster node id cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -188,6 +200,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/node/list")
@ApiOperation(value = "List cluster nodes")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<List<ClusterNodeResponse>> listNode(@RequestBody
ClusterPageRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -213,6 +226,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/node/save")
@ApiOperation(value = "Save cluster node")
@OperationLog(operation = OperationType.CREATE, operationTarget =
OperationTarget.CLUSTER)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Integer> saveNode(@Validated @RequestBody
ClusterNodeRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -222,6 +236,7 @@ public class OpenInLongClusterController {
@RequestMapping(value = "/cluster/node/update", method =
RequestMethod.POST)
@OperationLog(operation = OperationType.UPDATE, operationTarget =
OperationTarget.CLUSTER)
@ApiOperation(value = "Update cluster node")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> updateNode(@Validated(UpdateValidation.class)
@RequestBody ClusterNodeRequest request) {
Preconditions.expectNotNull(request, ErrorCodeEnum.INVALID_PARAMETER,
"request cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -232,6 +247,7 @@ public class OpenInLongClusterController {
@ApiOperation(value = "Delete cluster node")
@OperationLog(operation = OperationType.DELETE, operationTarget =
OperationTarget.CLUSTER)
@ApiImplicitParam(name = "id", value = "Cluster node ID", dataTypeClass =
Integer.class, required = true)
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<Boolean> deleteNode(@PathVariable Integer id) {
Preconditions.expectNotNull(id, ErrorCodeEnum.INVALID_PARAMETER,
"cluster id cannot be null");
Preconditions.expectNotNull(LoginUserUtils.getLoginUser(),
ErrorCodeEnum.LOGIN_USER_EMPTY);
@@ -250,6 +266,7 @@ public class OpenInLongClusterController {
@PostMapping(value = "/cluster/tenant/tag/list")
@ApiOperation(value = "List tenant cluster tags")
+ @RequiresRoles(UserRoleCode.INLONG_ADMIN)
public Response<PageResult<TenantClusterTagInfo>>
listTenantTag(@RequestBody TenantClusterTagPageRequest request) {
return Response.success(clusterService.listTenantTag(request));
}