mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Remove sensitive params (VmPassword, etc) from VMWork log (#8553)
This commit is contained in:
parent
3550f6a959
commit
f702f7f57c
@ -17,9 +17,21 @@
|
|||||||
package com.cloud.vm;
|
package com.cloud.vm;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import com.cloud.serializer.GsonHelper;
|
||||||
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||||
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
public class VmWork implements Serializable {
|
public class VmWork implements Serializable {
|
||||||
private static final long serialVersionUID = -6946320465729853589L;
|
private static final long serialVersionUID = -6946320465729853589L;
|
||||||
|
private static final Gson gsonLogger = GsonHelper.getGsonLogger();
|
||||||
|
|
||||||
long userId;
|
long userId;
|
||||||
long accountId;
|
long accountId;
|
||||||
@ -56,4 +68,31 @@ public class VmWork implements Serializable {
|
|||||||
public String getHandlerName() {
|
public String getHandlerName() {
|
||||||
return handlerName;
|
return handlerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return gsonLogger.toJson(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected String toStringAfterRemoveParams(String paramsObjName, List<String> params) {
|
||||||
|
String ObjJsonStr = gsonLogger.toJson(this);
|
||||||
|
if (StringUtils.isBlank(ObjJsonStr) || StringUtils.isBlank(paramsObjName) || CollectionUtils.isEmpty(params)) {
|
||||||
|
return ObjJsonStr;
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
Map<String, Object> ObjMap = new ObjectMapper().readValue(ObjJsonStr, HashMap.class);
|
||||||
|
if (ObjMap != null && ObjMap.containsKey(paramsObjName)) {
|
||||||
|
for (String param : params) {
|
||||||
|
((Map<String, String>)ObjMap.get(paramsObjName)).remove(param);
|
||||||
|
}
|
||||||
|
String resultJson = new ObjectMapper().writeValueAsString(ObjMap);
|
||||||
|
return resultJson;
|
||||||
|
}
|
||||||
|
} catch (final JsonProcessingException e) {
|
||||||
|
// Ignore json exception
|
||||||
|
}
|
||||||
|
|
||||||
|
return ObjJsonStr;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,15 +21,13 @@ import java.lang.reflect.Method;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import com.google.gson.Gson;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
|
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
|
||||||
import org.apache.cloudstack.jobs.JobInfo;
|
import org.apache.cloudstack.jobs.JobInfo;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import com.cloud.serializer.GsonHelper;
|
import com.cloud.serializer.GsonHelper;
|
||||||
import com.cloud.utils.Pair;
|
import com.cloud.utils.Pair;
|
||||||
|
import com.google.gson.Gson;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* VmWorkJobHandlerProxy can not be used as standalone due to run-time
|
* VmWorkJobHandlerProxy can not be used as standalone due to run-time
|
||||||
@ -102,12 +100,12 @@ public class VmWorkJobHandlerProxy implements VmWorkJobHandler {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
if (s_logger.isDebugEnabled())
|
if (s_logger.isDebugEnabled())
|
||||||
s_logger.debug("Execute VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
|
s_logger.debug("Execute VM work job: " + work.getClass().getName() + work);
|
||||||
|
|
||||||
Object obj = method.invoke(_target, work);
|
Object obj = method.invoke(_target, work);
|
||||||
|
|
||||||
if (s_logger.isDebugEnabled())
|
if (s_logger.isDebugEnabled())
|
||||||
s_logger.debug("Done executing VM work job: " + work.getClass().getName() + _gsonLogger.toJson(work));
|
s_logger.debug("Done executing VM work job: " + work.getClass().getName() + work);
|
||||||
|
|
||||||
assert (obj instanceof Pair);
|
assert (obj instanceof Pair);
|
||||||
return (Pair<JobInfo.Status, String>)obj;
|
return (Pair<JobInfo.Status, String>)obj;
|
||||||
|
|||||||
@ -17,7 +17,9 @@
|
|||||||
package com.cloud.vm;
|
package com.cloud.vm;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
|
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
|
||||||
@ -62,4 +64,11 @@ public class VmWorkReboot extends VmWork {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
List<String> params = new ArrayList<>();
|
||||||
|
params.add(VirtualMachineProfile.Param.VmPassword.getName());
|
||||||
|
return super.toStringAfterRemoveParams("rawParams", params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,7 +18,9 @@
|
|||||||
package com.cloud.vm;
|
package com.cloud.vm;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.apache.cloudstack.context.CallContext;
|
import org.apache.cloudstack.context.CallContext;
|
||||||
@ -135,4 +137,11 @@ public class VmWorkStart extends VmWork {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
List<String> params = new ArrayList<>();
|
||||||
|
params.add(VirtualMachineProfile.Param.VmPassword.getName());
|
||||||
|
return super.toStringAfterRemoveParams("rawParams", params);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,42 @@
|
|||||||
|
// Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
// or more contributor license agreements. See the NOTICE file
|
||||||
|
// distributed with this work for additional information
|
||||||
|
// regarding copyright ownership. The ASF licenses this file
|
||||||
|
// to you under the Apache License, Version 2.0 (the
|
||||||
|
// "License"); you may not use this file except in compliance
|
||||||
|
// with the License. You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing,
|
||||||
|
// software distributed under the License is distributed on an
|
||||||
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
// KIND, either express or implied. See the License for the
|
||||||
|
// specific language governing permissions and limitations
|
||||||
|
// under the License.
|
||||||
|
package com.cloud.vm;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class VmWorkRebootTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToString() {
|
||||||
|
VmWork vmWork = new VmWork(1l, 1l, 1l, "testhandler");
|
||||||
|
Map<VirtualMachineProfile.Param, Object> params = new HashMap<>();
|
||||||
|
String lastHost = "rO0ABXQABHRydWU";
|
||||||
|
String lastHostSerialized = JobSerializerHelper.toObjectSerializedString(lastHost);
|
||||||
|
params.put(VirtualMachineProfile.Param.ConsiderLastHost, lastHost);
|
||||||
|
params.put(VirtualMachineProfile.Param.VmPassword, "rO0ABXQADnNhdmVkX3Bhc3N3b3Jk");
|
||||||
|
VmWorkReboot workInfo = new VmWorkReboot(vmWork, params);
|
||||||
|
String expectedVmWorkRebootStr = "{\"accountId\":1,\"vmId\":1,\"handlerName\":\"testhandler\",\"userId\":1,\"rawParams\":{\"ConsiderLastHost\":\"" + lastHostSerialized + "\"}}";
|
||||||
|
|
||||||
|
String vmWorkRebootStr = workInfo.toString();
|
||||||
|
Assert.assertEquals(expectedVmWorkRebootStr, vmWorkRebootStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,57 @@
|
|||||||
|
// Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
// or more contributor license agreements. See the NOTICE file
|
||||||
|
// distributed with this work for additional information
|
||||||
|
// regarding copyright ownership. The ASF licenses this file
|
||||||
|
// to you under the Apache License, Version 2.0 (the
|
||||||
|
// "License"); you may not use this file except in compliance
|
||||||
|
// with the License. You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing,
|
||||||
|
// software distributed under the License is distributed on an
|
||||||
|
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
// KIND, either express or implied. See the License for the
|
||||||
|
// specific language governing permissions and limitations
|
||||||
|
// under the License.
|
||||||
|
package com.cloud.vm;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import org.apache.cloudstack.framework.jobs.impl.JobSerializerHelper;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class VmWorkStartTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToStringWithParams() {
|
||||||
|
VmWork vmWork = new VmWork(1l, 1l, 1l, "testhandler");
|
||||||
|
VmWorkStart workInfo = new VmWorkStart(vmWork);
|
||||||
|
Map<VirtualMachineProfile.Param, Object> params = new HashMap<>();
|
||||||
|
String lastHost = "rO0ABXQABHRydWU";
|
||||||
|
String lastHostSerialized = JobSerializerHelper.toObjectSerializedString(lastHost);
|
||||||
|
params.put(VirtualMachineProfile.Param.ConsiderLastHost, lastHost);
|
||||||
|
params.put(VirtualMachineProfile.Param.VmPassword, "rO0ABXQADnNhdmVkX3Bhc3N3b3Jk");
|
||||||
|
workInfo.setParams(params);
|
||||||
|
String expectedVmWorkStartStr = "{\"accountId\":1,\"dcId\":0,\"vmId\":1,\"handlerName\":\"testhandler\",\"userId\":1,\"rawParams\":{\"ConsiderLastHost\":\"" + lastHostSerialized + "\"}}";
|
||||||
|
|
||||||
|
String vmWorkStartStr = workInfo.toString();
|
||||||
|
Assert.assertEquals(expectedVmWorkStartStr, vmWorkStartStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testToStringWithRawParams() {
|
||||||
|
VmWork vmWork = new VmWork(1l, 1l, 1l, "testhandler");
|
||||||
|
VmWorkStart workInfo = new VmWorkStart(vmWork);
|
||||||
|
Map<String, String> rawParams = new HashMap<>();
|
||||||
|
rawParams.put(VirtualMachineProfile.Param.ConsiderLastHost.getName(), "rO0ABXQABHRydWU");
|
||||||
|
rawParams.put(VirtualMachineProfile.Param.VmPassword.getName(), "rO0ABXQADnNhdmVkX3Bhc3N3b3Jk");
|
||||||
|
workInfo.setRawParams(rawParams);
|
||||||
|
String expectedVmWorkStartStr = "{\"accountId\":1,\"dcId\":0,\"vmId\":1,\"handlerName\":\"testhandler\",\"userId\":1,\"rawParams\":{\"ConsiderLastHost\":\"rO0ABXQABHRydWU\"}}";
|
||||||
|
|
||||||
|
String vmWorkStartStr = workInfo.toString();
|
||||||
|
Assert.assertEquals(expectedVmWorkStartStr, vmWorkStartStr);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user