تخطَّ إلى المحتوى

خزنة

دليل شامل لأوامر وسير عمل HashiCorp Vault لإدارة الأسرار والتشفير والوصول الآمن إلى البيانات الحساسة.

التثبيت والإعداد

أمروصف
vault versionأظهر إصدار Vault
vault server -devابدأ خادم التطوير
vault server -config=config.hclابدأ بملف التكوين
vault statusتحقق من حالة الخادم

المصادقة وتسجيل الدخول

المصادقة الأساسية

أمروصف
vault auth -method=userpass username=myuserتسجيل الدخول باستخدام اسم المستخدم/كلمة المرور
vault auth -method=ldap username=myuserتسجيل الدخول باستخدام LDAP
vault auth -method=github token=mytokenتسجيل الدخول باستخدام GitHub
vault auth -method=awsتسجيل الدخول باستخدام AWS IAM
vault auth -method=kubernetesتسجيل الدخول باستخدام Kubernetes

إدارة الرموز المميزة

أمروصف
vault token createإنشاء رمز جديد
vault token create -ttl=1hإنشاء رمز مع وقت انتهاء صلاحية (TTL)
vault token lookupابحث عن الرمز الحالي
vault token renewتجديد الرمز الحالي
vault token revoke TOKENإلغاء رمز محدد

إدارة الأسرار

أسرار القيمة المفتاحية (الإصدار 2)

أمروصف
vault kv put secret/myapp username=admin password=secretتخزين سري
vault kv get secret/myappاسترجاع السر
vault kv get -field=password secret/myappاحصل على حقل محدد
vault kv delete secret/myappاحذف السر
vault kv list secret/قائمة الأسرار
vault kv metadata get secret/myappاحصل على البيانات الوصفية

إصدارات الأسرار

أمروصف
vault kv put secret/myapp @data.jsonتخزين من ملف JSON
vault kv get -version=2 secret/myappاحصل على إصدار محدد
vault kv rollback -version=1 secret/myappالعودة إلى الإصدار
vault kv destroy -versions=2,3 secret/myappتدمير الإصدارات
vault kv undelete -versions=2 secret/myappاسترجاع الإصدارات

محرك أسرار قاعدة البيانات

إعداد قاعدة البيانات

أمروصف
vault secrets enable databaseتمكين محرك قاعدة البيانات
vault write database/config/my-mysql-database plugin_name=mysql-database-plugin connection_url="\\{\\{username\\}\\}:\\{\\{password\\}\\}@tcp(localhost:3306)/" allowed_roles="my-role" username="vaultuser" password="vaultpass"قم بتكوين MySQL
vault write database/roles/my-role db_name=my-mysql-database creation_statements="CREATE USER '\\{\\{name\\}\\}'@'%' IDENTIFIED BY '\\{\\{password\\}\\}';GRANT SELECT ON *.* TO '\\{\\{name\\}\\}'@'%';" default_ttl="1h" max_ttl="24h"إنشاء دور

بيانات الاعتماد الديناميكية

أمروصف
vault read database/creds/my-roleإنشاء بيانات اعتماد قاعدة البيانات
vault write database/rotate-root/my-mysql-databaseتدوير بيانات اعتماد الجذر

PKI (البنية التحتية للمفاتيح العامة)

إعداد PKI

أمروصف
vault secrets enable pkiتمكين محرك PKI
vault secrets tune -max-lease-ttl=87600h pkiحدد الحد الأقصى لـ TTL
vault write pki/root/generate/internal common_name=example.com ttl=87600hإنشاء شهادة الجذر الرئيسية (Root CA)
vault write pki/config/urls issuing_certificates="http://vault.example.com:8200/v1/pki/ca" crl_distribution_points="http://vault.example.com:8200/v1/pki/crl"قم بتكوين عناوين URL

إدارة الشهادات

أمروصف
vault write pki/roles/example-dot-com allowed_domains=example.com allow_subdomains=true max_ttl=72hإنشاء دور
vault write pki/issue/example-dot-com common_name=test.example.comإصدار شهادة
vault write pki/revoke serial_number=39:dd:2e:90:b7:23:1f:8d:d3:7d:31:c5:1b:da:84:d0:5b:65:31:58إلغاء الشهادة

محرك أسرار AWS

إعداد AWS

أمروصف
vault secrets enable awsتمكين محرك AWS
vault write aws/config/root access_key=AKIAI... secret_key=R4nm...قم بتكوين بيانات اعتماد المستخدم root
vault write aws/roles/my-role credential_type=iam_user policy_document=-<<EOF \\{...\\} EOFإنشاء دور IAM

