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 bulksgewijs kopiëren, maakt u de gebruiker met de optie ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. Deze optie is bedoeld om te worden gebruikt 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 als ALTER USER hebben de optie ALLOW_ENCRYPTED_VALUE_MODIFICATIONS. Als deze optie is ingesteld op AAN (de standaardinstelling is UIT), onderdrukt deze optie controles van cryptografische metagegevens op de server in bulksgewijze kopieerbewerkingen, 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.

Bulksgewijs laden van versleutelde gegevens

Gebruik het volgende proces om versleutelde gegevens te laden.

  1. Stel de optie in op AAN voor de gebruiker in de database die het doel is voor de bulkkopiebewerking. Bijvoorbeeld:
 ALTER USER Bob WITH ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON;  
  1. 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 geen instelling voor kolomversleuteling=ingeschakeld bevat om ervoor te zorgen dat de gegevens die zijn opgehaald uit versleutelde kolommen, versleuteld blijven. Zie Toepassingen ontwikkelen met Always Encryptedvoor meer informatie.

  2. Stel de optie ALLOW_ENCRYPTED_VALUE_MODIFICATIONS weer in op UIT. 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 optie ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 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) die 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 AAN 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 geen kolomversleutelingsinstelling =ingeschakeldbevat.

  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 of een andere toepassing maakt verbinding met de database met behulp van een always encrypted-stuurprogramma en met kolomversleutelingsinstelling=ingeschakeld 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 direct in op AAN voordat u de toepassing uitvoert en stelt u deze onmiddellijk na het uitvoeren van de bewerking weer in op UIT.

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 optie AllowEncryptedValueModifications in .NET Framework-gegevensprovider voor SQL Server: zie Versleutelde gegevens kopiëren met behulp van SqlBulkCopy.

Volgende stappen

Zie ook