Key Vault ve Azure PowerShell ile depolama hesabı anahtarlarını yönetme (eski)

Önemli

Key Vault Yönetilen Depolama Hesap Anahtarları (eski) artık planlı güncelleştirmeler yapılmadan olduğu gibi desteklenir. Yalnızca Hesap SAS'sı, 2018-03-28'den sonra sas tanımları imzalı depolama hizmeti sürümüyle desteklenir.

Önemli

Microsoft'un bulut tabanlı kimlik ve erişim yönetimi hizmeti olan Microsoft Entra ID ile Azure Depolama tümleştirmesini kullanmanızı öneririz. Microsoft Entra tümleştirmesi Azure blobları ve kuyrukları için kullanılabilir ve Azure Depolama (Azure Key Vault gibi) için OAuth2 belirteç tabanlı erişim sağlar. Microsoft Entra Id, depolama hesabı kimlik bilgileri yerine bir uygulama veya kullanıcı kimliği kullanarak istemci uygulamanızın kimliğini doğrulamanıza olanak tanır. Azure'da çalıştırdığınızda Microsoft Entra yönetilen kimliğini kullanabilirsiniz. Yönetilen kimlikler, istemci kimlik doğrulaması ve kimlik bilgilerini uygulamanızda veya uygulamanızda depolama gereksinimini ortadan kaldırır. Bu çözümü yalnızca Microsoft Entra kimlik doğrulaması mümkün olmadığında kullanın.

Azure depolama hesabı, hesap adı ve anahtardan oluşan kimlik bilgilerini kullanır. Anahtar otomatik olarak oluşturulur ve şifreleme anahtarı yerine parola görevi görür. Key Vault, depolama hesabı anahtarlarını düzenli aralıklarla depolama hesabında yeniden oluşturarak yönetir ve depolama hesabınızdaki kaynaklara temsilci erişimi için paylaşılan erişim imzası belirteçleri sağlar.

Anahtarları bir Azure depolama hesabıyla listelemek (eşitlemek) ve anahtarları düzenli aralıklarla yeniden oluşturmak (döndürmek) için Key Vault yönetilen depolama hesabı anahtarı özelliğini kullanabilirsiniz. Hem depolama hesapları hem de Klasik depolama hesapları için anahtarları yönetebilirsiniz.

Yönetilen depolama hesabı anahtarı özelliğini kullandığınızda aşağıdaki noktaları göz önünde bulundurun:

  • Anahtar değerleri bir arayana yanıt olarak hiçbir zaman döndürülemez.
  • Depolama hesabı anahtarlarınızı yalnızca Key Vault yönetmelidir. Anahtarları kendiniz yönetmeyin ve Key Vault işlemlerine müdahale etmekten kaçının.
  • Depolama hesabı anahtarlarını yalnızca tek bir Key Vault nesnesi yönetmelidir. Birden çok nesneden anahtar yönetimine izin verme.
  • Anahtarları yalnızca Key Vault kullanarak yeniden oluşturun. Depolama hesabı anahtarlarınızı el ile yeniden oluşturmayın.

Önemli

Anahtarı doğrudan depolama hesabında yeniden oluşturma, yönetilen depolama hesabı kurulumunu bozar ve kullanımdaki SAS belirteçlerini geçersiz kılabilir ve kesintiye neden olabilir.

Dekont

Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.

Hizmet sorumlusu uygulama kimliği

Microsoft Entra kiracısı, kayıtlı her uygulamaya bir hizmet sorumlusu sağlar. Hizmet sorumlusu, Azure RBAC aracılığıyla diğer Azure kaynaklarına erişim için yetkilendirme kurulumu sırasında kullanılan uygulama kimliği olarak görev alır.

Key Vault, tüm Microsoft Entra kiracılarında önceden kaydedilmiş bir Microsoft uygulamasıdır. Key Vault, her Azure bulutunda aynı Uygulama Kimliği altında kaydedilir.

Kiracılar Bulut Uygulama Kimliği
Microsoft Entra Kimliği Azure Kamu 7e7c393b-45d0-48b1-a35e-2905ddf8183c
Microsoft Entra Kimliği Azure genel cfa8b339-82a2-471a-a3c9-0fc0be7a4093
Diğer Tümü cfa8b339-82a2-471a-a3c9-0fc0be7a4093

