Support per la crittografia trasparente dei dati nel SQL server - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Support per la crittografia trasparente dei dati nel SQL server

Amazon RDS supporta l'utilizzo di Transparent Data Encryption (TDE) per crittografare i dati archiviati sulle istanze DB che eseguono Microsoft SQL Server. TDEcrittografa automaticamente i dati prima che vengano scritti sullo storage e decripta automaticamente i dati quando i dati vengono letti dallo storage.

Amazon RDS supporta TDE le seguenti versioni ed edizioni SQL del server:

  • SQLEdizioni Server 2022 Standard ed Enterprise

  • SQLEdizioni Server 2019 Standard ed Enterprise

  • SQLServer 2017 Enterprise Edition

  • SQLEdizione Enterprise Server 2016

Transparent Data Encryption for SQL Server fornisce la gestione delle chiavi di crittografia utilizzando un'architettura a due livelli. Un certificato, generato dalla chiave master del database, viene utilizzato per proteggere le chiavi di crittografia dei dati. La chiave di crittografia del database esegue la crittografia e la decrittografia effettive dei dati nel database utente. Amazon RDS esegue il backup e gestisce la chiave master del database e il TDE certificato.

Transparent Data Encryption è utilizzata negli scenari in cui occorre crittografare i dati sensibili. Ad esempio, potresti dover fornire file di dati e backup a una terza parte o risolvere problemi di conformità relativi a norme di sicurezza. Non puoi crittografare i database di sistema per SQL Server, come i master database model or.

Una descrizione dettagliata di Transparent Data Encryption non rientra nell'ambito di questa guida, ma assicurati di comprendere i vantaggi e gli svantaggi in termini di sicurezza di ciascuna chiave e ciascun algoritmo di crittografia. Per informazioni su Transparent Data Encryption for SQL Server, vedere Transparent Data Encryption (TDE) nella documentazione Microsoft.

Attivazione TDE per RDS for SQL Server

Per attivare Transparent Data Encryption RDS per un'istanza DB for SQL Server, specifica l'TDEopzione in un gruppo di RDS opzioni associato a quell'istanza DB:

  1. Determina se la tua istanza DB è già associata a un gruppo di opzioni che dispone dell'TDEopzione. Per visualizzare il gruppo di opzioni a cui è associata un'istanza DB, usa la RDS console, il describe-db-instance AWS CLI comando o l'APIoperazione escribeDBInstancesD.

  2. Se l'istanza DB non è associata a un gruppo di opzioni TDE attivato, hai due scelte. È possibile creare un gruppo di opzioni e aggiungere l'TDEopzione oppure modificare il gruppo di opzioni associato per aggiungerlo.

    Nota

    Nella RDS console, l'opzione è denominataTRANSPARENT_DATA_ENCRYPTION. Nella AWS CLI mano RDSAPI, si chiamaTDE.

    Per informazioni sulla creazione o la modifica di un gruppo di opzioni, consulta Uso di gruppi di opzioni. Per informazioni sull'aggiunta di un'opzione a un gruppo di opzioni, consulta Aggiunta di un'opzione a un gruppo di opzioni.

  3. Associa l'istanza DB al gruppo di opzioni che include l'TDEopzione. Per informazioni su come associare un'istanza database con un gruppo di opzioni, consulta Modifica di un'istanza database Amazon RDS.

Considerazioni su gruppi di opzioni

L'TDEopzione è un'opzione persistente. Non può essere rimossa da un gruppo di opzioni, a meno che tutte le istanze database e i backup non siano più associati gruppo di opzioni. Dopo aver aggiunto l'TDEopzione a un gruppo di opzioni, il gruppo di opzioni può essere associato solo alle istanze DB che utilizzanoTDE. Per ulteriori informazioni sulle opzioni persistenti in un gruppo di opzioni, consulta Panoramica dei gruppi di opzioni.

