Konfigurálja a felhasználó által kezelt kulcsokat az Azure Cosmos-fiókjához az Azure Key Vaulttal

A következőkre vonatkozik: SQL API CASSANDRA API Gremlin API Table API Azure Cosmos db API a MongoDB

Az Azure Cosmos-fiókban tárolt adatok automatikusan és zökkenőmentesen titkosítva vannak a Microsoft által kezelt kulcsokkal (szolgáltatás által felügyelt kulcsok). Azt is választhatja, hogy hozzáad egy második titkosítási réteget az Ön által kezelt kulcsokkal (ügyfél által felügyelt kulcsok).

Ügyféladatok titkosítási rétegei

Az ügyfél által felügyelt kulcsokat a Azure Key Vault és meg kell adnia egy kulcsot minden olyan Azure Cosmos-fiókhoz, amelynél engedélyezve vannak az ügyfél által kezelt kulcsok. Ezzel a kulccsal titkosítható a fiókban tárolt összes adat.

Megjegyzés

Az ügyfél által kezelt kulcsok jelenleg csak új Azure Cosmos-fiókokhoz érhetők el. Ezeket a fiók létrehozása során kell konfigurálnia.

A Azure Cosmos DB erőforrás-szolgáltató regisztrálása az Azure-előfizetéshez

  1. Jelentkezzen be a Azure Portal,majd az Azure-előfizetéséhez, és válassza az Erőforrás-szolgáltatók lehetőséget Gépház lapon:

    Erőforrás-szolgáltatók bejegyzés a bal oldali menüből

  2. Keresse meg a Microsoft.DocumentDB erőforrás-szolgáltatót. Ellenőrizze, hogy az erőforrás-szolgáltató már regisztrálva van-e. Ha nem, válassza ki az erőforrás-szolgáltatót, majd válassza a Regisztráció lehetőséget:

    A Microsoft.DocumentDB erőforrás-szolgáltató regisztrálása

A Azure Key Vault konfigurálása

Az ügyfél által kezelt kulcsok és a Azure Cosmos DB használatához két tulajdonságot kell beállítania a titkosítási kulcsokhoz használni kívánt Azure Key Vault-példányon: a Soft Delete és a Purge Protection tulajdonságot.

Ha létrehoz egy új Azure Key Vault, engedélyezze ezeket a tulajdonságokat a létrehozás során:

A törlés és végleges törlés védelmének engedélyezése egy új Azure Key Vault példányon

Ha egy meglévő Azure Key Vault-példányt használ, a tulajdonságok engedélyezése a tulajdonságok ezen szakaszának Tulajdonságok szakaszában Azure Portal. Ha ezen tulajdonságok bármelyike nincs engedélyezve, tekintse meg a "Soft-delete" és "Enabling Purge Protection" (A végleges törlés elleni védelem engedélyezése) szakaszt az alábbi cikkek egyikében:

