Azure Anahtar Kasası ile Azure Cosmos hesabınız için müşteri tarafından yönetilen anahtarları yapılandırma

UYGULAMANIN UYGULAMASI: SQL API Api Api Gremlin API Tablo API'si Azure Cosmos DB API'si (MongoDB için)

Azure Cosmos hesabında depolanan veriler, Microsoft tarafından yönetilen anahtarlar (hizmet tarafından yönetilen anahtarlar) ile otomatik olarak ve sorunsuzşekilde şifrelenir. İsteğe bağlı olarak, yönetmek istediğiniz anahtarlar ile ikinci bir şifreleme katmanı eklemeyi seçebilirsiniz(müşteri tarafından yönetilen anahtarlar veya CMK).

Müşteri verileri çevresinde şifreleme katmanları

Müşteri tarafından yönetilen anahtarları Azure Anahtar Kasasında depolamalı ve müşteri tarafından yönetilen anahtarlarla etkinleştirilmiş her Azure Cosmos hesabı için bir anahtar sağlamış olun. Bu anahtar, o hesapta depolanan tüm verileri şifrelemek için kullanılır.

Not

Şu anda müşteri tarafından yönetilen anahtarlar yalnızca yeni Azure kullanıcı Cosmos kullanılabilir. Hesap oluşturma sırasında bunları yapılandırmanız gerekir.

Azure aboneliğiniz için Azure Cosmos DB kaynak sağlayıcısını kaydetme

  1. Azure portalında oturum açın, Azureaboneliğinize gidin ve Kaynak sağlayıcıları'nın altındaki Kaynak Ayarlar seçin:

    Sol menüden kaynak sağlayıcıları girişi

  2. Microsoft.DocumentDB kaynak sağlayıcısını aratır. Kaynak sağlayıcısının önceden kayıtlı olarak işaretlendi olup olduğunu doğrulayın. Bu yoksa, kaynak sağlayıcısını seçin ve sonra da Kaydettir : seçeneğini seçin.

    Microsoft.DocumentDB kaynak sağlayıcısını kaydetme

Azure Anahtar Kasası örneğinizi yapılandırma

Müşteri tarafından yönetilen anahtarları Azure Cosmos DB ile kullanmak, şifreleme anahtarlarınızı barındırmak üzere kullanmayı planlayınız Azure Anahtar Kasası örneğinde iki özellik ayarlamanızı gerektirir: Yumuşak Silme ve Temizleme Koruması.

Yeni bir Azure Anahtar Kasası örneği oluşturmak için bu özellikleri oluşturma sırasında etkinleştirin:

Yeni bir Azure Anahtar Kasası örneği için yumuşak silme ve temizleme korumasını etkinleştirme

Mevcut bir Azure Anahtar Kasası örneğini kullanıyorsanız, Azure portalında Özellikler bölümüne bakarak bu özelliklerin etkinleştirildiğinden emin olun. Bu özelliklerden herhangi biri etkinleştirilmemişse, aşağıdaki makalelerden birinin "Yumuşak silmeyi etkinleştirme" ve "Temizleme Korumasını Etkinleştirme" bölümlerine bakın:

Azure Anahtar Kasası örneğinize erişim ilkesi ekleme

  1. Azure portalında, şifreleme anahtarlarınızı barındırmak için kullanmayı planlamış olun Azure Anahtar Kasası örneğine gidin. Sol menüden Access İlkeleri'ne tıklayın:

    Sol menüden ilkelere erişme

  2. + Erişim İlkesi Ekle'yi seçin.

  3. Anahtar izinleri açılan menüsünün altında Al , TuşKaydırmayı Aç ve Anahtar İzinleriniKaydır'ı seçin:

    Doğru izinleri seçme

  4. Anapara seç altında,Hiçbiri seçili değil öğesini seçin.

  5. Azure Cosmos DB anaparası için arama yapma ve bunu seçme (daha kolay bulmak için, anapara kimliğine göre de arayabilirsiniz: asıl kimliğin bulunduğu Azure Government bölgeleri dışında herhangi bir Azure 57506a73-e302-42a9-b869-6f12d9ec29e9 bölgesi). Azure Cosmos DB anaparası listede yoksa, bu makalenin Kaynak sağlayıcısını kaydetme bölümünde açıklandığı gibi Microsoft.DocumentDB kaynak sağlayıcısını yeniden kaydetmeniz gerekebilir.

    Not

    Bu, Azure Anahtar Cosmos Kasa erişim ilkenize Azure Cosmos DB birinci taraf kimliğini okur. Bu birinci taraf kimliğini Azure Cosmos DB hesabı yönetilen kimliğinize göre değiştirmek için bkz. Azure Anahtar Kasası erişim ilkesinde yönetilen kimlik kullanma.

  6. Altta Seç'i seçin.

    Azure Cosmos DB sorumlu öğesini seçme

  7. Yeni erişim ilkesi eklemek için Ekle'yi seçin.

  8. Tüm değişiklikleri kaydetmek için Anahtar Kasa örneğinde Kaydet'i seçin.

