Autorizzare l'accesso al database SQL, SQL Istanza gestita e Azure sinapsi AnalyticsAuthorize database access to SQL Database, SQL Managed Instance, and Azure Synapse Analytics

SI APPLICA A: Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics (SQL Data Warehouse)

In questo articolo vengono fornite informazioni su:In this article, you learn about:

  • Opzioni per la configurazione di database SQL di Azure, Azure SQL Istanza gestita e Azure sinapsi Analytics (in precedenza SQL Data Warehouse) per consentire agli utenti di eseguire attività amministrative e di accedere ai dati archiviati in questi database.Options for configuring Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse Analytics (formerly SQL Data Warehouse) to enable users to perform administrative tasks and to access the data stored in these databases.
  • Configurazione dell'accesso e dell'autorizzazione dopo la creazione iniziale di un nuovo server.The access and authorization configuration after initially creating a new server.
  • Come aggiungere account di accesso e account utente nel database master e negli account utente, quindi concedere a tali account le autorizzazioni amministrative.How to add logins and user accounts in the master database and user accounts and then grant these accounts administrative permissions.
  • Come aggiungere gli account utente nei database utente, associati ad account di accesso o come account utente indipendenti.How to add user accounts in user databases, either associated with logins or as contained user accounts.
  • Configurare gli account utente con le autorizzazioni nei database utente usando i ruoli del database e le autorizzazioni esplicite.Configure user accounts with permissions in user databases by using database roles and explicit permissions.

Importante

I database nel database SQL di Azure, Azure SQL Istanza gestita e la sinapsi di Azure vengono definiti collettivamente nel resto di questo articolo come database e il server fa riferimento al Server che gestisce i database per il database SQL di Azure e la sinapsi di Azure.Databases in Azure SQL Database, Azure SQL Managed Instance, and Azure Synapse are referred to collectively in the remainder of this article as databases, and the server is referring to the server that manages databases for Azure SQL Database and Azure Synapse.

Autenticazione e autorizzazioneAuthentication and authorization

L' autenticazione è il processo che consente di dimostrare che l'utente è quello che afferma.Authentication is the process of proving the user is who they claim to be. Un utente si connette a un database utilizzando un account utente.A user connects to a database using a user account. Quando un utente tenta di connettersi a un database, fornisce un account utente e le informazioni di autenticazione.When a user attempts to connect to a database, they provide a user account and authentication information. L'utente viene autenticato mediante uno dei due metodi di autenticazione seguenti:The user is authenticated using one of the following two authentication methods:

  • Autenticazione SQL.SQL authentication.

    Con questo metodo di autenticazione, l'utente invia un nome di account utente e la password associata per stabilire una connessione.With this authentication method, the user submits a user account name and associated password to establish a connection. Questa password viene archiviata nel database master per gli account utente collegati a un account di accesso o archiviati nel database contenente gli account utente non collegati a un account di accesso.This password is stored in the master database for user accounts linked to a login or stored in the database containing the user accounts not linked to a login.

  • Autenticazione di Azure Active DirectoryAzure Active Directory Authentication

    Con questo metodo di autenticazione, l'utente invia un nome di account utente e richiede che il servizio utilizzi le informazioni sulle credenziali archiviate nel Azure Active Directory (Azure AD).With this authentication method, the user submits a user account name and requests that the service use the credential information stored in Azure Active Directory (Azure AD).

Account di accesso e utenti : un account utente in un database può essere associato a un account di accesso archiviato nel database master oppure può essere un nome utente archiviato in un singolo database.Logins and users : A user account in a database can be associated with a login that is stored in the master database or can be a user name that is stored in an individual database.

  • Un account di accesso è un account singolo nel database master, al quale è possibile collegare un account utente in uno o più database.A login is an individual account in the master database, to which a user account in one or more databases can be linked. Con un account di accesso, le informazioni sulle credenziali per l'account utente vengono archiviate con l'account di accesso.With a login, the credential information for the user account is stored with the login.
  • Un account utente è un account singolo in qualsiasi database che può essere, ma non deve essere collegato a un account di accesso.A user account is an individual account in any database that may be, but does not have to be, linked to a login. Con un account utente non collegato a un account di accesso, le informazioni sulle credenziali vengono archiviate con l'account utente.With a user account that is not linked to a login, the credential information is stored with the user account.

