Criptografia de dados para o Banco de Dados do Azure para MySQL - Servidor flexível com CLI do Azure
Este tutorial mostra como configurar e gerenciar a criptografia de dados para o Banco de Dados do Azure para o Servidor Flexível MySQL usando a CLI do Azure.
Neste tutorial, irá aprender a:
- Criar um Banco de Dados do Azure para a instância do Servidor Flexível MySQL com criptografia de dados
- Atualizar um Banco de Dados do Azure existente para a instância do Servidor Flexível MySQL com criptografia de dados
- Usando um modelo do Azure Resource Manager para habilitar a criptografia de dados
Pré-requisitos
Uma conta do Azure com uma subscrição ativa.
Se você não tiver uma assinatura do Azure, crie uma conta gratuita do Azure antes de começar.
Nota
Com uma conta gratuita do Azure, agora você pode experimentar o Banco de Dados do Azure para o Servidor Flexível MySQL gratuitamente por 12 meses. Para obter mais informações, consulte Usar uma conta gratuita do Azure para experimentar o Banco de Dados do Azure para MySQL - Servidor Flexível gratuitamente.
Instale ou atualize a CLI do Azure para a versão mais recente. Consulte Instalar a CLI do Azure.
Entre na conta do Azure usando o comando az login . Observe a propriedade ID, que se refere à ID de Assinatura da sua conta do Azure:
az login
- Se você tiver várias assinaturas, escolha a assinatura apropriada na qual deseja criar o servidor usando o comando az account set:
az account set --subscription \<subscription id\>
- No Cofre de Chaves do Azure, crie um cofre de chaves ou HSM gerenciado e uma chave. O cofre de chaves ou HSM gerenciado deve ter as seguintes propriedades para usar como uma chave gerenciada pelo cliente:
az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true
Proteção contra purga:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --enable-purge-protection true
Dias de retenção definidos para 90 dias:
az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90
A chave deve ter os seguintes atributos para a utilizar como uma chave gerida pelo cliente:
- Sem datas de validade
- Não está desativada
- Executar operações List, Obter, Encapsular, Desembrulhar
- atributo recoverylevel definido como Recoverable (isso requer soft-delete habilitado com período de retenção definido para 90 dias)
- Proteção contra limpeza ativada
Você pode verificar os atributos acima da chave usando o seguinte comando:
az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>
Atualizar um Banco de Dados do Azure existente para a instância do Servidor Flexível MySQL com criptografia de dados
Definir ou alterar chave e identidade para criptografia de dados:
az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity
Desabilite a criptografia de dados para o Banco de Dados do Azure para o Servidor Flexível MySQL:
az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption
Criar um Banco de Dados do Azure para a instância do Servidor Flexível MySQL com backup redundante geográfico e criptografia de dados habilitados
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
Defina ou altere chave, identidade, chave de backup e identidade de backup para criptografia de dados com backup com redundância 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
Usar um modelo do Azure Resource Manager para habilitar a criptografia de dados
Os parâmetros identityUri e primaryKeyUri são o ID de recurso da identidade gerenciada pelo usuário e a chave gerenciada pelo usuário, 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"
}
]
}