الوصول إلى سر مخزن المفاتيح عند نشر تطبيقات Azure المُدارة

عندما تحتاج إلى تمرير قيمة آمنة (مثل كلمة المرور) كمعامل أثناء النشر، يمكنك استرداد القيمة من Azure Key Vault . للوصول إلى Key Vault عند نشر التطبيقات المُدارة، يجب منح حق الوصول إلى مدير خدمة موفر موارد الأجهزة . تستخدم خدمة التطبيقات المُدارة هذه الهوية لتشغيل العمليات. لاسترداد قيمة بنجاح من Key Vault أثناء النشر، يجب أن يكون مدير الخدمة قادراً على الوصول إلى Key Vault.

توضح هذه المقالة كيفية تكوين Key Vault للعمل مع التطبيقات المُدارة.

تفعيل نشر النموذج

  1. سجل الدخول إلى مدخل Azure.

  2. افتح مخزن المفاتيح. أدخل مخازن المفاتيح في مربع البحث أو حدد Key vaults.

    Screenshot of the Azure home page to open a key vault using search or by selecting key vault.

  3. حدد Access configuration.

    Screenshot of the key vault setting to select access configuration.

  4. حدد Azure Resource Manager for template deployment. ثم، حدد Apply.

    Screenshot of the key vault's access configuration that enables Azure Resource Manager for template deployment.

أضف الخدمة كمساهم

عيّن دور المساهم لمستخدم موفر موارد الأجهزة في نطاق المخزن الأساسي. دور المساهم هو دور مسؤول متميز لتعيين الدور. للحصول على خطوات مفصلة، انتقل إلى تعيين أدوار Azure باستخدام مدخل Microsoft Azure.

موفر موارد الأجهزة هو كيان خدمة في مستأجر Microsoft Entra. من مدخل Microsoft Azure، يمكنك التحقق مما إذا كان مسجلا بالانتقال إلى تطبيقات Microsoft Entra ID>Enterprise وتغيير عامل تصفية البحث إلى تطبيقات Microsoft. ابحث عن Appliance Resource Provider. إذا لم يتم العثور عليه، فسجل موفر الموارد Microsoft.Solutions.

مرجع Key Vault secret

لتمرير سر من Key Vault إلى نموذج في التطبيق المُدار الخاص بك، يجب عليك استخدام نموذج مرتبط أو متداخل والإشارة إلى Key Vault في معلمات النموذج المرتبط أو المتداخل. أدخل معرف المورد لـ Key Vault واسم السر.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location where the resources will be deployed."
      }
    },
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault that contains the secret."
      }
    },
    "secretName": {
      "type": "string",
      "metadata": {
        "description": "The name of the secret."
      }
    },
    "vaultResourceGroupName": {
      "type": "string",
      "metadata": {
        "description": "The name of the resource group that contains the key vault."
      }
    },
    "vaultSubscription": {
      "type": "string",
      "defaultValue": "[subscription().subscriptionId]",
      "metadata": {
        "description": "The name of the subscription that contains the key vault."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2022-09-01",
      "name": "dynamicSecret",
      "properties": {
        "mode": "Incremental",
        "expressionEvaluationOptions": {
          "scope": "inner"
        },
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "parameters": {
            "adminLogin": {
              "type": "string"
            },
            "adminPassword": {
              "type": "securestring"
            },
            "location": {
              "type": "string"
            }
          },
          "variables": {
            "sqlServerName": "[concat('sql-', uniqueString(resourceGroup().id, 'sql'))]"
          },
          "resources": [
            {
              "type": "Microsoft.Sql/servers",
              "apiVersion": "2022-05-01-preview",
              "name": "[variables('sqlServerName')]",
              "location": "[parameters('location')]",
              "properties": {
                "administratorLogin": "[parameters('adminLogin')]",
                "administratorLoginPassword": "[parameters('adminPassword')]"
              }
            }
          ],
          "outputs": {
            "sqlFQDN": {
              "type": "string",
              "value": "[reference(variables('sqlServerName')).fullyQualifiedDomainName]"
            }
          }
        },
        "parameters": {
          "location": {
            "value": "[parameters('location')]"
          },
          "adminLogin": {
            "value": "ghuser"
          },
          "adminPassword": {
            "reference": {
              "keyVault": {
                "id": "[resourceId(parameters('vaultSubscription'), parameters('vaultResourceGroupName'), 'Microsoft.KeyVault/vaults', parameters('vaultName'))]"
              },
              "secretName": "[parameters('secretName')]"
            }
          }
        }
      }
    }
  ],
  "outputs": {
  }
}

الخطوات التالية

لقد قمت بتكوين Key Vault بحيث يمكن الوصول إليه أثناء نشر تطبيق مُدار.