L' autorizzazione per accedere ai dati ed eseguire varie azioni viene gestita tramite ruoli del database e autorizzazioni esplicite.Authorization to access data and perform various actions are managed using database roles and explicit permissions. L'autorizzazione si riferisce alle autorizzazioni assegnate a un utente e determina le operazioni che l'utente è autorizzato a eseguire.Authorization refers to the permissions assigned to a user, and determines what that user is allowed to do. L'autorizzazione viene controllata dalle appartenenze ai ruoli del database e dalle autorizzazioni a livello di oggettodell'account utente.Authorization is controlled by your user account's database role memberships and object-level permissions. È consigliabile concedere agli utenti i privilegi minimi necessari.As a best practice, you should grant users the least privileges necessary.

Account di accesso e account utente esistenti dopo la creazione di un nuovo databaseExisting logins and user accounts after creating a new database

Quando si distribuisce per la prima volta SQL di Azure, è necessario specificare un account di accesso amministratore e una password associata per tale account di accesso.When you first deploy Azure SQL, you specify an admin login and an associated password for that login. Questo account amministrativo è denominato amministratore del server . La seguente configurazione di account di accesso e utenti nei database master e utente si verifica durante la distribuzione:This administrative account is called Server admin . The following configuration of logins and users in the master and user databases occurs during deployment:

  • Viene creato un account di accesso SQL con privilegi amministrativi usando il nome dell'account di accesso specificato.A SQL login with administrative privileges is created using the login name you specified. Un account di accesso è un singolo account utente per l'accesso al database SQL, a SQL istanza gestita e a sinapsi di Azure.A login is an individual user account for logging in to SQL Database, SQL Managed Instance, and Azure Synapse.
  • A questo account di accesso vengono concesse autorizzazioni amministrative complete per tutti i database come entità di livello server.This login is granted full administrative permissions on all databases as a server-level principal. L'account di accesso dispone di tutte le autorizzazioni disponibili e non può essere limitato.The login has all available permissions and can't be limited. In un Istanza gestita SQL, questo account di accesso viene aggiunto al ruolo predefinito del server sysadmin (questo ruolo non esiste nel database SQL di Azure).In a SQL Managed Instance, this login is added to the sysadmin fixed server role (this role does not exist in Azure SQL Database).
  • Viene creato un account utente denominato dbo per questo account di accesso in ogni database utente.A user account called dbo is created for this login in each user database. L'utente dbo dispone di tutte le autorizzazioni di database nel database e viene mappato al db_owner ruolo predefinito del database.The dbo user has all database permissions in the database and is mapped to the db_owner fixed database role. Ulteriori ruoli predefiniti del database sono descritti più avanti in questo articolo.Additional fixed database roles are discussed later in this article.

Per identificare gli account amministratore per un database, aprire il portale di Azure e passare alla scheda Proprietà del server o dell'istanza gestita.To identify the administrator accounts for a database, open the Azure portal, and navigate to the Properties tab of your server or managed instance.

Amministratori del server SQL

Schermata che evidenzia l'opzione del menu proprietà.

Importante

Il nome dell'account di accesso dell'amministratore non può essere modificato dopo che è stato creato.The admin login name can't be changed after it has been created. Per reimpostare la password per l'amministratore del servizio, aprire il portale di Azure, fare clic su SQL Server , selezionare il server dall'elenco e quindi fare clic su Reimposta password .To reset the password for the server admin, go to the Azure portal, click SQL Servers , select the server from the list, and then click Reset Password . Per reimpostare la password per il Istanza gestita SQL, passare al portale di Azure, fare clic sull'istanza e quindi fare clic su Reimposta password .To reset the password for the SQL Managed Instance, go to the Azure portal, click the instance, and click Reset password . È anche possibile usare PowerShell o l'interfaccia della riga di comando di Azure.You can also use PowerShell or the Azure CLI.

Creare altri account di accesso e utenti con autorizzazioni amministrativeCreate additional logins and users having administrative permissions