Ön koşullar

Bu kılavuzu tamamlamak için önce aşağıdakileri yapmanız gerekir:

Depolama hesabı anahtarlarını yönetme

Azure hesabınıza bağlanma

Bağlan-AzAccount cmdlet'ini kullanarak PowerShell oturumunuzun kimliğini doğrulayın.

Connect-AzAccount

Birden çok Azure aboneliğiniz varsa Get-AzSubscription cmdlet'ini kullanarak bunları listeleyebilir ve Set-AzContext cmdlet'iyle kullanmak istediğiniz aboneliği belirtebilirsiniz.

Set-AzContext -SubscriptionId <subscriptionId>

Değişkenleri ayarlama

İlk olarak, aşağıdaki adımlarda PowerShell cmdlet'leri tarafından kullanılacak değişkenleri ayarlayın. "YourResourceGroupName", "Your Depolama AccountName" ve "YourKeyVaultName" yer tutucularını güncelleştirip $keyVaultSpAppId cfa8b339-82a2-471a-a3c9-0fc0be7a4093 olarak ayarladığınızdan emin olun (Hizmet sorumlusu uygulama kimliğinde belirtildiği gibi).

Kullanıcı kimliğinizi ve Azure depolama hesabınızın bağlamını almak için Azure PowerShell Get-AzContext ve Get-Az Depolama Account cmdlet'lerini de kullanacağız.

$resourceGroupName = <YourResourceGroupName>
$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>
$keyVaultSpAppId = "cfa8b339-82a2-471a-a3c9-0fc0be7a4093"
$storageAccountKey = "key1" #(key1 or key2 are allowed)

# Get your User Id
$userId = (Get-AzContext).Account.Id

# Get a reference to your Azure storage account
$storageAccount = Get-AzStorageAccount -ResourceGroupName $resourceGroupName -StorageAccountName $storageAccountName

Dekont

Klasik Depolama Hesabı için $storageAccountKey için "birincil" ve "ikincil" kullanın
Klasik Depolama Hesabı için 'Get-Az Depolama Account' yerine 'Get-AzResource -Name "Classic Depolama AccountName" -ResourceGroupName $resourceGroupName' kullanın

Key Vault'a depolama hesabınıza erişim verme

Key Vault'un depolama hesabı anahtarlarınıza erişebilmesi ve bu anahtarları yönetebilmesi için önce depolama hesabınıza erişim yetkisi vermelisiniz. Key Vault uygulaması, depolama hesabınız için anahtarları listelemek ve yeniden oluşturmak için izinler gerektirir. Bu izinler, Azure yerleşik rolü Depolama Hesap Anahtarı İşleci Hizmet Rolü aracılığıyla etkinleştirilir.

Azure PowerShell New-AzRoleAssignment cmdlet'ini kullanarak kapsamı depolama hesabınızla sınırlayarak bu rolü Key Vault hizmet sorumlusuna atayın.

# Assign Azure role "Storage Account Key Operator Service Role" to Key Vault, limiting the access scope to your storage account. For a classic storage account, use "Classic Storage Account Key Operator Service Role."
New-AzRoleAssignment -ApplicationId $keyVaultSpAppId -RoleDefinitionName 'Storage Account Key Operator Service Role' -Scope $storageAccount.Id

Başarılı rol ataması sonrasında aşağıdaki örneğe benzer bir çıktı görmeniz gerekir:

RoleAssignmentId   : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso/providers/Microsoft.Authorization/roleAssignments/189cblll-12fb-406e-8699-4eef8b2b9ecz
Scope              : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
DisplayName        : Azure Key Vault
SignInName         :
RoleDefinitionName : storage account Key Operator Service Role
RoleDefinitionId   : 81a9662b-bebf-436f-a333-f67b29880f12
ObjectId           : 93c27d83-f79b-4cb2-8dd4-4aa716542e74
ObjectType         : ServicePrincipal
CanDelegate        : False

