Skip to content

Commit 1ce4500

Browse files
committed
refactor: improve ingestion safety and log sanitization
1 parent aaeab9e commit 1ce4500

3 files changed

Lines changed: 25 additions & 16 deletions

File tree

ingestion/src/metadata/ingestion/source/database/sas/client.py

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@
2424

2525
logger = ingestion_logger()
2626

27+
SAS_CLI_AUTH_HEADER = "Basic c2FzLmNsaTo="
28+
2729

2830
class SASClient:
2931
"""
@@ -41,7 +43,7 @@ def __init__(self, config: SASConnection):
4143
auth_token=self.get_auth_token,
4244
api_version="",
4345
allow_redirects=True,
44-
verify=False,
46+
verify=True,
4547
)
4648
self.client = TrackedREST(client_config, source_name="sas")
4749
# custom setting
@@ -170,14 +172,19 @@ def get_token(self, base_url, user, password):
170172
payload = {"grant_type": "password", "username": user, "password": password}
171173
headers = {
172174
"Content-type": "application/x-www-form-urlencoded",
173-
"Authorization": "Basic c2FzLmNsaTo=",
175+
"Authorization": SAS_CLI_AUTH_HEADER,
174176
}
175177
url = base_url + endpoint
176178
response = requests.request(
177-
"POST", url, headers=headers, data=payload, verify=False, timeout=10
179+
"POST", url, headers=headers, data=payload, verify=True, timeout=10
178180
)
179-
text_response = response.json()
180-
logger.info(
181-
f"this is user: {user}, password: {password}, text: {text_response}"
181+
logger.debug(
182+
"Token request for user: %s completed with status: %s",
183+
user,
184+
response.status_code,
182185
)
183-
return response.json()["access_token"]
186+
response.raise_for_status()
187+
token = response.json().get("access_token")
188+
if not token:
189+
raise APIError(f"Failed to retrieve access_token from SAS. Response: {response.text}")
190+
return token

ingestion/src/metadata/ingestion/source/search/elasticsearch/connection.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"""
1313
Source connection handler
1414
"""
15+
1516
import ssl
1617
from pathlib import Path
1718
from typing import Optional
@@ -138,7 +139,7 @@ def get_ssl_context(ssl_config: SslConfig) -> ssl.SSLContext:
138139
)
139140
return ssl_context
140141

141-
return ssl._create_unverified_context() # pylint: disable=protected-access
142+
return ssl.create_default_context()
142143

143144

144145
def get_connection(connection: ElasticsearchConnection) -> Elasticsearch:
@@ -154,9 +155,11 @@ def get_connection(connection: ElasticsearchConnection) -> Elasticsearch:
154155
):
155156
basic_auth = (
156157
connection.authType.username,
157-
connection.authType.password.get_secret_value()
158-
if connection.authType.password
159-
else None,
158+
(
159+
connection.authType.password.get_secret_value()
160+
if connection.authType.password
161+
else None
162+
),
160163
)
161164

162165
if isinstance(connection.authType, ApiKeyAuthentication):

ingestion/src/metadata/utils/secrets/aws_secrets_manager.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"""
1313
Secrets manager implementation using AWS Secrets Manager
1414
"""
15+
1516
import traceback
1617
from typing import Optional
1718

@@ -53,17 +54,15 @@ def get_string_value(self, secret_id: str) -> Optional[str]:
5354
try:
5455
kwargs = {"SecretId": secret_id}
5556
response = self.client.get_secret_value(**kwargs)
56-
logger.debug("Got value for secret %s.", secret_id)
57+
logger.debug("Successfully retrieved value from secrets manager.")
5758
except ClientError as err:
5859
logger.debug(traceback.format_exc())
59-
logger.error(f"Couldn't get value for secret [{secret_id}]: {err}")
60+
logger.error(f"Couldn't get value from secrets manager: {err}")
6061
raise err
6162
if "SecretString" in response:
6263
return (
6364
response["SecretString"]
6465
if response["SecretString"] != NULL_VALUE
6566
else None
6667
)
67-
raise ValueError(
68-
f"SecretString for secret [{secret_id}] not present in the response."
69-
)
68+
raise ValueError("SecretString not present in the response.")

0 commit comments

Comments
 (0)