Skip to content

PYTHON-5927 Redact TLS keyfile password from client repr#2830

Open
dfgvaetyj3456356-hash wants to merge 2 commits into
mongodb:masterfrom
dfgvaetyj3456356-hash:security/redact-tls-passphrase-repr
Open

PYTHON-5927 Redact TLS keyfile password from client repr#2830
dfgvaetyj3456356-hash wants to merge 2 commits into
mongodb:masterfrom
dfgvaetyj3456356-hash:security/redact-tls-passphrase-repr

Conversation

@dfgvaetyj3456356-hash

Copy link
Copy Markdown

Summary

  • redact tlsCertificateKeyFilePassword when rendering MongoClient/AsyncMongoClient repr output
  • preserve existing repr formatting for non-sensitive options
  • add sync and async unit regression coverage

Why

tlsCertificateKeyFilePassword is a passphrase for encrypted client certificate key files. Before this change, creating a client with that option and logging or inspecting repr(client) included the raw passphrase. This keeps the option visible for debugging while avoiding disclosure of the secret value.

This is intentionally scoped to the TLS keyfile passphrase and does not touch authMechanismProperties, which is already covered by a separate open PR.

Test

python -m pytest test\test_client.py::ClientUnitTest::test_repr_redacts_tls_certificate_keyfile_password test\asynchronous\test_client.py::AsyncClientUnitTest::test_repr_redacts_tls_certificate_keyfile_password -q
python -m py_compile pymongo\synchronous\mongo_client.py pymongo\asynchronous\mongo_client.py test\test_client.py test\asynchronous\test_client.py
git diff --check

Signed-off-by: dfgvaetyj3456356-hash <185460949+dfgvaetyj3456356-hash@users.noreply.github.com>
@dfgvaetyj3456356-hash dfgvaetyj3456356-hash requested a review from a team as a code owner May 31, 2026 09:14
@codeowners-service-app

Copy link
Copy Markdown

Assigned NoahStapp for team dbx-python because blink1073 is out of office.

@Jibola Jibola changed the title Redact TLS keyfile password from client repr PYTHON-XXXX Redact TLS keyfile password from client repr Jul 9, 2026
@Jibola Jibola marked this pull request as draft July 9, 2026 14:05
@Jibola Jibola marked this pull request as ready for review July 9, 2026 14:05
Copilot AI review requested due to automatic review settings July 9, 2026 14:05

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR prevents accidental secret disclosure by redacting the TLS client key passphrase (tlsCertificateKeyFilePassword / tlscertificatekeyfilepassword) from MongoClient and AsyncMongoClient repr() output, while keeping the option visible for debugging. It adds regression tests to ensure the passphrase no longer appears in repr(client).

Changes:

  • Redact tlscertificatekeyfilepassword in MongoClient / AsyncMongoClient repr rendering.
  • Add sync + async unit tests asserting repr() contains '<redacted>' and does not contain the raw passphrase.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.

File Description
test/test_client.py Adds a unit test verifying TLS keyfile passphrase is redacted from MongoClient.__repr__.
test/asynchronous/test_client.py Adds a unit test verifying TLS keyfile passphrase is redacted from AsyncMongoClient.__repr__.
pymongo/synchronous/mongo_client.py Implements repr redaction for tlscertificatekeyfilepassword.
pymongo/asynchronous/mongo_client.py Implements repr redaction for tlscertificatekeyfilepassword.

Comment on lines +1310 to +1311
if option in {"tlscertificatekeyfilepassword"}:
return f"{option}='<redacted>'"
Comment on lines +1310 to +1311
if option in {"tlscertificatekeyfilepassword"}:
return f"{option}='<redacted>'"
@Jibola Jibola changed the title PYTHON-XXXX Redact TLS keyfile password from client repr PYTHON-5927 Redact TLS keyfile password from client repr Jul 9, 2026
@Jibola

Jibola commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Hi, thanks for your contribution. Please update your pull request to be in line with out pull request template guidelines.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants