Przejdź do treści

Szukaj w dokumentacji

Wpisz, aby przeszukać każdą stronę dokumentacji.

Menu dokumentacji
InstrukcjaOdbiorcy · Operatorzy i programiści

Sekrety w Vault

Gdzie Agent-Lab przechowuje swoje sekrety — i jak je pobiera

Ta strona została przetłumaczona automatycznie z języka angielskiego. W razie rozbieżności pierwszeństwo ma oryginał.Przeczytaj oryginał w języku angielskim

Jak Agent-Lab korzysta z Vault

Agent-Lab używa HashiCorp Vault do bezpiecznego zarządzania sekretami: klucze API, poświadczenia baz danych i inne wrażliwe wartości znajdują się w Vault, a nie w bazie danych ani w plikach środowiskowych. Podczas uruchamiania aplikacji aktywny ConfigSource łączy się z Vault i ładuje ładunek konfiguracji; Integracje przechowują w bazie danych odwołania, a wrażliwe wartości są pobierane z Vault na żądanie.

Konfigurowanie Vault

Na potrzeby lokalnego programowania stosy Compose zawierają serwer Vault z konfiguracją deweloperską (interfejs pod adresem http://localhost:8200, token logowania dev-only-token). Zobacz Uruchamianie aplikacji.

W środowisku produkcyjnym przygotuj instancję za pomocą modułu Terraform terraform/08_vault-instance/ z przewodnika wdrażania — łącznie z sekwencją init + unseal:

kubectl --namespace vault exec vault-0 -- vault operator init \
    -key-shares=1 \
    -key-threshold=1 \
    -format=json > cluster-keys.json

export VAULT_UNSEAL_KEY=$(jq -r ".unseal_keys_b64[]" cluster-keys.json)
kubectl --namespace vault exec vault-0 -- vault operator unseal $VAULT_UNSEAL_KEY

Przygotowanie ładunku sekretu

VaultConfigSource odczytuje pojedynczy sekret KV-v2 — punkt montowania secret, ścieżka app_secrets — i mapuje go na klucze konfiguracji aplikacji. Klucze ładunku są wymienione w Dokumentacji konfiguracji; zapisz go jednorazowo za pomocą Vault CLI:

vault kv put secret/app_secrets \
  api_base_url="https://<agent_lab_fqdn>" \
  cdp_url="http://<cdp_host>:9222" \
  auth_enabled="true" \
  auth_url="https://<auth_fqdn>" \
  auth_realm="<realm_name>" \
  auth_client_id="<client_name>" \
  auth_client_secret="<client_secret>" \
  broker_url="redis://:<password>@<redis_host>:6379/0" \
  db_url="postgresql://<user>:<pass>@<db_host>:5432/agent_lab" \
  db_vectors="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_vectors" \
  db_checkpoints="postgresql://<user>:<pass>@<db_host>:5432/agent_lab_checkpoints"

Gdy aplikacja nie może (lub nie powinna) używać statycznego VAULT_TOKEN, domyślne źródło automatycznie przełącza się na KubernetesVaultConfigSource, jeśli ustawiono VAULT_K8S_ROLE — uwierzytelnia się ono projektowanym tokenem ServiceAccount poda, dzięki czemu żaden statyczny token nie wymaga przygotowania ani rotacji.

Środowisko produkcyjne

Zgodnie z naszymi zasadami cloud-native zalecamy konfigurację Vault Kubernetes HA. Moduł Terraform 15_agent-lab-dependencies/ podłącza poświadczenia środowiska uruchomieniowego; aplikacja pobiera wszystko podczas uruchamiania zgodnie z kontraktem konfiguracji.