Configurare e gestire la sicurezza dei database SQL di Azure per il ripristino geografico o il failoverConfigure and manage Azure SQL Database security for geo-restore or failover

Questo argomento illustra i requisiti di autenticazione per configurare e controllare la replica geografica attiva e i passaggi necessari per configurare l'accesso utente al database secondario.This topic describes the authentication requirements to configure and control active geo-replication and the steps required to set up user access to the secondary database. Descrive anche come abilitare l'accesso al database ripristinato dopo il ripristino geografico.It also describes how to enable access to the recovered database after using geo-restore. Per altre informazioni sulle opzioni di ripristino, vedere Continuità aziendale del database SQL di Azure.For more information on recovery options, see Business Continuity Overview.

Nota

La replica geografica attiva è ora disponibile per tutti i database in tutti i livelli di servizio.Active geo-replication is now available for all databases in all service tiers.

Ripristino di emergenza con gli utenti indipendentiDisaster recovery with contained users

A differenza degli utenti tradizionali per i quali deve essere eseguito il mapping agli account di accesso nel database master, un utente indipendente viene gestito completamente dal database stesso.Unlike traditional users, which must be mapped to logins in the master database, a contained user is managed completely by the database itself. Questo approccio presenta due vantaggi.This has two benefits. Nello scenario di ripristino di emergenza, gli utenti possono continuare a connettersi al nuovo database primario o al database ripristinato con il ripristino geografico senza alcuna configurazione aggiuntiva, perché il database gestisce gli utenti.In the disaster recovery scenario, the users can continue to connect to the new primary database or the database recovered using geo-restore without any additional configuration, because the database manages the users. Dal punto di vista dell'accesso, questa configurazione offre anche vantaggi a livello di scalabilità e prestazioni.There are also potential scalability and performance benefits from this configuration from a login perspective. Per altre informazioni, vedere Utenti di database indipendente: rendere portabile un database.For more information, see Contained Database Users - Making Your Database Portable.

Il compromesso principale è rappresentato dal fatto che il processo di ripristino di emergenza su vasta scala è più complesso da gestire.The main trade-off is that managing the disaster recovery process at scale is more challenging. Quando si dispone di più database che usano lo stesso account di accesso, la gestione delle credenziali usate dagli utenti indipendenti in più database può annullare il vantaggio rappresentato dagli utenti indipendenti.When you have multiple databases that use the same login, maintaining the credentials using contained users in multiple databases may negate the benefits of contained users. Ad esempio, i criteri di rotazione delle password richiedono l'applicazione coerente delle modifiche in più database anziché la modifica singola della password per l'accesso nel database master.For example, the password rotation policy requires that changes be made consistently in multiple databases rather than changing the password for the login once in the master database. Per questo motivo l'uso degli utenti indipendenti non è consigliato in presenza di molti database che usano lo stesso nome utente e la stessa password.For this reason, if you have multiple databases that use the same user name and password, using contained users is not recommended.

Come configurare gli account di accesso e gli utentiHow to configure logins and users

Se si usano account di accesso e utenti tradizionali, invece di utenti indipendenti, è necessario eseguire altri passaggi per assicurare che nel database master siano presenti gli stessi account di accesso.If you are using logins and users (rather than contained users), you must take extra steps to insure that the same logins exist in the master database. Le sezioni seguenti illustrano i passaggi da eseguire, oltre a considerazioni aggiuntive.The following sections outline the steps involved and additional considerations.

Impostare l'accesso utente a un database secondario o ripristinatoSet up user access to a secondary or recovered database

Per fare in modo che il database secondario sia utilizzabile come database secondario di sola lettura e per garantire l'accesso appropriato al nuovo database primario o al database ripristinato con il ripristino geografico, è necessario che nel database master del server di destinazione sia presente la configurazione di sicurezza appropriata prima del ripristino.In order for the secondary database to be usable as a read-only secondary database, and to ensure proper access to the new primary database or the database recovered using geo-restore, the master database of the target server must have the appropriate security configuration in place before the recovery.

Le autorizzazioni specifiche per ogni passaggio sono descritte più avanti in questo argomento.The specific permissions for each step are described later in this topic.

