Delen via


Gegevensversleuteling voor Azure Database for MySQL - Flexibele server met Azure CLI

VAN TOEPASSING OP: Azure Database for MySQL - Flexibele server

In deze zelfstudie leert u hoe u gegevensversleuteling instelt en beheert voor een flexibele Azure Database for MySQL-server met behulp van Azure CLI.

In deze zelfstudie leert u het volgende:

  • Een exemplaar van een flexibele Azure Database for MySQL-server maken met gegevensversleuteling
  • Een bestaand exemplaar van een flexibele Azure Database for MySQL-server bijwerken met gegevensversleuteling
  • Een Azure Resource Manager-sjabloon gebruiken om gegevensversleuteling in te schakelen

Vereisten

  • Een Azure-account met een actief abonnement.

  • Als u geen Azure-abonnement hebt, maakt u een gratis Azure-account voordat u begint.

    Notitie

    Met een gratis Azure-account kunt u azure Database for MySQL flexibele server nu 12 maanden gratis proberen. Zie Azure Database for MySQL Flexibele server gratis uitproberen voor meer informatie.

  • Azure CLI installeren of upgraden naar de nieuwste versie. Zie Azure CLI installeren.

  • Meld u aan bij het Azure-account met behulp van de opdracht az login . Noteer de id-eigenschap, die verwijst naar de abonnements-id voor uw Azure-account:

az login
  • Als u meerdere abonnementen hebt, kiest u het juiste abonnement waarin u de server wilt maken met behulp van de opdracht az account set:
az account set --subscription \<subscription id\>
  • Maak in Azure Key Vault een sleutelkluis of beheerde HSM en een sleutel. De sleutelkluis of beheerde HSM moet de volgende eigenschappen hebben die moeten worden gebruikt als een door de klant beheerde sleutel:

Voorlopig verwijderen:

az resource update --id $(az keyvault show --name \ \<key\_vault\_name\> -o tsv | awk '{print $1}') --set \ properties.enableSoftDelete=true

Beveiligd opschonen:

az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --enable-purge-protection true

Retentiedagen ingesteld op 90 dagen:

az keyvault update --name \<key\_vault\_name\> --resource-group \<resource\_group\_name\> --retention-days 90

De sleutel moet de volgende kenmerken hebben om te kunnen worden gebruikt als een door de klant beheerde sleutel:

  • Geen vervaldatums
  • Niet uitgeschakeld
  • Lijst uitvoeren, Ophalen, Teruglopen, Uitpakken
  • het kenmerk recoverylevel is ingesteld op Herstelbaar (hiervoor is voorlopig verwijderen ingeschakeld met retentieperiode ingesteld op 90 dagen)
  • Beveiliging opschonen ingeschakeld

U kunt de bovenstaande kenmerken van de sleutel controleren met behulp van de volgende opdracht:

az keyvault key show --vault-name \<key\_vault\_name\> -n \<key\_name\>

Een bestaand exemplaar van een flexibele Azure Database for MySQL-server bijwerken met gegevensversleuteling

Sleutel en identiteit instellen of wijzigen voor gegevensversleuteling:

az mysql flexible-server update --resource-group testGroup --name testserver \\ --key \<key identifier of newKey\> --identity newIdentity

Gegevensversleuteling uitschakelen voor flexibele Azure Database for MySQL-server:

az mysql flexible-server update --resource-group testGroup --name testserver --disable-data-encryption

Een azure Database for MySQL Flexible Server-exemplaar maken met geografisch redundante back-up en gegevensversleuteling ingeschakeld

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

Sleutel, identiteit, back-upsleutel en back-upidentiteit instellen of wijzigen voor gegevensversleuteling met geografisch redundante back-up:

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

Een Azure Resource Manager-sjabloon gebruiken om gegevensversleuteling in te schakelen

De params identityUri en primaryKeyUri zijn respectievelijk de resource-id van de door de gebruiker beheerde identiteit en de door de gebruiker beheerde sleutel.

    "$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"
        }
    ]
}

Volgende stappen