Vault¶
Vault je centralizované clusterové úložiště tajemství a citlivých konfiguračních dat v ASAB Maestro. Zpřístupňuje ho ASAB Remote Control prostřednictvím jednoduchého REST API. Vault poskytuje jedno místo pro API tokeny, hesla a TLS certifikáty, která služby v clusteru mohou bezpečně používat.
Vault API¶
Vault zpřístupňuje služba ASAB Remote Control na výchozím webovém portu 8891 (viz Síťové porty).
| Metoda | Cesta | Popis |
|---|---|---|
GET |
/vault |
Seznam všech názvů parametrů ve Vaultu. |
PUT |
/vault/{parameter} |
Uložení nebo aktualizace tajemství. Tělo požadavku je surová hodnota tajemství. |
DELETE |
/vault/{parameter} |
Smazání tajemství. |
Poznámky k API:
- Názvy parametrů jsou necitlivé na velikost písmen a vždy se normalizují na malá písmena.
LDAP_USER_PASSWORDaldap_user_passwordodkazují na stejný záznam ve Vaultu. DELETEneexistujícího parametru vrací404.
Vault z příkazové řádky¶
Vault spravujete pomocí /opt/site/gov.sh curl z libovolného uzlu, na kterém běží ASAB Remote Control (port 8891 na localhost). Volání jsou interně autorizována.
Příkazy spouštějte přímo na uzlu:
# Seznam všech parametrů ve Vaultu
/opt/site/gov.sh curl localhost:8891/vault
# Uložení tajemství jako prostý text
/opt/site/gov.sh curl -X PUT localhost:8891/vault/MY_API_TOKEN --data 'supersecret'
# Uložení tajemství ze souboru (např. certifikát nebo klíč)
/opt/site/gov.sh curl -X PUT localhost:8891/vault/ldap_tls_cafile --data-binary '@/absolute/path/to/cafile.crt'
# Smazání tajemství
/opt/site/gov.sh curl -X DELETE localhost:8891/vault/MY_API_TOKEN
Pro hodnoty s konci řádků (PEM certifikáty, privátní klíče) použijte --data-binary '@file'.
Pro jednořádkový řetězec použijte --data 'value'.
Vault v modelu¶
Deklarace tajemství¶
Tajemství deklarujete v sekci secrets modelu nebo deskriptoru.
Deklarace uvádí pouze název a volitelně type a length; hodnota se do modelu nezapisuje.
secrets:
API_TOKEN:
type: token
length: 32
SHARED_SECRET: {}
Pokud tajemství ve Vaultu při aplikaci modelu neexistuje, ASAB Maestro vygeneruje náhodný token požadované délky a uloží ho do Vaultu.
Použití tajemství¶
Po deklaraci je tajemství dostupné jako parametr šablony Jinja2 pod svým názvem. Použijte ho kdekoli model nebo deskriptor podporuje templating, například v konfiguraci služby:
services:
seacat-auth:
...
asab:
config:
"seacatauth:credentials:ldap:external":
...
password: "{{API_TOKEN}}"
Tajemství deklarovaná v modelu jsou dostupná v celém clusteru. Tajemství v deskriptoru jsou vázána na danou službu (viz Deskriptory).
Soubory z Vaultu¶
Chcete-li zpřístupnit tajemství ze Vaultu jako soubor v kontejneru, namapujte ho v položce files.
Následující příklad zpřístupní tři LDAPS soubory ze Vaultu službě seacat-auth:
services:
seacat-auth:
...
files:
- "/conf/tls_cafile.crt": "{{LDAP_TLS_CAFILE}}"
- "/conf/tls_certfile.crt": "{{LDAP_TLS_CERTFILE}}"
- "/conf/tls_keyfile.pem": "{{LDAP_TLS_KEYFILE}}"
secrets:
LDAP_TLS_CAFILE: {}
LDAP_TLS_CERTFILE: {}
LDAP_TLS_KEYFILE: {}
Před aplikací modelu nahrajte skutečný obsah souborů do Vaultu (viz Vault z příkazové řádky).
Kompletní postup viz Integrace LDAP serveru.
Související návody¶
- Aktualizace certifikátu Nginx — nahrajte
nginx_certificateanginx_private_keydo Vaultu a nahraďte výchozí self-signed certifikát. - Integrace LDAP serveru — uložte LDAP bind heslo a TLS soubory do Vaultu.
- Připojení Microsoft 365 pro e-mailové notifikace — uložte přihlašovací údaje Azure aplikace do Vaultu.