Poiché l'TDEopzione è un'opzione persistente, è possibile che si verifichi un conflitto tra il gruppo di opzioni e un'istanza DB associata. Nelle seguenti situazioni si può verificare un conflitto:

  • Il gruppo di opzioni corrente dispone dell'TDEopzione e voi lo sostituite con un gruppo di opzioni che non dispone dell'TDEopzione.

  • Si esegue il ripristino da un'istantanea del database su una nuova istanza DB che non dispone di un gruppo di opzioni che contenga l'TDEopzione. Per ulteriori informazioni su questo scenario, consulta Considerazioni su gruppi di opzioni.

SQLConsiderazioni sulle prestazioni del server

L'utilizzo di Transparent Data Encryption può influire sulle prestazioni di un'istanza di SQL Server DB.

Le prestazioni dei database non crittografati possono anche essere ridotte se i database si trovano su un'istanza database con almeno un database crittografato. Ti consigliamo pertanto di mantenere i database crittografati e non crittografati su istanze database separate.

Crittografia dei dati attiva RDS per Server SQL

Quando l'TDEopzione viene aggiunta a un gruppo di opzioni, Amazon RDS genera un certificato che viene utilizzato nel processo di crittografia. Puoi quindi utilizzare il certificato per eseguire SQL istruzioni che crittografano i dati in un database sull'istanza DB.

L'esempio seguente utilizza il certificato RDS -created chiamato RDSTDECertificateName per crittografare un database chiamato. myDatabase

---------- Turning on TDE ------------- -- Find an RDS TDE certificate to use USE [master] GO SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%' GO USE [myDatabase] GO -- Create a database encryption key (DEK) using one of the certificates from the previous step CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName] GO -- Turn on encryption for the database ALTER DATABASE [myDatabase] SET ENCRYPTION ON GO -- Verify that the database is encrypted USE [master] GO SELECT name FROM sys.databases WHERE is_encrypted = 1 GO SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO

Il tempo necessario per crittografare un database SQL Server utilizzando TDE dipende da diversi fattori. Questi includono la dimensione dell'istanza DB, se l'istanza utilizza IOPS lo storage Provisioned, la quantità di dati e altri fattori.

Backup e ripristino dei TDE certificati su for Server RDS SQL

RDSfor SQL Server fornisce procedure archiviate per il backup, il ripristino e l'eliminazione dei certificati. TDE RDSfor SQL Server fornisce anche una funzione per la visualizzazione dei certificati utente ripristinati. TDE

TDEI certificati utente vengono utilizzati per ripristinare i database di RDS for SQL Server che sono locali e sono stati TDE attivati. Questi certificati hanno il prefisso UserTDECertificate_. Dopo aver ripristinato i database e prima di renderli disponibili per l'uso, RDS modifica i database che sono stati TDE attivati per utilizzare RDS certificati generati. TDE Questi certificati hanno il prefisso RDSTDECertificate.

TDEI certificati utente rimangono nell'istanza di RDS for SQL Server DB, a meno che non vengano eliminati utilizzando la rds_drop_tde_certificate stored procedure. Per ulteriori informazioni, consulta Eliminazione dei certificati ripristinati TDE.

È possibile utilizzare un TDE certificato utente per ripristinare altri database dall'istanza DB di origine. I database da ripristinare devono utilizzare lo stesso TDE certificato e devono essere stati TDE attivati. Non è necessario importare (ripristinare) nuovamente lo stesso certificato.

Prerequisiti

