إدارة الأسرار في القوالب

مكتمل

عند تمرير قيمة آمنة (مثل كلمة مرور) كمعلمة أثناء النشر، يمكنك استرداد القيمة من مخزن مفاتيح Azure.

الرجوع إلى مفتاح Vault والسر في ملف المعلمة.

لا يتم كشف القيمة أبدا لأنك تشير فقط إلى معرف "مفتاح Vault ID".

يمكن أن يتواجد "مخزن المفاتيح" في اشتراك مختلف عن مجموعة الموارد التي تقوم بنشرها.

نشر كلمة سر Vault

لإنشاء مفتاح Vault وسري، استخدم إما Azure CLI أو PowerShell.

للوصول إلى الأسرار داخل هذا المدفن مفتاح من نشر إدارة الموارد، خاصية مفتاح Vault enabledForTemplateDeployment يجب أن يكون true.

استخدام Azure CLI

القصاصة البرمجية التالية هي مثال على كيفية نشر Key Vault والسر باستخدام Azure CLI:

keyVaultName='{your-unique-vault-name}'
resourceGroupName='{your-resource-group-name}'
location='centralus'
userPrincipalName='{your-email-address-associated-with-your-subscription}'

# Create a resource group
az group create --name $resourceGroupName --location $location

# Create a Key Vault
az keyvault create \
  --name $keyVaultName \
  --resource-group $resourceGroupName \
  --location $location \
  --enabled-for-template-deployment true
az keyvault set-policy --upn $userPrincipalName --name $keyVaultName --secret-permissions set delete get list

# Create a secret with the name, vmAdminPassword
password=$(openssl rand -base64 32)
echo $password
az keyvault secret set --vault-name $keyVaultName --name 'vmAdminPassword' --value $password

تمكين الوصول إلى السر

بخلاف تعيين خاصية Key Vault enabledForTemplateDeployment إلى true، يجب أن يكون لدى Microsoft.KeyVault/vaults/deploy/action المستخدم الذي ينشر القالب الإذن لنطاق Key Vault.

بما في ذلك أيضا مجموعة الموارد وKey Vault. يمنح كل من أدوار المالكوالمساهمهذا الوصول.

إذا قمت بإنشاء Key Vault، فأنت المالك، لذا لديك إذن بطبيعته.

ومع ذلك، إذا كان Key Vault ضمن اشتراك مختلف، يجب على مالك Key Vault منح حق الوصول.

الرجوع إلى سر باستخدام معرف ثابت

يتم الرجوع إلى Key Vault في ملف المعلمة وليس القالب.

توضح الصورة التالية كيف يشير ملف المعلمة إلى السر ويمرر تلك القيمة إلى القالب.

Diagram showing the illustration of the flow of a secret during template deployment. The parameter file references the secret from the template and passes that value to the template.

ينشر القالب التالي قاعدة بيانات SQL تتضمن كلمة مرور مسؤول.

تم تعيين مَعلمة كلمة المرور على سلسلة آمنة. ومع ذلك، لا يحدد القالب مصدر هذه القيمة:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "adminLogin": {
      "type": "string"
    },
    "adminPassword": {
      "type": "securestring"
    },
    "sqlServerName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "name": "[parameters('sqlServerName')]",
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2015-05-01-preview",
      "location": "[resourceGroup().location]",
      "tags": {},
      "properties": {
        "administratorLogin": "[parameters('adminLogin')]",
        "administratorLoginPassword": "[parameters('adminPassword')]",
        "version": "12.0"
      }
    }
  ],
  "outputs": {
  }
}

الآن يمكنك إنشاء ملف معلمة للقالب السابق. في ملف المعلمة، حدد معلمة تطابق اسم المعلمة في القالب.

لقيمة المعلمة، الرجوع إلى السر من Key Vault. يمكنك الرجوع إلى السر عن طريق تمرير معرف المورد من Key Vault واسم السر.

يجب أن يكون سر Key Vault موجودا بالفعل في ملف المعلمة التالي، كما توفر قيمة ثابتة لمعلم المورد الخاص به.

انسخ هذا الملف محليا، وتعيين معرف الاشتراك واسم المخزن واسم الملقم SQL:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "adminLogin": {
            "value": "exampleadmin"
        },
        "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "/subscriptions/<subscription-id>/resourceGroups/examplegroup/providers/Microsoft.KeyVault/vaults/<vault-name>"
              },
              "secretName": "examplesecret"
            }
        },
        "sqlServerName": {
            "value": "<your-server-name>"
        }
    }
}

ستحتاج إلى نشر القالب وتمرير ملف المعلمة إلى القالب.

لمزيد من المعلومات، استخدم Azure Key Vault لتمرير قيم المعلمات الآمنة أثناء النشر للحصول على مزيد من التفاصيل.

هناك أيضا تفاصيل على صفحة الويب هذه للإشارة إلى سر ذي معرف ديناميكي.