Hozzáférési szabályzat hozzáadása a Azure Key Vault példányhoz

  1. A Azure Portal a titkosítási kulcsok gazdagépeként használni Azure Key Vault-példányt. A bal oldali menüben válassza a Hozzáférési szabályzatok lehetőséget:

    Hozzáférési szabályzatok a bal oldali menüből

  2. Válassza a + Hozzáférési szabályzat hozzáadása lehetőséget.

  3. A Kulcsengedélyek legördülő menüben válassza a Get, Unwrap Key, és Wrap Key permissions (Kulcs beírása, kulcs kiírása) és Wrap Key permissions (Kulcs becsomagolása) engedélyeket:

    A megfelelő engedélyek kiválasztása

  4. A Rendszerbiztonsági tag kiválasztása alatt válassza a Nincs kiválasztva lehetőséget.

  5. Keressen rá Azure Cosmos DB rendszerbiztonsági tagra, és válassza ki (a könnyebb keresés érdekében a rendszerbiztonsági tag azonosítója alapján is kereshet: bármely Azure-régióra, kivéve Azure Government régiót, ahol a rendszerbiztonsági tag a232010e-820c-4083-83bb-3ace5fc29d0b azonosítója 57506a73-e302-42a9-b869-6f12d9ec29e9 ). Ha Azure Cosmos DB rendszerbiztonsági tag nem szerepel a listában, előfordulhat, hogy újra regisztrálnia kell azMicrosoft.Doc umentDB erőforrás-szolgáltatót a jelen cikk Erőforrás-szolgáltató regisztrálása című szakaszában leírtak szerint.

    Megjegyzés

    Ezzel regisztrálja a Azure Cosmos DB-identitást a saját Azure Key Vault szabályzatában. Ha ezt a külső identitást a Azure Cosmos DB felügyelt identitásra cseréli, tekintse meg a Felügyelt identitás használata a Azure Key Vault szabályzatban.

  6. Válassza az alul található Kijelölés lehetőséget.

    A rendszerbiztonsági tag Azure Cosmos DB kiválasztása

  7. Az új hozzáférési szabályzat hozzáadásához válassza a Hozzáadás lehetőséget.

  8. Az összes módosítás mentésének Key Vault kattintson a Mentés gombra.

Kulcs létrehozása a Azure Key Vault

  1. A Azure Portal a titkosítási kulcsok Azure Key Vault a titkosítási kulcsok gazdagépeként használni tervezi. Ezután válassza a bal oldali menü Kulcsok parancsát:

    Kulcsok bejegyzés a bal oldali menüből

  2. Válassza a Generate/Import (Generálás/importálás) lehetőséget, adja meg az új kulcs nevét, és válassza ki az RSA-kulcs méretét. A legjobb biztonság érdekében legalább 3072 ajánlott. Ezután válassza a Létrehozás lehetőséget:

    Új kulcs létrehozása

  3. A kulcs létrehozása után válassza ki az újonnan létrehozott kulcsot, majd annak aktuális verzióját.

  4. Másolja ki a kulcs kulcsazonosítóját, kivéve az utolsó perjel utáni részt:

    A kulcs azonosítójának másolása

Új Azure Cosmos-fiók létrehozása

Az Azure Portal használata

Amikor új Azure Cosmos DB hoz létre a Azure Portal, válassza az Ügyfél által felügyelt kulcs lehetőséget a Titkosítás lépésben. A Kulcs URI mezőbe illessze be az előző lépésből kimásolható Azure Key Vault kulcs URI-azonosítóját:

CMK-paraméterek beállítása a Azure Portal

A Azure PowerShell

Amikor új fiókkal hoz létre Azure Cosmos DB PowerShell-t:

  • Adja át a korábban Azure Key Vault kulcs URI-ját a PropertyObject keyVaultKeyUri tulajdonságában.

  • API-verzióként használja a 2019-12-12-es vagy újabb verziót.

Fontos

Explicit módon be kell állítania a tulajdonságot ahhoz, hogy a fiók sikeresen létre legyen hozva az locations ügyfél által kezelt kulcsokkal.

$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

A fiók létrehozása után a fiókkulcs URI-ját lekérve ellenőrizheti, hogy engedélyezve vannak-e az Azure Key Vault kulcsok:

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

Sablon Azure Resource Manager használata

Amikor új Azure Cosmos-fiókot hoz létre egy Azure Resource Manager sablonnal:

  • Adja át a korábban Azure Key Vault kulcs URI-ját a properties objektum keyVaultKeyUri tulajdonsága alatt.

  • API-verzióként használja a 2019-12-12-es vagy újabb verziót.

Fontos

Explicit módon be kell állítania a tulajdonságot ahhoz, hogy a fiók sikeresen létre legyen hozva az locations ügyfél által kezelt kulcsokkal.

{
    "$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')]"
            }
        }
    ]
}

Telepítse a sablont a következő PowerShell-szkript használatával:

$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

Az Azure CLI használata

Amikor új Azure Cosmos-fiókot hoz létre az Azure CLI-ben, adja meg a korábban kimáselt Azure Key Vault kulcs URI-ját a paraméter --key-uri alatt.

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

