דילוג לתוכן

חיפוש בתיעוד

הקלידו כדי לחפש בכל דפי התיעוד.

תפריט התיעוד
איך עושיםקהל יעד · אנשי תפעול ומפתחים

סודות עם Vault

היכן Agent-Lab שומר את הסודות שלו — ואיך הוא שולף אותם

דף זה תורגם באופן אוטומטי מאנגלית. אם יש הבדל כלשהו, המקור הוא הקובע.לקריאת המקור באנגלית

איך Agent-Lab משתמש ב-Vault

Agent-Lab משתמש ב-HashiCorp Vault לניהול מאובטח של סודות: מפתחות API, פרטי התחברות למסדי נתונים וערכים רגישים אחרים נשמרים ב-Vault, ולא במסד הנתונים או בקובצי סביבה. בזמן עליית האפליקציה, ConfigSource הפעיל מתחבר ל-Vault וטוען את מטען התצורה; אינטגרציות שומרות הפניות במסד הנתונים, והערכים הרגישים נשלפים מ-Vault לפי דרישה.

הקמת Vault

לפיתוח מקומי, סביבות ה-Compose כוללות שרת Vault עם תצורת פיתוח (ממשק בכתובת http://localhost:8200, טוקן התחברות dev-only-token). ראו הרצת האפליקציה.

לסביבת ייצור, מקצים את המופע באמצעות מודול ה-Terraform terraform/08_vault-instance/ מתוך מדריך הפריסה — כולל רצף ה-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

הקצאת מטען הסוד

VaultConfigSource קורא סוד KV-v2 יחיד — mount secret, נתיב app_secrets — וממפה אותו למפתחות התצורה של האפליקציה. מפתחות המטען מפורטים בחומר העזר לתצורה; כותבים אותו פעם אחת באמצעות ה-CLI של Vault:

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"

כשהאפליקציה אינה יכולה (או אינה אמורה) להשתמש ב-VAULT_TOKEN סטטי, מקור ברירת המחדל עובר אוטומטית ל-KubernetesVaultConfigSource כאשר VAULT_K8S_ROLE מוגדר — הוא מאמת את עצמו באמצעות טוקן ה-ServiceAccount המוקרן של ה-pod, כך שאין צורך להקצות או להחליף טוקן סטטי.

סביבת ייצור

בהתאם לעקרונות ה-cloud-native שלנו, אנו ממליצים על הגדרת Vault Kubernetes HA. מודול ה-Terraform 15_agent-lab-dependencies/ מחווט את פרטי ההתחברות של זמן הריצה; האפליקציה קולטת הכול בעת העלייה דרך חוזה התצורה.