Přeskočit obsah

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_PASSWORD a ldap_user_password odkazují na stejný záznam ve Vaultu.
  • DELETE neexistují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.

/Site/model.yaml
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:

/Site/model.yaml
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:

/Site/model.yaml
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