Controllo dell'accesso al database SQL di AzureAzure SQL Database access control

Per garantire la sicurezza, il database SQL controlla l'accesso con regole del firewall che limitano la connettività in base all'indirizzo IP, meccanismi di autenticazione che richiedono agli utenti di dimostrare la propria identità e meccanismi di autorizzazione che consentono agli utenti di usufruire solo di azioni e dati specifici.To provide security, SQL Database controls access with firewall rules limiting connectivity by IP address, authentication mechanisms requiring users to prove their identity, and authorization mechanisms limiting users to specific actions and data.

Importante

Per una panoramica delle funzionalità di sicurezza del database SQL, vedere la panoramica della sicurezza in SQL.For an overview of the SQL Database security features, see SQL security overview. Per un'esercitazione, vedere Proteggere il database SQL di Azure.For a tutorial, see Secure your Azure SQL Database.

Firewall e regole del firewallFirewall and firewall rules

Il database SQL di Microsoft Azure fornisce un servizio di database relazionale per Azure e altre applicazioni basate su Internet.Microsoft Azure SQL Database provides a relational database service for Azure and other Internet-based applications. Per proteggere i dati, il firewall impedisce qualsiasi accesso al server di database finché non vengono specificati i computer autorizzati.To help protect your data, firewalls prevent all access to your database server until you specify which computers have permission. Il firewall concede l'accesso ai database in base all'indirizzo IP di origine di ogni richiesta.The firewall grants access to databases based on the originating IP address of each request. Per altre informazioni, vedere Panoramica sulle regole del firewall per il database SQL di Azure.For more information, see Overview of Azure SQL Database firewall rules

Il servizio Database SQL di Azure è disponibile solo tramite la porta TCP 1433.The Azure SQL Database service is only available through TCP port 1433. Per accedere al database SQL dal computer, assicurarsi che il firewall del computer client consenta la comunicazione TCP in uscita sulla porta TCP 1433.To access a SQL Database from your computer, ensure that your client computer firewall allows outgoing TCP communication on TCP port 1433. Se non sono necessarie per altre applicazioni, bloccare le connessioni in ingresso sulla porta TCP 1433.If not needed for other applications, block inbound connections on TCP port 1433.

Come parte del processo di connessione, le connessioni da macchine virtuali di Azure vengono reindirizzate a un indirizzo IP diverso e a una porta, univoca per ogni ruolo di lavoro.As part of the connection process, connections from Azure virtual machines are redirected to a different IP address and port, unique for each worker role. Il numero di porta è compreso nell'intervallo che va da 11000 a 11999.The port number is in the range from 11000 to 11999. Per altre informazioni sulle porte TCP, vedere Porte superiori a 1433 per ADO.NET 4.5 e il database SQL.For more information about TCP ports, see Ports beyond 1433 for ADO.NET 4.5 and SQL Database2.

AutenticazioneAuthentication

Il database SQL supporta due tipi di autenticazione:SQL Database supports two types of authentication:

  • Autenticazione SQL, che usa nome utente e password.SQL Authentication, which uses a username and password. Durante la creazione del server logico per il database, è stato specificato un account di accesso "amministratore del server" con un nome utente e una password.When you created the logical server for your database, you specified a "server admin" login with a username and password. Utilizzando queste credenziali, è possibile essere autenticati in qualsiasi database di tale server in qualità di proprietario del database o "dbo".Using these credentials, you can authenticate to any database on that server as the database owner, or "dbo."
  • Autenticazione di Azure Active Directory, che usa identità gestite da Azure Active Directory ed è supportata per domini gestiti e integrati.Azure Active Directory Authentication, which uses identities managed by Azure Active Directory and is supported for managed and integrated domains. Quando possibile, usare l'autenticazione di Active Directory (sicurezza integrata).Use Active Directory authentication (integrated security) whenever possible. Se si desidera utilizzare l'autenticazione di Azure Active Directory, è necessario creare un altro amministratore del server denominato "admin Azure AD," che è autorizzato ad amministrare utenti e gruppi di Azure AD.If you want to use Azure Active Directory Authentication, you must create another server admin called the "Azure AD admin," which is allowed to administer Azure AD users and groups. Questo amministratore può inoltre eseguire tutte le operazioni che un amministratore del server regolare può fare.This admin can also perform all operations that a regular server admin can. Vedere Connessione al Database SQL utilizzando l'autenticazione di Azure Active Directory per una procedura dettagliata di come creare un amministratore di Azure AD per abilitare l'autenticazione di Azure Active Directory.See Connecting to SQL Database By Using Azure Active Directory Authentication for a walkthrough of how to create an Azure AD admin to enable Azure Active Directory Authentication.

