الانتقال إلى المحتوى

البحث في الوثائق

اكتب للبحث في كل صفحات الوثائق.

قائمة الوثائق
كيفيةالجمهور المستهدف · المشغّلون والمطوّرون

الأسرار باستخدام 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 — نقطة التركيب secret، والمسار app_secrets — ويربطه بـ مفاتيح إعدادات التطبيق. مفاتيح الحمولة مدرجة في مرجع الإعدادات؛ اكتبها مرة واحدة باستخدام 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"

عندما لا يستطيع التطبيق (أو لا ينبغي له) استخدام VAULT_TOKEN ثابت، ينتقل المصدر الافتراضي تلقائياً إلى KubernetesVaultConfigSource عند ضبط VAULT_K8S_ROLE — إذ يصادق باستخدام رمز ServiceAccount المُسقَط الخاص بالـ pod، فلا حاجة إلى تجهيز رمز ثابت أو تدويره.

بيئة الإنتاج

انسجاماً مع مبادئنا السحابية الأصلية (cloud-native)، نوصي بـ إعداد Vault عالي التوافر على Kubernetes. تتولى وحدة Terraform 15_agent-lab-dependencies/ ربط بيانات اعتماد وقت التشغيل؛ ويلتقط التطبيق كل شيء عند بدء التشغيل عبر عقد الإعدادات.