Entità di sicurezza (Motore di database)
Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)
Le entità di sicurezza sono entità cje possono richiedere risorse di SQL Server. Analogamente ad altri componenti del modello di autorizzazione di SQL Server, le entità di sicurezza possono essere organizzate in una gerarchia. Il campo di influenza di un'entità dipende dall'ambito della definizione dell'entità (Windows, server o database) e dal tipo di entità (indivisibile o raccolta). Un account di accesso di Windows è un esempio di entità indivisibile mentre un gruppo di Windows è un esempio di entità costituita da una raccolta. Ogni entità dispone di un ID di sicurezza (SID). Questo argomento si applica a tutte le versioni di SQL Server, ma esistono alcune restrizioni relative alle entità di livello server nel database SQL o in Azure Synapse Analytics.
Nota
Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).
Entità a livello di SQL Server
- Accesso con autenticazione di SQL Server
- Account di accesso con autenticazione di Windows per un utente di Windows
- Account di accesso con autenticazione di Windows per un gruppo di Windows
- Accesso con autenticazione di Microsoft Entra per un utente di Microsoft Entra
- Accesso con autenticazione di Microsoft Entra per un gruppo di Microsoft Entra
- Ruolo server
Entità a livello di database
- Utente database (sono disponibili 12 tipi di utenti. Per ulteriori informazioni, vedere CREATE USER.)
- Ruolo del database
- Ruolo applicazione
sa Login
L'account di accesso sa
di SQL Server è un'entità di livello server. Per impostazione predefinita, questo account viene creato durante l'installazione di un'istanza. A partire da SQL Server 2005 (9.x), il database predefinito di sa è il database master. Si tratta di un comportamento diverso rispetto alle versioni precedenti di SQL Server. L'account di accesso sa
è un membro del ruolo predefinito a livello di server sysadmin
. L'account di accesso sa
dispone di tutte le autorizzazioni per il server e non può essere limitato. L'account di accesso sa
non può essere eliminato, ma può essere disabilitato in modo da impedirne l'uso.
Utente dbo e schema dbo
L'utente dbo
è un'entità utente speciale in ogni database. Tutti gli amministratori di SQL Server, i membri del ruolo predefinito del server sysadmin
, l'account di accesso sa
e i proprietari del database accedono al database come utenti dbo
. L'utente dbo
dispone di tutte le autorizzazioni nel database e non può essere limitato o eliminato. dbo
rappresenta il proprietario del database, ma l'account utente dbo
non equivale al ruolo predefinito del database db_owner
, mentre il ruolo predefinito del database db_owner
non equivale all'account utente registrato come proprietario del database.
L'utente dbo
è proprietario dello schema dbo
. Lo schema dbo
è lo schema predefinito per tutti gli utenti, a meno che non venga specificato uno schema diverso. Lo schema dbo
non può essere eliminato.
Ruolo del server public e ruolo del database
Ogni account di accesso appartiene al ruolo predefinito del server public
e ogni utente del database appartiene al ruolo del database public
. Quando a un account di accesso o a un utente non sono state concesse o negate autorizzazioni specifiche per un'entità a protezione diretta, l'account di accesso o l'utente eredita le autorizzazioni concesse al ruolo public su tale entità a protezione diretta. Il ruolo predefinito del server public
e il ruolo predefinito del database public
non possono essere eliminati. Tuttavia è possibile revocare le autorizzazioni dei ruoli public
. Esistono numerose autorizzazioni assegnate per impostazione predefinita ai ruoli public
. La maggior parte di queste autorizzazioni è necessaria per le operazioni di routine nel database, ovvero quelle operazioni che tutti gli utenti devono essere in grado di eseguire. Prestare attenzione durante la revoca delle autorizzazioni dell'account di accesso public o dell'utente perché questa operazione ha ripercussioni su tutti gli account di accesso e su tutti gli utenti. In genere non è consigliabile negare le autorizzazioni all'account di accesso public perché l'istruzione deny esegue l'override di qualsiasi istruzione grant che è possibile eseguire sui singoli utenti.
INFORMATION_SCHEMA e utenti e schemi sys
Ogni database include due entità visualizzate come utenti nelle viste del catalogo: INFORMATION_SCHEMA
e sys
. Queste entità sono richieste internamente dal motore di database. Pertanto non possono essere modificate o eliminate.
Account di accesso basati su certificati di SQL Server
Le entità del server i cui nomi sono racchiusi tra due simboli di cancelletto (##) sono solo per uso interno di sistema. Al momento dell'installazione di SQL Server, vengono create le seguenti entità che non devono essere eliminate.
- ##MS_SQLResourceSigningCertificate##
- ##MS_SQLReplicationSigningCertificate##
- ##MS_SQLAuthenticatorCertificate##
- ##MS_AgentSigningCertificate##
- ##MS_PolicyEventProcessingLogin##
- ##MS_PolicySigningCertificate##
- ##MS_PolicyTsqlExecutionLogin##
Questi account principali non hanno password che possono essere modificate dagli amministratori poiché si basano sui certificati rilasciati a Microsoft.
L'utente Guest
Ogni database include un guest
. Le autorizzazioni garantite all'utente guest
sono ereditate dagli utenti che hanno accesso al database ma non dispongono di un account utente nel database. Non è possibile eliminare l'utente guest
, ma è possibile disabilitarlo revocando la relativa autorizzazione CONNECT. L'autorizzazione CONNECT può essere revocata eseguendo REVOKE CONNECT FROM GUEST;
all'interno di qualsiasi database diverso da master
o tempdb
.
Attività correlate
Per informazioni sulla progettazione di un sistema di autorizzazioni, vedere Introduzione alle autorizzazioni del motore di database.
In questa sezione della documentazione online di SQL Server sono inclusi i seguenti argomenti:
Vedi anche
Sicurezza di SQL Server
sys.database_principals (Transact-SQL)
sys.server_principals (Transact-SQL)
sys.sql_logins (Transact-SQL)
sys.database_role_members (Transact-SQL)
Ruoli a livello di server
Ruoli a livello di database