إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
Azure Key Vault هي خدمة سحابية توفر مخزنا آمنا للأسرار مثل المفاتيح، وكلمات المرور، والشهادات، وأسرار أخرى. يركز هذا البدء السريع على عملية نشر قالب Azure Resource Manager (قالب ARM) لإنشاء خزنة مفاتيح وسر.
قالب Azure Resource Manager هو ملف JavaScript Object Notation (JSON) يحدد البنية التحتية والتكوين لمشروعك. يستخدم القالب عبارات توضيحية. يمكنك وصف النشر المقصود دون كتابة تسلسل أوامر البرمجة لإنشاء النشر.
إذا كانت بيئتك تستوفي المتطلبات المسبقة وأنت معتاد على استخدام قوالب ARM، اختر زر Deploy to Azure. سيتم فتح القالب في بوابة Azure.
المتطلبات الأساسية
لإكمال هذه المقالة:
- إذا لم يكن لديك اشتراك Azure، أنشئ حسابا مجاني قبل أن تبدأ.
مراجعة القالب
القالب المستخدم في هذه البداية السريعة هو من Azure قوالب البدء السريع.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.42.1.51946",
"templateHash": "10998800669048245550"
}
},
"parameters": {
"keyVaultName": {
"type": "string",
"metadata": {
"description": "Specifies the name of the key vault."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specifies the Azure location where the key vault should be created."
}
},
"enabledForDeployment": {
"type": "bool",
"defaultValue": false,
"metadata": {
"description": "Specifies whether Azure Virtual Machines are permitted to retrieve certificates stored as secrets from the key vault."
}
},
"enabledForDiskEncryption": {
"type": "bool",
"defaultValue": false,
"metadata": {
"description": "Specifies whether Azure Disk Encryption is permitted to retrieve secrets from the vault and unwrap keys."
}
},
"enabledForTemplateDeployment": {
"type": "bool",
"defaultValue": false,
"metadata": {
"description": "Specifies whether Azure Resource Manager is permitted to retrieve secrets from the key vault."
}
},
"tenantId": {
"type": "string",
"defaultValue": "[subscription().tenantId]",
"metadata": {
"description": "Specifies the Azure Active Directory tenant ID that should be used for authenticating requests to the key vault. Get it by using Get-AzSubscription cmdlet."
}
},
"skuName": {
"type": "string",
"defaultValue": "standard",
"allowedValues": [
"standard",
"premium"
],
"metadata": {
"description": "Specifies whether the key vault is a standard vault or a premium vault."
}
},
"secretsObject": {
"type": "secureObject",
"metadata": {
"description": "Specifies all secrets {\"secretName\":\"\",\"secretValue\":\"\"} wrapped in a secure object."
}
}
},
"resources": [
{
"type": "Microsoft.KeyVault/vaults",
"apiVersion": "2023-07-01",
"name": "[parameters('keyVaultName')]",
"location": "[parameters('location')]",
"properties": {
"enabledForDeployment": "[parameters('enabledForDeployment')]",
"enabledForTemplateDeployment": "[parameters('enabledForTemplateDeployment')]",
"enabledForDiskEncryption": "[parameters('enabledForDiskEncryption')]",
"enableRbacAuthorization": true,
"tenantId": "[parameters('tenantId')]",
"enableSoftDelete": true,
"softDeleteRetentionInDays": 90,
"enablePurgeProtection": true,
"sku": {
"name": "[parameters('skuName')]",
"family": "A"
},
"networkAcls": {
"defaultAction": "Allow",
"bypass": "AzureServices"
}
}
},
{
"copy": {
"name": "secrets",
"count": "[length(parameters('secretsObject').secrets)]"
},
"type": "Microsoft.KeyVault/vaults/secrets",
"apiVersion": "2023-07-01",
"name": "[format('{0}/{1}', parameters('keyVaultName'), parameters('secretsObject').secrets[copyIndex()].secretName)]",
"properties": {
"value": "[parameters('secretsObject').secrets[copyIndex()].secretValue]"
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
]
}
],
"outputs": {
"location": {
"type": "string",
"value": "[parameters('location')]"
},
"name": {
"type": "string",
"value": "[parameters('keyVaultName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.KeyVault/vaults', parameters('keyVaultName'))]"
}
}
}
تم تعريف موردين ل Azure في القالب:
-
Microsoft. KeyVault/vaults: أنشئ خزنة مفاتيح Azure مع تفويض RBAC Azure مفعل (
enableRbacAuthorization: true)، والحذف الناعم مفعل، وحماية التطهير مفعلة. -
Microsoft. KeyVault/vaults/secrets: إنشاء واحد أو أكثر من أسرار خزنة المفاتيح، مع تكرار مصفوفة
secretsObject.secretsالتي تمرر إلى القالب.
نظرا لأن الخزنة تستخدم Azure RBAC لتفويض مستوى البيانات، فإنك تمنح الوصول إلى الأسرار عن طريق تعيين دور Azure (بدلا من تكوين سياسات الوصول).
يمكن العثور على المزيد من عينات القوالب Azure Key Vault في Azure قوالب البدء السريع.
نشر القالب
اختر الصورة التالية لتسجيل الدخول إلى Azure وافتح قالبا. ينشئ القالب مخزناً رئيسياً وبيانات سرية.
حدد القيم التالية أو أدخلها. ما لم يكن محددا، استخدم القيمة الافتراضية.
Subscription: اختر اشتراكا Azure.
لمجموعة الموارد: حدد "Create new"، وأدخل اسماً فريداً لمجموعة الموارد، ثم حدّد "OK".
المنطقة: اختر موقعا. على سبيل المثال، وسط الولايات المتحدة.
Key Vault الاسم: أدخل اسما لل key vault، والذي يجب أن يكون فريدا عالميا ضمن مساحة الأسماء
vault.azure.net. تحتاج إلى هذا الاسم في القسم التالي عند التحقق من النشر.اسم SKU: اختر القياسي أو المميز. الافتراضي هو المعيار القياسي.
كائن الأسرار: يوفر الأسرار لإنشاء ككائن JSON مع
secretsمصفوفة. على سبيل المثال:{ "secrets": [ { "secretName": "adminpassword", "secretValue": "<your-secret-value>" } ] }نظرا لأن كائن الأسرار هو معامل،
secureObjectفإن قيمته لا تسجل أو تعاد بعد النشر.
حدد Review + create، ثم حدد Create. بعد أن يتم نشر خزنة المفاتيح والسر بنجاح، تحصل على إشعار.
يمكنك أيضا استخدام Azure PowerShell، أو Azure CLI، أو واجهة برمجة تطبيقات REST لنشر القالب. لمعرفة طرق النشر الأخرى، راجع نشر القوالب.
تعيين دور في Key Vault في RBAC
تستخدم خزنة المفاتيح التي ينشئها هذا القالب Azure RBAC للتفويض. للوصول إلى الأسرار عبر مستوى البيانات (على سبيل المثال، باستخدام Azure CLI أو Azure PowerShell)، تحتاج إلى تعيين دور مناسب لنفسك.
احصل على معرف كائن المستخدم الخاص بك في Microsoft Entra:
خصص دور ضابط الأسرار Key Vault لنفسك على key vault:
echo "Enter your key vault name:" && read keyVaultName && az role assignment create --role "Key Vault Secrets Officer" \ --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \ --scope $(az keyvault show --name $keyVaultName --query id -o tsv)ملحوظة
قد تستغرق توزيع الأدوار دقيقة أو دقيقتين للنشر.
مراجعة الموارد الموزعة
يمكنك إما استخدام بوابة Azure للتحقق من خزنة المفاتيح والسر، أو استخدام السكريبت التالي من Azure CLI أو Azure PowerShell لسرد السر الذي تم إنشاؤه.
echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault secret list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."
تنظيف الموارد
تبني بعض البدءات السريعة والدروس الأخرى في Key Vault على هذا البدء السريع. إذا كنت تخطط لمواصلة العمل مع الخطوات السريعة والبرامج التعليمية اللاحقة، فقد ترغب في ترك هذه الموارد في مكانها. عندما لا تعود الحاجة، احذف مجموعة الموارد، مما يحذف Key Vault والموارد ذات الصلة. لحذف مجموعة الموارد باستخدام Azure CLI أو Azure PowerShell:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
ملحوظة
حذف مجموعة الموارد يحذف أيضا خزنة المفاتيح، لكن الخزنة تدخل في حالة حذف برمجي وتبقى قابلة للاسترداد لفترة الاحتفاظ (90 يوما افتراضيا). يبقى اسم القبو محجوزا عالميا خلال تلك الفترة، وبما أن الحماية من التطهير مفعلة، لا يمكن تطهير الخزنة مبكرا. بالنسبة لخزائن المفاتيح العادية، الخزائن المحسوبة بشكل تدريجي لا تتحمل رسوم. لمزيد من المعلومات، راجع Key Vault نظرة عامة للحذف الناعم.
الخطوات التالية
في هذا التشغيل السريع، قمت بإنشاء مخزن مفاتيح وسر باستخدام قالب ARM، والتحقق من صحة النشر. لمعرفة المزيد عن Key Vault و Azure Resource Manager، تابع المقالات أدناه.
- اقرأ نظرة عامة على Azure Key Vault
- تعرف أكثر على Azure Resource Manager
- راجع نظرة الأمان Key Vault العامة