بداية سريعة: إنشاء مخزن مفاتيح Azure ومفتاح باستخدام قالب ARM

Azure Key Vault عبارة عن خدمة سحابية توفر مخزناً آمناً للأسرار مثل المفاتيح وكلمات المرور والشهادات. يركز هذا البدء السريع على عملية نشر قالب Azure Resource Manager (قالب ARM) لإنشاء مخزن مفاتيح ومفتاح.

المتطلبات الأساسية

لإكمال هذه المقالة:

مراجعة القالب

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vaultName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key vault to be created."
      }
    },
    "keyName": {
      "type": "string",
      "metadata": {
        "description": "The name of the key to be created."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "The location of the resources"
      }
    },
    "skuName": {
      "type": "string",
      "defaultValue": "standard",
      "allowedValues": [
        "standard",
        "premium"
      ],
      "metadata": {
        "description": "The SKU of the vault to be created."
      }
    },
    "keyType": {
      "type": "string",
      "defaultValue": "RSA",
      "allowedValues": [
        "EC",
        "EC-HSM",
        "RSA",
        "RSA-HSM"
      ],
      "metadata": {
        "description": "The JsonWebKeyType of the key to be created."
      }
    },
    "keyOps": {
      "type": "array",
      "defaultValue": [],
      "metadata": {
        "description": "The permitted JSON web key operations of the key to be created."
      }
    },
    "keySize": {
      "type": "int",
      "defaultValue": 2048,
      "metadata": {
        "description": "The size in bits of the key to be created."
      }
    },
    "curveName": {
      "type": "string",
      "defaultValue": "",
      "allowedValues": [
        "",
        "P-256",
        "P-256K",
        "P-384",
        "P-521"
      ],
      "metadata": {
        "description": "The JsonWebKeyCurveName of the key to be created."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-11-01-preview",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "accessPolicies": [],
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": "90",
        "enabledForDeployment": false,
        "enabledForDiskEncryption": false,
        "enabledForTemplateDeployment": false,
        "tenantId": "[subscription().tenantId]",
        "sku": {
          "name": "[parameters('skuName')]",
          "family": "A"
        },
        "networkAcls": {
          "defaultAction": "Allow",
          "bypass": "AzureServices"
        }
      }
    },
    {
      "type": "Microsoft.KeyVault/vaults/keys",
      "apiVersion": "2021-11-01-preview",
      "name": "[format('{0}/{1}', parameters('vaultName'), parameters('keyName'))]",
      "properties": {
        "kty": "[parameters('keyType')]",
        "keyOps": "[parameters('keyOps')]",
        "keySize": "[parameters('keySize')]",
        "curveName": "[parameters('curveName')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
      ]
    }
  ],
  "outputs": {
    "proxyKey": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.KeyVault/vaults/keys', parameters('vaultName'), parameters('keyName')))]"
    }
  }
}

تم تحديد مصدرين في النموذج:

يمكن العثور على المزيد من نماذج قالب Azure Key Vault في قوالب Azure Quickstart.

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

المعلمة‬ التعريف
keyOps يحدد العمليات التي يمكن إجراؤها باستخدام المفتاح. إذا لم تحدد هذه المعلمة، يمكن إجراء جميع العمليات. القيم المقبولة لهذه المعلمة هي قائمة مفصولة بفواصل من العمليات الرئيسية كما هو محدد بواسطة مواصفات مفتاح ويب JSON (JWK):
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName اسم المنحنى الإهليلجي (EC) لنوع مفتاح EC. راجع JsonWebKeyCurveName
Kty نوع المفتاح المراد إنشاؤه. للحصول على قيم صالحة، راجع JsonWebKeyType
العلامات بيانات التعريف الخاصة بالتطبيق في شكل أزواج مفتاح-قيمة.
nbf يحدد الوقت، ككائن DateTime، والذي لا يمكن استخدام المفتاح قبله. سيكون التنسيق هو الطابع الزمني لـ Unix (عدد الثواني بعد عصر Unix في الأول من يناير 1970 بالتوقيت العالمي المنسق).
اكسب يحدد وقت انتهاء الصلاحية، ككائن DateTime. سيكون التنسيق هو الطابع الزمني لـ Unix (عدد الثواني بعد عصر Unix في الأول من يناير 1970 بالتوقيت العالمي المنسق).

نشر القالب

يمكنك استخدام مدخل Microsoft Azure أو Azure PowerShell أو Azure CLI أو REST API. للتعرف على أساليب النشر، راجع نشر القوالب.

مراجعة الموارد الموزعة

يمكنك استخدام مدخل Microsoft Azure لتفقد قبو المفاتيح والمفتاح. بدلًا من ذلك استخدم برنامج نصي لـAzure CLI أو Azure PowerShell لسرد المفتاح المنشأ.

echo "Enter your key vault name:" &&
read keyVaultName &&
az keyvault key list --vault-name $keyVaultName &&
echo "Press [ENTER] to continue ..."

يختلف إنشاء المفتاح باستخدام قالب ARM عن إنشاء المفتاح عبر مستوى البيانات

إنشاء مفتاح عبر ARM

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

  • لكي يتم التصريح له باستخدام واجهة برمجة التطبيقات هذه، يجب أن يكون لدى المتصل إجراء التحكم في الوصول (RBAC) المستند إلى الدور Microsoft.KeyVault/vaults/keys/write. يعد دور "المساهم Key Vault" المضمن كافيًا، لأنه يخول جميع إجراءات RBAC التي تتطابق مع النمط "Microsoft.KeyVault/*".

    إنشاء مفتاح عبر ARM 1إنشاء مفتاح عبر ARM 2

واجهة برمجة التطبيقات الحالية (إنشاء مفتاح عبر مستوى البيانات)

  • من الممكن إنشاء مفاتيح جديدة وتحديث المفاتيح الموجودة وإنشاء إصدارات جديدة من المفاتيح الموجودة.
  • يجب أن يكون المتصل مخولًا باستخدام واجهة برمجة التطبيقات هذه. إذا كان المخزن يستخدم سياسات الوصول، فيجب أن يكون لدى المتصل إذن مفتاح "إنشاء"؛ إذا تم تمكين المخزن لـRBAC، فيجب أن يكون لدى المتصل "Microsoft.KeyVault/vaults/keys/create/action" RBAC DataAction.

تنظيف الموارد

تستند البرامج التعليمية والبدايات السريعة الأخرى لـ 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 ..."

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

في هذه البداية السريعة، قمت بإنشاء مخزن مفاتيح ومفتاح باستخدام قالب ARM، وتحققت من صحة النشر. لمعرفة المزيد حول Key Vault وAzure Resource Manager، تابع إلى المقالات أدناه.