Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, müşteri tarafından yönetilen anahtar kullanılarak şifrelenmiş bir depolama hesabı dağıtan bir Azure Yönetilen Uygulamasının nasıl oluşturulacağı açıklanır. Depolama hesabı, Cosmos DB ve Postgres için Azure Veritabanı, müşteri tarafından yönetilen anahtarları veya Microsoft tarafından yönetilen anahtarları kullanarak bekleyen verileri şifrelemeyi destekler. Depolama hesabınızdaki verileri korumak için kendi şifreleme anahtarınızı kullanabilirsiniz. Müşteri tarafından yönetilen bir anahtar belirttiğinizde, bu anahtar verilerinizi şifreleyen anahtara erişimi korumak ve denetlemek için kullanılır. Müşteri tarafından yönetilen anahtarlar, erişim denetimlerini yönetmek için daha fazla esneklik sunar.
Önkoşullar
- Etkin aboneliğe ve kullanıcılar, gruplar veya hizmet sorumluları gibi Microsoft Entra kaynaklarına yönelik izinlere sahip bir Azure hesabı. Hesabınız yoksa başlamadan önce ücretsiz bir hesap oluşturun .
- En son Azure Resource Manager Araçları uzantısına sahip Visual Studio Code. Bicep dosyaları için Visual Studio Code için Bicep uzantısını yükleyin.
- Azure PowerShell veya Azure CLI'nın en son sürümünü yükleyin.
- Hizmet kataloğu tanımı oluşturma ve dağıtma hakkında bilgi sahibi olun.
Yönetilen kimlikler
Yönetilen uygulama tarafından yönetilen kaynak grubu içinde kaynak olarak dağıtılan bir depolama hesabı için müşteri tarafından yönetilen anahtar yapılandırmak için kullanıcı tarafından atanan yönetilen kimlik gerekir. Bu kullanıcı tarafından atanan yönetilen kimlik, yönetilen uygulamaya diğer mevcut kaynaklara erişim vermek için kullanılabilir. Yönetilen uygulamanızı kullanıcı tarafından atanan bir yönetilen kimlikle yapılandırmayı öğrenmek için yönetilen kimlikle Azure Yönetilen Uygulaması'na gidin.
Uygulamanız için iki tür kimlik verilebilir:
- Uygulamanıza sistem tarafından atanan yönetilen kimlik atanır ve uygulamanız silinirse silinir. Bir uygulama yalnızca bir sistem tarafından atanan yönetilen kimliğe sahip olabilir.
- Kullanıcı tarafından atanan yönetilen kimlik, uygulamanıza atanabilen tek başına bir Azure kaynağıdır. Bir uygulamada kullanıcı tarafından atanan birden çok yönetilen kimlik olabilir.
Yönetilen uygulamanızın yönetilen kaynak grubunda mevcut anahtar kasasından müşteri anahtarlarıyla şifrelenmiş bir depolama hesabı dağıtmak için daha fazla yapılandırma gerekir. Yönetilen uygulamanızla yapılandırılan yönetilen kimlik, anahtar kasasına erişimi olan yönetilen kimlik üzerinde yerleşik Azure rol tabanlı erişim denetimi Yönetilen Kimlik operatörüne ihtiyaç duyar. Daha fazla ayrıntı için Yönetilen Kimlik İşleci rolü'ne gidin.
Silme koruması ile anahtar kasası oluşturma
- Azure portalınaoturum açın.
- Azure portalı menüsünden veya Giriş sayfasında Kaynak oluştur'u seçin.
- Arama kutusuna Key Vault yazın.
- Sonuçlar listesinden Key Vault'ı seçin.
- Key Vault bölümünde Oluştur'u seçin.
- Anahtar kasası oluştur kısmında aşağıdaki bilgileri girin:
- Abonelik: Aboneliğinizi seçin.
- Kaynak Grubu: Yeni oluştur'u seçin ve demo-cmek-rg gibi bir ad girin.
- Ad: Benzersiz bir ad gereklidir, örneğin demo-keyvault-cmek gibi.
- Bölge: Doğu ABD gibi bir konum seçin.
- Fiyatlandırma katmanı: Açılan listeden Standart'ı seçin.
- Temizleme koruması: Temizleme korumasını etkinleştir'i seçin.
-
İleri'yi seçin ve Erişim İlkesi sekmesine gidin.
- Erişim yapılandırması: Azure rol tabanlı erişim denetimini seçin.
- Diğer tüm seçenekler için varsayılan değerleri kabul edin.
- Seçin, gözden geçir ve oluştur.
- Ayarların doğru olduğunu onaylayın ve Oluştur'u seçin.
Başarılı bir dağıtımdan sonra Kaynağa Git seçeneğine tıklayın. Genel Bakış sekmesinde aşağıdaki özellikleri not edin:
- Kasa Adı: Örnekte kasa adı demo-keyvault-cmek şeklindedir. Bu adı diğer adımlar için kullanırsınız.
-
Kasa URI'si: Örnekte kasa URI'si şeklindedir
https://demo-keyvault-cmek.vault.azure.net/.
Kullanıcının atadığı yönetilen kimliği oluşturun
Kullanıcı tarafından atanan yönetilen kimlik oluşturmak için hesabınızda Managed Identity Contributor rolü ataması olması gerekir.
- Arama kutusuna yönetilen kimlikler girin.
- Hizmetler'in altında Yönetilen Kimlikler'i seçin.
-
Oluştur'u seçin ve Temel Bilgiler sekmesinde aşağıdaki değerleri girin:
- Abonelik: Aboneliğinizi seçin.
- Kaynak grubu: Önceki adımlarda oluşturduğunuz demo-cmek-rg kaynak grubunu seçin.
- Bölge: Doğu ABD gibi bir bölge seçin.
- Ad: Örneğin demokeyvaultmi gibi, kullanıcı tarafından atanmış yönetilen kimliğinizin adını yazın.
- Seçin, gözden geçir ve oluştur.
- Doğrulama Başarılı gösterildikten sonra Oluştur'u seçin.
Başarılı bir dağıtımdan sonra Kaynağa git seçeneğini seçin.
Rol atamaları oluşturma
Anahtar kasanız için iki rol ataması oluşturmanız gerekir. Ayrıntılar için bkz. Azure portalını kullanarak Azure rolleri atama.
Yönetilen kimliğe anahtar kasasında anahtar erişim izni verme
Anahtarları sarmalayıp açmak için anahtar kasası yönetilen kimliği demokeyvaultmi için bir rol ataması oluşturun.
- demo-cmek-keyvault anahtar kasanıza gidin.
- Erişim denetimi (IAM) öğesini seçin.
- Ekle>Rol ataması ekle’yi seçin.
- Aşağıdaki rolü atayın:
- Rol: Key Vault Kripto Hizmeti Şifreleme Kullanıcısı
- Erişim Atama: Yönetilen Kimlik
- Üye: demokeyvaultmi
- Ayarlarınızı görüntülemek için Gözden Geçir ve Ata seçin.
- Rol atamasını oluşturmak için Gözden geçir ve ata seçin.
Hesabınız için rol ataması oluşturma
Hesabınızın anahtar kasanızda yeni bir anahtar oluşturabilmesi için başka bir rol ataması oluşturun.
- Aşağıdaki rolü atayın:
- Rol: Key Vault Şifreleme Yetkilisi
- Erişim Atama: Kullanıcı, grup veya hizmet sorumlusu
- Üye: Microsoft Entra hesabınız
- Ayarlarınızı görüntülemek için Gözden Geçir ve Ata seçin.
- Rol atamasını oluşturmak için Gözden geçir ve ata seçin.
Erişim denetimi (IAM)>Rol atamaları bölümünde anahtar kasasının rol atamalarını doğrulayabilirsiniz.
Anahtar oluşturma
Depolama hesabını şifrelemek için anahtar kasanızın kullandığı bir anahtar oluşturmanız gerekir.
- Demo-cmek-keyvault anahtar kasanıza gidin.
- Anahtarlar'ı seçin.
- Oluştur/İçeri Aktar'ı seçin.
-
Anahtar Oluştur sayfasında aşağıdaki değerleri seçiniz:
- Seçenekler: Oluşturma
- Ad: demo-cmek-key
- Diğer seçenekler için varsayılan değerleri kabul edin.
- Oluştur'i seçin.
Anahtar adını not edin. Yönetilen uygulamayı dağıtırken bunu kullanırsınız.
Yönetilen uygulama için kullanıcı tarafından atanan yönetilen kimlik oluşturma
Yönetilen uygulama için yönetilen kimlik olarak kullanılacak kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
- Arama kutusuna Yönetilen Kimlikler yazın.
- Hizmetler'in altında Yönetilen Kimlikler'i seçin.
-
Oluştur'i seçin.
- Abonelik: Aboneliğinizi seçin.
- Kaynak grubu: demo-cmek-rg kaynak grubunu seçin.
- Bölge: Doğu ABD gibi bir bölge seçin.
- Ad: Kullanıcı tarafından atanan yönetilen kimliğiniz için, örneğin demomanagedappmi gibi, bir ad girin.
- Seçin, gözden geçir ve oluştur.
- Doğrulama Başarılı gösterildikten sonra Oluştur'u seçin.
Başarılı bir dağıtımdan sonra Kaynağa git seçeneğini seçin.
Yönetilen kimliğe rol izni atama
Demokeyvaultmi adlı kullanıcı tarafından atanan yönetilen kimliğin kapsamında yönetilen kimliğe Yönetilen Kimlik İşleci rolünü atayın.
- demokeyvaultmi adlı kullanıcı tarafından atanan yönetilen kimliğe gidin.
- Erişim denetimi (IAM) seçeneğini belirleyin.
- Rol ataması ekle sayfasını açmak için Rol ataması > seçin.
- Aşağıdaki rolü atayın.
- Rol: Yönetilen Kimlik Operatörü
- Erişim Ata: Yönetilen Kimlik
- Üye: demomanagedappmi
- Ayarlarınızı görüntülemek için Gözden Geçir ve Ata seçin.
- Rol atamasını oluşturmak için Gözden geçir ve ata seçin.
Demokeyvaultmi rol atamasını Erişim denetimi (IAM)>Rol atamalarında doğrulayabilirsiniz.
Örnek yönetilen uygulama şablonu
Yönetilen bir kaynak grubuna depolama hesabı dağıtan ve depolama hesabındaki verileri şifrelemek için önceden var olan bir anahtar kasasının anahtarını kullanan yönetilen bir uygulama oluşturun.
Yönetilen bir uygulamayı hizmet kataloğunuzda yayımlamak için aşağıdaki görevleri gerçekleştirin:
- Bu makaledeki örnekten creatUIDefinition.json dosyasını oluşturun. Şablon, yönetilen uygulamayı dağıtırken portalın kullanıcı arabirimi öğelerini tanımlar.
- Bu makaledeki Bicep dosyasını JSON'a dönüştürerek mainTemplate.json adlı bir Azure Resource Manager şablonu oluşturun. Şablon, yönetilen uygulamayla dağıtılacak kaynakları tanımlar.
- Gerekli JSON dosyalarını içeren bir .zip paketi oluşturun: createUiDefinition.json ve mainTemplate.json.
- Yönetilen uygulama tanımını, hizmet kataloğunuzda kullanılabilir olacak şekilde yayımlayın. Daha fazla bilgi için Hızlı Başlangıç: Azure Yönetilen Uygulama tanımı oluşturma ve yayımlama bölümüne gidin.
Şablon createUiDefinition.json oluşturma
Aşağıdaki şablon, yönetilen uygulama için kullanıcı tarafından atanan bir yönetilen kimlik oluşturur. Bu örnekte, kullanıcı tarafından atanan yönetilen kimliğimizin anahtar kasasının yönetilen kimliği üzerinde Yönetilen Kimlik Operatörü izinleriyle önceden yapılandırılması gerektiğinden, sistem tarafından atanan yönetilen kimliği devre dışı bırakıyoruz.
- Visual Studio Code'da creatUIDefinition.jsonadlı yeni bir dosya oluşturun.
- Aşağıdaki kodu kopyalayıp dosyaya yapıştırın.
- Dosyayı kaydedin.
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [],
"steps": [
{
"name": "managedApplicationSetting",
"label": "Application Settings",
"subLabel": {
"preValidation": "Configure your application settings and Managed Identity for the application",
"postValidation": "Done"
},
"bladeTitle": "Application Settings - Config",
"elements": [
{
"name": "appIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration for the Application (Needs Managed Identity Operator permissions over KV Managed Identity).",
"toolTip": {
"systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
"userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
},
"defaultValue": {
"systemAssignedIdentity": "Off"
},
"options": {
"hideSystemAssignedIdentity": true,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": true
},
"visible": true
}
]
},
{
"name": "configuration",
"type": "Microsoft.Common.Section",
"label": "Configuration",
"elements": [
{
"name": "cmek",
"type": "Microsoft.Common.Section",
"label": "Customer Managed Encryption Key (CMEK)",
"elements": [
{
"name": "cmekEnable",
"type": "Microsoft.Common.CheckBox",
"label": "Enable CMEK",
"toolTip": "Enable to provide a CMEK",
"constraints": {
"required": false
}
},
{
"name": "cmekKeyVaultUrl",
"type": "Microsoft.Common.TextBox",
"label": "Key Vault URL",
"toolTip": "Specify the CMEK Key Vault URL",
"defaultValue": "",
"constraints": {
"required": "[steps('configuration').cmek.cmekEnable]",
"regex": ".*",
"validationMessage": "The value must not be empty."
},
"visible": "[steps('configuration').cmek.cmekEnable]"
},
{
"name": "cmekKeyName",
"type": "Microsoft.Common.TextBox",
"label": "Key Name",
"toolTip": "Specify the key name from your key vault.",
"defaultValue": "",
"constraints": {
"required": "[steps('configuration').cmek.cmekEnable]",
"regex": ".*",
"validationMessage": "The value must not be empty."
},
"visible": "[steps('configuration').cmek.cmekEnable]"
},
{
"name": "cmekKeyIdentity",
"type": "Microsoft.ManagedIdentity.IdentitySelector",
"label": "Managed Identity Configuration for Key Vault Access",
"toolTip": {
"systemAssignedIdentity": "Enable system assigned identity to grant the managed application access to additional existing resources.",
"userAssignedIdentity": "Add user assigned identities to grant the managed application access to additional existing resources."
},
"defaultValue": {
"systemAssignedIdentity": "Off"
},
"options": {
"hideSystemAssignedIdentity": true,
"hideUserAssignedIdentity": false,
"readOnlySystemAssignedIdentity": true
},
"visible": "[steps('configuration').cmek.cmekEnable]"
}
],
"visible": true
}
]
}
],
"outputs": {
"location": "[location()]",
"managedIdentity": "[steps('managedApplicationSetting').appIdentity]",
"cmekConfig": {
"kvUrl": "[if(empty(steps('configuration').cmek.cmekKeyVaultUrl), '', steps('configuration').cmek.cmekKeyVaultUrl)]",
"keyName": "[if(empty(steps('configuration').cmek.cmekKeyName), '', steps('configuration').cmek.cmekKeyName)]",
"identityId": "[if(empty(steps('configuration').cmek.cmekKeyIdentity), '', steps('configuration').cmek.cmekKeyIdentity)]"
}
}
}
}
Şablon mainTemplate.json oluşturma
Aşağıdaki Bicep dosyası mainTemplate.json temel şablonunun kaynak kodudur. Şablon, createUiDefinition.json dosyasında tanımlanan kullanıcı tarafından atanan yönetilen kimliği kullanır.
- Visual Studio Code'da mainTemplate.bicep adlı yeni bir dosya oluşturun.
- Aşağıdaki kodu kopyalayıp dosyaya yapıştırın.
- Dosyayı kaydedin.
param cmekConfig object = {
kvUrl: ''
keyName: ''
identityId: {}
}
@description('Specify the Azure region to place the application definition.')
param location string = resourceGroup().location
/////////////////////////////////
// Common Resources Configuration
/////////////////////////////////
var commonproperties = {
name: 'cmekdemo'
displayName: 'Common Resources'
storage: {
sku: 'Standard_LRS'
kind: 'StorageV2'
accessTier: 'Hot'
minimumTlsVersion: 'TLS1_2'
}
}
var identity = items(cmekConfig.identityId.userAssignedIdentities)[0].key
resource storage 'Microsoft.Storage/storageAccounts@2022-05-01' = {
name: '${commonproperties.name}${uniqueString(resourceGroup().id)}'
location: location
sku: {
name: commonproperties.storage.sku
}
kind: commonproperties.storage.kind
identity: cmekConfig.identityId
properties: {
accessTier: commonproperties.storage.accessTier
minimumTlsVersion: commonproperties.storage.minimumTlsVersion
encryption: {
identity: {
userAssignedIdentity: identity
}
services: {
blob: {
enabled: true
}
table: {
enabled: true
}
file: {
enabled: true
}
}
keySource: 'Microsoft.Keyvault'
keyvaultproperties: {
keyname: '${cmekConfig.keyName}'
keyvaulturi: '${cmekConfig.kvUrl}'
}
}
}
}
mainTemplate.json dosyasını oluşturmak için PowerShell veya Azure CLI kullanın. Bicep dosyanızı kaydettiğiniz dizine build gidin ve komutunu çalıştırın.
bicep build mainTemplate.bicep
Bicep dosyası JSON'a dönüştürüldükten sonra mainTemplate.json dosyanız aşağıdaki örnekle eşleşmelidir.
metadata ve version ile templateHash özelliklerinde farklı değerleriniz olabilir.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.16.2.56959",
"templateHash": "1234567891234567890"
}
},
"parameters": {
"cmekConfig": {
"type": "object",
"defaultValue": {
"kvUrl": "",
"keyName": "",
"identityId": {}
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "Specify the Azure region to place the application definition."
}
}
},
"variables": {
"commonproperties": {
"name": "cmekdemo",
"displayName": "Common Resources",
"storage": {
"sku": "Standard_LRS",
"kind": "StorageV2",
"accessTier": "Hot",
"minimumTlsVersion": "TLS1_2"
}
},
"identity": "[items(parameters('cmekConfig').identityId.userAssignedIdentities)[0].key]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[format('{0}{1}', variables('commonproperties').name, uniqueString(resourceGroup().id))]",
"location": "[parameters('location')]",
"sku": {
"name": "[variables('commonproperties').storage.sku]"
},
"kind": "[variables('commonproperties').storage.kind]",
"identity": "[parameters('cmekConfig').identityId]",
"properties": {
"accessTier": "[variables('commonproperties').storage.accessTier]",
"minimumTlsVersion": "[variables('commonproperties').storage.minimumTlsVersion]",
"encryption": {
"identity": {
"userAssignedIdentity": "[variables('identity')]"
},
"services": {
"blob": {
"enabled": true
},
"table": {
"enabled": true
},
"file": {
"enabled": true
}
},
"keySource": "Microsoft.Keyvault",
"keyvaultproperties": {
"keyname": "[format('{0}', parameters('cmekConfig').keyName)]",
"keyvaulturi": "[format('{0}', parameters('cmekConfig').kvUrl)]"
}
}
}
}
]
}
Yönetilen uygulamayı dağıtın
Hizmet kataloğu tanımı oluşturulduktan sonra yönetilen uygulamayı dağıtabilirsiniz. Daha fazla bilgi için Hızlı Başlangıç: Hizmet kataloğu yönetilen uygulaması dağıtma bölümüne gidin.
Dağıtım sırasında kullanıcı tarafından atanan yönetilen kimliklerinizi, anahtar kasası adınızı, anahtar kasası URL'nizi, anahtar kasasının anahtar adını kullanırsınız. createUiDefinition.json dosyası kullanım arabirimini oluşturur.
Örneğin, bir portal dağıtımında , Uygulama Ayarları sekmesinde demomanagedappmi'yi eklersiniz.
Yapılandırma sekmesinde müşteri tarafından yönetilen anahtarı etkinleştirir ve demokeyvaultmi anahtar kasası için kullanıcı tarafından atanan yönetilen kimliği eklersiniz. Ayrıca anahtar kasasının URL'sini ve oluşturduğunuz anahtar kasasının anahtar adını da belirtirsiniz.
Dağıtımı doğrulayın.
Dağıtım tamamlandıktan sonra yönetilen uygulamanın kimlik atamasını doğrulayabilirsiniz. Kullanıcı tarafından atanan yönetilen kimlik demomanagedappmi yönetilen uygulamaya atanır.
- Yönetilen uygulamayı dağıttığınız kaynak grubuna gidin.
- Ayarlar>Kimlik altında Kullanıcı Ataması (önizleme)'yi seçin.
Yönetilen uygulamanın dağıtımıyla ilgili depolama hesabını da doğrulayabilirsiniz. Şifreleme sekmesi demo-cmek-key anahtarını ve kullanıcı tarafından atanan yönetilen kimliğin kaynak kimliğini gösterir.
- Yönetilen uygulamanın depolama hesabının dağıtıldığı yönetilen kaynak grubuna gidin.
- Güvenlik + ağ altındaŞifreleme'yi seçin.
Sonraki Adımlar
- Depolama şifrelemesi hakkında daha fazla bilgi için Bkz. Azure Depolama şifrelemesi için müşteri tarafından yönetilen anahtarlar.
- Anahtar kasasında anahtara erişme izinlerine sahip kullanıcı tarafından atanan yönetilen kimlik hakkında daha fazla bilgi için, Mevcut bir depolama hesabı için aynı kiracıda müşteri tarafından yönetilen anahtarları yapılandırma bölümüne gidin.