Szyfrowanie danych dla usługi Azure Database for MySQL — serwer elastyczny za pomocą interfejsu wiersza polecenia platformy Azure
W tym samouczku pokazano, jak skonfigurować szyfrowanie danych dla usługi Azure Database for MySQL — serwer elastyczny i zarządzać nim przy użyciu interfejsu wiersza polecenia platformy Azure.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie wystąpienia serwera elastycznego usługi Azure Database for MySQL przy użyciu szyfrowania danych
- Aktualizowanie istniejącego wystąpienia serwera elastycznego usługi Azure Database for MySQL przy użyciu szyfrowania danych
- Używanie szablonu usługi Azure Resource Manager do włączania szyfrowania danych
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją.
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
Uwaga
Bezpłatne konto platformy Azure umożliwia teraz bezpłatne wypróbowanie usługi Azure Database for MySQL — elastyczny serwer przez 12 miesięcy. Aby uzyskać więcej informacji, zobacz Używanie bezpłatnego konta platformy Azure do bezpłatnego wypróbowania usługi Azure Database for MySQL — serwer elastyczny bezpłatnie.
Zainstaluj lub uaktualnij interfejs wiersza polecenia platformy Azure do najnowszej wersji. Zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Zaloguj się do konta platformy Azure przy użyciu polecenia az login . Zanotuj właściwość ID, która odwołuje się do identyfikatora subskrypcji dla konta platformy Azure:
az login
- Jeśli masz wiele subskrypcji, wybierz odpowiednią subskrypcję, w której chcesz utworzyć serwer przy użyciu polecenia az account set:
az account set --subscription \<subscription id\>
- W usłudze Azure Key Vault utwórz magazyn kluczy lub zarządzany moduł HSM i klucz. Magazyn kluczy lub zarządzany moduł HSM musi mieć następujące właściwości do użycia jako klucz zarządzany przez klienta:
az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --enable-purge-protection true
Dni przechowywania ustawione na 90 dni:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90
Klucz musi mieć następujące atrybuty do użycia jako klucz zarządzany przez klienta:
- Brak dat wygaśnięcia
- Niewyłączone
- Wykonywanie operacji list , Get , Wrap , Unwrap
- atrybut recoverylevel ustawiony na wartość Możliwe do odzyskania (wymaga to usunięcia nietrwałego z okresem przechowywania ustawionym na 90 dni)
- Włączono ochronę przeczyszczania
Powyższe atrybuty klucza można zweryfikować przy użyciu następującego polecenia:
az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>
Aktualizowanie istniejącego wystąpienia serwera elastycznego usługi Azure Database for MySQL przy użyciu szyfrowania danych
Ustaw lub zmień klucz i tożsamość na potrzeby szyfrowania danych:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity
Wyłącz szyfrowanie danych dla elastycznego serwera usługi Azure Database for MySQL:
az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption
Tworzenie wystąpienia serwera elastycznego usługi Azure Database for MySQL z włączoną geograficznie nadmiarową kopią zapasową i szyfrowaniem danych
az mysql flexible-server create -g testGroup -n testServer --location testLocation \\
--geo-redundant-backup Enabled \\
--key <key identifier of testKey> --identity testIdentity \\
--backup-key <key identifier of testBackupKey> --backup-identity testBackupIdentity
Ustaw lub zmień klucz, tożsamość, klucz kopii zapasowej i tożsamość kopii zapasowej na potrzeby szyfrowania danych za pomocą geograficznie nadmiarowej kopii zapasowej:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity \\ --backup-key \<key identifier of newBackupKey\> --backup-identity newBackupIdentity
Używanie szablonu usługi Azure Resource Manager do włączania szyfrowania danych
Parametrs identityUri i primaryKeyUri są identyfikatorem zasobu tożsamości zarządzanej użytkownika i kluczem zarządzanym przez użytkownika odpowiednio.
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"administratorLogin": {
"type": "string"
},
"administratorLoginPassword": {
"type": "securestring"
},
"location": {
"type": "string"
},
"serverName": {
"type": "string"
},
"serverEdition": {
"type": "string"
},
"vCores": {
"type": "int",
"defaultValue": 4
},
"storageSizeGB": {
"type": "int"
},
"haEnabled": {
"type": "string",
"defaultValue": "Disabled"
},
"availabilityZone": {
"type": "string"
},
"standbyAvailabilityZone": {
"type": "string"
},
"version": {
"type": "string"
},
"tags": {
"type": "object",
"defaultValue": {}
},
"backupRetentionDays": {
"type": "int"
},
"geoRedundantBackup": {
"type": "string"
},
"vmName": {
"type": "string",
"defaultValue": "Standard_B1ms"
},
"storageIops": {
"type": "int"
},
"storageAutogrow": {
"type": "string",
"defaultValue": "Enabled"
},
"autoIoScaling": {
"type": "string",
"defaultValue": "Disabled"
},
"vnetData": {
"type": "object",
"metadata": {
"description": "Vnet data is an object which contains all parameters pertaining to vnet and subnet"
},
"defaultValue": {
"virtualNetworkName": "testVnet",
"subnetName": "testSubnet",
"virtualNetworkAddressPrefix": "10.0.0.0/16",
"virtualNetworkResourceGroupName": "[resourceGroup().name]",
"location": "eastus2",
"subscriptionId": "[subscription().subscriptionId]",
"subnetProperties": {},
"isNewVnet": false,
"subnetNeedsUpdate": false,
"Network": {}
}
},
"identityUri": {
"type": "string",
"metadata": {
"description": "The resource ID of the identity used for data encryption"
}
},
"primaryKeyUri": {
"type": "string",
"metadata": {
"description": "The resource ID of the key used for data encryption"
}
}
},
"variables": {
"api": "2021-05-01",
"identityData": "[if(empty(parameters('identityUri')), json('null'), createObject('type', 'UserAssigned', 'UserAssignedIdentities', createObject(parameters('identityUri'), createObject())))]",
"dataEncryptionData": "[if(or(empty(parameters('identityUri')), empty(parameters('primaryKeyUri'))), json('null'), createObject('type', 'AzureKeyVault', 'primaryUserAssignedIdentityId', parameters('identityUri'), 'primaryKeyUri', parameters('primaryKeyUri')))]"
},
"resources": [
{
"apiVersion": "[variables('api')]",
"location": "[parameters('location')]",
"name": "[parameters('serverName')]",
"identity": "[variables('identityData')]",
"properties": {
"version": "[parameters('version')]",
"administratorLogin": "[parameters('administratorLogin')]",
"administratorLoginPassword": "[parameters('administratorLoginPassword')]",
"Network": "[if(empty(parameters('vnetData').Network), json('null'), parameters('vnetData').Network)]",
"Storage": {
"StorageSizeGB": "[parameters('storageSizeGB')]",
"Iops": "[parameters('storageIops')]",
"Autogrow": "[parameters('storageAutogrow')]",
"AutoIoScaling": "[parameters('autoIoScaling')]"
},
"Backup": {
"backupRetentionDays": "[parameters('backupRetentionDays')]",
"geoRedundantBackup": "[parameters('geoRedundantBackup')]"
},
"availabilityZone": "[parameters('availabilityZone')]",
"highAvailability": {
"mode": "[parameters('haEnabled')]",
"standbyAvailabilityZone": "[parameters('standbyAvailabilityZone')]"
},
"dataEncryption": "[variables('dataEncryptionData')]"
},
"sku": {
"name": "[parameters('vmName')]",
"tier": "[parameters('serverEdition')]",
"capacity": "[parameters('vCores')]"
},
"tags": "[parameters('tags')]",
"type": "Microsoft.DBforMySQL/flexibleServers"
}
]
}