رفتن به محتوا
بازگشت به وبلاگ
دواپس

HashiCorp Vault: مدیریت Secret برای زیرساخت

استقرار و استفاده از HashiCorp Vault برای Secret های Dynamic، PKI، Credential های پایگاه داده و یکپارچه‌سازی Kubernetes در تولید.

آبان ۱۴۰۴
۱۷ دقیقه مطالعه

مقدمه

HashiCorp Vault ابزار مدیریت secrets است که ذخیره‌سازی امن و کنترل دسترسی برای داده‌های حساس مثل کلیدهای API، رمزهای عبور و گواهی‌ها را فراهم می‌کند.

نصب و راه‌اندازی

BASH
# راه‌اندازی Docker
docker run -d --name vault --cap-add IPC_LOCK   -p 8200:8200 -v vault-data:/vault/data   hashicorp/vault:latest server

# مقداردهی اولیه (یک‌بار)
export VAULT_ADDR='http://localhost:8200'
vault operator init -key-shares=5 -key-threshold=3

# Unseal با ۳ کلید
vault operator unseal <key1>
vault operator unseal <key2>
vault operator unseal <key3>

ذخیره و بازیابی Secrets

BASH
# فعال‌سازی KV engine
vault secrets enable -path=secret kv-v2

# ذخیره secret
vault kv put secret/myapp/database   username=appuser   password=Str0ngP@ss!

# خواندن secret
vault kv get secret/myapp/database

# دریافت فیلد خاص
vault kv get -field=password secret/myapp/database

Secrets دیتابیس پویا

BASH
# Vault اعتبارنامه‌های موقت ایجاد می‌کند که خودکار منقضی می‌شوند
vault secrets enable database

vault write database/roles/myapp-role   db_name=myapp-db   default_ttl="1h"   max_ttl="24h"   creation_statements="CREATE ROLE '{{name}}' WITH LOGIN PASSWORD '{{password}}' VALID UNTIL '{{expiration}}';"

# هر درخواست اعتبارنامه منحصربه‌فرد ایجاد می‌کند
vault read database/creds/myapp-role

یکپارچه‌سازی با Python

PYTHON
import hvac

vault = hvac.Client(url='http://vault:8200')
vault.auth.approle.login(role_id=role_id, secret_id=secret_id)

secret = vault.secrets.kv.v2.read_secret_version(path='myapp/config')
api_key = secret['data']['data']['api_key']

Vault مدیریت secrets را از یک رویه پراکنده و ناامن به یک سیستم متمرکز و ممیزی‌شده تبدیل می‌کند.