Utenti di database indipendente: rendere portabile un database
Usare utenti di database indipendenti per autenticare SQL Server e database SQL connessioni a livello di database. Un database indipendente è un database isolato da altri database e dall'istanza di SQL Server/database SQL (e il database master) che ospita il database. SQL Server supporta utenti di database indipendenti per l'autenticazione di Windows e SQL Server. Quando si usa database SQL, combinare utenti di database indipendenti con regole del firewall a livello di database. Questo argomento illustra le differenze e i vantaggi correlati all'uso del modello di database indipendente rispetto al modello tradizionale basato su account di accesso/utente e alle regole firewall a livello di server o Windows. L'uso del modello tradizionale basato su account di accesso/utente e delle regole firewall a livello di server può essere ancora necessario in scenari specifici, per la gestibilità o per la logica di business dell'applicazione.
Nota
Man mano che Microsoft evolve il servizio database SQL e si sposta verso contratti di servizio più elevati, è possibile che sia necessario passare al modello utente del database indipendente e alle regole del firewall con ambito database per ottenere il contratto di servizio di disponibilità superiore e le tariffe massime di accesso massime per un determinato database. Microsoft consiglia di prendere in considerazione tali modifiche oggi.
Modello tradizionale basato su account di accesso e utente
Nel modello di connessione tradizionale, gli utenti o i membri di Windows si connettono al motore di database fornendo credenziali utente o gruppo autenticate da Windows. Oppure la connessione fornisce sia un nome che una password e si connette usando l'autenticazione SQL Server (ovvero l'unica opzione quando ci si connette a database SQL). In entrambi i casi, il database master deve disporre di un account di accesso corrispondente alle credenziali di connessione. Dopo che il motore di database conferma le credenziali di autenticazione di Windows o autentica le credenziali di autenticazione SQL Server, la connessione tenta in genere di connettersi a un database utente. Per connettersi a un database utente, l'account di accesso deve poter essere sottoposto a mapping (ovvero associato) a un utente del database nel database utente. La stringa di connessione può anche specificare la connessione a un database specifico che è facoltativo in SQL Server ma richiesto in database SQL.
L'aspetto importante è che sia l'account di accesso (nel database master) che l'utente (nel database utente) devono esistere ed essere correlati tra loro. Ciò significa che la connessione al database utente ha una dipendenza dall'account di accesso nel database master e ciò limita la possibilità di spostare il database in un SQL Server di hosting diverso o Azure SQL server di database. Se inoltre per qualsiasi motivo non è disponibile una connessione al database master (ad esempio è in corso un failover), aumenterà il tempo complessivo di connessione oppure potrà verificarsi un timeout della connessione. Questo potrebbe quindi ridurre la scalabilità della connessione.
Modello di utente di database indipendente
Nel modello di utente di database indipendente l'account di accesso nel database master non è presente. Al contrario, il processo di autenticazione si verifica nel database utente e l'utente del database nel database utente non dispone di un account di accesso associato nel database master. Il modello utente del database indipendente supporta sia autenticazione di Windows (in SQL Server) sia l'autenticazione SQL Server (sia in SQL Server che in database SQL). Per connettersi come utente del database indipendente, la stringa di connessione deve sempre contenere un parametro per il database utente in modo che il motore di database sappia quale database è responsabile della gestione del processo di autenticazione. L'attività dell'utente di database indipendente è limitata al database di autenticazione, pertanto durante la connessione come utente di database indipendente, l'account utente del database deve essere creato in modo indipendente in ogni database richiesto dall'utente. Per modificare i database, database SQL gli utenti devono creare una nuova connessione. Gli utenti di database indipendenti in SQL Server possono modificare i database se un utente identico è presente in un altro database.
Per database SQL, non sono necessarie modifiche alla stringa di connessione quando si passa dal modello tradizionale al modello utente del database indipendente. Per le connessioni SQL Server, il nome del database deve essere aggiunto alla stringa di connessione, se non è già presente.
Importante
Quando si usa il modello tradizionale, i ruoli e le autorizzazioni a livello di server possono limitare l'accesso a tutti i database. Quando si usa il modello di database indipendente, i proprietari del database e gli utenti del database con autorizzazione ALTER ANY USER possono concedere l'accesso al database. In questo modo si riduce il controllo di accesso di account di accesso server con privilegi elevati e si espande il controllo di accesso per includere utenti di database con privilegi elevati.
Firewall
SQL Server
Le regole di Windows Firewall si applicano a tutte le connessioni e producono gli stessi effetti sugli account di accesso (connessioni con modello tradizionale) e sugli utenti di database indipendente. Per altre informazioni su Windows Firewall, vedere Configurazione di Windows Firewall per l'accesso al Motore di database.
Firewall del database SQL
database SQL consente regole del firewall separate per le connessioni a livello di server (account di accesso) e per le connessioni a livello di database (utenti del database indipendenti). Durante la connessione a un database utente vengono verificate per prime le regole del firewall a livello di database. Se non esistono regole che consentono l'accesso al database, vengono verificate le regole del firewall a livello di server, operazione che richiede l'accesso al database master del server logico. L'uso combinato di regole del firewall a livello di database e utenti di database indipendente consente di non dover accedere al database master del server durante la connessione e implica di conseguenza un miglioramento della scalabilità della connessione.
Per altre informazioni sulle regole del firewall database SQL, vedere gli argomenti seguenti:
Differenze di sintassi
Modello tradizionale | Modello di utente di database indipendente |
---|---|
Quando connesso al database master:CREATE LOGIN login_name WITH PASSWORD = 'strong_password'; Quindi, quando connesso a un database utente: CREATE USER 'user_name' FOR LOGIN 'login_name'; |
Quando connesso a un database utente:CREATE USER user_name WITH PASSWORD = 'strong_password'; |
Modello tradizionale | Modello di utente di database indipendente |
---|---|
Per cambiare la password, nel contesto del database master:ALTER LOGIN login_name WITH PASSWORD = 'strong_password'; |
Per cambiare la password, nel contesto del database utente:ALTER USER user_name WITH PASSWORD = 'strong_password'; |
Commenti
In SQL Server gli utenti del database indipendenti devono essere abilitati per l'istanza di SQL Server. Per altre informazioni, vedere Opzione di configurazione del server contained database authentication.
Gli account di accesso e gli utenti di database indipendente con nomi diversi possono coesistere nelle applicazioni.
Se nel database master è presente un account di accesso denominato nome1 e si crea un utente di database indipendente denominato nome1, quando viene specificato un nome di database nella stringa di connessione il contesto dell'utente del database verrà preferito a quello dell'account di accesso durante la connessione al database, ovvero gli utenti di database indipendente avranno la precedenza rispetto agli account di accesso con lo stesso nome.
In database SQL il nome dell'utente del database indipendente non può essere uguale al nome dell'account amministratore del server.
L'account amministratore del server database SQL non può mai essere un utente del database indipendente. L'amministratore del server dispone di autorizzazioni sufficienti per creare e gestire utenti del database indipendente. L'amministratore del server può concedere a utenti di database indipendente autorizzazioni per i database utente.
Dal momento che gli utenti del database indipendente sono entità a livello di database, è necessario creare utenti del database indipendente in ogni database in cui verranno usati. L'identità è confinata al database ed è da ogni punto di vista indipendente rispetto a un utente con lo stesso nome e la stessa password in un altro database nello stesso server.
Usare le stesse password complesse usate in genere per gli account di accesso.
Vedere anche
Database indipendenti
Procedure consigliate per la sicurezza in database indipendenti
CREATE USER (Transact-SQL)