Azure Anahtar Kasasında anahtar oluşturma

  1. Azure portaldan, şifreleme anahtarlarınızı barındırmak üzere kullanmayı planlanıza Azure Anahtar Kasası örneğine gidin. Ardından, sol menüden Tuşlar'ı seçin:

    Sol menüden tuş girişi

  2. Oluştur/İçeri Aktaröğesini seçin, yeni anahtar için bir ad girin ve bir RSA anahtar boyutu seçin. En iyi güvenlik için en az 3072'nin kullanılması önerilir. Ardından Oluştur'ı seçin:

    Yeni anahtar oluşturma

  3. Anahtar oluşturulduktan sonra, yeni oluşturulan anahtarı ve sonra geçerli sürümünü seçin.

  4. Anahtarın Anahtar Tanımlayıcısını kopyalayın,yalnızca son eğik çizgiden sonraki bölüm:

    Anahtarın anahtar tanımlayıcısını kopyalama

Yeni bir Azure Cosmos hesabı oluşturma

Azure portalını kullanma

Azure portalında yeni bir Azure Cosmos DB hesabı oluşturduktan sonra Şifreleme adımında Müşteri tarafından yönetilen anahtar'ı seçin. Anahtar URI'leri alanına, önceki adımda kopyalayıp kopyalayıp Azure Anahtar Kasası anahtarının URI/anahtar tanımlayıcısını yapıştırın:

Azure portalda CMK parametrelerini ayarlama

Azure PowerShell'i kullanma

PowerShell ile yeni bir Azure Cosmos DB hesabı oluşturma:

  • PropertyObject'te keyVaultKeyUri özelliğinin altında daha önce kopyalanan Azure Anahtar Kasa anahtarının URI'lerini geçecek şekilde kullanın.

  • API sürümü olarak 2019-12-12 veya sonraki bir sürümünü kullanın.

Önemli

Hesabın müşteri locations tarafından yönetilen anahtarlarla başarıyla oluşturulmak için özelliği açıkça ayarlanız gerekir.

$resourceGroupName = "myResourceGroup"
$accountLocation = "West US 2"
$accountName = "mycosmosaccount"

$failoverLocations = @(
    @{ "locationName"="West US 2"; "failoverPriority"=0 }
)

$CosmosDBProperties = @{
    "databaseAccountOfferType"="Standard";
    "locations"=$failoverLocations;
    "keyVaultKeyUri" = "https://<my-vault>.vault.azure.net/keys/<my-key>";
}

New-AzResource -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    -ApiVersion "2019-12-12" -ResourceGroupName $resourceGroupName `
    -Location $accountLocation -Name $accountName -PropertyObject $CosmosDBProperties

Hesap oluşturulduktan sonra, Azure Anahtar Kasası anahtarının URI'sini getirerek müşteri tarafından yönetilen anahtarların etkinleştirildiğinden emin olun:

Get-AzResource -ResourceGroupName $resourceGroupName -Name $accountName `
    -ResourceType "Microsoft.DocumentDb/databaseAccounts" `
    | Select-Object -ExpandProperty Properties `
    | Select-Object -ExpandProperty keyVaultKeyUri

Azure Kaynak Yöneticisi şablonunu kullanma

Yeni bir Azure Kaynak Yöneticisi Cosmos hesabı oluşturursanız:

  • Özellikler nesnesinde daha önce keyVaultKeyUri özelliği altında kopyalanmış olan Azure Anahtar Kasa anahtarının URI'lerini kullanın.

  • API sürümü olarak 2019-12-12 veya sonraki bir sürümünü kullanın.

Önemli

