Správa tajných nastavení (Secrets)
Aplikace využívá Docker secrets pro bezpečné ukládání citlivých konfiguračních údajů. Secrets jsou spravovány pomocí Docker Swarm a poskytují bezpečný způsob distribuce hesel, API klíčů a dalších citlivých informací do kontejnerů.
Konfigurace pomocí Docker Secrets (PROD)
V produkčním prostředí jsou citlivé údaje spravovány pomocí Docker secrets. Jsou definovány následující secrets:
Poznámka
Použití v kontejneru: Docker mountuje každý secret jako soubor v /run/secrets/<název_secretu>.
Obsah je čistý text/JSON, takže jej stačí číst jako běžný soubor (např. cat /run/secrets/db_conf).
Aplikační konfigurace
db_conf- Konfigurační soubor se secrets pro backend (DB, Fedora, API klíče, e-mail)
Klíč |
Popis |
|---|---|
|
Název souboru (např. |
|
Django |
|
Název PostgreSQL databáze |
|
Heslo uživatele PostgreSQL |
|
Uživatelské jméno PostgreSQL |
|
Host PostgreSQL |
|
Port PostgreSQL |
|
Veřejný klíč Google reCAPTCHA |
|
Privátní klíč Google reCAPTCHA |
|
Uživatelské jméno pro běžné přístupy do Fedora repository |
|
Heslo pro běžné přístupy do Fedora repository |
|
Protokol pro Fedora endpoint (http/https) |
|
Hostname Fedora repository |
|
Název kořenového Fedora kontejneru (segment v URL) |
|
Port Fedora repository |
|
Administrátorské uživatelské jméno pro Fedora repository |
|
Administrátorské heslo pro Fedora repository |
|
Základ transakčního endpointu |
|
Základní URL pro odkazy do Digiarchivu |
|
Povolené host adresy aplikace (může obsahovat více hodnot oddělených mezerou) |
|
Trusted origins pro CSRF (seznam oddělený mezerou) |
|
Veřejná základní URL aplikace |
|
Výchozí odesílatel e-mailů |
|
Host ClamAV |
|
Přepínač Django |
|
Host Redis (cache/broker) |
|
Port Redis |
|
Příznak testovacího prostředí (True/False) |
|
URL pro volání Digiarchiv API (id/) |
|
API endpoint pro Datacite/IGSN DOI služby |
|
Uživatelské jméno pro Datacite DOI |
|
Heslo pro Datacite DOI |
|
Uživatelské jméno pro IGSN |
|
Heslo pro IGSN |
|
Prefix DOI identifikátorů |
|
Prefix IGSN identifikátorů |
Elasticsearch a monitoring
elastic_pass- Heslo pro přístup k Elasticsearch clusterulogstash_elastic_host- Adresa Elasticsearch hostu pro Logstashlogstash_elastic_pass- Heslo pro připojení Logstash k Elasticsearchpostgresql_exporter- Konfigurace pro PostgreSQL Prometheus exporterpostgresql_exporter_uri- URI připojení pro PostgreSQL exporter
Grafana monitoring
grafana_admin_password- Administrátorské heslo pro Grafana
Prometheus monitoring
prometheus_config- Konfigurační soubor pro Prometheus
E-mail konfigurace
mail_conf- Konfigurační soubor s nastavením SMTP serveru pro odesílání emailů
Klíč |
Popis |
|---|---|
|
SMTP server pro odesílání e-mailů |
|
Přihlašovací uživatel k SMTP serveru |
|
Heslo k SMTP serveru |
|
Port SMTP serveru |
|
Doména/server používaná v e-mailových šablonách (např. pro odkazy) |
Redis cache
redis_host- Adresa Redis serveruredis_pass- Heslo pro připojení k Redis serveru (redis_hostje načítán zdb_conf)
Testovací konfigurace
test_conf- Konfigurační soubor pro testovací účely
Konfigurace pomocí konfiguračních souborů (DEV)
Ve vývojovém prostředí, typicky při lokálním vývoji, se secrets nahrazují konfiguračními soubory. Existuje několik přístupů:
Lokální vývoj
Pro lokální vývoj se secrets obvykle nahrazují environment proměnnými nebo konfiguračními soubory uloženými lokálně (mimo verzovací systém).
Docker Compose
Při použití Docker Compose lze secrets definovat v docker-compose.yml:
secrets:
db_conf:
file: ./secrets/db_conf.txt
redis_pass:
file: ./secrets/redis_pass.txt
Správa secrets
Zobrazení seznamu secrets
sudo docker secret ls
Vytvoření nového secretu
echo "secret_value" | sudo docker secret create secret_name -
Vytvoření secretu ze souboru
sudo docker secret create secret_name /path/to/secret/file
Odebrání secretu
sudo docker secret rm secret_name