Condividi tramite


SQL Server in Linux - Guida alla sicurezza e alle autorizzazioni

Questo articolo descrive gli account di servizio necessari e le autorizzazioni del file system per SQL Server in Linux. Per altre informazioni sulle autorizzazioni di SQL Server per Windows, vedere Configurare account e autorizzazioni del servizio Windows.

Principali di Windows predefiniti

Anche se SQL Server in Linux viene eseguito con l'account del mssql sistema operativo, le seguenti entità Windows esistono a livello di SQL Server per garantire la compatibilità. Non rimuoverle o negarle, a meno che non si comprendano appieno i rischi.

Principale Ruolo predefinito di SQL Server Dettagli
BUILTIN\Administrators sysadmin Mappa agli amministratori a livello radice dell'host. Alcuni oggetti di sistema vengono eseguiti nel contesto di questo account.
NT AUTHORITY\SYSTEM public Identificatore del servizio (SID) riservato per l'account di Windows SYSTEM . Ancora creato in modo che gli script multipiattaforma abbiano esito positivo.
NT AUTHORITY\NETWORK SERVICE sysadmin (nessun ruolo predefinito) Storicamente l'account di avvio predefinito per diversi servizi di SQL Server in Windows. Presente solo per la compatibilità con le versioni precedenti. Non usato dal motore di database di SQL Server su Linux.

Proprietà di file e directory

Tutti i file nella cartella /var/opt/mssql devono essere di proprietà dell'utente mssql e del gruppo mssql (mssql:mssql), con accesso in lettura e scrittura per entrambi. Se si modifica l'umask predefinito (0022) o si usano punti di montaggio alternativi, è necessario riapplicare manualmente queste autorizzazioni.

Le autorizzazioni predefinite per la mssql cartella sono le seguenti:

drwxr-xr-x  3 root  root  4096 May 14 17:17 ./
drwxr-xr-x 13 root  root  4096 Jan  7  2025 ../
drwxrwx---  7 mssql mssql 4096 May 14 17:17 mssql/

Le autorizzazioni predefinite per il contenuto della mssql cartella sono le seguenti:

drwxrwx--- 7 mssql mssql 4096 May 14 17:17 ./
drwxr-xr-x 3 root  root  4096 May 14 17:17 ../
drwxr-xr-x 5 mssql mssql 4096 May 14 17:17 .system/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 data/
drwxr-xr-x 3 mssql mssql 4096 Sep 16 22:57 log/
-rw-r--r-- 1 root  root    85 May 14 17:17 mssql.conf
drwxrwxr-x 2 mssql mssql 4096 May 14 17:17 secrets/
drwxr-xr-x 2 mssql mssql 4096 May 14 17:17 security/

Per altre informazioni su come modificare il percorso dei dati utente, il percorso del file di log o i percorsi di log e del database di sistema, vedere Configurare SQL Server in Linux con lo strumento mssql-conf.

Directory tipiche di SQL Server

Scopo Percorso predefinito Dettagli
Database di sistema e utente /var/opt/mssql/data Include master, model, tempdbe tutti i nuovi database, a meno che mssql-conf non li reindirizzi. Per altre informazioni, vedere Modificare il percorso predefinito per i database di sistema.
Log delle transazioni (se separati) /var/opt/mssql/data, o il percorso impostato tramite mssql-conf set filelocation.defaultlogdir. Mantenere la stessa proprietà se si spostano i log delle transazioni. Per altre informazioni, vedere Modificare il percorso predefinito della directory dei dati o dei log.
Copie di sicurezza /var/opt/mssql/data Creare e impostare con chown prima del primo backup o quando si esegue il mapping di un volume o di una directory. Per altre informazioni, vedere Modificare il percorso predefinito della directory di backup.
Log degli errori e log degli eventi estesi (XE) /var/opt/mssql/log Ospita anche la sessione XE di integrità del sistema predefinita. Per altre informazioni, vedere Modificare il percorso predefinito della directory del file del log degli errori.
Dump della memoria /var/opt/mssql/log Usato per i core dump e DBCC CHECK* dump di base. Per altre informazioni, vedere Modificare il percorso predefinito della directory dump.
Segreti di sicurezza /var/opt/mssql/secrets Archivia i certificati TLS, le chiavi master della colonna e così via.

Ruoli minimi di SQL Server per ogni agente

Agente Viene eseguito come (Linux) Si connette a Ruoli/permessi del database necessari
Agente Snapshot mssql (tramite processo di SQL Agent) Distributor db_owner nel database di distribuzione; lettura/scrittura nella cartella snapshot
Agente lettore di log mssql Editore & Distributore db_owner nel database di pubblicazione e nel database di distribuzione. Potrebbe essere necessario sysadmin quando si usa l'inizializzazione dal backup
Agente di distribuzione (di tipo push) mssql Distributore al Sottoscrittore db_owner nella distribuzione; db_owner nel database di sottoscrizione. Leggere la cartella dei snapshot. Membro PAL.
Agente di distribuzione (pull) mssql (sul Sottoscrittore) Sottoscrittore al server di distribuzione
Da Distributore a Sottoscrittore
Come l'agente di distribuzione (push), ma le autorizzazioni di condivisione snapshot si applicano all'host del Sottoscrittore
Agente di fusione mssql Server di pubblicazione, server di distribuzione, Sottoscrittore db_owner nella distribuzione. Membro PAL. Leggere la cartella snapshot. Lettura/scrittura nei database di pubblicazione e sottoscrizioni.
Agente lettore di coda mssql Distributor db_owner nella distribuzione. Si connette al server di pubblicazione con db_owner nel database di pubblicazione.

Procedure consigliate

L'utente e il mssql gruppo usati da SQL Server sono un account non di accesso per impostazione predefinita e devono essere mantenuti in questo modo. Per motivi di sicurezza, usare l'autenticazione di Windows per SQL Server in Linux, dove possibile. Per altre informazioni su come configurare l'autenticazione di Windows per SQL Server in Linux, vedere Esercitazione: Usare adutil per configurare l'autenticazione di Active Directory con SQL Server in Linux.

Limitare ulteriormente le autorizzazioni per i file (usando il comando chmod 700) ogni volta che la directory non richiede l'accesso al gruppo.

Quando si associano directory host o condivisioni NFS in contenitori o macchine virtuali, crearle prima e poi mappare UID 10001 (impostazione predefinita per mssql).

Evitare di concedere sysadmin agli account di accesso dell'applicazione. Usare invece ruoli granulari e i EXECUTE AS wrappers. Disabilitare o rinominare l'account sa dopo aver creato un altro account sysadmin . Per altre informazioni, vedere Disabilitare l'account SA come procedura consigliata.