Prima di eseguire il backup o il ripristino TDE dei certificati su RDS for SQL Server, assicurati di eseguire le seguenti attività. Le prime tre sono descritte in Configurazione di backup e ripristino nativi.

  1. Crea bucket Amazon S3 per l'archiviazione di file di cui eseguire il backup e il ripristino.

    Ti consigliamo di utilizzare bucket separati per i backup dei database e per i backup dei TDE certificati.

  2. Crea un IAM ruolo per il backup e il ripristino dei file.

    Il IAM ruolo deve essere sia un utente che un amministratore per. AWS KMS key

    Oltre alle autorizzazioni richieste per il backup e il ripristino nativi del SQL server, il IAM ruolo richiede anche le seguenti autorizzazioni:

    • s3:GetBucketACL, s3:GetBucketLocation e s3:ListBucket sulla risorsa di bucket S3

    • s3:ListAllMyBuckets sulla risorsa *

  3. Aggiungi l'opzione SQLSERVER_BACKUP_RESTORE a un gruppo di opzioni sull'istanza database.

    Questa è in aggiunta all'opzione TRANSPARENT_DATA_ENCRYPTION (TDE).

  4. Assicurati di disporre di una chiave di crittografia simmetrica. KMS Sono disponibili le seguenti opzioni:

    • Se hai una KMS chiave esistente nel tuo account, puoi usarla. Non è richiesta alcuna operazione aggiuntiva.

    • Se non disponi di una KMS chiave di crittografia simmetrica esistente nel tuo account, crea una KMS chiave seguendo le istruzioni in Creazione delle chiavi nella Guida per gli AWS Key Management Service sviluppatori.

  5. Abilita l'integrazione con Amazon S3 per trasferire file tra l'istanza database e Amazon S3.

    Per ulteriori informazioni sull'abilitazione dell'integrazione di Amazon S3, consulta Integrazione di un'istanza database Amazon RDS for SQL Server con Amazon S3.

Limitazioni

L'utilizzo di procedure memorizzate per il backup e il ripristino TDE dei certificati presenta le seguenti limitazioni:

  • Le opzioni SQLSERVER_BACKUP_RESTORE e TRANSPARENT_DATA_ENCRYPTION (TDE) devono essere entrambe aggiunte al gruppo di opzioni associato all'istanza database.

  • TDEil backup e il ripristino dei certificati non sono supportati sulle istanze DB Multi-AZ.

  • L'annullamento delle attività di backup e ripristino dei TDE certificati non è supportato.

  • Non è possibile utilizzare un TDE certificato utente per la TDE crittografia di nessun altro database sull'istanza di RDS for SQL Server DB. Puoi usarlo per ripristinare solo altri database dall'istanza DB di origine che sono stati TDE attivati e che utilizzano lo stesso TDE certificato.

  • Puoi eliminare solo TDE i certificati utente.

  • Il numero massimo di TDE certificati utente supportati RDS è 10. Se il numero supera i 10, elimina i TDE certificati non utilizzati e riprova.

  • Il nome del certificato non può essere vuoto o nullo.

  • Durante il ripristino di un certificato, il nome del certificato non può includere la parola chiave RDSTDECERTIFICATE e deve iniziare con il prefisso UserTDECertificate_.

  • Il parametro @certificate_name può includere solo i seguenti caratteri: a-z, 0-9, @, $, # e carattere di sottolineatura (_).

  • L'estensione file per @certificate_file_s3_arn deve essere .cer (senza distinzione tra maiuscole e minuscole).

  • L'estensione file per @private_key_file_s3_arn deve essere .cer (senza distinzione tra maiuscole e minuscole).

  • I metadati S3 per il file della chiave privata devono includere il tag x-amz-meta-rds-tde-pwd. Per ulteriori informazioni, consulta Backup e ripristino dei TDE certificati per i database locali.

Eseguire il backup di un certificato TDE

Per eseguire il backup TDE dei certificati, utilizzare la rds_backup_tde_certificate stored procedure. Di seguito è riportata la sintassi utilizzata.

EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp', @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer', @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk', @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id', [@overwrite_s3_files=0|1];

I parametri seguenti sono obbligatori:

  • @certificate_name— Il nome del TDE certificato di cui eseguire il backup.

  • @certificate_file_s3_arn— Amazon Resource Name (ARN) di destinazione per il file di backup del certificato in Amazon S3.

  • @private_key_file_s3_arn— La destinazione S3 ARN del file di chiave privata che protegge il certificato. TDE

  • @kms_password_key_arn— La ARN chiave simmetrica utilizzata per crittografare la password della KMS chiave privata.

Il parametro seguente è facoltativo:

  • @overwrite_s3_files – Indica se sovrascrivere il certificato esistente e i file di della chiave privata in S3:

    • 0 – Il file esistente non viene sovrascritto. Questo è il valore predefinito.

      L'impostazione di @overwrite_s3_files su 0 restituisce un errore se il file esiste già.

    • 1 – Il file esistente con il nome specificato viene sovrascritto, anche se non è un file di backup.

