Questa pagina descrive come funziona Cloud SQL con utenti e ruoli di SQL Server. I ruoli SQL Server ti consentono di controllare l'accesso e le funzionalità degli utenti che accedono a un'istanza SQL Server.
Per informazioni sulla creazione e la gestione degli utenti di Cloud SQL, consulta Creazione e gestione degli utenti.
Ruoli e utenti di SQL Server
I ruoli SQL Server possono essere ruoli singoli o come 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
, perciò
Cloud SQL usa i termini "role" e "user" in modo intercambiabile. Tuttavia, se crei un ruolo con qualsiasi 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 privo di password.
Super user e stored procedure di sistema
Cloud SQL per SQL Server è un servizio gestito, quindi limita l'accesso ad alcune stored procedure di sistema e tabelle che richiedono privilegi avanzati. In Cloud SQL, non puoi creare o avere accesso a utenti con autorizzazioni dei super user.
Utenti SQL Server predefiniti
Quando crei una nuova istanza Cloud SQL per SQL Server, l'utente sqlserver
predefinito è già 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 CONNECTION
ALTER ANY LOGIN
ALTER ANY SERVER ROLE
ALTER SERVER STATE
ALTER TRACE
CONNECT SQL
CREATE ANY DATABASE
CREATE SERVER ROLE
VIEW ANY DATABASE
VIEW ANY DEFINITION
VIEW 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 tuo server:
ALTER ANY LINKED SERVER
Concedere le autorizzazioni del server
Quando concedi i privilegi utilizzando qualsiasi comando GRANT
,
devi trasmettere CustomerDbRootRole
come, ad esempio, il valore di
grantor_principal
.
Il seguente esempio di GRANT ALTER ANY LOGIN
è valido:
GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole
Il seguente GRANT ALTER ANY LOGIN
esempio è non valido:
GRANT ALTER ANY LOGIN TO [Account]
Altri utenti SQL Server
Puoi creare altri utenti o ruoli di SQL Server. A tutti gli utenti che crei mediante Cloud SQL vengono concesse le stesse autorizzazioni per il database dell'accesso a 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 del cliente o dell'utente sqlserver
. Ad esempio, se utilizzi la procedura Crea accesso e aggiungi l'accesso al ruolo del server CustomerDbRootRole
, l'utente non avrà le stesse autorizzazioni degli account amministratore del cliente o dell'utente sqlserver
. Pertanto, puoi utilizzare Cloud SQL per creare un utente se intendi che abbia le stesse autorizzazioni di database dell'accesso a sqlserver
.
Per convalidare la differenza nelle autorizzazioni tra due account, puoi utilizzare la seguente funzione:
sys.fn_my_permissions.
Importazioni 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 diverso da
sa
: Cloud SQL conserva il proprietario e crea un utente denominatosqlserver
mappato all'accessosqlserver
. Cloud SQL concede le autorizzazioniCONTROL
eALTER ANY USER
all'utentesqlserver
. - Per gli accessi sconosciuti o creati dal sistema: Cloud SQL
trasferisce la proprietà del database all'accesso
sqlserver
.
Modifica delle autorizzazioni degli utenti
Il comando ALTERROLE è disponibile per modificare le autorizzazioni degli utenti. Se crei un nuovo utente con un client, puoi associarlo a un ruolo diverso o concedere autorizzazioni diverse.
Risoluzione dei problemi
Errore durante l'accesso al database
Quando tenti di accedere a un database che hai creato, come utente 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.
Cose da provare
Connettiti al database come utente sqlserver
e aggiungi il nuovo utente, poi
assegna al nuovo utente il ruolo db_owner
per il database. Ad
esempio:
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'