Key Vault ve Azure PowerShell ile depolama hesabı anahtarlarını yönetme (eski)
Önemli
Key Vault Yönetilen Depolama Hesabı Anahtarları (eski), başka güncelleştirme planlanmadan 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'ya (Azure Key Vault gibi) 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.
Not
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 Kimlik | Azure Kamu | 7e7c393b-45d0-48b1-a35e-2905ddf8183c |
Microsoft Entra Kimlik | Azure genel | cfa8b339-82a2-471a-a3c9-0fc0be7a4093 |
Diğer | Tümü | cfa8b339-82a2-471a-a3c9-0fc0be7a4093 |
Önkoşullar
Bu kılavuzu tamamlamak için önce aşağıdakileri yapmanız gerekir:
- Azure PowerShell modülünü yükleyin.
- Anahtar kasası oluşturma
- Azure depolama hesabı oluşturun. Depolama hesabı adı yalnızca küçük harfler ve sayılar kullanmalıdır. Adın uzunluğu 3 ile 24 karakter arasında olmalıdır.
Depolama hesabı anahtarlarını yönetme
Azure hesabınıza bağlanma
Connect-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 ayarla
İlk olarak, aşağıdaki adımlarda PowerShell cmdlet'leri tarafından kullanılacak değişkenleri ayarlayın. "YourResourceGroupName", "YourStorageAccountName" ve "YourKeyVaultName" yer tutucularını güncelleştirip $keyVaultSpAppId cfa8b339-82a2-471a-a3c9-0fc0be7a4093
(Hizmet sorumlusu uygulama kimliğinde belirtildiği gibi) olarak ayarladığınızdan emin olun.
Kullanıcı kimliğinizi ve Azure depolama hesabınızın bağlamını almak için Azure PowerShell Get-AzContext ve Get-AzStorageAccount 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
Not
Klasik Depolama Hesabı için $storageAccountKey için "birincil" ve "ikincil" kullanın
Klasik Depolama Hesabı için 'Get-AzStorageAccount' yerine 'Get-AzResource -Name "ClassicStorageAccountName" -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 Hesabı 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-AzKeyVaultManagedStorageAccount 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-AzKeyVaultManagedStorageAccount 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 ayarla
İlk olarak, aşağıdaki adımlarda PowerShell cmdlet'leri tarafından kullanılacak değişkenleri ayarlayın. YourStorageAccountName 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 | Açıklama |
---|---|
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. Varsayılan değer şudur: https,http .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
Not
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-AzKeyVaultManagedStorageSasDefinition 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-AzKeyVaultSecret VaultName
Name
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.