Esempio di eseguire il backup di un certificato TDE
EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='RDSTDECertificate20211115T185333', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk', @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_files=1;

Ripristino di un certificato TDE

Si utilizza la rds_restore_tde_certificate stored procedure per ripristinare (importare) TDE i certificati utente. Di seguito è riportata la sintassi utilizzata.

EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_certificate_name', @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer', @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk', @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';

I parametri seguenti sono obbligatori:

  • @certificate_name— Il nome del TDE certificato da ripristinare. Il nome deve iniziare con il prefisso UserTDECertificate_.

  • @certificate_file_s3_arn— L'S3 ARN del file di backup utilizzato per ripristinare il TDE certificato.

  • @private_key_file_s3_arn— L'S3 ARN del file di backup con chiave privata del TDE certificato da ripristinare.

  • @kms_password_key_arn— La ARN chiave simmetrica utilizzata per crittografare la password della KMS chiave privata.

Esempio del ripristino di un certificato TDE
EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk', @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';

Visualizzazione dei certificati ripristinati TDE

Si utilizza la rds_fn_list_user_tde_certificates funzione per visualizzare i TDE certificati utente ripristinati (importati). Di seguito è riportata la sintassi utilizzata.

SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();

L'output è simile a quello riportato di seguito. Non tutte le colonne sono mostrate qui.

name certificate_id principal_id pvt_key_encryption_type_desc issuer_name cert_serial_number thumbprint subject start_date expiry_date pvt_key_last_backup_date
UserTDECertificate_tde_cert 343 1 ENCRYPTED_BY_MASTER_KEY AnyCompany Shipping 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af 0x6BB218B34110388680B FE1BA2D86C695096485B5 AnyCompany Shipping 2022-04-05 19:49:45.0000000 2023-04-05 19:49:45.0000000 NULL

Eliminazione dei certificati ripristinati TDE

Per eliminare i TDE certificati utente ripristinati (importati) che non stai utilizzando, utilizza la rds_drop_tde_certificate stored procedure. Di seguito è riportata la sintassi utilizzata.

EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';

Il parametro seguente è obbligatorio:

  • @certificate_name— Il nome del TDE certificato da eliminare.

È possibile eliminare solo i TDE certificati ripristinati (importati). Non puoi eliminare i RDS certificati creati.

Esempio di eliminare un certificato TDE
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';

Backup e ripristino dei TDE certificati per i database locali

È possibile eseguire il backup TDE dei certificati per i database locali, quindi ripristinarli successivamente su for Server. RDS SQL Puoi anche ripristinare un TDE certificato RDS for SQL Server su un'istanza DB locale.

La procedura seguente esegue il backup di un TDE certificato e di una chiave privata. La chiave privata viene crittografata utilizzando una chiave dati generata dalla chiave di crittografia KMS simmetrica dell'utente.