A questo punto, il server o l'istanza gestita viene configurata per l'accesso solo usando un unico account di accesso SQL e un account utente.At this point, your server or managed instance is only configured for access using a single SQL login and user account. Per creare account di accesso aggiuntivi con autorizzazioni amministrative complete o parziali, sono disponibili le opzioni seguenti (a seconda della modalità di distribuzione):To create additional logins with full or partial administrative permissions, you have the following options (depending on your deployment mode):

  • Creare un account amministratore Azure Active Directory con autorizzazioni amministrative completeCreate an Azure Active Directory administrator account with full administrative permissions

    Abilitare l'autenticazione Azure Active Directory e creare un account di accesso Azure AD amministratore.Enable Azure Active Directory authentication and create an Azure AD administrator login. Un account di Azure Active Directory può essere configurato come amministratore della distribuzione SQL di Azure con autorizzazioni amministrative complete.One Azure Active Directory account can be configured as an administrator of the Azure SQL deployment with full administrative permissions. Questo account può essere un account utente singolo o di gruppo di sicurezza.This account can be either an individual or security group account. È necessario configurare un amministratore Azure ad se si vuole usare account Azure ad per connettersi al database SQL, a SQL istanza gestita o a sinapsi di Azure.An Azure AD administrator must be configured if you want to use Azure AD accounts to connect to SQL Database, SQL Managed Instance, or Azure Synapse. Per informazioni dettagliate sull'abilitazione dell'autenticazione Azure AD per tutti i tipi di distribuzione SQL di Azure, vedere gli articoli seguenti:For detailed information on enabling Azure AD authentication for all Azure SQL deployment types, see the following articles:

  • In SQL Istanza gestita creare account di accesso SQL con autorizzazioni amministrative completeIn SQL Managed Instance, create SQL logins with full administrative permissions

  • Nel database SQL creare account di accesso SQL con autorizzazioni amministrative limitateIn SQL Database, create SQL logins with limited administrative permissions

    • Creare un account di accesso SQL aggiuntivo nel database master.Create an additional SQL login in the master database.
    • Creare un account utente nel database master associato a questo nuovo account di accesso.Create a user account in the master database associated with this new login.
    • Aggiungere l'account utente a dbmanager , il loginmanager ruolo o entrambi nel master database usando l'istruzione ALTER ROLE (per la sinapsi di Azure, usare l'istruzione sp_addrolemember ).Add the user account to the dbmanager, the loginmanager role, or both in the master database using the ALTER ROLE statement (for Azure Synapse, use the sp_addrolemember statement).

    Nota

    dbmanager i loginmanager ruoli e non riguardano le distribuzioni di SQL istanza gestita.dbmanager and loginmanager roles do not pertain to SQL Managed Instance deployments.

    I membri di questi speciali ruoli del database master per il database SQL di Azure hanno l'autorità per creare e gestire i database o per creare e gestire gli account di accesso.Members of these special master database roles for Azure SQL Database have authority to create and manage databases or to create and manage logins. Nei database creati da un utente membro del dbmanager ruolo, il membro viene mappato al db_owner ruolo predefinito del database e può accedere a tale database e gestirlo utilizzando l' dbo account utente.In databases created by a user that is a member of the dbmanager role, the member is mapped to the db_owner fixed database role and can log into and manage that database using the dbo user account. Questi ruoli non dispongono di autorizzazioni esplicite al di fuori del database master.These roles have no explicit permissions outside of the master database.

    Importante

    Non è possibile creare un account di accesso SQL aggiuntivo con autorizzazioni amministrative complete nel database SQL.You can't create an additional SQL login with full administrative permissions in SQL Database.

Creare account per utenti non amministratoriCreate accounts for non-administrator users

È possibile creare account per utenti non amministrativi usando uno dei due metodi seguenti:You can create accounts for non-administrative users using one of two methods:

  • Crea un accessoCreate a login

    Creare un account di accesso SQL nel database master.Create a SQL login in the master database. Creare quindi un account utente in ogni database a cui l'utente deve accedere e associare l'account utente a tale account.Then create a user account in each database to which that user needs access and associate the user account with that login. Questo approccio è preferibile quando l'utente deve accedere a più database e si desidera che le password vengano sincronizzate.This approach is preferred when the user must access multiple databases and you wish to keep the passwords synchronized. Questo approccio, tuttavia, presenta complessità quando viene usato con la replica geografica perché è necessario creare l'account di accesso sia nel server primario che nel server secondario.However, this approach has complexities when used with geo-replication as the login must be created on both the primary server and the secondary server(s). Per altre informazioni, vedere configurare e gestire la sicurezza del database SQL di Azure per il ripristino geografico o il failover.For more information, see Configure and manage Azure SQL Database security for geo-restore or failover.

  • Creare un account utenteCreate a user account

    Creare un account utente nel database a cui un utente deve accedere (detto anche utente indipendente).Create a user account in the database to which a user needs access (also called a contained user).

    • Con il database SQL, è sempre possibile creare questo tipo di account utente.With SQL Database, you can always create this type of user account.
    • Con SQL Istanza gestita che supporta Azure ad entità server, è possibile creare account utente per eseguire l'autenticazione al istanza gestita SQL senza richiedere la creazione di utenti del database come utente di database indipendente.With SQL Managed Instance supporting Azure AD server principals, you can create user accounts to authenticate to the SQL Managed Instance without requiring database users to be created as a contained database user.

    Con questo approccio, le informazioni di autenticazione dell'utente vengono archiviate in ogni database e replicate automaticamente nei database con replica geografica.With this approach, the user authentication information is stored in each database, and replicated to geo-replicated databases automatically. Tuttavia, se lo stesso account è presente in più database e si usa l'autenticazione SQL di Azure, è necessario tenere sincronizzate manualmente le password.However, if the same account exists in multiple databases and you are using Azure SQL Authentication, you must keep the passwords synchronized manually. Inoltre, se un utente dispone di un account in database diversi con password diverse, la memorizzazione di tali password può costituire un problema.Additionally, if a user has an account in different databases with different passwords, remembering those passwords can become a problem.

Importante

Per creare utenti indipendenti con mapping a Azure AD identità, è necessario eseguire l'accesso con un account di Azure AD che sia un amministratore del database nel database SQL di Azure.To create contained users mapped to Azure AD identities, you must be logged in using an Azure AD account that is an administrator in the database in Azure SQL Database. In SQL Istanza gestita un account di accesso SQL con sysadmin autorizzazioni può anche creare un account di accesso o un utente Azure ad.In SQL Managed Instance, a SQL login with sysadmin permissions can also create an Azure AD login or user.

Per esempi che illustrano come creare account di accesso e utenti, vedere:For examples showing how to create logins and users, see:

Suggerimento

Per un'esercitazione sulla sicurezza che include la creazione di utenti nel database SQL di Azure, vedere esercitazione: proteggere il database SQL di Azure.For a security tutorial that includes creating users in Azure SQL Database, see Tutorial: Secure Azure SQL Database.

Utilizzo di ruoli di database fissi e personalizzatiUsing fixed and custom database roles

Dopo aver creato un account utente in un database, in base a un account di accesso o come utente indipendente, è possibile autorizzare l'utente a eseguire varie azioni e ad accedere ai dati in un database specifico.After creating a user account in a database, either based on a login or as a contained user, you can authorize that user to perform various actions and to access data in a particular database. Per autorizzare l'accesso, è possibile usare i metodi seguenti:You can use the following methods to authorize access:

  • Ruoli predefiniti del databaseFixed database roles

    Aggiungere l'account utente a un ruolo predefinito del database.Add the user account to a fixed database role. Sono disponibili 9 ruoli predefiniti del database, ognuno con un set di autorizzazioni definito.There are 9 fixed database roles, each with a defined set of permissions. I ruoli predefiniti del database più comuni sono: db_owner , db_ddladmin , db_datawriter , db_datareader , db_denydatawriter e db_denydatareader .The most common fixed database roles are: db_owner , db_ddladmin , db_datawriter , db_datareader , db_denydatawriter , and db_denydatareader . Per concedere autorizzazioni complete a un numero limitato di utenti viene usato comunemente db_owner .db_owner is commonly used to grant full permission to only a few users. Gli altri ruoli predefiniti del database sono utili per ottenere rapidamente un database semplice nello sviluppo, ma non sono consigliabili per la maggior parte dei database di produzione.The other fixed database roles are useful for getting a simple database in development quickly, but are not recommended for most production databases. Ad esempio, il ruolo predefinito del database db_datareader concede l'accesso in lettura a ogni tabella del database, che è più che strettamente necessario.For example, the db_datareader fixed database role grants read access to every table in the database, which is more than is strictly necessary.

  • Ruolo del database personalizzatoCustom database role

    Creare un ruolo del database personalizzato utilizzando l'istruzione create Role .Create a custom database role using the CREATE ROLE statement. Un ruolo personalizzato consente di creare ruoli del database definiti dall'utente e concedere con attenzione a ogni ruolo le autorizzazioni minime necessarie per le esigenze aziendali.A custom role enables you to create your own user-defined database roles and carefully grant each role the least permissions necessary for the business need. È quindi possibile aggiungere utenti al ruolo personalizzato.You can then add users to the custom role. Quando un utente è membro di più ruoli, vengono aggregate le autorizzazioni di tutti.When a user is a member of multiple roles, they aggregate the permissions of them all.

  • Concedi direttamente le autorizzazioniGrant permissions directly

    Concedere direttamente le autorizzazioni per l'account utente.Grant the user account permissions directly. Nel database SQL possono essere concesse o negate singolarmente oltre 100 autorizzazioni.There are over 100 permissions that can be individually granted or denied in SQL Database. Molte di queste autorizzazioni sono annidate.Many of these permissions are nested. L'autorizzazione UPDATE per uno schema, ad esempio, include l'autorizzazione UPDATE per ogni tabella all'interno di tale schema.For example, the UPDATE permission on a schema includes the UPDATE permission on each table within that schema. Come nella maggior parte dei sistemi di autorizzazioni, la negazione di un'autorizzazione determina l'override di una concessione.As in most permission systems, the denial of a permission overrides a grant. A causa dell'annidamento e del numero delle autorizzazioni, progettare un sistema di autorizzazioni appropriato per proteggere correttamente il database può richiedere un attento studio.Because of the nested nature and the number of permissions, it can take careful study to design an appropriate permission system to properly protect your database. Per iniziare, vedere l'elenco di autorizzazioni in Autorizzazioni (Motore di database) e la grafica in formato di poster relativa alle autorizzazioni.Start with the list of permissions at Permissions (Database Engine) and review the poster size graphic of the permissions.

Uso di gruppiUsing groups

Una gestione efficiente degli accessi usa le autorizzazioni assegnate a Active Directory i gruppi di sicurezza e i ruoli predefiniti o personalizzati anziché ai singoli utenti.Efficient access management uses permissions assigned to Active Directory security groups and fixed or custom roles instead of to individual users.

  • Quando si usa l'autenticazione Azure Active Directory, inserire gli utenti Azure Active Directory in un gruppo di sicurezza di Azure Active Directory.When using Azure Active Directory authentication, put Azure Active Directory users into an Azure Active Directory security group. Creare un utente di database indipendente per il gruppo.Create a contained database user for the group. Aggiungere uno o più utenti del database come membri di ruoli del database personalizzati o predefiniti con le autorizzazioni specifiche appropriate per il gruppo di utenti.Add one or more database users as a member to custom or builtin database roles with the specific permissions appropriate to that group of users.

  • Quando si usa l'autenticazione SQL, creare utenti di database indipendente nel database.When using SQL authentication, create contained database users in the database. Inserire uno o più utenti di database in un ruolo del database personalizzato con autorizzazioni specifiche appropriate per il gruppo di utenti.Place one or more database users into a custom database role with specific permissions appropriate to that group of users.

    Nota

    È anche possibile usare i gruppi per gli utenti di database non indipendenti.You can also use groups for non-contained database users.

È consigliabile acquisire familiarità con le funzionalità seguenti, utili per limitare o elevare le autorizzazioni:You should familiarize yourself with the following features that can be used to limit or elevate permissions:

Passaggi successiviNext steps

Per una panoramica di tutte le funzionalità di sicurezza del database SQL di Azure e di SQL Istanza gestita, vedere Panoramica della sicurezza.For an overview of all Azure SQL Database and SQL Managed Instance security features, see Security overview.