Skip to content

Commit 993a837

Browse files
authored
fix: redact sensitive strings (opendatahub-io#360)
* fix: redact sensitive strings * fix: improve RedactedString instantiation
1 parent dcb3e2b commit 993a837

5 files changed

Lines changed: 23 additions & 7 deletions

File tree

tests/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
Protocols,
4545
)
4646
from utilities.infra import update_configmap_data
47+
from utilities.logger import RedactedString
4748
from utilities.minio import create_minio_data_connection_secret
4849
from utilities.operator_utils import get_csv_related_images
4950

@@ -68,7 +69,7 @@ def tests_tmp_dir(request: FixtureRequest, tmp_path_factory: TempPathFactory) ->
6869

6970
@pytest.fixture(scope="session")
7071
def current_client_token(admin_client: DynamicClient) -> str:
71-
return get_openshift_token()
72+
return RedactedString(value=get_openshift_token())
7273

7374

7475
@pytest.fixture(scope="session")

tests/model_explainability/trustyai_service/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
create_isvc_getter_service_account,
5151
create_isvc_getter_token_secret,
5252
)
53+
from utilities.logger import RedactedString
5354
from utilities.operator_utils import get_cluster_service_version
5455

5556
from utilities.constants import Timeout, KServeDeploymentType, Labels
@@ -369,4 +370,4 @@ def isvc_getter_token_secret(
369370

370371
@pytest.fixture(scope="class")
371372
def isvc_getter_token(isvc_getter_service_account: ServiceAccount, isvc_getter_token_secret: Secret) -> str:
372-
return create_inference_token(model_service_account=isvc_getter_service_account)
373+
return RedactedString(value=create_inference_token(model_service_account=isvc_getter_service_account))

tests/model_serving/model_server/authentication/conftest.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
RuntimeTemplates,
2828
)
2929
from utilities.jira import is_jira_open
30+
from utilities.logger import RedactedString
3031
from utilities.serving_runtime import ServingRuntimeFromTemplate
3132
from utilities.constants import Annotations
3233

@@ -152,12 +153,12 @@ def http_raw_role_binding(
152153

153154
@pytest.fixture(scope="class")
154155
def http_inference_token(model_service_account: ServiceAccount, http_role_binding: RoleBinding) -> str:
155-
return create_inference_token(model_service_account=model_service_account)
156+
return RedactedString(value=create_inference_token(model_service_account=model_service_account))
156157

157158

158159
@pytest.fixture(scope="class")
159160
def http_raw_inference_token(model_service_account: ServiceAccount, http_raw_role_binding: RoleBinding) -> str:
160-
return create_inference_token(model_service_account=model_service_account)
161+
return RedactedString(value=create_inference_token(model_service_account=model_service_account))
161162

162163

163164
@pytest.fixture()
@@ -249,7 +250,7 @@ def grpc_role_binding(
249250

250251
@pytest.fixture(scope="class")
251252
def grpc_inference_token(grpc_model_service_account: ServiceAccount, grpc_role_binding: RoleBinding) -> str:
252-
return create_inference_token(model_service_account=grpc_model_service_account)
253+
return RedactedString(value=create_inference_token(model_service_account=grpc_model_service_account))
253254

254255

255256
@pytest.fixture(scope="class")
@@ -398,4 +399,4 @@ def http_model_mesh_role_binding(
398399
def http_model_mesh_inference_token(
399400
ci_service_account: ServiceAccount, http_model_mesh_role_binding: RoleBinding
400401
) -> str:
401-
return create_inference_token(model_service_account=ci_service_account)
402+
return RedactedString(value=create_inference_token(model_service_account=ci_service_account))

tests/model_serving/model_server/ovms/model_mesh/conftest.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
Protocols,
1313
)
1414
from utilities.infra import create_inference_token, create_isvc_view_role
15+
from utilities.logger import RedactedString
1516

1617

1718
@pytest.fixture(scope="class")
@@ -51,7 +52,7 @@ def model_mesh_inference_token(
5152
ci_service_account: ServiceAccount,
5253
model_mesh_role_binding: RoleBinding,
5354
) -> str:
54-
return create_inference_token(model_service_account=ci_service_account)
55+
return RedactedString(value=create_inference_token(model_service_account=ci_service_account))
5556

5657

5758
@pytest.fixture()

utilities/logger.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,18 @@
99
LOGGER = logging.getLogger(__name__)
1010

1111

12+
class RedactedString(str):
13+
"""
14+
Used to redact the representation of a sensitive string.
15+
"""
16+
17+
def __new__(cls, *, value: object) -> "RedactedString":
18+
return super().__new__(cls, value)
19+
20+
def __repr__(self) -> str:
21+
return "'***REDACTED***'"
22+
23+
1224
def setup_logging(log_level: int, log_file: str = "/tmp/pytest-tests.log") -> QueueListener:
1325
"""
1426
Setup basic/root logging using QueueHandler/QueueListener

0 commit comments

Comments
 (0)