Hızlı Başlangıç: ARM şablonunu kullanarak Azure anahtar kasası ve anahtar oluşturma

Azure Key Vault , anahtarlar, parolalar ve sertifika gibi gizli diziler için güvenli bir depo sağlayan bir bulut hizmetidir. Bu Hızlı Başlangıç, bir anahtar kasası ve anahtar oluşturmak için bir Azure Resource Manager şablonunu (ARM şablonu) dağıtma işlemine odaklanır.

Azure Resource Manager şablonu, projenizin altyapısını ve yapılandırmasını tanımlayan bir JavaScript Nesne Gösterimi (JSON) dosyasıdır. Şablon deklaratif sözdizimi kullanır. Dağıtımı oluşturmak için programlama komutlarının sırasını yazmadan hedeflenen dağıtımınızı açıklarsınız.

Ortamınız önkoşulları karşılıyorsa ve ARM şablonlarını kullanma hakkında bilginiz varsa, Azure’a dağıtma düğmesini seçin. Şablon Azure portalında açılacak.

Azure'a Resource Manager şablonunu konuşlandırmak için buton.

Önkoşullar

Bu makaleyi tamamlamak için:

Şablonu gözden geçir

Bu hızlı başlangıçta kullanılan şablon Azure Hızlı Başlangıç Şablonlarından alınmıştır.

{
  "$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": "9113739717796369919"
    }
  },
  "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": "2023-07-01",
      "name": "[parameters('vaultName')]",
      "location": "[parameters('location')]",
      "properties": {
        "enableRbacAuthorization": true,
        "enableSoftDelete": true,
        "softDeleteRetentionInDays": 90,
        "enablePurgeProtection": true,
        "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": "2023-07-01",
      "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')), '2023-07-01')]"
    },
    "location": {
      "type": "string",
      "value": "[parameters('location')]"
    },
    "name": {
      "type": "string",
      "value": "[parameters('vaultName')]"
    },
    "resourceGroupName": {
      "type": "string",
      "value": "[resourceGroup().name]"
    },
    "resourceId": {
      "type": "string",
      "value": "[resourceId('Microsoft.KeyVault/vaults', parameters('vaultName'))]"
    }
  }
}

Şablonda iki kaynak tanımlanır:

Şablon, Azure RBAC yetkilendirmesi etkinleştirilmiş olarak anahtar kasasını oluşturur. Bu, kasanın erişim ilkeleri yerine veri düzlemi yetkilendirmesi için Azure rol tabanlı erişim denetimi (Azure RBAC) kullandığı anlamına gelir.

Azure Hızlı Başlangıç Şablonları'nda daha fazla Azure Key Vault şablonu örneği bulunabilir.

Şablon parametreleri

Parametre Description
vaultName Yeni anahtar kasasının adı. Ad alanı içinde vault.azure.net genel olarak benzersiz olmalıdır.
Keyname Kasada oluşturulacak anahtarın adı.
lokasyon Kaynaklar için Azure bölgesi belirleyin. Varsayılan olarak kaynak grubu konumu kullanılır.
skuName Vault SKU. standard (varsayılan) veya premium.
keyType Oluşturulacak anahtarın türü. RSA, RSA-HSM, EC veya EC-HSM'den biri. Varsayılan RSA değeridir. Bkz. JsonWebKeyType.
keySize Anahtarın bit cinsinden boyutu (yalnızca RSA). Varsayılan 2048 değeridir.
curveName Elips eğrisi adı (yalnızca EC anahtarları). P-256, P-256K, P-384 veya P-521'den biri. Bkz. JsonWebKeyCurveName.
keyOps Anahtar için izin verilen JSON Web Anahtarı işlemleri (örneğin, ["sign","verify","encrypt","decrypt","wrapKey","unwrapKey"]). Boş dizi (varsayılan) tüm işlemlere izin verir.

Şablonu dağıt

  1. Aşağıdaki görüntüyü seçerek Azure'da oturum açıp bir şablon açın. Şablon bir Anahtar Kasası ve bir anahtar oluşturur.

    Azure'a Resource Manager şablonunu konuşlandırmak için buton.

  2. Aşağıdaki değerleri seçin veya girin. Belirtilmediği sürece varsayılan değeri kullanın.

    • Abonelik: Bir Azure aboneliği seçin.
    • Kaynak grubu: Yeni oluştur'u seçin, kaynak grubu için benzersiz bir ad girin ve tamam'ı seçin.
    • Bölge: bir konum seçin. Örneğin Orta ABD.
    • Kasa Adı: anahtar kasası için, vault.azure.net ad alanı genelinde benzersiz olması gereken bir ad girin.
    • Anahtar Adı: Anahtar kasasında depoladığınız anahtar için bir ad girin.
    • Sku Adı: standart veya premium'ı seçin. Varsayılan değer standarttır.
    • Anahtar Türü: Bir anahtar türü seçin. Varsayılan değer RSA'dır.
    • Anahtar Boyutu: Bir anahtar boyutu (RSA anahtarları) girin. Varsayılan değer 2048'dir.
    • Eğri Adı: EC anahtarları için bir eğri seçin. RSA anahtarları için boş bırakın.
  3. Gözden geçir + oluştur'u seçin, ardından oluştur'u seçin. Anahtar kasası ve anahtar başarıyla dağıtıldıktan sonra bir bildirim alırsınız.