Key Vault depolama hesabınızdaki role zaten eklendiyse bir "Rol ataması zaten var" iletisini alırsınız. Hata. Rol atamasını, Azure portalındaki "Erişim denetimi (IAM)" depolama hesabı sayfasını kullanarak da doğrulayabilirsiniz.

Kullanıcı hesabınıza yönetilen depolama hesapları için izin verme

Key Vault erişim ilkesini güncelleştirmek ve kullanıcı hesabınıza depolama hesabı izinleri vermek için Azure PowerShell Set-AzKeyVaultAccessPolicy cmdlet'ini kullanın.

# Give your user principal access to all storage account permissions, on your Key Vault instance

Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -UserPrincipalName $userId -PermissionsToStorage get, list, delete, set, update, regeneratekey, getsas, listsas, deletesas, setsas, recover, backup, restore, purge

Depolama hesaplarına yönelik izinler, Azure portalındaki depolama hesabı "Erişim ilkeleri" sayfasında kullanılamaz.

Key Vault örneğinize yönetilen depolama hesabı ekleme

Key Vault örneğinizde yönetilen bir depolama hesabı oluşturmak için Azure PowerShell Add-AzKeyVaultManaged Depolama Account cmdlet'ini kullanın. anahtarı, -DisableAutoRegenerateKey depolama hesabı anahtarlarının yeniden üretilmemesi için DEĞİl'i belirtir.

# Add your storage account to your Key Vault's managed storage accounts

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -DisableAutoRegenerateKey

Anahtar yeniden oluşturma olmadan depolama hesabının başarıyla eklenmesinin ardından aşağıdaki örneğe benzer bir çıktı görmeniz gerekir:

Id                  : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name          : kvcontoso
AccountName         : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name     : key1
Auto Regenerate Key : False
Regeneration Period : 90.00:00:00
Enabled             : True
Created             : 11/19/2018 11:54:47 PM
Updated             : 11/19/2018 11:54:47 PM
Tags                :

Anahtar yeniden oluşturmayı etkinleştirme

Key Vault'un depolama hesabı anahtarlarınızı düzenli aralıklarla yeniden oluşturmasını istiyorsanız, yeniden oluşturma dönemi ayarlamak için Azure PowerShell Add-AzKeyVaultManaged Depolama Account cmdlet'ini kullanabilirsiniz. Bu örnekte 30 günlük bir yeniden oluşturma süresi ayarlayacağız. Döndürme zamanı geldiğinde Key Vault etkin olmayan anahtarı yeniden oluşturur ve yeni oluşturulan anahtarı etkin olarak ayarlar. SAS belirteçleri vermek için kullanılan anahtar etkin anahtardır.

$regenPeriod = [System.Timespan]::FromDays(30)

Add-AzKeyVaultManagedStorageAccount -VaultName $keyVaultName -AccountName $storageAccountName -AccountResourceId $storageAccount.Id -ActiveKeyName $storageAccountKey -RegenerationPeriod $regenPeriod

Depolama hesabının anahtar yenilenmesiyle başarıyla eklenmesinin ardından aşağıdaki örneğe benzer bir çıktı görmeniz gerekir:

Id                  : https://kvcontoso.vault.azure.net:443/storage/sacontoso
Vault Name          : kvcontoso
AccountName         : sacontoso
Account Resource Id : /subscriptions/03f0blll-ce69-483a-a092-d06ea46dfb8z/resourceGroups/rgContoso/providers/Microsoft.Storage/storageAccounts/sacontoso
Active Key Name     : key1
Auto Regenerate Key : True
Regeneration Period : 30.00:00:00
Enabled             : True
Created             : 11/19/2018 11:54:47 PM
Updated             : 11/19/2018 11:54:47 PM
Tags                :

Paylaşılan erişim imzası belirteçleri

Key Vault'un paylaşılan erişim imzası belirteçleri oluşturmasını da isteyebilirsiniz. Paylaşılan erişim imzası, depolama hesabınızdaki kaynaklara temsilci erişimi sağlar. İstemcilere, hesap anahtarlarınızı paylaşmadan depolama hesabınızdaki kaynaklara erişim vekleyebilirsiniz. Paylaşılan erişim imzası, hesap anahtarlarınızdan ödün vermeden depolama kaynaklarınızı paylaşmanın güvenli bir yolunu sağlar.

