Delen via


Versleutelde gegevens bulksgewijs laden naar kolommen met Always Encrypted

van toepassing op:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

Als u versleutelde gegevens wilt laden zonder metagegevenscontroles uit te voeren op de server tijdens bulkkopiebewerkingen, maakt u de gebruiker met de ALLOW_ENCRYPTED_VALUE_MODIFICATIONS optie. Deze optie is bedoeld voor gebruik door verouderde hulpprogramma's of ETL-werkstromen (Extract-Transform-Load) van derden die always encrypted niet kunnen gebruiken. Hierdoor kan een gebruiker versleutelde gegevens veilig verplaatsen van de ene set tabellen, die versleutelde kolommen bevat, naar een andere set tabellen met versleutelde kolommen (in dezelfde of een andere database).

De optie ALLOW_ENCRYPTED_VALUE_MODIFICATIONS

Zowel CREATE USER alsALTER USER hebben een ALLOW_ENCRYPTED_VALUE_MODIFICATIONS optie. Als deze optie is ingesteld op ON (de standaardinstelling), OFFonderdrukt deze optie cryptografische metagegevenscontroles op de server in bulkkopiebewerkingen, waardoor de gebruiker versleutelde gegevens tussen tabellen of databases bulksgewijs kan kopiëren zonder de gegevens te ontsleutelen.

Scenario's voor gegevensmigratie

In de volgende tabel ziet u de aanbevolen instellingen die geschikt zijn voor verschillende migratiescenario's.

Schermopname van een tabel met de aanbevolen instellingen die geschikt zijn voor verschillende migratiescenario's.

Versleutelde gegevens bulksgewijs laden

Gebruik het volgende proces om versleutelde gegevens te laden.

  1. Stel de optie in op ON voor de gebruiker die het doelwit is van de bulkcopybewerking in de database. Bijvoorbeeld:

     ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;
    
  2. Voer de toepassing of het hulpprogramma voor bulksgewijs kopiëren uit om verbinding te maken met die gebruiker. (Als uw toepassing gebruikmaakt van een clientstuurprogramma met Always Encrypted, moet u ervoor zorgen dat de verbindingsreeks voor de gegevensbron niet bevat column encryption setting=enabled om ervoor te zorgen dat de gegevens die zijn opgehaald uit versleutelde kolommen, versleuteld blijven. Zie Toepassingen ontwikkelen met Always Encrypted voor meer informatie.)

  3. Stel de ALLOW_ENCRYPTED_VALUE_MODIFICATIONS optie weer in op OFF. Bijvoorbeeld:

    ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = OFF;
    

Potentieel voor beschadiging van gegevens

Onjuist gebruik van deze optie kan leiden tot beschadiging van gegevens. Met de ALLOW_ENCRYPTED_VALUE_MODIFICATIONS optie kan de gebruiker gegevens invoegen in versleutelde kolommen in de database, inclusief gegevens die zijn versleuteld met verschillende sleutels, onjuist versleuteld of helemaal niet versleuteld. Als de gebruiker per ongeluk de gegevens kopieert die niet correct zijn versleuteld met behulp van het versleutelingsschema (kolomversleutelingssleutel, algoritme, versleutelingstype) dat is ingesteld voor de doelkolom, kunt u de gegevens niet ontsleutelen (de gegevens zijn beschadigd). Deze optie moet zorgvuldig worden gebruikt, omdat dit kan leiden tot beschadigde gegevens in de database.

In het volgende scenario ziet u hoe het onjuist importeren van gegevens kan leiden tot beschadigde gegevens:

  1. De optie is ingesteld op ON voor een gebruiker.

  2. De gebruiker voert de toepassing uit die verbinding maakt met de database. De toepassing maakt gebruik van bulk-API's om waarden voor tekst zonder opmaak in te voegen in versleutelde kolommen. De toepassing verwacht dat een clientstuurprogramma met Always Encrypted de gegevens bij het invoegen versleutelt. De toepassing is echter onjuist geconfigureerd, zodat deze een stuurprogramma gebruikt dat Always Encrypted niet ondersteunt of dat de verbindingsreeks niet bevat column encryption setting=enabled.

  3. De toepassing verzendt waarden voor tekst zonder opmaak naar de server. Omdat cryptografische metagegevenscontroles zijn uitgeschakeld op de server voor de gebruiker, kunnen de onjuiste gegevens (tekst zonder opmaak in plaats van correct versleutelde codering) worden ingevoegd in een versleutelde kolom.

  4. Dezelfde toepassing of een andere toepassing maakt verbinding met de database met behulp van een stuurprogramma met Always Encrypted en met column encryption setting=enabled in de verbindingsreeks en haalt de gegevens op. De toepassing verwacht dat de gegevens transparant worden ontsleuteld. Het stuurprogramma kan de gegevens echter niet ontsleutelen omdat de gegevens onjuiste coderingstekst zijn.

Best practice

Gebruik aangewezen gebruikersaccounts voor langdurige workloads met deze optie.

Voor kortlopende toepassingen of hulpprogramma's voor bulksgewijs kopiëren die versleutelde gegevens moeten verplaatsen zonder deze te ontsleutelen, stelt u de optie in op ON direct voordat u de toepassing uitvoert en stelt u deze weer in op UIT direct na het uitvoeren van de bewerking.

Gebruik deze optie niet voor het ontwikkelen van nieuwe toepassingen. Gebruik in plaats daarvan een clientstuurprogramma dat een API biedt voor het onderdrukken van cryptografische metagegevenscontroles voor één sessie, zoals de AllowEncryptedValueModifications optie in .NET Framework Data Provider voor SQL Server: zie Versleutelde gegevens kopiëren met behulp van SqlBulkCopy.