A fiók létrehozása után a fiókkulcs URI-ját lekérve ellenőrizheti, hogy engedélyezve vannak-e az Azure Key Vault kulcsok:

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

Felügyelt identitás használata a Azure Key Vault hozzáférési szabályzatban

Ez a hozzáférési szabályzat biztosítja, hogy a titkosítási kulcsok elérhetők Azure Cosmos DB fiókjához. Ez egy adott identitáshoz (AD) való hozzáférés Azure Active Directory történik. Két identitástípus támogatott:

  • Azure Cosmos DB külső identitásával hozzáférést adhat a Azure Cosmos DB szolgáltatáshoz.
  • A Azure Cosmos DB fiók felügyelt identitásával kifejezetten a fiókhoz adhat hozzáférést.

Mivel a rendszer által hozzárendelt felügyelt identitást csak a fiók létrehozása után lehet lekérni, először létre kell hoznia a fiókot a fent ismertetett külső identitással. Ezután:

  1. Ha ez nem történt meg a fiók létrehozása során, engedélyezzen egy rendszer által hozzárendelt felügyelt identitást a fiókjában, és másolja ki a principalId hozzárendeltet.

  2. Adjon hozzá egy új hozzáférési szabályzatot a Azure Key Vault-fiókjához a fentiekben leírtak szerint, de az előző lépésben kimásolót használja a Azure Cosmos DB külső principalId identitása helyett.

  3. Frissítse a Azure Cosmos DB-fiókját, és adja meg, hogy a rendszer által hozzárendelt felügyelt identitást szeretné használni a titkosítási kulcsok eléréséhez a Azure Key Vault. Ezt a következőre használhatja:

    • ehhez adja meg ezt a tulajdonságot a fiók Azure Resource Manager sablonban:

      {
          "type": " Microsoft.DocumentDB/databaseAccounts",
          "properties": {
              "defaultIdentity": "SystemAssignedIdentity",
              // ...
          },
          // ...
      }
      
    • a fiók Azure CLI-val való frissítésével:

      resourceGroupName='myResourceGroup'
      accountName='mycosmosaccount'
      
      az cosmosdb update --resource-group $resourceGroupName --name $accountName --default-identity "SystemAssignedIdentity"
      
  4. Igény szerint eltávolíthatja a Azure Cosmos DB identitást a Azure Key Vault szabályzatból.

Kulcsrotálás

Az Azure Cosmos-fiók által használt ügyfél által felügyelt kulcs rotása kétféleképpen használhatja.

  • Hozza létre a jelenleg használt kulcs új verzióját a Azure Key Vault:

    Új kulcsverzió létrehozása

  • Cserélje le a jelenleg használt kulcsot egy teljesen más kulcsra a fiók kulcs URI-ját frissítve. A Azure Portal az Azure Cosmos-fiókjához, és válassza a bal oldali menü Adattitkosítás parancsát:

    Az Adattitkosítás menüpont

    Ezután cserélje le a Kulcs URI-t a használni kívánt új kulcsra, majd válassza a Mentés lehetőséget:

    A kulcs URI-nak frissítése

    Ugyanez az eredmény a PowerShellben a következő:

    $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
    

Az előző kulcs vagy kulcsverzió letiltható, miután Azure Key Vault naplók már nem mutatják a Azure Cosmos DB vagy kulcsverzión végzett tevékenységeket. 24 óra kulcsrotáció után nem szabad további tevékenységet folytatni az előző kulcson vagy kulcsverzión.

Hibakezelés

Ha Customer-Managed kulcsokat (CMK) használ a Azure Cosmos DB-ban, a Azure Cosmos DB visszaadja a hiba részleteit, valamint egy HTTP-alállapotkódot a válaszban. Ezzel az alállapotkóddal hibakeresést futtathat a probléma kiváltó okán. A támogatott HTTP-alállapotkódok listáját Azure Cosmos DB HTTP-állapotkódok cikkben talál.

