Hızlı Başlangıç Kılavuzu: Bicep kullanarak Azure Key Vault 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ıç kılavuzunda anahtar kasası ve anahtar oluşturmak için Bicep dosyası dağıtma işlemine odaklanılır.

Bicep, Azure kaynaklarını dağıtmak için bildirimci sözdizimi kullanan alan-spesifik bir dil (DSL)dir. Kısa sözdizimi, güvenilir tür güvenliği ve kod yeniden kullanımı için destek sağlar. Bicep, Azure'daki kod olarak altyapı çözümleriniz için en iyi yazma deneyimini sunar.

Önkoşullar

Bu makaleyi tamamlamak için:

Bicep dosyasını gözden geçir

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

@description('The name of the key vault to be created.')
param vaultName string

@description('The name of the key to be created.')
param keyName string

@description('The location of the resources.')
param location string = resourceGroup().location

@description('The SKU of the vault to be created.')
@allowed([
  'standard'
  'premium'
])
param skuName string = 'standard'

@description('The JsonWebKeyType of the key to be created.')
@allowed([
  'EC'
  'EC-HSM'
  'RSA'
  'RSA-HSM'
])
param keyType string = 'RSA'

@description('The permitted JSON web key operations of the key to be created.')
param keyOps array = []

@description('The size in bits of the key to be created.')
param keySize int = 2048

@description('The JsonWebKeyCurveName of the key to be created.')
@allowed([
  ''
  'P-256'
  'P-256K'
  'P-384'
  'P-521'
])
param curveName string = ''

resource vault 'Microsoft.KeyVault/vaults@2023-07-01' = {
  name: vaultName
  location: location
  properties: {
    enableRbacAuthorization: true
    enableSoftDelete: true
    softDeleteRetentionInDays: 90
    enablePurgeProtection: true
    enabledForDeployment: false
    enabledForDiskEncryption: false
    enabledForTemplateDeployment: false
    tenantId: subscription().tenantId
    sku: {
      name: skuName
      family: 'A'
    }
    networkAcls: {
      defaultAction: 'Allow'
      bypass: 'AzureServices'
    }
  }
}

resource key 'Microsoft.KeyVault/vaults/keys@2023-07-01' = {
  parent: vault
  name: keyName
  properties: {
    kty: keyType
    keyOps: keyOps
    keySize: keySize
    curveName: curveName
  }
}

output proxyKey object = key.properties
output location string = location
output name string = vault.name
output resourceGroupName string = resourceGroup().name
output resourceId string = vault.id

Bicep dosyasında iki kaynak tanımlanır:

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

Parametreler ve tanımlar

Parametre Definition
keyOps anahtarı kullanılarak gerçekleştirilebilecek işlemleri belirtir. Bu parametreyi belirtmezseniz, tüm işlemler gerçekleştirilebilir. Bu parametre için kabul edilebilir değerler , JSON Web Anahtarı (JWK) belirtimi tarafından tanımlanan anahtar işlemlerinin virgülle ayrılmış bir listesidir:
["sign", "verify", "encrypt", "decrypt", " wrapKey", "unwrapKey"]
CurveName EC anahtar türü için elips eğrisi (EC) adı. Bkz . JsonWebKeyCurveName
Kty Oluşturulacak anahtarın türü. Geçerli değerler için bkz. JsonWebKeyType
Etiketler Anahtar-değer çiftleri biçiminde uygulamaya özgü meta veriler.
nbf Anahtarın kullanılamayacağı zamandan önceki saati bir DateTime nesnesi olarak belirtir. Biçim Unix zaman damgası (1 Ocak 1970 UTC'de Unix Dönemi'nin ardından gelen saniye sayısı) olacaktır.
Exp DateTime nesnesi olarak süre sonunu belirtir. Biçim Unix zaman damgası (1 Ocak 1970 UTC'de Unix Dönemi'nin ardından gelen saniye sayısı) olacaktır.

Bicep dosyasını yükle

  1. Bicep dosyasını, yerel bilgisayarınıza main.bicep olarak kaydedin.

  2. Azure CLI veya Azure PowerShell kullanarak Bicep dosyasını dağıtın.

    az group create --name exampleRG --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep --parameters vaultName=<vault-name> keyName=<key-name>
    

    Uyarı

    <vault-name> değerini anahtar kasasının adıyla değiştirin. <vault-name> ile anahtar kasasının adını ve <key-name> ile anahtarın adını değiştirin.

    Dağıtım tamamlandığında, dağıtımın başarılı olduğunu belirten bir mesaj görmelisiniz.

Key Vault RBAC rolü atayın

Bu Bicep dosyası tarafından oluşturulan Anahtar Kasası, yetkilendirme için Azure RBAC’yi 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.

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)

Uyarı

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 ile 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 erişim ilkelerini kullanıyorsa, çağıranın "oluşturma" anahtar iznine 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ıçları ve eğitimleri bu hızlı başlangıç üzerine inşa edilmiştir. Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmeyi planlıyorsanız, bu kaynakları yerinde bırakmayı tercih edebilirsiniz. Gerektiği zaman kaynak grubunu silin. Bu işlem, Key Vault'u ve ilgili kaynakları da 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 ..."

Uyarı

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ıç kılavuzunda, Bicep dosyasını 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.