Hesabın müşteri locations tarafından yönetilen anahtarlarla başarıyla oluşturulmak için özelliği açıkça ayarlanız gerekir.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "accountName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "keyVaultKeyUri": {
            "type": "string"
        }
    },
    "resources": 
    [
        {
            "type": "Microsoft.DocumentDB/databaseAccounts",
            "name": "[parameters('accountName')]",
            "apiVersion": "2019-12-12",
            "kind": "GlobalDocumentDB",
            "location": "[parameters('location')]",
            "properties": {
                "locations": [ 
                    {
                        "locationName": "[parameters('location')]",
                        "failoverPriority": 0,
                        "isZoneRedundant": false
                    }
                ],
                "databaseAccountOfferType": "Standard",
                "keyVaultKeyUri": "[parameters('keyVaultKeyUri')]"
            }
        }
    ]
}

Şablonu aşağıdaki PowerShell betiğiyle dağıtın:

$resourceGroupName = "myResourceGroup"
$accountName = "mycosmosaccount"
$accountLocation = "West US 2"
$keyVaultKeyUri = "https://<my-vault>.vault.azure.net/keys/<my-key>"

New-AzResourceGroupDeployment `
    -ResourceGroupName $resourceGroupName `
    -TemplateFile "deploy.json" `
    -accountName $accountName `
    -location $accountLocation `
    -keyVaultKeyUri $keyVaultKeyUri

Azure CLI'ı kullanma

Azure CLI aracılığıyla yeni bir Azure Cosmos hesabı oluşturduktan sonra, daha önce parametrenin altına kopyalanmış olan Azure Anahtar Kasası anahtarının URI'sini --key-uri kullanın.

resourceGroupName='myResourceGroup'
accountName='mycosmosaccount'
keyVaultKeyUri = 'https://<my-vault>.vault.azure.net/keys/<my-key>'

az cosmosdb create \
    -n $accountName \
    -g $resourceGroupName \
    --locations regionName='West US 2' failoverPriority=0 isZoneRedundant=False \
    --key-uri $keyVaultKeyUri

Hesap oluşturulduktan sonra, Azure Anahtar Kasası anahtarının URI'sini getirerek müşteri tarafından yönetilen anahtarların etkinleştirildiğinden emin olun:

az cosmosdb show \
    -n $accountName \
    -g $resourceGroupName \
    --query keyVaultKeyUri

Azure Anahtar Kasası erişim ilkesinde yönetilen kimlik kullanma

Bu erişim ilkesi, şifreleme anahtarlarına Azure Cosmos DB hesabınızla Cosmos sağlar. Bu, belirli bir ad (AD) kimliğine Azure Active Directory vererek yapılır. İki kimlik türü destekler:

  • Azure Cosmos DB'nin birinci taraf kimliği, Azure Cosmos DB hizmetine erişim vermek için kullanılabilir.
  • Azure Cosmos DB hesabının yönetilen kimliği, hesabınıza özel olarak erişim vermek için kullanılabilir.

Sistem tarafından atanmış yönetilen kimliği kullanmak için

Sistem tarafından atanan bir yönetilen kimlik ancak hesap oluşturduklarından sonra alınamasa da başlangıçta ilk olarak yukarıda açıklandığı gibi ilk olarak ilk taraf kimliği kullanarak hesap oluşturmanız gerekir. Ardından:

  1. Bu hesap oluşturma sırasında yapılmadı ise, sistem tarafından atanmış bir yönetilen kimliği hesabınız üzerinde etkinleştirin ve atanan kimliği kopyalayın.

  2. Azure Anahtar Kasa hesabınıza yukarıda açıklandığı gibi yeni bir erişim ilkesi ekleyin .ancak, Azure Cosmos DB'nin birinci taraf kimliği yerine önceki adımda kopyaladınız kimliği kullanın.

  3. Azure Anahtar Cosmos şifreleme anahtarlarınızı şifrelerken sistem tarafından atanan yönetilen kimliği kullanmak istediğiniz belirtmek için Azure Cosmos DB hesabını güncelleştirin. Bunu şu şekilde de yapabiliriz:

    • bu özelliği, hesap azure kaynak yöneticisi şablonunda belirterek:
    {
        "type": " Microsoft.DocumentDB/databaseAccounts",
        "properties": {
            "defaultIdentity": "SystemAssignedIdentity",
            // ...
        },
        // ...
    }
    
    • azure CLI ile hesabınızla güncelleştirmeyi kullanarak:
        resourceGroupName='myResourceGroup'
        accountName='mycosmosaccount'
    
        az cosmosdb update --resource-group $resourceGroupName --name $accountName --default-identity "SystemAssignedIdentity"
    
  4. İsteğe bağlı olarak, Azure Anahtar Kasası erişim Cosmos Azure Cosmos DB birinci taraf kimliğini kaldırabilirsiniz.

Kullanıcı tarafından atanan yönetilen kimliği kullanmak için

Önemli

Kullanıcı tarafından atanan bir yönetilen kimlik kullanırken, Azure Anahtar Kasası hesabıyla ilgili güvenlik duvarı kuralları şu anda desteklenmiyor. Azure Anahtar Kasası hesabınıza tüm ağlardan erişilebilir durumda tutabilirsiniz.

  1. Yukarıda açıklandığı gibi Azure Anahtar Kasası hesabınıza yeni erişim ilkesi oluştururken Azure Cosmos DB'nin birinci taraf kimliği yerine kullanmak istediğiniz yönetilen kimliği kullanın.

  2. Azure Cosmos DB hesabı oluştururken, kullanıcıya atanan yönetilen kimliği etkinleştirmeli ve Azure Anahtar Kasasında şifreleme anahtarlarınıza erişirken bu kimliği kullanmak istediğiniz belirtebilirsiniz. Bunu şu şekilde de yapabiliriz:

    • bir Azure Kaynak Yöneticisi şablonunda:
    {
        "type": "Microsoft.DocumentDB/databaseAccounts",
        "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
                "<identity-resource-id>": {}
            }
        },
        // ...
        "properties": {
            "defaultIdentity": "UserAssignedIdentity=<identity-resource-id>"
            "keyVaultKeyUri": "<key-vault-key-uri>"
            // ...
        }
    }
    
    • Azure CLI ile:
    resourceGroupName='myResourceGroup'
    accountName='mycosmosaccount'
    keyVaultKeyUri = 'https://<my-vault>.vault.azure.net/keys/<my-key>'
    
    az cosmosdb create \
        -n $accountName \
        -g $resourceGroupName \
        --key-uri $keyVaultKeyUri
        --assign-identity <identity-resource-id>
        --default-identity "UserAssignedIdentity=<identity-resource-id>"  
    

Tuş döndürme

Azure Cosmos hesabınız tarafından kullanılan müşteri tarafından yönetilen anahtarı döndürme iki şekilde yapılabilir.

  • Şu anda Azure Anahtar Kasasında kullanılan anahtarın yeni bir sürümünü oluşturun:

    Yeni anahtar sürümü oluşturma

  • Şu anda kullanılan anahtarı, hesap URI'sini güncelleştirerek tamamen farklı bir anahtarla değiştirin. Azure portalında Azure Cosmos hesabınıza gidin ve sol menüden Veri Şifrelemesi'ne tıklayın:

    Veri Şifreleme menü girdisi

    Ardından, Anahtar URI'sini kullanmak istediğiniz yeni anahtarla değiştirin ve Kaydet'i seçin:

    Anahtar URI'sini güncelleştirme

    PowerShell'de aynı sonucu şöyle elde etmek için:

    $resourceGroupName = "myResourceGroup"
    $accountName = "mycosmosaccount"
    $newKeyUri = "https://<my-vault>.vault.azure.net/keys/<my-new-key>"
    
    $account = Get-AzResource -ResourceGroupName $resourceGroupName -Name $accountName `
        -ResourceType "Microsoft.DocumentDb/databaseAccounts"
    
    $account.Properties.keyVaultKeyUri = $newKeyUri
    
    $account | Set-AzResource -Force
    

