Dvojité šifrování neaktivních uložených dat ve službě Azure HDInsight
Tento článek popisuje metody šifrování neaktivních uložených dat v clusterech Azure HDInsight. Šifrování neaktivních uložených dat označuje šifrování na spravovaných discích (datové disky, disky operačního systému a dočasné disky) připojené k virtuálním počítačům clusteru HDInsight.
Tento dokument neřeší data uložená ve vašem účtu Azure Storage. Vaše clustery můžou mít jeden nebo více připojených účtů Azure Storage, ve kterých můžou být šifrovací klíče spravované microsoftem nebo spravované zákazníkem, ale šifrovací služba se liší. Další informace o šifrování služby Azure Storage najdete v tématu Šifrování neaktivních uložených dat ve službě Azure Storage.
Úvod
V Azure existují tři hlavní role spravovaných disků: datový disk, disk s operačním systémem a dočasný disk. Další informace o různých typech spravovaných disků najdete v tématu Úvod do spravovaných disků Azure.
HDInsight podporuje více typů šifrování ve dvou různých vrstvách:
- Šifrování na straně serveru (SSE) – SSE provádí služba úložiště. V HDInsight se SSE používá k šifrování disků operačního systému a datových disků. Ve výchozím nastavení je povolená. SSE je šifrovací služba vrstvy 1.
- Šifrování na hostiteli pomocí klíče spravovaného platformou – Podobně jako SSE tento typ šifrování provádí služba úložiště. Je to ale jenom pro dočasné disky a ve výchozím nastavení není povolená. Šifrování na hostiteli je také šifrovací služba vrstvy 1.
- Šifrování neaktivních uložených dat pomocí klíče spravovaného zákazníkem – Tento typ šifrování lze použít na datech a dočasných discích. Ve výchozím nastavení není povolená a vyžaduje, aby zákazník zadal vlastní klíč prostřednictvím služby Azure Key Vault. Šifrování neaktivních uložených dat je šifrovací služba vrstvy 2.
Tyto typy jsou shrnuté v následující tabulce.
Typ clusteru | Disk s operačním systémem (spravovaný disk) | Datový disk (spravovaný disk) | Dočasný datový disk (místní SSD) |
---|---|---|---|
Kafka, HBase s akcelerovanými zápisy | Vrstva 1: Šifrování SSE ve výchozím nastavení | Vrstva 1: Šifrování SSE ve výchozím nastavení, vrstva 2: Volitelné šifrování neaktivních uložených dat pomocí CMK | Vrstva 1: Volitelné šifrování v hostiteli pomocí PMK, vrstva 2: Volitelné šifrování neaktivních uložených dat pomocí CMK |
Všechny ostatní clustery (Spark, Interactive, Hadoop, HBase bez akcelerovaných zápisů) | Vrstva 1: Šifrování SSE ve výchozím nastavení | – | Vrstva 1: Volitelné šifrování v hostiteli pomocí PMK, vrstva 2: Volitelné šifrování neaktivních uložených dat pomocí CMK |
Šifrování neaktivních uložených dat pomocí klíčů spravovaných zákazníkem
Šifrování klíče spravovaného zákazníkem je proces o jednom kroku, který se zpracovává během vytváření clusteru bez dalších nákladů. Stačí autorizovat spravovanou identitu ve službě Azure Key Vault a přidat šifrovací klíč při vytváření clusteru.
Datové disky i dočasné disky na každém uzlu clusteru se šifrují pomocí symetrického šifrovacího klíče dat (DEK). Klíč DEK je chráněný pomocí šifrovacího klíče klíče (KEK) z trezoru klíčů. Procesy šifrování a dešifrování se zpracovávají výhradně službou Azure HDInsight.
Pro disky s operačním systémem připojené k virtuálním počítačům clusteru je k dispozici pouze jedna vrstva šifrování (PMK). Doporučuje se, aby zákazníci nekopírovali citlivá data na disky s operačním systémem, pokud je pro jejich scénáře vyžadováno šifrování CMK.
Pokud je v trezoru klíčů, ve kterém je uložený šifrovací klíč disku, je povolená brána firewall trezoru klíčů, musí být do konfigurace brány firewall trezoru klíčů přidány IP adresy místního poskytovatele prostředků služby HDInsight pro oblast, ve které se cluster nasadí. To je nezbytné, protože HDInsight není důvěryhodnou službou Azure Key Vault.
Klíče v trezoru klíčů můžete bezpečně otáčet pomocí webu Azure Portal nebo Azure CLI. Když se klíč otočí, cluster HDInsight začne nový klíč používat během několika minut. Povolte funkce ochrany klíče obnovitelného odstranění , které chrání před scénáři ransomwaru a náhodným odstraněním. Trezory klíčů bez této funkce ochrany se nepodporují.
Začínáme s klíči spravovanými zákazníkem
Pokud chcete vytvořit cluster HDInsight spravovaný zákazníkem, provedeme následující kroky:
- Vytváření spravovaných identit pro prostředky Azure
- Vytvoření služby Azure Key Vault
- Vytvoření klíče
- Vytvoření zásad přístupu
- Vytvoření clusteru HDInsight s povoleným klíčem spravovaným zákazníkem
- Obměně šifrovacího klíče
Každý krok je podrobně vysvětlený v jedné z následujících částí.
Vytváření spravovaných identit pro prostředky Azure
Vytvořte spravovanou identitu přiřazenou uživatelem pro ověření ve službě Key Vault.
Konkrétní kroky najdete v tématu Vytvoření spravované identity přiřazené uživatelem. Další informace o tom, jak spravované identity fungují ve službě Azure HDInsight, najdete v tématu Spravované identity ve službě Azure HDInsight. Při přidávání do zásad přístupu ke službě Key Vault nezapomeňte uložit ID prostředku spravované identity.
Vytvoření služby Azure Key Vault
Vytvořte trezor klíčů. Konkrétní kroky najdete v tématu Vytvoření služby Azure Key Vault .
HDInsight podporuje pouze Službu Azure Key Vault. Pokud máte vlastní trezor klíčů, můžete své klíče importovat do služby Azure Key Vault. Nezapomeňte, že trezor klíčů musí mít povolené obnovitelné odstranění . Další informace o importu existujících klíčů najdete v tématu O klíčích, tajných klíčích a certifikátech.
Vytvoření klíče
V novém trezoru klíčů přejděte do části Klíče> nastavení>+ Vygenerovat/Importovat.
Zadejte název a pak vyberte Vytvořit. Udržujte výchozí typ klíče RSA.
Když se vrátíte na stránku Klíče , vyberte klíč, který jste vytvořili.
Výběrem verze otevřete stránku Verze klíče. Pokud pro šifrování clusteru HDInsight používáte vlastní klíč, musíte zadat identifikátor URI klíče. Zkopírujte identifikátor klíče a uložte ho někam, dokud nebudete připraveni vytvořit cluster.
Vytvoření zásad přístupu
V novém trezoru klíčů přejděte na Zásady> přístupu k nastavení>+ Přidat zásady přístupu.
Na stránce Přidat zásadu přístupu zadejte následující informace:
Vlastnost Popis Oprávnění ke klíči Vyberte Získat, Rozbalit klíč a Zalamovat klíč. Oprávnění pro tajné kódy Vyberte Získat, Nastavit a Odstranit. Výběr objektu zabezpečení Vyberte spravovanou identitu přiřazenou uživatelem, kterou jste vytvořili dříve. Vyberte přidat.
Zvolte Uložit.
Vytvoření clusteru s šifrováním disků spravovaných zákazníkem
Teď jste připraveni vytvořit nový cluster HDInsight. Klíče spravované zákazníkem je možné použít pouze u nových clusterů během vytváření clusteru. Z clusterů klíčů spravovaných zákazníkem nejde odebrat šifrování a klíče spravované zákazníkem se nedají přidat do existujících clusterů.
Od verze z listopadu 2020 podporuje HDInsight vytváření clusterů pomocí identifikátorů URI klíčů bez verzí i verzí. Pokud vytvoříte cluster s identifikátorem URI klíče bez verze, cluster HDInsight se pokusí provést automatickou obměnu klíčů při aktualizaci klíče ve službě Azure Key Vault. Pokud vytvoříte cluster s identifikátorem URI klíče s verzí, budete muset provést ruční obměnu klíčů, jak je popsáno v části Obměna šifrovacího klíče.
U clusterů vytvořených před vydáním z listopadu 2020 budete muset ručně provést obměnu klíčů pomocí identifikátoru URI klíče s verzí.
Typy virtuálních počítačů, které podporují šifrování disků
Velikost | Virtuální procesory | Paměť: GiB |
---|---|---|
Standard_D4a_v4 | 4 | 16 |
Standard_D8a_v4 | 8 | 32 |
Standard_D16a_v4 | 16 | 64 |
Standard_D32a_v4 | 32 | 128 |
Standard_D48a_v4 | 48 | 192 |
Standard_D64a_v4 | 64 | 256 |
Standard_D96a_v4 | 96 | 384 |
Standard_E64is_v3 | 64 | 432 |
Standard_E20s_V3 | 20 | 160 |
Standard_E2s_V3 | 2 | 16 |
Standard_E2a_v4 | 2 | 16 |
Standard_E4a_v4 | 4 | 32 |
Standard_E8a_v4 | 8 | 64 |
Standard_E16a_v4 | 16 | 128 |
Standard_E20a_v4 | 20 | 160 |
Standard_E32a_v4 | 32 | 256 |
Standard_E48a_v4 | 48 | 384 |
Standard_E64a_v4 | 64 | 512 |
Standard_E96a_v4 | 96 | 672 |
Standard_DS3_v2 | 4 | 14 |
Standard_DS4_v2 | 8 | 28 |
Standard_DS5_v2 | 16 | 56 |
Standard_DS12_v2 | 4 | 28 |
Standard_DS13_v2 | 8 | 56 |
Standard_DS14_v2 | 16 | 112 |
Pomocí webu Azure Portal
Během vytváření clusteru můžete použít buď klíč s verzí, nebo klíč bez verzí následujícím způsobem:
- Verze – Během vytváření clusteru zadejte úplný identifikátor klíče, včetně verze klíče. Například
https://contoso-kv.vault.azure.net/keys/myClusterKey/46ab702136bc4b229f8b10e8c2997fa4
. - Bez verzí – během vytváření clusteru zadejte pouze identifikátor klíče. Například
https://contoso-kv.vault.azure.net/keys/myClusterKey
.
Musíte také přiřadit spravovanou identitu ke clusteru.
Pomocí Azure CLI
Následující příklad ukazuje, jak pomocí Azure CLI vytvořit nový cluster Apache Spark s povoleným šifrováním disku. Další informace najdete v tématu Azure CLI az hdinsight create. encryption-key-version
Parametr je volitelný.
az hdinsight create -t spark -g MyResourceGroup -n MyCluster \
-p "HttpPassword1234!" --workernode-data-disks-per-node 2 \
--storage-account MyStorageAccount \
--encryption-key-name SparkClusterKey \
--encryption-key-version 00000000000000000000000000000000 \
--encryption-vault-uri https://MyKeyVault.vault.azure.net \
--assign-identity MyMSI
Použití šablon Azure Resource Manageru
Následující příklad ukazuje, jak pomocí šablony Azure Resource Manageru vytvořit nový cluster Apache Spark s povoleným šifrováním disku. Další informace najdete v tématu Co jsou šablony ARM? Vlastnost diskEncryptionKeyVersion
šablony Resource Manageru je volitelná.
V tomto příkladu se k volání šablony používá PowerShell.
$templateFile = "azuredeploy.json"
$ResourceGroupName = "MyResourceGroup"
$clusterName = "MyCluster"
$password = ConvertTo-SecureString 'HttpPassword1234!' -AsPlainText -Force
$diskEncryptionVaultUri = "https://MyKeyVault.vault.azure.net"
$diskEncryptionKeyName = "SparkClusterKey"
$diskEncryptionKeyVersion = "00000000000000000000000000000000"
$managedIdentityName = "MyMSI"
New-AzResourceGroupDeployment `
-Name mySpark `
-TemplateFile $templateFile `
-ResourceGroupName $ResourceGroupName `
-clusterName $clusterName `
-clusterLoginPassword $password `
` -sshPassword $password `
-diskEncryptionVaultUri $diskEncryptionVaultUri `
-diskEncryptionKeyName $diskEncryptionKeyName `
-diskEncryptionKeyVersion $diskEncryptionKeyVersion `
-managedIdentityName $managedIdentityName
Obsah šablony správy prostředků: azuredeploy.json
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "0.9.0.0",
"parameters": {
"clusterName": {
"type": "string",
"metadata": {
"description": "The name of the HDInsight cluster to create."
}
},
"clusterLoginUserName": {
"type": "string",
"defaultValue": "admin",
"metadata": {
"description": "These credentials can be used to submit jobs to the cluster and to log into cluster dashboards."
}
},
"clusterLoginPassword": {
"type": "securestring",
"metadata": {
"description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location where all azure resources will be deployed."
}
},
"sshUserName": {
"type": "string",
"defaultValue": "sshuser",
"metadata": {
"description": "These credentials can be used to remotely access the cluster."
}
},
"sshPassword": {
"type": "securestring",
"metadata": {
"description": "The password must be at least 10 characters in length and must contain at least one digit, one non-alphanumeric character, and one upper or lower case letter."
}
},
"headNodeSize": {
"type": "string",
"defaultValue": "Standard_D12_v2",
"metadata": {
"description": "The VM size of the head nodes."
}
},
"workerNodeSize": {
"type": "string",
"defaultValue": "Standard_D13_v2",
"metadata": {
"description": "The VM size of the worker nodes."
}
},
"diskEncryptionVaultUri": {
"type": "string",
"metadata": {
"description": "The Key Vault DNSname."
}
},
"diskEncryptionKeyName": {
"type": "string",
"metadata": {
"description": "The Key Vault key name."
}
},
"diskEncryptionKeyVersion": {
"type": "string",
"metadata": {
"description": "The Key Vault key version for the selected key."
}
},
"managedIdentityName": {
"type": "string",
"metadata": {
"description": "The user-assigned managed identity."
}
}
},
"variables": {
"defaultStorageAccount": {
"name": "[uniqueString(resourceGroup().id)]",
"type": "Standard_LRS"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"name": "[variables('defaultStorageAccount').name]",
"location": "[parameters('location')]",
"apiVersion": "2019-06-01",
"sku": {
"name": "[variables('defaultStorageAccount').type]"
},
"kind": "Storage",
"properties": {}
},
{
"apiVersion": "2018-06-01-preview",
"name": "[parameters('clusterName')]",
"type": "Microsoft.HDInsight/clusters",
"location": "[parameters('location')]",
"properties": {
"clusterVersion": "3.6",
"osType": "Linux",
"tier": "standard",
"clusterDefinition": {
"kind": "spark",
"componentVersion": {
"Spark": "2.3"
},
"configurations": {
"gateway": {
"restAuthCredential.isEnabled": true,
"restAuthCredential.username": "[parameters('clusterLoginUserName')]",
"restAuthCredential.password": "[parameters('clusterLoginPassword')]"
}
}
},
"storageProfile": {
"storageaccounts": [
{
"name": "[replace(replace(reference(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').primaryEndpoints.blob,'https://',''),'/','')]",
"isDefault": true,
"container": "[parameters('clusterName')]",
"key": "[listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('defaultStorageAccount').name), '2019-06-01').keys[0].value]"
}
]
},
"computeProfile": {
"roles": [
{
"name": "headnode",
"minInstanceCount": 1,
"targetInstanceCount": 2,
"hardwareProfile": {
"vmSize": "[parameters('headNodeSize')]"
},
"osProfile": {
"linuxOperatingSystemProfile": {
"username": "[parameters('sshUserName')]",
"password": "[parameters('sshPassword')]"
},
},
},
{
"name": "workernode",
"targetInstanceCount": 1,
"hardwareProfile": {
"vmSize": "[parameters('workerNodeSize')]"
},
"osProfile": {
"linuxOperatingSystemProfile": {
"username": "[parameters('sshUserName')]",
"password": "[parameters('sshPassword')]"
},
},
}
]
},
"minSupportedTlsVersion": "1.2",
"diskEncryptionProperties": {
"vaultUri": "[parameters('diskEncryptionVaultUri')]",
"keyName": "[parameters('diskEncryptionKeyName')]",
"keyVersion": "[parameters('diskEncryptionKeyVersion')]",
"msiResourceId": "[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('managedIdentityName'))]"
}
},
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('managedIdentityName'))]": {}
}
}
}
]
}
Obměně šifrovacího klíče
Šifrovací klíče použité ve spuštěném clusteru můžete změnit pomocí webu Azure Portal nebo Azure CLI. Pro tuto operaci musí mít cluster přístup k aktuálnímu i zamýšlenému novému klíči, jinak operace otočit klíč selže. U clusterů vytvořených po vydání z listopadu 2020 můžete zvolit, jestli chcete, aby nový klíč měl verzi nebo ne. U clusterů vytvořených před vydáním z listopadu 2020 musíte při obměně šifrovacího klíče použít klíč s verzí.
Pomocí webu Azure Portal
Pokud chcete klíč otočit, potřebujete identifikátor URI základního trezoru klíčů. Až to uděláte, přejděte na portálu do části Vlastnosti clusteru HDInsight a klikněte na změnit klíč v části Adresa URL šifrovacího klíče disku. Zadejte adresu URL nového klíče a odešlete ho, aby se klíč otočil.
Pomocí Azure CLI
Následující příklad ukazuje, jak otočit šifrovací klíč disku pro existující cluster HDInsight. Další informace najdete v tématu Azure CLI az hdinsight rotate-disk-encryption-key.
az hdinsight rotate-disk-encryption-key \
--encryption-key-name SparkClusterKey \
--encryption-key-version 00000000000000000000000000000000 \
--encryption-vault-uri https://MyKeyVault.vault.azure.net \
--name MyCluster \
--resource-group MyResourceGroup
Nejčastější dotazy k šifrování klíčů spravovaných zákazníkem
Jak cluster HDInsight přistupuje k mému trezoru klíčů?
HDInsight přistupuje k vaší instanci služby Azure Key Vault pomocí spravované identity, kterou přidružíte ke clusteru HDInsight. Tuto spravovanou identitu je možné vytvořit před vytvořením clusteru nebo během vytváření clusteru. Musíte také udělit spravované identitě přístup k trezoru klíčů, ve kterém je klíč uložený.
Je tato funkce dostupná pro všechny clustery ve službě HDInsight?
Šifrování klíčů spravované zákazníkem je k dispozici pro všechny typy clusterů s výjimkou Sparku 2.1 a 2.2.
Můžu k šifrování různých disků nebo složek použít více klíčů?
Ne, všechny spravované disky a disky prostředků jsou šifrované stejným klíčem.
Co se stane, když cluster ztratí přístup k trezoru klíčů nebo klíči?
Pokud cluster ztratí přístup ke klíči, zobrazí se upozornění na portálu Apache Ambari. V tomto stavu operace Změnit klíč selže. Po obnovení přístupu ke klíči zmizí upozornění Ambari a operace, jako je obměny klíčů, se dají úspěšně provést.
Jak můžu cluster obnovit, když se klíče odstraní?
Vzhledem k tomu, že se podporují jenom povolené klíče obnovitelného odstranění, pokud se klíče obnoví v trezoru klíčů, měl by cluster znovu získat přístup ke klíčům. Pokud chcete obnovit klíč služby Azure Key Vault, přečtěte si téma Undo-AzKeyVaultKeyRemoval nebo az-keyvault-key-recover.
Pokud se cluster vertikálně navýší, budou nové uzly bez problémů podporovat klíče spravované zákazníkem?
Ano. Cluster potřebuje přístup k klíči v trezoru klíčů během vertikálního navýšení kapacity. Stejný klíč se používá k šifrování spravovaných disků i disků prostředků v clusteru.
Jsou klíče spravované zákazníkem dostupné v mém umístění?
Klíče spravované zákazníkem služby HDInsight jsou k dispozici ve všech veřejných cloudech a národních cloudech.
Šifrování na hostiteli pomocí klíčů spravovaných platformou
Povolení na webu Azure Portal
Šifrování na hostiteli je možné povolit při vytváření clusteru na webu Azure Portal.
Poznámka:
Pokud je povolené šifrování na hostiteli, nemůžete do clusteru HDInsight přidávat aplikace z Azure Marketplace.
Tato možnost umožňuje šifrování na hostiteli pro dočasné datové disky virtuálních počítačů HDInsight pomocí PMK. Šifrování na hostiteli se podporuje jenom u určitých skladových položek virtuálních počítačů v omezených oblastech a HDInsight podporuje následující konfiguraci a skladové položky uzlů.
Informace o správné velikosti virtuálního počítače pro cluster HDInsight najdete v tématu Výběr správné velikosti virtuálního počítače pro váš cluster Azure HDInsight. Výchozí skladová položka virtuálního počítače pro uzel Zookeeper při povolení šifrování v hostiteli bude DS2V2.
Povolení s využitím PowerShellu
Následující fragment kódu ukazuje, jak můžete vytvořit nový cluster Azure HDInsight s povoleným šifrováním v hostiteli pomocí PowerShellu. K povolení této funkce se používá parametr -EncryptionAtHost $true
.
$storageAccountResourceGroupName = "Group"
$storageAccountName = "yourstorageacct001"
$storageAccountKey = Get-AzStorageAccountKey `
-ResourceGroupName $storageAccountResourceGroupName `
-Name $storageAccountName | %{ $_.Key1 }
$storageContainer = "container002"
# Cluster configuration info
$location = "East US 2"
$clusterResourceGroupName = "Group"
$clusterName = "your-hadoop-002"
$clusterCreds = Get-Credential
# If the cluster's resource group doesn't exist yet, run:
# New-AzResourceGroup -Name $clusterResourceGroupName -Location $location
# Create the cluster
New-AzHDInsightCluster `
-ClusterType Hadoop `
-ClusterSizeInNodes 4 `
-ResourceGroupName $clusterResourceGroupName `
-ClusterName $clusterName `
-HttpCredential $clusterCreds `
-Location $location `
-DefaultStorageAccountName "$storageAccountName.blob.core.contoso.net" `
-DefaultStorageAccountKey $storageAccountKey `
-DefaultStorageContainer $storageContainer `
-SshCredential $clusterCreds `
-EncryptionAtHost $true `
Povolení pomocí Azure CLI
Následující fragment kódu ukazuje, jak vytvořit nový cluster Azure HDInsight s povoleným šifrováním na hostiteli pomocí Azure CLI. K povolení této funkce se používá parametr --encryption-at-host true
.
az hdinsight create -t spark -g MyResourceGroup -n MyCluster \\
-p "yourpass" \\
--storage-account MyStorageAccount --encryption-at-host true
Další kroky
- Další informace o službě Azure Key Vault najdete v tématu Co je Azure Key Vault.
- Přehled podnikového zabezpečení ve službě Azure HDInsight