Il motore di Database chiude le connessioni che rimangono inattive per più di 30 minuti.The Database Engine closes connections that remain idle for more than 30 minutes. La connessione deve accedere nuovamente prima di poter essere utilizzata.The connection must login again before it can be used. Per le connessioni al database SQL attive in modo continuo è necessaria la riautorizzazione (eseguita dal motore di database) almeno ogni 10 ore.Continuously active connections to SQL Database require reauthorization (performed by the database engine) at least every 10 hours. Il motore di database tenta la riautorizzazione usando la password inviata originariamente e non è necessario alcun input dell'utente.The database engine attempts reauthorization using the originally submitted password and no user input is required. Per motivi di prestazioni quando si reimposta una password nel Database SQL, la connessione non viene autenticata di nuovo, anche se viene reimpostata a causa del pool di connessioni.For performance reasons, when a password is reset in SQL Database, the connection is not be reauthenticated, even if the connection is reset due to connection pooling. Ciò differisce dal comportamento del Server SQL locale.This is different from the behavior of on-premises SQL Server. Se la password è stata modificata poichè la connessione è stata inizialmente autorizzata, è necessario terminare la connessione e effettuarne una nuova utilizzando la nuova password.If the password has been changed since the connection was initially authorized, the connection must be terminated and a new connection made using the new password. Un utente con autorizzazione KILL DATABASE CONNECTION può terminare in modo esplicito una connessione al database SQL usando il comando KILL.A user with the KILL DATABASE CONNECTION permission can explicitly terminate a connection to SQL Database by using the KILL command.

È possibile creare gli account utente nel database master e concedere le relative autorizzazioni in tutti i database sul server oppure creare gli account nel database stesso (utenti indipendenti).User accounts can be created in the master database and can be granted permissions in all databases on the server, or they can be created in the database itself (called contained users). Per informazioni sulla creazione e sulla gestione, vedere l'articolo su come gestire gli account di accesso.For information on creating and managing logins, see Manage logins. Per migliorare la portabilità e la scalabilità, usare utenti di database indipendente.To enhance portability and scalabilty, use contained database users to enhance scalability. Per altre informazioni sugli utenti indipendenti, vedere Utenti di database indipendente: rendere portabile un database, CREATE USER (Transact-SQL) e Database indipendenti.For more information on contained users, see Contained Database Users - Making Your Database Portable, CREATE USER (Transact-SQL), and Contained Databases.

È consigliabile usare un account dedicato per l'autenticazione dell'applicazione. In questo modo è possibile limitare le autorizzazioni concesse all'applicazione e ridurre i rischi di attività dannose, nel caso in cui il codice dell'applicazione sia vulnerabile ad attacchi SQL injection.As a best practice your application should use a dedicated account to authenticate -- this way you can limit the permissions granted to the application and reduce the risks of malicious activity in case your application code is vulnerable to a SQL injection attack. L'approccio consigliato consiste nel creare un utente di database indipendente, consentendo così l'autenticazione dell'app direttamente nel database.The recommended approach is to create a contained database user, which allows your app to authenticate directly to the database.

AuthorizationAuthorization

Per autorizzazione si intendono le operazioni che l'utente può eseguire in un database SQL di Azure, che sono controllate dalle appartenenze ai ruoli del database e dalle autorizzazioni a livello di oggetto dell'account utente.Authorization refers to what a user can do within an Azure SQL Database, and this is controlled by your user account's database role memberships and object-level permissions. Come procedura consigliata, è opportuno concedere agli utenti i privilegi minimi necessari.As a best practice, you should grant users the least privileges necessary. L'account di amministrazione del server a cui ci si sta connettendo è un membro del ruolo db_owner, che è autorizzato a eseguire qualsiasi operazione all'interno del database.The server admin account you are connecting with is a member of db_owner, which has authority to do anything within the database. Salvare questo account per la distribuzione degli aggiornamenti allo schema e altre operazioni di gestione.Save this account for deploying schema upgrades and other management operations. Utilizzare l'account "ApplicationUser" con autorizzazioni più limitate per la connessione dall'applicazione al database con i privilegi minimi richiesti dall'applicazione.Use the "ApplicationUser" account with more limited permissions to connect from your application to the database with the least privileges needed by your application. Per altre informazioni, vedere l'articolo su come gestire gli account di accesso.For more information, see Manage logins.

In genere, solo gli amministratori hanno necessità di accedere al database master.Typically, only administrators need access to the master database. L'accesso di routine a ogni database utente deve avvenire tramite gli utenti non amministratori del database indipendente creati in ogni database.Routine access to each user database should be through non-administrator contained database users created in each database. Quando si usano gli utenti del database indipendente non è necessario creare account di accesso nel database master.When you use contained database users, you do not need to create logins in the master database. Per altre informazioni, vedere Utenti di database indipendente: rendere portabile un database.For more information, see Contained Database Users - Making Your Database Portable.

È 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