Bu bölümdeki komutlar aşağıdaki eylemleri tamamlar:

  • Hesap paylaşılan erişim imzası tanımı ayarlayın.
  • Kasada Key Vault yönetilen depolama paylaşılan erişim imzası tanımı ayarlayın. Tanım, oluşturulan paylaşılan erişim imzası belirtecinin şablon URI'sine sahiptir. Tanım paylaşılan erişim imzası türüne account sahiptir ve N gün boyunca geçerlidir.
  • Paylaşılan erişim imzasının anahtar kasanıza gizli dizi olarak kaydedildiğini doğrulayın.

Değişkenleri ayarlama

İlk olarak, aşağıdaki adımlarda PowerShell cmdlet'leri tarafından kullanılacak değişkenleri ayarlayın. Your Depolama AccountName ve <YourKeyVaultName>> yer tutucularını güncelleştirin<.

$storageAccountName = <YourStorageAccountName>
$keyVaultName = <YourKeyVaultName>

Paylaşılan erişim imzası tanım şablonu tanımlama

Key Vault, istemci uygulamaları için belirteçler oluşturmak için SAS tanım şablonunu kullanır.

SAS tanım şablonu örneği:

$sasTemplate="sv=2018-03-28&ss=bfqt&srt=sco&sp=rw&spr=https"

Key Vault için SAS tanım şablonunda gereken hesap SAS parametreleri

SAS Sorgu Parametresi Tanım
SignedVersion (sv) Gerekli. Bu hesap SAS'si ile yapılan istekleri yetkilendirmek için kullanılacak imzalı depolama hizmeti sürümünü belirtir. Sürüm 2015-04-05 veya üzeri olarak ayarlanmalıdır. Key Vault en geç 2018-03-28 sürümlerini destekler
SignedServices (ss) Gerekli. Hesap SAS'siyle erişilebilen imzalı hizmetleri belirtir. Olası değerler arasında şunlar bulunur:

- Blob (b)
- Kuyruk (q)
- Tablo (t)
- Dosya (f)

Birden fazla hizmete erişim sağlamak için değerleri birleştirebilirsiniz. Örneğin, ss=bf Blob ve Dosya uç noktalarına erişimi belirtir.
SignedResourceTypes (srt) Gerekli. Hesap SAS'siyle erişilebilen imzalı kaynak türlerini belirtir.

- Hizmet (s): Hizmet düzeyi API'lere erişim (örneğin, Hizmet Özelliklerini Al/Ayarla, Hizmet İstatistiklerini Al, Kapsayıcıları/Kuyrukları/Tabloları/Paylaşımları Listele)
- Kapsayıcı (c): Kapsayıcı düzeyinde API'lere erişim (örneğin, Kapsayıcı Oluştur/Sil, Kuyruk Oluştur/Sil, Tablo Oluştur/Sil, Paylaşım Oluştur/Sil, Blobları/Dosyaları Ve Dizinleri Listele)
- Nesne (o): Bloblar, kuyruk iletileri, tablo varlıkları ve dosyalar için nesne düzeyinde API'lere erişim (örneğin, Blob Koy, Sorgu Varlığı, İleti Al, Dosya Oluştur vb.)

Birden fazla kaynak türüne erişim sağlamak için değerleri birleştirebilirsiniz. Örneğin, srt=sc hizmet ve kapsayıcı kaynaklarına erişimi belirtir.
SignedPermission (sp) Gerekli. Hesap SAS'sinin imzalı izinlerini belirtir. İzinler yalnızca belirtilen imzalı kaynak türüyle eşleşiyorsa geçerlidir; aksi takdirde yoksayılırlar.

