Add sanitizer for test-proxy to scrub client secrets from recording files (#4769)

* Add sanitizer for test-proxy
This commit is contained in:
JinmingHu 2023-07-15 11:44:20 +08:00 committed by GitHub
parent c2834b3ff4
commit 9af264c316
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -216,9 +216,22 @@ void TestProxyManager::SetProxySanitizer()
Azure::Core::Url sanitizerRequest(m_proxy);
sanitizerRequest.AppendPath("Admin");
sanitizerRequest.AppendPath("AddSanitizer");
const std::string regexBody
= "{\"key\" : \"Location\",\"value\" : \"REDACTED\",\"regex\": "
"\"https://(?<account>[a-zA-Z0-9\\\\-]+).\",\"groupForReplace\" : \"account\"}";
const std::string urlAccountRegex = R"json(
{
"key": "Location",
"value": "REDACTED",
"regex": "https://(?<account>[a-zA-Z0-9\\-]+).",
"groupForReplace": "account"
}
)json";
const std::string bodyClientSecretRegex = R"json(
{
"key": "Location",
"value": "REDACTED",
"regex": "client_secret=(?<clientsecret>[a-zA-Z0-9\\%]+)",
"groupForReplace": "clientsecret"
}
)json";
Azure::Core::Url matcherRequest(m_proxy);
matcherRequest.AppendPath("Admin");
@ -270,7 +283,7 @@ void TestProxyManager::SetProxySanitizer()
{
Azure::Core::IO::MemoryBodyStream payloadStream(
reinterpret_cast<const uint8_t*>(regexBody.data()), regexBody.size());
reinterpret_cast<const uint8_t*>(urlAccountRegex.data()), urlAccountRegex.size());
Azure::Core::Http::Request request(
Azure::Core::Http::HttpMethod::Post, sanitizerRequest, &payloadStream);
request.SetHeader("x-abstraction-identifier", "UriRegexSanitizer");
@ -279,7 +292,7 @@ void TestProxyManager::SetProxySanitizer()
}
{
Azure::Core::IO::MemoryBodyStream payloadStream(
reinterpret_cast<const uint8_t*>(regexBody.data()), regexBody.size());
reinterpret_cast<const uint8_t*>(urlAccountRegex.data()), urlAccountRegex.size());
Azure::Core::Http::Request request(
Azure::Core::Http::HttpMethod::Post, sanitizerRequest, &payloadStream);
request.SetHeader("x-abstraction-identifier", "BodyRegexSanitizer");
@ -288,7 +301,17 @@ void TestProxyManager::SetProxySanitizer()
}
{
Azure::Core::IO::MemoryBodyStream payloadStream(
reinterpret_cast<const uint8_t*>(regexBody.data()), regexBody.size());
reinterpret_cast<const uint8_t*>(bodyClientSecretRegex.data()),
bodyClientSecretRegex.size());
Azure::Core::Http::Request request(
Azure::Core::Http::HttpMethod::Post, sanitizerRequest, &payloadStream);
request.SetHeader("x-abstraction-identifier", "BodyRegexSanitizer");
Azure::Core::Context ctx;
auto response = m_privatePipeline->Send(request, ctx);
}
{
Azure::Core::IO::MemoryBodyStream payloadStream(
reinterpret_cast<const uint8_t*>(urlAccountRegex.data()), urlAccountRegex.size());
Azure::Core::Http::Request request(
Azure::Core::Http::HttpMethod::Post, sanitizerRequest, &payloadStream);
request.SetHeader("x-abstraction-identifier", "HeaderRegexSanitizer");
@ -297,7 +320,7 @@ void TestProxyManager::SetProxySanitizer()
}
{
Azure::Core::IO::MemoryBodyStream payloadStream(
reinterpret_cast<const uint8_t*>(regexBody.data()), regexBody.size());
reinterpret_cast<const uint8_t*>(urlAccountRegex.data()), urlAccountRegex.size());
Azure::Core::Http::Request request(
Azure::Core::Http::HttpMethod::Post, sanitizerRequest, &payloadStream);
request.SetHeader("x-abstraction-identifier", "GeneralRegexSanitizer");