Questa pagina descrive il funzionamento di Cloud SQL con gli utenti e i ruoli di SQL Server. I ruoli di SQL Server consentono di controllare l'accesso e le funzionalità degli utenti che accedono a un'istanza di SQL Server.
Per informazioni sulla creazione e la gestione degli utenti Cloud SQL, consulta Creare e gestire gli utenti.
Ruoli e utenti di SQL Server
I ruoli di SQL Server possono essere un singolo ruolo o possono fungere da gruppo di ruoli.
Un utente è un ruolo con la possibilità di accedere (il ruolo ha l'autorizzazione LOGIN). Tutti i ruoli creati da Cloud SQL hanno l'autorizzazione LOGIN, quindi Cloud SQL utilizza i termini "ruolo" e "utente" in modo intercambiabile. Tuttavia, se crei un ruolo con uno strumento client compatibile con SQL Server, il ruolo non riceve necessariamente l'autorizzazione LOGIN.
Cloud SQL per SQL Server limita l'accesso a determinati ruoli del server che forniscono privilegi avanzati. Esempi di questi ruoli sono DbRootRole, serveradmin, securityadmin, setupadmin, diskadmin e dbcreator.
Tutti gli utenti di SQL Server devono avere una password. Pertanto, non puoi accedere con un utente senza password.
Super user e stored procedure di sistema
Cloud SQL per SQL Server è un servizio gestito, pertanto limita l'accesso a determinate stored procedure e tabelle di sistema che richiedono privilegi avanzati. In Cloud SQL, non puoi creare o avere accesso a utenti con autorizzazioni di super user.
Utenti predefiniti di SQL Server
Quando crei una nuova istanza Cloud SQL per SQL Server, l'utente sqlserver predefinito viene creato automaticamente, anche se devi impostarne la password.
L'utente sqlserver fa parte del ruolo CustomerDbRootRole e le sue autorizzazioni (privilegi) includono quanto segue:
ALTER ANY CONNECTIONALTER ANY LOGINALTER ANY SERVER ROLEALTER SERVER STATEALTER TRACECONNECT SQLCREATE ANY DATABASECREATE SERVER ROLEVIEW ANY DATABASEVIEW ANY DEFINITIONVIEW SERVER STATE
Puoi anche aggiungere cloudsql enable linked servers
all'istanza se vuoi utilizzarla con i server collegati. Questo flag concede la seguente autorizzazione al server:
ALTER ANY LINKED SERVER
Concedere le autorizzazioni del server
Quando concedi i privilegi utilizzando un GRANT comando, devi passare CustomerDbRootRole come, ad esempio, il valore di grantor_principal.
Il seguente esempio GRANT ALTER ANY LOGIN è valido:
GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole
Il seguente esempio GRANT ALTER ANY LOGIN è non valido:
GRANT ALTER ANY LOGIN TO [Account]
Altri utenti di SQL Server
Puoi creare altri utenti di SQL Server o ruoli. A tutti gli utenti creati utilizzando Cloud SQL vengono concesse le stesse autorizzazioni di database dell'accesso sqlserver. Tuttavia, se utilizzi un processo diverso per creare un utente (anziché crearlo utilizzando Cloud SQL), l'utente non avrà le stesse autorizzazioni degli account amministratore cliente o dell'utente sqlserver. Ad
esempio, se utilizzi il processo
di
creazione dell'accesso e aggiungi l'accesso al ruolo del server CustomerDbRootRole, l'utente
non avrà le stesse autorizzazioni degli account amministratore cliente o dell'
utente sqlserver. Pertanto, puoi utilizzare Cloud SQL per creare un utente se intendi che l'utente abbia le stesse autorizzazioni di database dell'accesso sqlserver.
Per convalidare la differenza di autorizzazioni tra due account, puoi utilizzare
la seguente funzione:
sys.fn_my_permissions.
Importazioni di database: autorizzazioni del proprietario
Quando importi un database, il trattamento del proprietario varia come segue, in base al tipo di proprietario:
- Per un accesso esistente che non è
sa: Cloud SQL mantiene il proprietario e crea un utente chiamatosqlserverche esegue il mapping all'accessosqlserver. Cloud SQL concede le autorizzazioniCONTROLeALTER ANY USERall'utentesqlserver. - Per gli accessi sconosciuti o creati dal sistema: Cloud SQL trasferisce la proprietà del database all'accesso
sqlserver.
Modificare le autorizzazioni per gli utenti
Il comando ALTER ROLE è disponibile per modificare le autorizzazioni utente. Se crei un nuovo utente con un client, puoi associarlo a un ruolo diverso o fornire autorizzazioni diverse.
Risoluzione dei problemi
Errore durante l'accesso al database
Quando tenti di accedere a un database che hai creato, come utente che hai creato, ricevi il seguente errore:
The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context.
Il problema potrebbe essere
L'utente non è membro del database.
Cosa provare
Connettiti al database come utente sqlserver e aggiungi il nuovo utente,
quindi
assegna al nuovo utente il ruolo db_owner per il database. Ad esempio:
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'