بيانات اعتماد AWS

أمروصف
vault read aws/creds/my-roleإنشاء بيانات اعتماد AWS
vault write aws/sts/my-role ttl=15mإنشاء اعتمادات STS

محرك أسرار التشفير

إعداد التشفير

أمروصف
vault secrets enable transitتمكين محرك النقل
vault write transit/keys/my-key type=aes256-gcm96إنشاء مفتاح التشفير
vault write transit/encrypt/my-key plaintext=$(base64 <<< "my secret data")شفّر البيانات
vault write transit/decrypt/my-key ciphertext=vault:v1:8SDd3WHDOjf7mq69CyCqYjBXAiQQAVZRkFM13ok481zoCmHnSeDX9vyf7w==فك تشفير البيانات

إدارة المفاتيح

أمروصف
vault write transit/keys/my-key/rotateمفتاح التشفير الدوار
vault read transit/keys/my-keyاقرأ المعلومات الرئيسية
vault write transit/rewrap/my-key ciphertext=vault:v1:...إعادة اللف بالمفتاح الأحدث

السياسات

إدارة السياسات

أمروصف
vault policy write my-policy policy.hclإنشاء/تحديث السياسة
vault policy read my-policyاقرأ السياسة
vault policy listقائمة جميع السياسات
vault policy delete my-policyسياسة الحذف

مثال على سياسة

# Read operation on the k/v secrets
path "secret/data/*" \\\\{
  capabilities = ["read"]
\\\\}

# Write operation on the k/v secrets
path "secret/data/myapp/*" \\\\{
  capabilities = ["create", "update"]
\\\\}

# Deny all access to secret/admin
path "secret/data/admin" \\\\{
  capabilities = ["deny"]
\\\\}

طرق المصادقة

تفعيل طرق المصادقة

أمروصف
vault auth enable userpassتمكين اسم المستخدم/كلمة المرور
vault auth enable ldapتمكين LDAP
vault auth enable githubتفعيل GitHub
vault auth enable awsتمكين AWS IAM
vault auth enable kubernetesقم بتمكين Kubernetes

إعداد طرق المصادقة

أمروصف
vault write auth/userpass/users/myuser password=mypass policies=my-policyإنشاء مستخدم
vault write auth/ldap/config url="ldap://ldap.example.com" userdn="ou=Users,dc=example,dc=com"قم بتكوين LDAP
vault write auth/github/config organization=myorgقم بتكوين GitHub

التسجيل المراجعي

تفعيل أجهزة المراجعة

أمروصف
vault audit enable file file_path=/vault/logs/audit.logتمكين تدقيق الملفات
vault audit enable syslogتمكين سجل النظام للتدقيق
vault audit listقائمة أجهزة التدقيق
vault audit disable file/تعطيل جهاز التدقيق

التوافر العالي والتجميع

عمليات التجميع

أمروصف
vault operator initتهيئة عنقود Vault
vault operator unsealفتح خزنة Vault
vault operator sealخزنة الختم
vault operator step-downتنازل عن القيادة
vault operator raft list-peersقائمة نظراء Raft
أمروصف
vault operator raft snapshot save backup.snapإنشاء لقطة
vault operator raft snapshot restore backup.snapاستعادة لقطة

تكوين الخادم

storage "consul" \\\\{
  address = "127.0.0.1:8500"
  path    = "vault/"
\\\\}

listener "tcp" \\\\{
  address     = "0.0.0.0:8200"
  tls_disable = 1
\\\\}

api_addr = "http://127.0.0.1:8200"
cluster_addr = "https://127.0.0.1:8201"
ui = true
seal "awskms" \\\\{
  region     = "us-east-1"
  kms_key_id = "12345678-1234-1234-1234-123456789012"
\\\\}
```### إلغاء الختم التلقائي باستخدام AWS KMS

| متغير | وصف |
|----------|-------------|
| `VAULT_ADDR` | عنوان خادم Vault |
| `VAULT_TOKEN` | رمز المصادقة |
| `VAULT_NAMESPACE` | مساحة اسم Vault (Enterprise) |
| `VAULT_CACERT` | ملف شهادة CA |
| `VAULT_CLIENT_CERT` | ملف شهادة العميل |
| `VAULT_CLIENT_KEY` | ملف المفتاح الخاص للعميل |## المتغيرات البيئية

## أفضل الممارسات

### الأمان