Gyakori kérdések

Van további díj az ügyfél által kezelt kulcsok engedélyezéséhez?

Nem, a funkció engedélyezése díjmentes.

Milyen hatással vannak az ügyfél által kezelt kulcsok a kapacitástervezésre?

Felhasználó által kezelt kulcsok használata esetén az adatbázis-műveletek által felhasznált kérelemegységek száma az adatok titkosításához és visszafejtéséhez szükséges további feldolgozásnak megfelelően növekszik. Ez a kiépített kapacitás valamivel nagyobb kihasználtságát eredményezheti. Útmutatásért használja az alábbi táblázatot:

Művelettípus Kérelemegység növelése
Pontolvasások (elemek beolvasása az azonosítójuk alapján) + 5% műveletenként
Bármely írási művelet + 6% műveletenként
approx. + 0,06 RU indexelt tulajdonságonként
Lekérdezések, változáscsatorna olvasása vagy ütközéscsatorna + 15% műveletenként

Milyen adatokat titkosít a rendszer az ügyfél által kezelt kulcsokkal?

Az Azure Cosmos-fiókban tárolt összes adat az ügyfél által kezelt kulcsokkal van titkosítva, kivéve a következő metaadatokat:

Támogatottak az ügyfél által felügyelt kulcsok a meglévő Azure Cosmos-fiókok esetében?

Ez a funkció jelenleg csak új fiókokhoz érhető el.

Használhatók az ügyfelek által kezelt kulcsok az elemzési Azure Cosmos DB együtt?

Igen, Azure Synapse Link csak az ügyfél által felügyelt kulcsok konfigurálását támogatja a Azure Cosmos DB-fiók felügyelt identitásával. Az Azure Cosmos DB-fiók felügyelt identitását a Azure Key Vault hozzáférési szabályzatában kell használnia, mielőtt engedélyezné Azure Synapse linket a fiókjában.

Van terv a fiókszintű kulcsoknál részletesebb támogatásra?

Jelenleg nem, de a tárolószintű kulcsokat figyelembe kell venni.

Honnan tudom, hogy engedélyezve vannak-e az ügyfél által kezelt kulcsok az Azure Cosmos-fiókban?

A Azure Portal az Azure Cosmos-fiókjához, és figyelje meg az Adattitkosítás bejegyzést a bal oldali menüben; Ha ez a bejegyzés létezik, az ügyfél által felügyelt kulcsok engedélyezve vannak a fiókjában:

Az Adattitkosítás menüpont

Az Azure Cosmos-fiók adatait programozott módon is lekérheti, és a tulajdonság jelenlétét is meg tudja keyVaultKeyUri keresni. A fentiekben további, a PowerShellben és az Azure CLI-t használó módszerekről is szó lesz.

Hogyan befolyásolják az ügyfél által kezelt kulcsok a biztonsági mentést?

Azure Cosmos DB a fiókjában tárolt adatok rendszeres és automatikus biztonsági mentését. Ez a művelet biztonságimenti a titkosított adatokat. A visszaállított biztonsági mentéshez a biztonsági mentéskor használt titkosítási kulcsra van szükség. Ez azt jelenti, hogy nem történt visszavonás, és a biztonsági mentéskor használt kulcs verziója továbbra is engedélyezve lesz.

Hogyan vissza egy titkosítási kulcsot?

A kulcs visszavonásához tiltsa le a kulcs legújabb verzióját:

Kulcs verziójának letiltása

Ha vissza szeretné vonni az összes kulcsot egy Azure Key Vault példányból, törölheti a rendszerbiztonsági tagnak megadott hozzáférési Azure Cosmos DB:

A rendszerbiztonsági tag hozzáférési szabályzatának Azure Cosmos DB törlése

Milyen műveletek érhetők el az ügyfél által felügyelt kulcs visszavonása után?

A titkosítási kulcs visszavonása után az egyetlen lehetséges művelet a fiók törlése.

Következő lépések