Şablonu dağıtmak için Azure PowerShell, Azure CLI veya REST API'yi de kullanabilirsiniz. Diğer dağıtım yöntemlerini öğrenmek için bkz. Deploy templates.

Key Vault RBAC rolü atayın

Bu şablon tarafından oluşturulan anahtar kasası yetkilendirme için Azure RBAC kullanır. Anahtarlara veri düzlemi üzerinden erişmek için (örneğin, Azure CLI veya Azure PowerShell kullanarak), kendinize uygun bir rol atamanız gerekir.

  1. Microsoft Entra kullanıcı nesne kimliğinizi alın:

    az ad signed-in-user show --query id -o tsv
    
  2. Anahtar kasasında kendinize Key Vault Crypto Officer rolünü atayın:

    echo "Enter your key vault name:" &&
    read keyVaultName &&
    az role assignment create --role "Key Vault Crypto Officer" \
        --assignee-object-id $(az ad signed-in-user show --query id -o tsv) \
        --scope $(az keyvault show --name $keyVaultName --query id -o tsv)
    

    Note

    Rol atamalarının yayılması bir veya iki dakika sürebilir.

Dağıtılmış kaynakları gözden geçir.

Anahtar kasasını ve anahtarı denetlemek için Azure portalını kullanabilirsiniz. Alternatif olarak, oluşturulan anahtarı listelemek için aşağıdaki Azure CLI veya Azure PowerShell betiğini kullanın.

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

ARM şablonu kullanarak anahtar oluşturmak, veri düzlemi aracılığıyla anahtar oluşturmaktan farklıdır

ARM aracılığıyla anahtar oluşturma

  • Yalnızca yeni anahtarlar oluşturulabilir. Mevcut anahtarları güncelleştirmek veya mevcut anahtarların yeni sürümlerini oluşturmak mümkün değildir. Anahtar zaten varsa, mevcut anahtar depolama alanından alınır ve kullanılır (yazma işlemi gerçekleşmez).

  • Bu API'yi kullanma yetkisine sahip olmak için çağıranın "Microsoft.KeyVault/vaults/keys/write" rol tabanlı erişim denetimi (Azure RBAC) Eylemine sahip olması gerekir. Yerleşik "Key Vault Katılımcısı" rolü yeterlidir çünkü "Microsoft.KeyVault/*" deseniyle eşleşen tüm Azure RBAC Eylemlerini yetkiler.

    ARM 1 aracılığıyla anahtar oluştur ARM 2 aracılığıyla anahtar oluştur

Mevcut API (veri düzlemi aracılığıyla anahtar oluşturma)

  • Yeni anahtarlar oluşturmak, mevcut anahtarları güncelleştirmek ve mevcut anahtarların yeni sürümlerini oluşturmak mümkündür.
  • Çağıranın bu API'yi kullanma yetkisine sahip olması gerekir. Kasa Azure RBAC için etkinleştirildiyse, çağıranın "Microsoft.KeyVault/vaults/keys/create/action" Azure RBAC DataAction iznine sahip olması gerekir.

Kaynakları temizle

Diğer Key Vault hızlı başlangıç kılavuzları ve öğreticileri bu hızlı başlangıcı temel alır. Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmeyi planlıyorsanız, bu kaynakları yerinde bırakmayı tercih edebilirsiniz. Artık gerekli olmadığında kaynak grubunu silin; bu da Key Vault'u ve ilgili kaynakları siler. Azure CLI veya Azure PowerShell kullanarak kaynak grubunu silmek için:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Note

Kaynak grubu silindiğinde anahtar kasası da silinir, ancak kasa geçici olarak silinmiş bir duruma girer ve saklama süresi (varsayılan olarak 90 gün) için kurtarılabilir durumda kalır. Bu süre boyunca kasa adı küresel olarak rezerve edilir ve temizleme koruması etkin olduğundan kasa süresi dolmadan temizlenemez. Standart anahtar kasalarında geçici olarak silinen kasalar için ücret uygulanmaz. Daha fazla bilgi için, Key Vault geçici silme özelliğine genel bakış bölümüne bakın.

Sonraki Adımlar

Bu hızlı başlangıçta ARM şablonu kullanarak bir anahtar kasası ve anahtar oluşturdunuz ve dağıtımı doğruladınız. Key Vault ve Azure Resource Manager hakkında daha fazla bilgi edinmek için bu makalelere bakın.