in odps-console-basic/src/main/java/com/aliyun/openservices/odps/console/commands/SetCommand.java [198:279]
private void setSecurityConfig(String key) throws ODPSConsoleException, OdpsException {
String project = getCurrentProject();
Odps odps = getCurrentOdps();
SecurityManager securityManager = odps.projects().get(project).getSecurityManager();
SecurityConfiguration securityConfig = securityManager.getSecurityConfiguration();
if (!isStringContainingWith(value)) {
isBooleanStr(value, key);
}
if (PROJECT_PROTECTION.equalsIgnoreCase(key)) {
if (isStringContainingWith(value)) {
isBooleanStr(value.substring(0, value.toLowerCase().indexOf("with")).trim(), key);
String fileName = value.substring(value.toLowerCase().indexOf("exception") + 9).trim();
securityConfig.enableProjectProtection(FileUtil.getStringFromFile(fileName));
} else {
boolean enable = Boolean.parseBoolean(value);
if (enable) {
securityConfig.enableProjectProtection();
} else {
securityConfig.disableProjectProtection();
}
}
}
if (EXTERNAL_RESOURCE_ACCESS_CONTROL.equalsIgnoreCase(key)) {
if (isStringContainingWith(value)) {
String prefix = value.substring(0, value.toLowerCase().indexOf("with")).trim();
isBooleanStr(prefix, key);
boolean
enable =
Boolean.parseBoolean(prefix);
if (!enable) {
throw new ODPSConsoleException(
"External resource locations can only be set when external resource access control is enabled");
}
String locations = value.substring(value.toLowerCase().indexOf("locations") + 9).trim();
securityConfig.enableExternalResourceAccessControl(locations);
} else {
boolean enable = Boolean.parseBoolean(value);
if (enable) {
securityConfig.enableExternalResourceAccessControl();
} else {
securityConfig.disableExternalResourceAccessControl();
}
}
}
boolean enable = Boolean.parseBoolean(value);
if (OBJECT_CREATOR_HAS_ACCESS_PERMISSION.equalsIgnoreCase(key)) {
if (enable) {
securityConfig.enableObjectCreatorHasAccessPermission();
} else {
securityConfig.disableObjectCreatorHasAccessPermission();
}
} else if (OBJECT_CREATOR_HAS_GRANT_PERMISSION.equalsIgnoreCase(key)) {
if (enable) {
securityConfig.enableObjectCreatorHasGrantPermission();
} else {
securityConfig.disableObjectCreatorHasGrantPermission();
}
} else if (CHECK_PERMISSION_USING_ACL.equalsIgnoreCase(key)) {
if (enable) {
securityConfig.enableCheckPermissionUsingAcl();
} else {
securityConfig.disableCheckPermissionUsingAcl();
}
} else if (CHECK_PERMISSION_USING_POLICY.equalsIgnoreCase(key)) {
if (enable) {
securityConfig.enableCheckPermissionUsingPolicy();
} else {
securityConfig.disableCheckPermissionUsingPolicy();
}
} else if (LABEL_SECURITY.equalsIgnoreCase(key)) {
if (enable) {
securityConfig.enableLabelSecurity();
} else {
securityConfig.disableLabelSecurity();
}
}
securityManager.setSecurityConfiguration(securityConfig);
}