This is an automated email from the ASF dual-hosted git repository.
jiafengzheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris-manager.git
The following commit(s) were added to refs/heads/master by this push:
new 3b32660 encrypt doris password (#41)
3b32660 is described below
commit 3b32660f4f53fb06ddcd50f3f8b36db687c61592
Author: LiRui <[email protected]>
AuthorDate: Tue Apr 12 21:15:08 2022 +0800
encrypt doris password (#41)
---
.../component/DorisManagerUserSpaceComponent.java | 8 ++++++--
.../handler/DorisClusterTakeOverRequestHandler.java | 3 ++-
.../java/org/apache/doris/stack/util/CredsUtil.java | 19 ++++++++++++++++---
.../doris/stack/connector/DorisNodesClient.java | 3 ++-
.../doris/stack/connector/PaloFileUploadClient.java | 9 +++++----
.../stack/connector/PaloForwardManagerClient.java | 9 +++++----
.../apache/doris/stack/connector/PaloLoginClient.java | 3 ++-
.../doris/stack/connector/PaloMetaInfoClient.java | 9 +++++----
.../apache/doris/stack/connector/PaloQueryClient.java | 3 ++-
.../doris/stack/connector/PaloStatisticClient.java | 3 ++-
.../apache/doris/stack/entity/ClusterInfoEntity.java | 1 -
11 files changed, 47 insertions(+), 23 deletions(-)
diff --git
a/manager/dm-server/src/main/java/org/apache/doris/stack/component/DorisManagerUserSpaceComponent.java
b/manager/dm-server/src/main/java/org/apache/doris/stack/component/DorisManagerUserSpaceComponent.java
index 8d75065..68f548d 100644
---
a/manager/dm-server/src/main/java/org/apache/doris/stack/component/DorisManagerUserSpaceComponent.java
+++
b/manager/dm-server/src/main/java/org/apache/doris/stack/component/DorisManagerUserSpaceComponent.java
@@ -59,6 +59,7 @@ import
org.apache.doris.stack.model.response.space.NewUserSpaceInfo;
import org.apache.doris.stack.service.BaseService;
import org.apache.doris.stack.service.config.ConfigConstant;
import org.apache.doris.stack.service.construct.MetadataService;
+import org.apache.doris.stack.util.CredsUtil;
import org.apache.doris.stack.util.ListUtil;
import org.apache.doris.stack.util.UuidUtil;
@@ -201,6 +202,8 @@ public class DorisManagerUserSpaceComponent extends
BaseService {
log.info("Verify that the Palo cluster is available");
ClusterInfoEntity entity = new ClusterInfoEntity();
entity.updateByClusterInfo(createReq);
+ // encrypt passwd
+ entity.setPasswd(CredsUtil.aesEncrypt(entity.getPasswd()));
// Just verify whether the Doris HTTP interface can be accessed
try {
paloLoginClient.loginPalo(entity);
@@ -349,6 +352,7 @@ public class DorisManagerUserSpaceComponent extends
BaseService {
validateCluster(clusterAccessInfo);
clusterInfo.updateByClusterInfo(clusterAccessInfo);
+ clusterInfo.setPasswd(CredsUtil.aesEncrypt(clusterInfo.getPasswd()));
clusterInfo.setStatus(ClusterInfoEntity.AppClusterStatus.NORMAL.name());
// Initialize the correspondence between permission group and Doris
virtual user
@@ -429,7 +433,7 @@ public class DorisManagerUserSpaceComponent extends
BaseService {
private void setClusterStatus(ClusterInfoEntity clusterInfo) {
try {
jdbcClient.testConnetion(clusterInfo.getAddress(),
clusterInfo.getQueryPort(),
- ConstantDef.MYSQL_DEFAULT_SCHEMA, clusterInfo.getUser(),
clusterInfo.getPasswd());
+ ConstantDef.MYSQL_DEFAULT_SCHEMA, clusterInfo.getUser(),
CredsUtil.tryAesDecrypt(clusterInfo.getPasswd()));
clusterInfo.setStatus(ClusterInfoEntity.AppClusterStatus.NORMAL.name());
} catch (Exception e) {
clusterInfo.setStatus(ClusterInfoEntity.AppClusterStatus.ABNORMAL.name());
@@ -584,7 +588,7 @@ public class DorisManagerUserSpaceComponent extends
BaseService {
String password = queryClient.createUser(ConstantDef.DORIS_DEFAULT_NS,
ConstantDef.MYSQL_DEFAULT_SCHEMA,
clusterInfo, userName);
allUserGroup.setPaloUserName(userName);
- allUserGroup.setPassword(password);
+ allUserGroup.setPassword(CredsUtil.aesEncrypt(password));
groupRoleRepository.save(allUserGroup);
log.debug("save palo user for group");
diff --git
a/manager/dm-server/src/main/java/org/apache/doris/stack/control/request/handler/DorisClusterTakeOverRequestHandler.java
b/manager/dm-server/src/main/java/org/apache/doris/stack/control/request/handler/DorisClusterTakeOverRequestHandler.java
index e5434eb..f5efc25 100644
---
a/manager/dm-server/src/main/java/org/apache/doris/stack/control/request/handler/DorisClusterTakeOverRequestHandler.java
+++
b/manager/dm-server/src/main/java/org/apache/doris/stack/control/request/handler/DorisClusterTakeOverRequestHandler.java
@@ -33,6 +33,7 @@ import org.apache.doris.stack.entity.ClusterInfoEntity;
import org.apache.doris.stack.entity.CoreUserEntity;
import org.apache.doris.stack.entity.ResourceNodeEntity;
import
org.apache.doris.stack.model.request.control.DorisClusterModuleResourceConfig;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -129,7 +130,7 @@ public class DorisClusterTakeOverRequestHandler extends
DorisClusterRequestHandl
List<String> nodeIps = new ArrayList<>();
Statement stmt = jdbcClient.getStatement(clusterInfo.getAddress(),
clusterInfo.getQueryPort(),
- clusterInfo.getUser(), clusterInfo.getPasswd());
+ clusterInfo.getUser(),
CredsUtil.aesDecrypt(clusterInfo.getPasswd()));
Set<String> feNodeIps = jdbcClient.getFeOrBeIps(stmt, "'/frontends';");
log.debug("The node list IP of Doris cluster Fe is {}", feNodeIps);
diff --git
a/manager/general/src/main/java/org/apache/doris/stack/util/CredsUtil.java
b/manager/general/src/main/java/org/apache/doris/stack/util/CredsUtil.java
index 06ae771..d5b52bc 100644
--- a/manager/general/src/main/java/org/apache/doris/stack/util/CredsUtil.java
+++ b/manager/general/src/main/java/org/apache/doris/stack/util/CredsUtil.java
@@ -34,9 +34,9 @@ import javax.crypto.spec.SecretKeySpec;
public class CredsUtil {
/**
- * Encrypt Key
- * AES must be 128 bits
- */
+ * Encrypt Key
+ * AES must be 128 bits
+ */
private static final String ENCRYPT_KEY = "12dfA67887iyW321";
private static final String ALGORITHM_STR = "AES/ECB/PKCS5Padding";
@@ -196,4 +196,17 @@ public class CredsUtil {
return decryptPassword;
}
+ /**
+ * AES decrypt
+ *
+ * @param encryptStr
+ * @return decrypt string if the encryptStr is de
+ */
+ public static String tryAesDecrypt(String encryptStr) throws Exception {
+ try {
+ return aesDecrypt(encryptStr);
+ } catch (Exception e) {
+ return encryptStr;
+ }
+ }
}
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/DorisNodesClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/DorisNodesClient.java
index b6ecc5c..1c36f4e 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/DorisNodesClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/DorisNodesClient.java
@@ -27,6 +27,7 @@ import org.apache.doris.stack.model.palo.PaloResponseEntity;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Maps;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -54,7 +55,7 @@ public class DorisNodesClient extends PaloClient {
log.debug("Send get doris node list request, url is {}.", url);
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doGet(url, headers);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloFileUploadClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloFileUploadClient.java
index 55ac8d1..57c3b20 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloFileUploadClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloFileUploadClient.java
@@ -30,6 +30,7 @@ import org.apache.doris.stack.exception.HdfsUrlException;
import org.apache.doris.stack.exception.PaloRequestException;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.multipart.MultipartFile;
@@ -68,7 +69,7 @@ public class PaloFileUploadClient extends PaloClient {
headers.put("Content-Type", contentType);
String[] array = contentType.split(";");
String[] boundary = array[1].split("=");
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.uploadFile(url, file,
headers, otherParams, boundary[1]);
@@ -102,7 +103,7 @@ public class PaloFileUploadClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
setPostHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
headers.put("label", importReq.getName());
StringBuffer columnNameBuffer = new StringBuffer();
@@ -145,7 +146,7 @@ public class PaloFileUploadClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doDelete(url, headers);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
log.error("delete file error:" + response.getData());
@@ -164,7 +165,7 @@ public class PaloFileUploadClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
setPostHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doPost(url, headers, req);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloForwardManagerClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloForwardManagerClient.java
index b58b4ef..d547770 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloForwardManagerClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloForwardManagerClient.java
@@ -28,6 +28,7 @@ import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.google.common.collect.Maps;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -50,7 +51,7 @@ public class PaloForwardManagerClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response;
try {
response = poolManager.doGet(url, headers);
@@ -69,7 +70,7 @@ public class PaloForwardManagerClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
headers.put("Content-Type", "application/json");
PaloResponseEntity response;
try {
@@ -83,11 +84,11 @@ public class PaloForwardManagerClient extends PaloClient {
return ResponseEntityBuilder.ok(JSON.parse(response.getData()));
}
- public boolean doesFeMonitorExist(ClusterInfoEntity entity) {
+ public boolean doesFeMonitorExist(ClusterInfoEntity entity) throws
Exception {
String url = "http://" + entity.getAddress() + ":" +
entity.getHttpPort() + FE_MONITOR_CHECK_API;
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response;
try {
response = poolManager.doGet(url, headers);
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloLoginClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloLoginClient.java
index f680254..b4aa3f4 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloLoginClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloLoginClient.java
@@ -22,6 +22,7 @@ import org.apache.doris.stack.entity.ClusterInfoEntity;
import org.apache.doris.stack.exception.PaloRequestException;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -44,7 +45,7 @@ public class PaloLoginClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
setPostHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doPost(url, headers, null);
if (response.getCode() != LOGIN_SUCCESS_CODE) {
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloMetaInfoClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloMetaInfoClient.java
index 3f79858..ff07751 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloMetaInfoClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloMetaInfoClient.java
@@ -24,6 +24,7 @@ import org.apache.doris.stack.entity.ClusterInfoEntity;
import org.apache.doris.stack.exception.PaloRequestException;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -55,7 +56,7 @@ public class PaloMetaInfoClient extends PaloClient {
log.debug("Send get database list request, url is {}.", url);
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doGet(url, headers);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
throw new PaloRequestException("Get Database list by ns error.");
@@ -92,7 +93,7 @@ public class PaloMetaInfoClient extends PaloClient {
log.debug("Send get table list request, url is {}.", url);
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doGet(url, headers);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
@@ -102,7 +103,7 @@ public class PaloMetaInfoClient extends PaloClient {
}
public TableSchemaInfo.TableSchema getTableBaseSchema(String ns, String
db, String table,
- ClusterInfoEntity entity) throws
Exception {
+ ClusterInfoEntity
entity) throws Exception {
TableSchemaInfo result = getTableSchema(ns, db, table, entity);
TableSchemaInfo.TableSchema tableSchema =
result.getSchemaInfo().getSchemaMap().get(table);
return tableSchema;
@@ -131,7 +132,7 @@ public class PaloMetaInfoClient extends PaloClient {
log.debug("Send get table schema request, url is {}.", url);
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doGet(url, headers);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloQueryClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloQueryClient.java
index 9e4a89e..a7c12f1 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloQueryClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloQueryClient.java
@@ -24,6 +24,7 @@ import
org.apache.doris.stack.model.response.construct.NativeQueryResp;
import org.apache.doris.stack.entity.ClusterInfoEntity;
import lombok.extern.slf4j.Slf4j;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -119,7 +120,7 @@ public class PaloQueryClient extends PaloClient {
public NativeQueryResp executeSQL(String sql, String ns, String db,
ClusterInfoEntity entity) throws Exception {
Statement stmt = jdbcClient.getStatement(entity.getAddress(),
entity.getQueryPort(),
- entity.getUser(), entity.getPasswd(), db);
+ entity.getUser(), CredsUtil.tryAesDecrypt(entity.getPasswd()),
db);
try {
NativeQueryResp res = executeSql(stmt, sql);
return res;
diff --git
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloStatisticClient.java
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloStatisticClient.java
index 0041584..b23b717 100644
---
a/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloStatisticClient.java
+++
b/manager/manager/src/main/java/org/apache/doris/stack/connector/PaloStatisticClient.java
@@ -24,6 +24,7 @@ import org.apache.doris.stack.entity.ClusterInfoEntity;
import org.apache.doris.stack.exception.PaloRequestException;
import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
+import org.apache.doris.stack.util.CredsUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -49,7 +50,7 @@ public class PaloStatisticClient extends PaloClient {
Map<String, String> headers = Maps.newHashMap();
setHeaders(headers);
- setAuthHeaders(headers, entity.getUser(), entity.getPasswd());
+ setAuthHeaders(headers, entity.getUser(),
CredsUtil.tryAesDecrypt(entity.getPasswd()));
PaloResponseEntity response = poolManager.doGet(url, headers);
if (response.getCode() != REQUEST_SUCCESS_CODE) {
diff --git
a/manager/resource-common/src/main/java/org/apache/doris/stack/entity/ClusterInfoEntity.java
b/manager/resource-common/src/main/java/org/apache/doris/stack/entity/ClusterInfoEntity.java
index b904175..42484e2 100644
---
a/manager/resource-common/src/main/java/org/apache/doris/stack/entity/ClusterInfoEntity.java
+++
b/manager/resource-common/src/main/java/org/apache/doris/stack/entity/ClusterInfoEntity.java
@@ -75,7 +75,6 @@ public class ClusterInfoEntity {
/**
* Doris user password
- * TODO:The subsequent storage shall be encrypted to prevent the leakage
of password information
*/
@Column(length = 100)
private String passwd;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]