La preparazione dell'accesso utente a un database secondario con replica geografica deve essere eseguita durante la configurazione della replica geografica.Preparing user access to a geo-replication secondary should be performed as part configuring geo-replication. La preparazione dell'accesso utente ai database ripristinati con il ripristino geografico deve essere eseguita in qualsiasi momento quando il server originale è online, ad esempio nel contesto dell'analisi del ripristino di emergenza.Preparing user access to the geo-restored databases should be performed at any time when the original server is online (e.g. as part of the DR drill).

Nota

Se si esegue il failover o il ripristino geografico in un server che non presenta account di accesso configurati adeguatamente, l'accesso sarà limitato all'account amministratore del server.If you fail over or geo-restore to a server that does not have properly configured logins, access to it will be limited to the server admin account.

La configurazione degli account di accesso nel server di destinazione prevede i tre passaggi seguenti:Setting up logins on the target server involves three steps outlined below:

1. Determinare gli account di accesso che possono accedere al database primario:1. Determine logins with access to the primary database:

Il primo passaggio della procedura consiste nel determinare quali account di accesso devono essere duplicati nel server di destinazione.The first step of the process is to determine which logins must be duplicated on the target server. A questo scopo, è necessario usare una coppia di istruzioni SELECT, una nel database master logico nel server di origine e una nel database primario stesso.This is accomplished with a pair of SELECT statements, one in the logical master database on the source server and one in the primary database itself.

Solo l'amministratore del server o un membro del ruolo del server LoginManager può determinare gli account di accesso nel server di origine con l'istruzione SELECT seguente.Only the server admin or a member of the LoginManager server role can determine the logins on the source server with the following SELECT statement.

SELECT [name], [sid] 
FROM [sys].[sql_logins] 
WHERE [type_desc] = 'SQL_Login'

Solo un membro del ruolo del database db_owner, l'utente dbo o l'amministratore del server può determinare tutte le entità utente nel database primario.Only a member of the db_owner database role, the dbo user, or server admin, can determine all of the database user principals in the primary database.

SELECT [name], [sid]
FROM [sys].[database_principals]
WHERE [type_desc] = 'SQL_USER'

2. Trovare il SID degli account di accesso identificati nel passaggio 1:2. Find the SID for the logins identified in step 1:

Confrontando l'output delle query illustrate nella sezione precedente e trovando una corrispondenza per i SID, è possibile eseguire il mapping dell'account di accesso del server all'utente del database.By comparing the output of the queries from the previous section and matching the SIDs, you can map the server login to database user. Gli account di accesso che hanno un utente del database con un SID corrispondente hanno anche l'accesso utente a quel database come entità utente.Logins that have a database user with a matching SID have user access to that database as that database user principal.

La query seguente può essere usata per visualizzare tutte le entità utente e i relativi SID in un database.The following query can be used to see all of the user principals and their SIDs in a database. Questa query può essere eseguita solo da un membro del ruolo del database db_owner o dall'amministratore del server.Only a member of the db_owner database role or server admin can run this query.

SELECT [name], [sid]
FROM [sys].[database_principals]
WHERE [type_desc] = 'SQL_USER'

Nota

Gli utenti INFORMATION_SCHEMA e sys avranno SID NULL, mentre il SID guest è 0x00.The INFORMATION_SCHEMA and sys users have NULL SIDs, and the guest SID is 0x00. Il SID dbo può iniziare con 0x01060000000001648000000000048454 se il database è stato creato dall'amministratore del server invece che da un membro di DbManager.The dbo SID may start with 0x01060000000001648000000000048454, if the database creator was the server admin instead of a member of DbManager.

3. Creare gli account di accesso nel server di destinazione:3. Create the logins on the target server:

L'ultimo passaggio consiste nel generare gli account di accesso con i SID appropriati nel server o nei server di destinazione.The last step is to go to the target server, or servers, and generate the logins with the appropriate SIDs. La sintassi di base è la seguente.The basic syntax is as follows.

CREATE LOGIN [<login name>]
WITH PASSWORD = <login password>,
SID = <desired login SID>

Nota

Se si vuole concedere l'accesso utente al database secondario, ma non al database primario, è possibile modificare l'account di accesso utente nel server primario usando la sintassi seguente.If you want to grant user access to the secondary, but not to the primary, you can do that by altering the user login on the primary server by using the following syntax.

ALTER LOGIN DISABLEALTER LOGIN DISABLE

DISABLE non modifica la password, pertanto è sempre possibile abilitare l'accesso, se necessario.DISABLE doesn’t change the password, so you can always enable it if needed.

Passaggi successiviNext steps