Cifrado de datos para el servidor flexible de Azure Database for MySQL con la CLI de Azure
En este tutorial se muestra cómo configurar y administrar el cifrado de datos para el servidor flexible de Azure Database for MySQL mediante la CLI de Azure.
En este tutorial, aprenderá a:
- Creación de una instancia de servidor flexible de Azure Database for MySQL con cifrado de datos
- Actualización de una instancia de servidor flexible de Azure Database for MySQL existente con cifrado de datos
- Uso de una plantilla de Azure Resource Manager para habilitar el cifrado de datos
Prerrequisitos
Una cuenta de Azure con una suscripción activa.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Nota:
Con una cuenta gratuita de Azure, ahora puede probar el servidor flexible de Azure Database for MySQL de forma gratuita durante 12 meses. Para más información, consulte Uso de una cuenta gratuita de Azure para probar Azure Database for MySQL: servidor flexible de forma gratuita.
Instale la CLI de Azure más reciente o actualice la que ya tiene a la versión más reciente. Consulte Instalación de la CLI de Azure.
Inicie sesión en la cuenta de Azure mediante el comando az login. Tenga en cuenta la propiedad ID, que hace referencia al Id. de suscripción de la cuenta de Azure:
az login
- Si tiene varias suscripciones, elija la más adecuada en la que quiera crear el servidor mediante el comando az account set:
az account set --subscription \<subscription id\>
- En Azure Key Vault, cree un almacén de claves o un HSM administrado y una clave. El almacén de claves o HSM administrado debe tener las siguientes propiedades para usarlas como clave administrada por el cliente:
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
Los días de retención se han establecido en 90 días
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90
La clave debe tener los siguientes atributos para que se pueda usar como clave administrada por el cliente:
- Sin fecha de expiración
- No deshabilitado
- Realice las acciones Enumerar , Comenzar , Ajustar , Desajustar
- El atributo recoverylevel establecido en Recoverable (esto requiere habilitar la eliminación temporal con el período de retención establecido en 90 días)
- Protección de purgas habilitada
Puede comprobar los atributos de la clave con el siguiente comando:
az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>
Actualización de una instancia de servidor flexible de Azure Database for MySQL existente con cifrado de datos
Establezca o cambie la clave y la identidad para el cifrado de datos:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity
Deshabilite el cifrado de datos para el servidor flexible de Azure Database for MySQL:
az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption
Creación de una instancia de servidor flexible de Azure Database for MySQL con copia de seguridad con redundancia geográfica y cifrado de datos habilitado
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
Establezca o cambie la clave, la identidad, la clave de copia de seguridad y la identidad de copia de seguridad para el cifrado de datos por una copia de seguridad con redundancia geográfica:
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
Utilice una plantilla de Azure Resource Manager para habilitar el cifrado de datos
Los parámetros identityUri y primaryKeyUri son el identificador de recurso de la identidad administrada por el usuario y la clave administrada por el usuario, respectivamente.
"$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"
}
]
}