Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare le funzionalità più recenti, gli aggiornamenti della sicurezza e il supporto tecnico.
Si applica a:SQL Server
Database SQL di Azure
Istanza gestita di SQL di Azure
Questo articolo fornisce informazioni sulle procedure consigliate e sulle linee guida che consentono di stabilire la sicurezza per SQL Server. Per un esame completo delle funzionalità di sicurezza di SQL Server, vedere Protezione di SQL Server.
Per procedure consigliate specifiche per la sicurezza dei prodotti, vedere Database SQL di Azure e Istanza gestita di SQL e SQL Server in VM di Azure.
Una metodologia di sicurezza a più livelli fornisce una soluzione di difesa avanzata usando più funzionalità di sicurezza destinate ad ambiti di protezione diversi. Le funzionalità di sicurezza rese disponibili in SQL Server 2016 e migliorate nelle versioni successive contribuiscono a contrastare le minacce alla sicurezza e forniscono applicazioni di database adeguatamente protette.
Azure è conforme a molteplici normative e standard di settore che possono favorire la compilazione di una soluzione compatibile con SQL Server in esecuzione in una macchina virtuale. Per informazioni sulla conformità alle normative con Azure, vedere il Centro protezione di Azure.
Le organizzazioni spesso devono proteggere i dati a livello di colonna come dati riguardanti clienti, dipendenti, segreti commerciali, dati di prodotti, dati sanitari, dati finanziari e altri dati sensibili vengono spesso archiviati nei database di SQL Server. Le colonne sensibili includono spesso numeri identificativi/codici fiscali, numeri di cellulare, nomi e cognomi, identificativi di conti finanziari e altri dati che potrebbero essere considerati dati personali.
I metodi e le funzionalità citati in questa sezione aumentano il livello di protezione a livello di colonna con un sovraccarico minimo e senza necessità di modifiche estese al codice dell'applicazione.
Usare Always Encrypted per crittografare dati a riposo e in transito. I dati crittografati vengono decrittografati solo dalle librerie client a livello di client dell'applicazione. Dove possibile, usare la crittografia casuale invece di quella deterministica. Always Encrypted con enclavi sicure può migliorare le prestazioni per le operazioni di confronto, ad esempio BETWEEN, IN, LIKE, DISTINCT, join e altro, per scenari di crittografia casuale.
Quando Always Encrypted non è un'opzione disponibile, usare Dynamic Data Masking (DDM) per offuscare i dati a livello di colonna. Dynamic Data Masking (DDM) non è compatibile con Always Encrypted. Quando possibile, usare Always Encrypted invece di Dynamic Data Masking (DDM).
È possibile anche concedere autorizzazioni a livello di colonna a una tabella, vista o funzione con valori di tabella. Valutare quanto indicato di seguito: - Per una colonna è possibile solo concedere autorizzazioni SELECT
, REFERENCES
, e UPDATE
.
- Un'istruzione DENY
a livello di tabella non ha la precedenza rispetto a un'istruzione GRANT
a livello di colonna.
La sicurezza a livello di riga (RLS) consente di usare il contesto di esecuzione dell’utente per controllare l'accesso alle righe in una tabella di database. La sicurezza a livello di riga (RLS) garantisce che gli utenti possano vedere solo i record che li riguardano. Ciò garantisce la sicurezza a livello di record dell'applicazione senza neessità di apportare modifiche significative all'applicazione.
La logica di business è incapsulata all'interno di funzioni con valori di tabella controllate da criteri di sicurezza che attivano e disattivano la funzionalità RLS (sicurezza a livello di riga). La politica di sicurezza controlla anche i predicati FILTER
e BLOCK
associati alle tabelle contro le quali opera la sicurezza a livello di riga (RLS). Usare la sicurezza a livello di riga (RLS) per limitare i record restituiti all'utente che effettua la chiamata. Usare SESSION_CONTEXT (T-SQL) per gli utenti che si connettono al database tramite un'applicazione di livello intermedio in cui gli utenti dell'applicazione condividono lo stesso account utente di SQL Server. Per ottimizzare le prestazioni e la gestibilità, seguire le Procedure consigliate per la sicurezza a livello di riga.
Suggerimento
Usare la sicurezza a livello di riga (RLS) assieme ad Always Encrypted o Dynamic Data Masking (DDM) per ottimizzare la postura di sicurezza dell'organizzazione.
Transparent Data Encryption (TDE) protegge i dati a livello di file mediante crittografia dei dati a riposo ai file del database. Transparent Data Encryption (TDE) garantisce che i file di database, i file di backup e i file tempdb
non possano essere collegati e letti senza certificati appropriati per la decrittografia dei file di database. Senza Transparent Data Encryption (TDE), è possibile che un utente malintenzionato acquisisca i supporti fisici (unità o nastri di backup) e ripristini o colleghi il database per leggere il contenuto. Transparent Data Encryption (TDE) è supportato per l’uso con tutte le altre funzionalità di sicurezza in SQL Server. Transparent Data Encryption (TDE) esegue la crittografia e la decrittografia I/O in tempo reale dei file di dati e log. La crittografia TDE usa una chiave di crittografia del database (DEK) archiviata nel database utente. È anche possibile proteggere la chiave di crittografia del database usando un certificato protetto dalla chiave master del database master
.
Usare TDE per proteggere dati a riposo, backup e tempdb
.
Per controllare SQL Server, creare criteri di controllo a livello di server o database. I criteri del server si applicano a tutti i database esistenti e a quelli appena creati sul server. Per semplicità, abilitare il controllo a livello di server e consentire al controllo a livello di database di ereditare la proprietà a livello di server per tutti i database.
Controllare tabelle e colonne con dati sensibili a cui sono applicate misure di sicurezza. Se l’importanza di una tabella o una colonna è sufficiente da richiedere la protezione tramite una funzionalità di sicurezza, anche il relativo controllo deve essere considerato sufficientemente importante. È particolarmente importante controllare e rivedere regolarmente le tabelle contenenti informazioni riservate ma in cui non è possibile applicare le misure di sicurezza desiderate a causa di un determinato tipo di applicazione o limitazione dell'architettura.
SQL Server supporta due modalità di autenticazione: la modalità di autenticazione di Windows e la modalità di autenticazione di SQL Server e Windows (modalità mista).
Gli account di accesso sono distinti dagli utenti del database. Prima di tutto, eseguire separatamente il mapping degli account di accesso o dei gruppi di Windows a utenti o ruoli del database. Concedere, quindi, le autorizzazioni agli utenti, ai ruoli del server e/o ai ruoli del database per l’accesso agli oggetti del database.
In SQL Server sono supportati i seguenti tipi di account di accesso:
master
.master
) che ospita il database. SQL Server supporta gli utenti di un database contenuto per l'autenticazione di Windows e SQL Server.I seguenti consigli e procedure consigliate consentono di proteggere le identità e i metodi di autenticazione:
Per migliorare la gestione della sicurezza, usare strategie di sicurezza basate su ruoli con privilegi minimi.
In Azure, usare la sicurezza con privilegi minimi usando i controlli degli accessi in base al ruolo (RBAC)
Quando possibile, scegliere l’autenticazione di Active Directory invece di SQL Server; in particolare, scegliere Active Directory invece dell’archiviazione della sicurezza a livello di applicazione o database.
Usare Autenticazione a più fattori per gli account con accesso a livello di computer, inclusi gli account che usano RDP per l’accesso al computer. In questo modo è più semplice proteggersi dal furto o dalla perdita delle credenziali, poiché l'autenticazione basata su password a fattore singolo è una forma più debole di autenticazione con credenziali a rischio di compromissione o perdita accidentale.
Richiedere password sicure e complesse che non possono essere facilmente indovinate e non vengono usate per altri account o scopi. Aggiornare regolarmente le password e applicare i criteri di Active Directory.
Gli account gMSA (group-Managed Service Accounts) consentono la gestione automatica delle password, la gestione semplificata del nome dell'entità servizio (SPN) e la possibilità di delegare la gestione ad altri amministratori.
Ridurre al minimo i diritti concessi all'account AD dell'amministratore di database: si consideri una separazione dei compiti che limitano l'accesso alla macchina virtuale, la possibilità di accedere al sistema operativo, la possibilità di modificare i log di errore e di controllo e la possibilità di installare applicazioni e/o funzionalità.
Considerare la rimozione degli account DBA dal ruolo sysadmin e la concessione dell’autorizzazione CONTROL SERVER agli account DBA anziché renderli membri del ruolo sysadmin. A differenza di DENY
, il ruolo di amministratore di sistema non rispetta .
La conservazione dei record cronologici delle modifiche ai dati nel tempo può essere utile per gestire modifiche accidentali ai dati. Può essere utile anche per il controllo delle modifiche delle applicazioni e può recuperare di elementi di dati quando un attore non valido introduce modifiche ai dati non autorizzate.
Gli strumenti di configurazione e valutazione seguenti gestiscono la sicurezza della superficie di attacco, identificare le opportunità di protezione dei dati e fornire una valutazione consigliata della sicurezza dell'ambiente di SQL Server a livello di istanza.
È utile sapere quali sono alcune minacce comuni che mettono a rischio SQL Server:
--
.Per ridurre al minimo il rischio di SQL injection, considerare i seguenti elementi:
EXECUTE
, EXEC
, o sp_executesql
.;
: Delimitatore di query'
: Delimitatore di stringhe di dati di caratteri--
: Delimitatore di commento su singola riga./* ... */
: Delimitatori di commento.xp_
: Stored procedure estese del catalogo, ad esempio xp_cmdshell
.
xp_cmdshell
in qualsiasi ambiente DI SQL Server. Usare, invece, SQLCLR o cercare altre alternative a causa dei possibili rischi introdotti con xp_cmdshell
.Per ridurre al minimo il rischio di un attacco side-channel, prendere in considerazione quanto segue:
Considerare le seguenti minacce comuni per l'infrastruttura:
Per evitare che gli utenti malintenzionati indovinino facilmente i nomi degli account o le password, i passaggi seguenti consentono di ridurre il rischio di individuazione delle password:
Creare un account SQL con un nome univoco con appartenenza a sysadmin. È possibile creare questo account dal portale attivando Autenticazione di SQL Server durante il provisioning.
Suggerimento
Se non si attiva l'autenticazione di SQL Server durante il provisioning, è necessario modificare manualmente la modalità di autenticazione in Autenticazione di SQL Server e di Windows. Per altre informazioni, vedere Modifica della modalità di autenticazione del server.
Se è necessario utilizzare il login SA, abilitarlo dopo il provisioning e assegnare una nuova password complessa.
Considerare quanto segue per ridurre al minimo i rischi del ransomware:
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Registrati oggiTraining
Modulo
Vengono fornite informazioni sulle minacce informatiche comuni, come il ransomware, e sui tipi di attacchi per cui un'organizzazione deve essere preparata.
Certificazione
Microsoft Certified: Azure Database Administrator Associate - Certifications
Amministrare un'infrastruttura di database SQL Server per database relazionali, ibridi, locali e cloud con le offerte di database relazionali Microsoft PaaS.
Documentazione
Proteggere SQL Server - SQL Server
Usare questi articoli per creare e implementare un piano di sicurezza efficace in SQL Server. Informazioni su piattaforma, autenticazione, oggetti e applicazioni.
Documentazione sulla sicurezza per SQL Server e il Database SQL di Azure - SQL Server
Riferimento ai contenuti relativi a sicurezza e protezione per SQL Server e il Database SQL di Azure.
Valutazione della vulnerabilità per SQL Server - SQL Server
Usare la scansione per la valutazione della vulnerabilità per individuare, tracciare e risolvere potenziali vulnerabilità del database in SQL Server.