apache/dolphinscheduler · warning · ServiceException
USER_NO_OPERATION_PERM
USER_NO_OPERATION_PERM
Error message
Status.USER_NO_OPERATION_PERM
What it means
USER_NO_OPERATION_PERM is thrown by createEnvironment when canOperatorPermissions denies the calling user ENVIRONMENT authorization for the ENVIRONMENT_CREATE function. Only users with environment-management permission (typically ADMIN, or users explicitly granted ENVIRONMENT auth) may create environments. The request fails authorization before any parameter validation.
Source
Thrown at dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/EnvironmentServiceImpl.java:102
/**
* create environment
*
* @param loginUser login user
* @param name environment name
* @param config environment config
* @param desc environment desc
* @param workerGroups worker groups
*/
@Override
@Transactional
public Long createEnvironment(User loginUser,
String name,
String config,
String desc,
String workerGroups) {
if (!canOperatorPermissions(loginUser, null, AuthorizationType.ENVIRONMENT, ENVIRONMENT_CREATE)) {
throw new ServiceException(Status.USER_NO_OPERATION_PERM);
}
if (checkDescriptionLength(desc)) {
throw new ServiceException(Status.DESCRIPTION_TOO_LONG_ERROR);
}
checkParams(name, config, workerGroups);
Environment environment = environmentMapper.queryByEnvironmentName(name);
if (environment != null) {
throw new ServiceException(Status.ENVIRONMENT_NAME_EXISTS, name);
}
Environment env = new Environment();
env.setName(name);
env.setConfig(config);
env.setDescription(desc);
env.setOperator(loginUser.getId());
env.setCreateTime(new Date());
env.setUpdateTime(new Date());View on GitHub (pinned to 02eac45a1b)
Solutions
- Use an admin account, or ask an admin to grant the user ENVIRONMENT authorization.
- Update automation/CI credentials to an account with environment-management permission.
- Check which user the sessionId/token actually belongs to — reused sessions often run as the wrong account.
- If environments should be user-creatable, adjust the deployment's permission policy/grants accordingly.
Defensive patterns
Strategy: fallback
Validate before calling
if (loginUser == null || loginUser.getUserType() != UserType.ADMIN_USER) {
throw new SecurityException("environment creation requires ENVIRONMENT authorization / admin role");
} Type guard
boolean canCreateEnvironment(User u) {
return u != null && u.getUserType() == UserType.ADMIN_USER;
} Try / catch
try {
envService.createEnvironment(user, name, config, desc, workerGroups);
} catch (ServiceException e) {
if (e.getCode() == Status.USER_NO_OPERATION_PERM) {
// do not retry: escalate to an admin or use an authorized service account
}
} Prevention
- Provision automation accounts with ENVIRONMENT authorization up front.
- Check the caller's role in UI/API clients before offering environment-creation actions.
- Avoid reusing admin sessions for non-admin flows and vice versa.
- After upgrades that change permission scope, re-audit service-account grants.
When it happens
Trigger: POST /dolphinscheduler/environments (createEnvironment) with a non-admin user or a service token lacking ENVIRONMENT authorization; SECURITY settings require admin role for environment creation and the caller is a regular/tenant user.
Common situations: Regular users attempting to create environments via API/UI; CI scripts running with a non-admin token; after an upgrade where environment management became admin-only and old automation broke.
Understand the failure class
Background: Permission denied / not authorized / 403 Forbidden: access-control rejections when the caller lacks the required role, grant, or ownership — this error's family across 18 libraries.
Related errors
AI-assisted analysis of apache/dolphinscheduler@02eac45a1b (2026-09-06).
Data as JSON: /api/errors/03056ad1fc5de245.
Report an issue: GitHub.