Önceki anahtar veya anahtar sürümü, Azure Anahtar Kasası denetim günlükleri, azure Cosmos DB'den gelen etkinliği bu anahtar veya anahtar sürümünde göstermedikten sonra devre dışı bırakılabilir. Önceki tuş veya anahtar sürümünde, 24 saat tuş döndürmenin ardından başka etkinlik olması gerekir.

Hata işleme

Azure Cosmos DB'de müşteri tarafından yönetilen anahtarlar kullanırken hata varsa, Azure Cosmos DB yanıtta bir HTTP alt durum koduyla birlikte hata ayrıntılarını döndürür. Sorunun kök nedenini ayıklamak için bu alt durum kodunu kullanabilirsiniz. Desteklenen HTTP alt durum kodlarının listesini Cosmos için Azure Cosmos DB için HTTP Durum Kodları makalesine bakın.

Sık sorulan sorular

Müşteri tarafından yönetilen anahtarları etkinleştirmek için ek ücret tahsil edilecek mi?

Hayır, bu özelliği etkinleştirmek için ücret yoktur.

Müşteri tarafından yönetilen anahtarlar kapasite planlamasını nasıl etkiler?

Müşteri tarafından yönetilen anahtarlar kullanılırken veritabanı işlemleriniz tarafından kullanılan İstek Birimleri, verilerinizin şifrelerini ve şifresini çözmek için gereken ek işlemleri yansıtacak bir artış gösterir. Bu, sağlanan kapasitenizin biraz daha yüksek kullanımına yol açacaktır. Yol gösterme için aşağıdaki tabloyu kullanın:

İşlem türü Birim artışı isteği
Nokta okuma (öğeleri kimliklerine göre getirme) + İşlem başına %5
Herhangi bir yazma işlemi + İşlem başına %6
Dizinli özellik başına yaklaşık + 0,06 RU
Sorgular, okuma değişiklik akışı veya çakışma akışı + İşlem başına %15

Müşteri tarafından yönetilen anahtarlarla hangi veriler şifrelenir?

Azure Cosmos hesabında depolanan tüm veriler, aşağıdaki meta veriler dışında müşteri tarafından yönetilen anahtarlarla şifrelenir:

Mevcut Azure Cosmos hesapları için müşteri tarafından yönetilen anahtarlar destek var mı?

Bu özellik şu anda yalnızca yeni hesaplarda kullanılabilir.

Müşteri tarafından yönetilen anahtarları Azure Cosmos DB analitik deposuyla birlikte kullanmak mümkün mü?

Evet, Azure Dağıtım Bağlantısı yalnızca Azure COSMOS DB hesabının yönetilen kimliğini kullanarak müşteri tarafından yönetilen anahtarların yapılandırılmasını destekler. Azure SynapseBağlantısı'Cosmos önce Azure Anahtar Kasası erişim ilkesinde Azure Cosmos DB hesabının yönetilen kimliğini kullanabilirsiniz.

Hesap düzeyi anahtarlara göre daha ayrıntılılık düzeyini desteklemeyi destekleyen bir plan var mı?

Şu anda değil, ancak kapsayıcı düzeyi anahtarlar düşünülmektedir.

Müşteri tarafından yönetilen anahtarların Azure Cosmos hesabımda etkinleştirildiğinden nasıl Cosmos?

Azure portalında, Azure Cosmos hesabınıza gidin ve sol menüde Veri Şifreleme girdisini izleyin; bu girdi varsa, müşteri tarafından yönetilen anahtarlar hesabınız üzerinde etkinleştirilir:

Veri Şifreleme menü girdisi

Ayrıca, Azure Cosmos ayrıntılarını programlı olarak getirebilirsiniz ve özelliğin varlığına keyVaultKeyUri bakabilirsiniz. PowerShell'de ve Azure CLI'ı kullanmanınyolları için yukarıya bakın.

Müşteri tarafından yönetilen anahtarlar düzenli yedeklemeleri nasıl etkiler?

Azure Cosmos DB, hesapta depolanan verilerin düzenli ve otomatik yedeklemelerini alır. Bu işlem şifreli verileri depolar.

Düzenli bir yedeği başarıyla geri yüklemek için aşağıdaki koşullar gereklidir:

  • Yedekleme sırasında kullanılan şifreleme anahtarı gereklidir ve Azure Anahtar Kasası'nda kullanılabilir olması gerekir. Başka bir ifadeyle, hiçbir iptal işlemi yoktu ve yedekleme zamanında kullanılan anahtarın sürümü hala etkindir.
  • Kaynak hesabın Azure Anahtar Kasa erişim ilkesinde sistem atanmış bir yönetilen kimlik kullandıysanız, verilerinizi geri yüklemeden önce burada açıklandığı gibi bu erişim ilkesinde Azure Cosmos DB birinci taraf kimliğine geçici olarak erişim izni verebilirsiniz. Veriler hedef hesaba tümüyle geri yüklendiktan sonra, Anahtar Kasa erişim ilkesinden birinci taraf kimliğini kaldırabilir ve istediğiniz kimlik yapılandırmasını ayarlayın.

Şifreleme anahtarını nasıl iptal yapabilirim?

Anahtar iptali, anahtarın en son sürümünü devre dışı bırakarak yapılır:

Anahtarın sürümünü devre dışı bırakma

Alternatif olarak, bir Azure Anahtar Kasası örneğinden tüm anahtarları iptal etmek için Azure Cosmos DB sorumlusuna verilen erişim Cosmos silebilirsiniz:

Azure Cosmos DB anaparası için erişim Cosmos silme

Müşteri tarafından yönetilen bir anahtar iptal edildikten sonra hangi işlemler kullanılabilir?

Şifreleme anahtarı iptal edilmişken tek işlem hesap silme işlemidir.

Sonraki adımlar