synapse/synapse
V02460 2159b3852e
Add --no-secrets-in-config command line option (#18092)
Adds the `--no-secrets-in-config` command line option that makes Synapse
reject all configurations containing keys with in-line secret values.
Currently this rejects

- `turn_shared_secret`
- `registration_shared_secret`
- `macaroon_secret_key`
- `recaptcha_private_key`
- `recaptcha_public_key`
- `experimental_features.msc3861.client_secret`
- `experimental_features.msc3861.jwk`
- `experimental_features.msc3861.admin_token`
- `form_secret`
- `redis.password`
- `worker_replication_secret`

> [!TIP]
> Hey, you! Yes, you! 😊 If you think this list is missing an item,
please leave a comment below. Thanks :)

This PR complements my other PRs[^1] that add the corresponding `_path`
variants for this class of config options. It enables admins to enforce
a policy of no secrets in configuration files and guards against
accident and malice.

Because I consider the flag `--no-secrets-in-config` to be
security-relevant, I did not add a corresponding `--secrets-in-config`
flag; this way, if Synapse command line options are appended at various
places, there is no way to weaken the once-set setting with a succeeding
flag.

[^1]: [#17690](https://github.com/element-hq/synapse/pull/17690),
[#17717](https://github.com/element-hq/synapse/pull/17717),
[#17983](https://github.com/element-hq/synapse/pull/17983),
[#17984](https://github.com/element-hq/synapse/pull/17984),
[#18004](https://github.com/element-hq/synapse/pull/18004),
[#18090](https://github.com/element-hq/synapse/pull/18090)


### Pull Request Checklist

<!-- Please read
https://element-hq.github.io/synapse/latest/development/contributing_guide.html
before submitting your pull request -->

* [x] Pull request is based on the develop branch
* [x] Pull request includes a [changelog
file](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#changelog).
The entry should:
- Be a short description of your change which makes sense to users.
"Fixed a bug that prevented receiving messages from other servers."
instead of "Moved X method from `EventStore` to `EventWorkerStore`.".
  - Use markdown where necessary, mostly for `code blocks`.
  - End with either a period (.) or an exclamation mark (!).
  - Start with a capital letter.
- Feel free to credit yourself, by adding a sentence "Contributed by
@github_username." or "Contributed by [Your Name]." to the end of the
entry.
* [x] [Code
style](https://element-hq.github.io/synapse/latest/code_style.html) is
correct
(run the
[linters](https://element-hq.github.io/synapse/latest/development/contributing_guide.html#run-the-linters))
2025-02-25 16:26:01 +00:00
..
_scripts Add background job to clear unreferenced state groups (#18154) 2025-02-25 16:25:39 +00:00
api Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
app Add missing license header (#17799) 2024-10-08 12:01:44 +01:00
appservice Support for MSC4190: device management for application services (#17705) 2024-12-04 12:04:49 +01:00
config Add --no-secrets-in-config command line option (#18092) 2025-02-25 16:26:01 +00:00
crypto Fix fetching signing keys when old_verify_keys is omitted (#17568) 2024-08-14 14:13:56 +01:00
events Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
federation Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
handlers Prevent suspended users from sending encrypted messages (#18157) 2025-02-21 10:06:44 +00:00
http Add support to proxy outbound requests from Synapse in tests (#18158) 2025-02-17 10:23:04 -06:00
logging Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
media Restrict which image formats we will decode in order to generate thumbnails 2024-12-03 09:53:21 +01:00
metrics Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
module_api Add method to get current server time in milliseconds in ModuleApi (#18144) 2025-02-18 10:20:30 +00:00
push Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
replication Fix new scheduled tasks jumping the queue (#17962) 2024-11-28 18:06:19 +00:00
res Send an email if the address is already bound to an user account (#16819) 2024-04-23 16:45:24 +01:00
rest Make sure we advertise registration as disabled when MSC3861 is enabled (#17661) 2025-02-18 14:47:35 +00:00
server_notices Format files with Ruff (#17643) 2024-09-02 12:39:04 +01:00
spam_checker_api Correctly mention previous copyright (#16820) 2024-01-23 11:26:48 +00:00
state Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
static Update link to the clients webpage, fix #15825 (#15874) 2023-07-06 17:28:09 +02:00
storage Add background job to clear unreferenced state groups (#18154) 2025-02-25 16:25:39 +00:00
streams Fix regression when bounding future tokens (#17391) 2024-07-02 14:06:36 +01:00
synapse_rust Move server event filtering logic to rust (#17928) 2024-11-14 16:18:24 +00:00
types Add background job to clear unreferenced state groups (#18154) 2025-02-25 16:25:39 +00:00
util Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
__init__.py Remove support for python 3.8 (#17908) 2024-11-06 19:36:01 +00:00
_pydantic_compat.py import pydantic objects from the _pydantic_compat module (#17667) 2024-09-11 21:01:43 +00:00
event_auth.py Cleanup Python 3.8 leftovers (#17967) 2025-02-10 16:53:24 +00:00
notifier.py Optimise notifier mk2 (#17766) 2024-09-30 13:32:31 +01:00
py.typed Mark Module API error imports as re-exported and mark Synapse as containing type annotations (#11054) 2021-10-13 08:42:41 +01:00
server.py Fix join being denied after being invited over federation (#18075) 2025-01-27 11:21:10 -06:00
visibility.py Move server event filtering logic to rust (#17928) 2024-11-14 16:18:24 +00:00