Per eseguire il backup di un certificato locale TDE
  1. Genera la chiave dati utilizzando il AWS CLI generate-data-keycomando.

    aws kms generate-data-key \ --key-id my_KMS_key_ID \ --key-spec AES_256

    L'output è simile a quello riportato di seguito.

    { "CiphertextBlob": "AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==", "Plaintext": "U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=", "KeyId": "arn:aws:kms:us-west-2:123456789012:key/1234abcd-00ee-99ff-88dd-aa11bb22cc33" }

    L'output di testo normale nel passaggio successivo viene utilizzato come password della chiave privata.

  2. Eseguite il backup TDE del certificato come illustrato nell'esempio seguente.

    BACKUP CERTIFICATE myOnPremTDEcertificate TO FILE = 'D:\tde-cert-backup.cer' WITH PRIVATE KEY ( FILE = 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\cert-backup-key.pvk', ENCRYPTION BY PASSWORD = 'U/fpGtmzGCYBi8A2+0/9qcRQRK2zmG/aOn939ZnKi/0=');
  3. Salva il file di backup del certificato nel bucket di certificato Amazon S3.

  4. Salva il file di backup della chiave privata nel bucket di certificato S3, con il seguente tag nei metadati del file:

    • Chiave - x-amz-meta-rds-tde-pwd

    • Value – Il valore CiphertextBlob risultante dalla generazione della chiave dei dati, come nell'esempio seguente.

      AQIDAHimL2NEoAlOY6Bn7LJfnxi/OZe9kTQo/XQXduug1rmerwGiL7g5ux4av9GfZLxYTDATAAAAfjB8BgkqhkiG9w0B BwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMyCxLMi7GRZgKqD65AgEQgDtjvZLJo2cQ31Vetngzm2ybHDc3d2vI74SRUzZ 2RezQy3sAS6ZHrCjfnfn0c65bFdhsXxjSMnudIY7AKw==

La procedura seguente ripristina un TDE certificato RDS for SQL Server su un'istanza DB locale. Si copia e si ripristina il TDE certificato sull'istanza DB di destinazione utilizzando il backup del certificato, il file di chiave privata corrispondente e la chiave dati. Il certificato ripristinato viene crittografato dalla chiave master del database del nuovo server.

Per ripristinare un TDE certificato
  1. Copia il file di backup del TDE certificato e il file della chiave privata da Amazon S3 all'istanza di destinazione. Per ulteriori informazioni sulla copia di file da Amazon S3, consulta Trasferimento di file tra RDS for SQL Server e Amazon S3.

  2. Usa la tua KMS chiave per decrittografare il testo cifrato in uscita per recuperare il testo semplice della chiave dati. Il testo crittografato si trova nei metadati S3 del file di backup della chiave privata.

    aws kms decrypt \ --key-id my_KMS_key_ID \ --ciphertext-blob fileb://exampleCiphertextFile | base64 -d \ --output text \ --query Plaintext

    L'output di testo normale nel passaggio successivo viene utilizzato come password della chiave privata.

  3. Usa il seguente SQL comando per ripristinare il certificato. TDE

    CREATE CERTIFICATE myOnPremTDEcertificate FROM FILE='D:\tde-cert-backup.cer' WITH PRIVATE KEY (FILE = N'D:\tde-cert-key.pvk', DECRYPTION BY PASSWORD = 'plain_text_output');

Per ulteriori informazioni sulla KMS decrittografia, vedere decrypt nella KMS sezione del Command Reference.AWS CLI

Dopo il ripristino del TDE certificato sull'istanza DB di destinazione, è possibile ripristinare i database crittografati con tale certificato.

Nota

È possibile utilizzare lo stesso TDE certificato per crittografare più database SQL Server sull'istanza DB di origine. Per migrare più database su un'istanza di destinazione, copia il TDE certificato ad essi associato nell'istanza di destinazione una sola volta.

Disattivazione TDE per For RDS Server SQL

Per TDE disattivarla RDS per un'istanza DB for SQL Server, assicurati innanzitutto che non vi siano più oggetti crittografati sull'istanza DB. A questo scopo, esegui la decrittografia degli oggetti o rilasciali. Se sull'istanza DB sono presenti oggetti crittografati, non è possibile disattivarli TDE per l'istanza DB. Quando usi la console per rimuovere l'TDEopzione da un gruppo di opzioni, la console indica che è in corso l'elaborazione. Inoltre, viene creato un evento di errore se il gruppo di opzioni è associato a un'istanza database o a una snapshot DB crittografati.

L'esempio seguente rimuove la TDE crittografia da un database chiamatocustomerDatabase.

------------- Removing TDE ---------------- USE [customerDatabase] GO -- Turn off encryption of the database ALTER DATABASE [customerDatabase] SET ENCRYPTION OFF GO -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO -- Drop the DEK used for encryption DROP DATABASE ENCRYPTION KEY GO -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated USE [master] GO ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE GO

Quando tutti gli oggetti vengono decrittografati, sono disponibili due opzioni.

  1. È possibile modificare l'istanza DB in modo che venga associata a un gruppo di opzioni senza l'TDEopzione.

  2. È possibile rimuovere l'TDEopzione dal gruppo di opzioni.