Esercitazione: creare e usare account di accesso al server Microsoft Entra
Si applica a:Database SQL di AzureIstanza gestita di SQL di AzureAzure Synapse Analytics (solo pool SQL dedicati)
Questo articolo illustra come creare e usare account di accesso supportati da Microsoft Entra ID (precedentemente Azure Active Directory) all'interno del database virtuale master
di Azure SQL.
In questa esercitazione apprenderai a:
- Creare un account di accesso Microsoft Entra nel database virtuale
master
con la nuova estensione della sintassi per database SQL di Azure - Creare un utente mappato a un account di accesso Microsoft Entra nel database virtuale
master
- Concedere ruoli server a un utente Microsoft Entra
- Disabilitare un account di accesso Microsoft Entra
Nota
Le entità server (account di accesso) di Microsoft Entra attualmente sono in anteprima pubblica per database SQL di Azure. Istanza gestita di SQL di Azure può già utilizzare gli account di accesso Microsoft Entra.
Prerequisiti
- Un database SQL o un'Istanza gestita di SQL con un database. Vedere Avvio rapido: creare un database singolo di database SQL di Azure se non è già stato creato un database SQL di Azure o Avvio rapido: creare un'Istanza gestita di SQL di Azure.
- Set di autenticazione Microsoft Entra per database SQL o Istanza gestita di SQL. Per altre informazioni, vedere Configurare e gestire l'autenticazione di Microsoft Entra con Azure SQL.
- Questo articolo illustra come creare un account di accesso e un utente di Microsoft Entra all'interno del database virtuale
master
. Solo un amministratore di Microsoft Entra può creare un utente all'interno del database virtualemaster
, quindi è consigliabile usare l'account amministratore di Microsoft Entra durante questa esercitazione. Un'entità di sicurezza Microsoft Entra con il ruolologinmanager
può creare un account di accesso, ma non un utente all'interno del database virtualemaster
.
Creare un account di accesso a Microsoft Entra
Creare un account di accesso database SQL di Azure per un account di Microsoft Entra. In questo esempio si userà
bob@contoso.com
che esiste nel dominio Microsoft Entra denominatocontoso
. È anche possibile creare un account di accesso da un gruppo Microsoft Entra o da un'entità servizio (applicazioni). Ad esempio,mygroup
è un gruppo Microsoft Entra costituito da account Microsoft Entra che sono membri di tale gruppo. Per altre informazioni, vedere CREATE LOGIN (Transact-SQL).Nota
Il primo account di accesso di Microsoft Entra deve essere creato dall'amministratore di Microsoft Entra. L'amministratore di Microsoft Entra può essere un utente o un gruppo Microsoft Entra. Un account di accesso SQL non può creare account di accesso Microsoft Entra.
Usando SQL Server Management Studio (SSMS), accedere al database SQL con l'account amministratore di Microsoft Entra configurato per il server.
Espandi il database >database di sistema. Fare clic con il pulsante destro del mouse sul database di
master
e selezionare Nuova query per aprire una nuova finestra di query nel contesto del databasemaster
.Eseguire la query riportata di seguito:
CREATE LOGIN [bob@contoso.com] FROM EXTERNAL PROVIDER GO
Controllare l'account di accesso creato in
sys.server_principals
. Eseguire la query seguente:SELECT name, type_desc, type, is_disabled FROM sys.server_principals WHERE type_desc like 'external%'
L'output visualizzato sarà simile al seguente:
Name type_desc type is_disabled bob@contoso.com EXTERNAL_LOGIN E 0
L'account di accesso
bob@contoso.com
è stato creato nel database virtualemaster
.
Creare un utente da un account di accesso Microsoft Entra
Ora che è stato creato un account di accesso di Microsoft Entra, è possibile creare un utente Microsoft Entra a livello di database mappato all'account di accesso di Microsoft Entra nel database virtuale
master
. Si continuerà a usare l'esempiobob@contoso.com
per creare un utente nel database virtualemaster
, perché si vuole dimostrare l'aggiunta dell'utente a ruoli speciali. Solo un amministratore di Microsoft Entra o un amministratore di SQL Server può creare utenti nel database virtualemaster
.Si sta ancora usando il database
master
virtuale, ma è possibile riconnettersi a un database di propria scelta se si desidera creare utenti in altri database. Eseguire la query seguente.CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Suggerimento
Anche se non è necessario usare gli alias utente Microsoft Entra (ad esempio,
bob@contoso.com
), è consigliabile usare lo stesso alias per gli utenti di Microsoft Entra e gli account di accesso di Microsoft Entra.Controllare l'utente creato in
sys.database_principals
. Eseguire la query seguente:SELECT name, type_desc, type FROM sys.database_principals WHERE type_desc like 'external%'
L'output visualizzato sarà simile al seguente:
Name type_desc type bob@contoso.com EXTERNAL_USER E
Nota
La sintassi esistente per creare un utente Microsoft Entra senza un account di accesso di Microsoft Entra è ancora supportata. L'esecuzione della seguente sintassi crea un utente indipendente nel database all'interno del database specifico a cui si è connessi. Cosa più importante, questo utente non è associato ad alcun account di accesso, anche se esiste un account di accesso con lo stesso nome nel database virtuale master
.
Ad esempio: CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER
.
È possibile creare un account di accesso di Microsoft Entra usando un'entità servizio con un nome visualizzato non univoco. Per altre informazioni, vedere Account di accesso e utenti di Microsoft Entra con nomi visualizzati non univoci
Concedere i ruoli a livello di server agli account di accesso di Microsoft Entra
È possibile aggiungere account di accesso ai ruoli predefiniti a livello di server , ad esempio ##MS_DefinitionReader##, ##MS_ServerStateReader##o ##MS_ServerStateManager## nel database master
.
Nota
I ruoli a livello di server indicati qui non sono supportati per i gruppi Microsoft Entra.
ALTER SERVER ROLE ##MS_DefinitionReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateReader## ADD MEMBER [AzureAD_object];
ALTER SERVER ROLE ##MS_ServerStateManager## ADD MEMBER [AzureAD_object];
Le autorizzazioni non sono effettive fino a quando l'utente non si riconnette. Scaricare anche la cache DBCC:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Per verificare quali account di accesso Microsoft Entra fanno parte dei ruoli a livello di server, eseguire la seguente query:
SELECT roles.principal_id AS RolePID,roles.name AS RolePName,
server_role_members.member_principal_id AS MemberPID, members.name AS MemberPName
FROM sys.server_role_members AS server_role_members
INNER JOIN sys.server_principals AS roles
ON server_role_members.role_principal_id = roles.principal_id
INNER JOIN sys.server_principals AS members
ON server_role_members.member_principal_id = members.principal_id;
Concedere ruoli speciali per gli utenti Microsoft Entra
I ruoli speciali per il database SQL possono essere assegnati agli utenti nel database virtuale master
.
Per concedere uno dei ruoli speciali del database a un utente, l'utente deve esistere nel database virtuale master
.
Per aggiungere un utente a un ruolo, è possibile eseguire la seguente query:
ALTER ROLE [dbmanager] ADD MEMBER [AzureAD_object]
Per rimuovere un utente da un ruolo, eseguire la seguente query:
ALTER ROLE [dbmanager] DROP MEMBER [AzureAD_object]
AzureAD_object
può essere un utente, un gruppo o un'entità servizio di Microsoft Entra in Microsoft Entra ID.
Nell'esempio, è stato creato l'utente bob@contoso.com
. All'utente verranno assegnati i ruoli dbmanager e loginmanager.
Eseguire la query riportata di seguito:
ALTER ROLE [dbmanager] ADD MEMBER [bob@contoso.com] ALTER ROLE [loginmanager] ADD MEMBER [bob@contoso.com]
Controllare l'assegnazione di ruolo del database eseguendo la seguente query:
SELECT DP1.name AS DatabaseRoleName, isnull (DP2.name, 'No members') AS DatabaseUserName FROM sys.database_role_members AS DRM RIGHT OUTER JOIN sys.database_principals AS DP1 ON DRM.role_principal_id = DP1.principal_id LEFT OUTER JOIN sys.database_principals AS DP2 ON DRM.member_principal_id = DP2.principal_id WHERE DP1.type = 'R'and DP2.name like 'bob%'
L'output visualizzato sarà simile al seguente:
DatabaseRoleName DatabaseUserName dbmanager bob@contoso.com loginmanager bob@contoso.com
Facoltativo: disabilitare un account di accesso
La sintassi DDL ALTER LOGIN (Transact-SQL) può essere usata per abilitare o disabilitare un account di accesso di Microsoft Entra nel database SQL di Azure.
ALTER LOGIN [bob@contoso.com] DISABLE
Per rendere immediatamente effettive le modifiche DISABLE
o ENABLE
, è necessario cancellare la cache di autenticazione e la cache TokenAndPermUserStore usando i seguenti comandi T-SQL:
DBCC FLUSHAUTHCACHE
DBCC FREESYSTEMCACHE('TokenAndPermUserStore') WITH NO_INFOMSGS
Verificare che l'account di accesso sia stato disabilitato eseguendo la seguente query:
SELECT name, type_desc, type
FROM sys.server_principals
WHERE is_disabled = 1
Un caso d'uso per questo consiste nel consentire la sola lettura nelle repliche geografiche, ma negare la connessione in un server primario.