- Okuma (r): Tüm imzalı kaynak türleri (Hizmet, Kapsayıcı ve Nesne) için geçerlidir. Belirtilen kaynak türü için okuma izinlerine izin verir.
- Yazma (w): Tüm imzalı kaynak türleri (Hizmet, Kapsayıcı ve Nesne) için geçerlidir. Belirtilen kaynak türü için yazma izinlerine izin verir.
- Sil (d): Kuyruk iletileri dışında Kapsayıcı ve Nesne kaynak türleri için geçerlidir.
- Kalıcı Silme (y): Yalnızca Blob'un Nesne kaynak türü için geçerlidir.
- Liste (l): Yalnızca Hizmet ve Kapsayıcı kaynak türleri için geçerlidir.
- Ekle (a): Yalnızca şu Nesne kaynak türleri için geçerlidir: kuyruk iletileri, tablo varlıkları ve ekleme blobları.
- Oluştur (c): Yalnızca aşağıdaki Nesne kaynak türleri için geçerlidir: bloblar ve dosyalar. Kullanıcılar yeni bloblar veya dosyalar oluşturabilir, ancak mevcut blobların veya dosyaların üzerine yazamayabilir.
- Güncelleştirme (u): Yalnızca aşağıdaki Nesne kaynak türleri için geçerlidir: kuyruk iletileri ve tablo varlıkları.
- İşlem (p): Yalnızca aşağıdaki Nesne kaynak türü için geçerlidir: kuyruk iletileri.
- Etiket (t): Yalnızca aşağıdaki Nesne kaynak türü için geçerlidir: bloblar. Blob etiketi işlemlerine izin verir.
- Filtre (f): Yalnızca aşağıdaki Nesne kaynak türü için geçerlidir: blob. Blob etiketine göre filtrelemeye izin verir.
- Değişmezlik İlkesini Ayarla (i): Yalnızca aşağıdaki Nesne kaynak türü için geçerlidir: blob. Blob üzerinde değişmezlik ilkesinin ayarlanmasına/silinmesine ve yasal saklamaya izin verir.
SignedProtocol (spr) isteğe bağlı. Hesap SAS'siyle yapılan istek için izin verilen protokolü belirtir. Olası değerler hem HTTPS hem de HTTP (https,http) veya yalnızca HTTPS (https) değerleridir. https,http varsayılan değerdir.

Yalnızca HTTP izin verilen bir değer değildir.

Hesap SAS'i hakkında daha fazla bilgi için bkz. Hesap SAS'i oluşturma

Dekont

Key Vault, 'İmzalı Süre Sonu', 'İmzalı Başlangıç' gibi yaşam süresi parametrelerini ve 2018-03-28 sürümünden sonra kullanıma sunulan parametreleri yoksayar

Key Vault'ta paylaşılan erişim imzası tanımını ayarlama

Paylaşılan erişim imzası tanımı oluşturmak için Azure PowerShell Set-AzKeyVaultManaged Depolama SasDefinition cmdlet'ini kullanın. Parametreye tercih -Name ettiğiniz adı sağlayabilirsiniz.

Set-AzKeyVaultManagedStorageSasDefinition -AccountName $storageAccountName -VaultName $keyVaultName -Name <YourSASDefinitionName> -TemplateUri $sasTemplate -SasType 'account' -ValidityPeriod ([System.Timespan]::FromDays(1))

Paylaşılan erişim imzası tanımını doğrulama

Azure PowerShell Get-AzKeyVaultSecret cmdlet'ini kullanarak paylaşılan erişim imzası tanımının anahtar kasanızda depolandığını doğrulayabilirsiniz.

İlk olarak, anahtar kasanızda paylaşılan erişim imzası tanımını bulun.

Get-AzKeyVaultSecret -VaultName <YourKeyVaultName>

SAS tanımınıza karşılık gelen gizli dizi şu özelliklere sahip olacaktır:

Vault Name   : <YourKeyVaultName>
Name         : <SecretName>
...
Content Type : application/vnd.ms-sastoken-storage
Tags         :

Artık ve parametreleriyle Get-AzKeyVaultSecretVaultNameName cmdlet'ini kullanarak bu gizli dizinin içeriğini görüntüleyebilirsiniz.

$secretValueText = Get-AzKeyVaultSecret -VaultName <YourKeyVaultName> -Name <SecretName> -AsPlainText
Write-Output $secretValueText

Bu komutun çıktısı SAS tanım dizenizi gösterir.

Sonraki adımlar