Crittografia dei dati per il server flessibile di Database di Azure per MySQL con l'interfaccia della riga di comando di Azure
SI APPLICA A: Database di Azure per MySQL - Server flessibile
Questa esercitazione illustra come configurare e gestire la crittografia dei dati per il server flessibile di Database di Azure per MySQL con l'interfaccia della riga di comando di Azure.
In questa esercitazione apprenderai a:
- Creare un'istanza del server flessibile di Database di Azure per MySQL con la crittografia dei dati
- Aggiornare un'istanza del server flessibile di Database di Azure per MySQL esistente con la crittografia dei dati
- Uso di un modello di Azure Resource Manager per abilitare la crittografia dei dati
Prerequisiti
Un account Azure con una sottoscrizione attiva.
Se non si dispone di una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Nota
Al momento, con un account Azure gratuito, è possibile provare il server flessibile di Database di Azure per MySQL gratuitamente per 12 mesi. Per altre informazioni, vedere Prova gratuitamente il server flessibile di Database di Azure per MySQL.
Installare o aggiornare l'interfaccia della riga di comando di Azure alla versione più recente. Vedere Installare l'interfaccia della riga di comando di Azure.
Accedere all'account di Azure usando il comando az login. Prendere nota della proprietà ID che fa riferimento all'ID della Sottoscrizione per l'account Azure:
az login
- Se si hanno più sottoscrizioni, scegliere la sottoscrizione appropriata in cui si vuole creare il server usando il comando az account set:
az account set --subscription \<subscription id\>
- In Azure Key Vault, creare un insieme di credenziali delle chiavi o un HSM gestito e una chiave. Per essere usato come chiave gestita dal cliente, l’insieme di credenziali delle chiavi o un HSM gestito deve disporre delle proprietà seguenti:
az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
Protetto dalla rimozione definitiva:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --enable-purge-protection true
Impostazione dei giorni di conservazione su 90:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90
Per essere usata come chiave gestita dal cliente, la chiave deve disporre degli attributi seguenti:
- Nessuna data di scadenza
- Non disabilitato
- Eseguire le operazioni List , Get , Wrap , Unwrap
- L'attributo recoverylevel impostato su Ripristinabile (è necessario abilitare l'eliminazione temporanea con periodo di conservazione impostato su 90 giorni)
- È abilitata la protezione dalla rimozione
È possibile verificare gli attributi della chiave sopra indicati usando il comando seguente:
az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>
Aggiornare un'istanza del server flessibile di Database di Azure per MySQL esistente con la crittografia dei dati
Impostare o modificare la chiave e l'identità per la crittografia dei dati:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity
Disabilitare la crittografia dei dati per il server flessibile di Database di Azure per MySQL:
az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption
Creare un'istanza del server flessibile di Database di Azure per MySQL abilitando la ridondanza geografica e la crittografia dei dati
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
Impostare o modificare la chiave, l'identità, la chiave e l'identità di backup per la crittografia dei dati con il backup con ridondanza geografica:
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
Usare un modello di Azure Resource Manager per abilitare la crittografia dei dati
I parametri identityUri e primaryKeyUri sono rispettivamente l'ID risorsa dell'identità e della chiave gestita dall'utente.
"$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"
}
]
}