Cette page décrit le fonctionnement de Cloud SQL avec les utilisateurs et les rôles SQL Server. Les rôles SQL Server vous permettent de contrôler l'accès et les capacités dont disposent les utilisateurs qui accèdent à une instance SQL Server.
Pour en savoir plus sur la création et la gestion des utilisateurs Cloud SQL, consultez la page Créer et gérer des utilisateurs.
Rôles et utilisateurs SQL Server
Les rôles SQL Server peuvent fonctionner comme un rôle unique ou un groupe de rôles.
Un utilisateur est un rôle qui offre la possibilité de se connecter, car il dispose de l'autorisation LOGIN
. Tous les rôles créés par Cloud SQL disposent de l'autorisation LOGIN
. Par conséquent, Cloud SQL utilise les termes "rôle" et "utilisateur" de manière interchangeable. Toutefois, si vous créez un rôle avec un outil client compatible avec SQL Server, il n'obtient pas nécessairement l'autorisation LOGIN
.
Cloud SQL pour SQL Server restreint l'accès à certains rôles de serveur qui fournissent des privilèges avancés. Exemples de ces rôles : DbRootRole
, serveradmin
, securityadmin
, setupadmin
, diskadmin
et dbcreator
.
Tous les utilisateurs SQL Server doivent disposer d'un mot de passe. Vous ne pouvez donc pas vous connecter avec un utilisateur sans mot de passe.
Super-utilisateurs et procédures stockées dans le système
Cloud SQL pour SQL Server est un service géré. Il restreint donc l'accès à certaines procédures et tables stockées dans le système qui requièrent des privilèges avancés. Dans Cloud SQL, vous ne pouvez pas créer d'utilisateurs disposant d'autorisations de super-utilisateur, ni y accéder.
Utilisateurs SQL Server par défaut
Lorsque vous créez une instance Cloud SQL pour SQL Server, l'utilisateur sqlserver
par défaut est déjà créé, mais vous devez définir son mot de passe.
L'utilisateur sqlserver
fait partie du rôle CustomerDbRootRole
et ses autorisations (droits) incluent les éléments suivants :
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
Vous pouvez également ajouter cloudsql enable linked servers
à votre instance si vous souhaitez l'utiliser avec des serveurs associés. Cette option accorde l'autorisation suivante à votre serveur :
ALTER ANY LINKED SERVER
Accorder des autorisations de serveur
Lorsque vous accordez des droits à l'aide d'une commande GRANT
quelle qu'elle soit, vous devez transmettre CustomerDbRootRole
sous la forme, par exemple, de la valeur de grantor_principal
.
L'exemple GRANT ALTER ANY LOGIN
suivant est valide :
GRANT ALTER ANY LOGIN TO [Account] AS CustomerDbRootRole
L'exemple GRANT ALTER ANY LOGIN
suivant est non valide :
GRANT ALTER ANY LOGIN TO [Account]
Autres utilisateurs SQL Server
Vous pouvez créer d'autres rôles ou utilisateurs SQL Server. Tous les utilisateurs créés à l'aide de Cloud SQL disposent des mêmes autorisations de base de données que la connexion sqlserver
. Toutefois, si vous ne passez pas par Cloud SQL mais par un processus différent pour créer un utilisateur, celui-ci ne disposera pas des mêmes autorisations que les comptes administrateur du client ou que l'utilisateur sqlserver
. Par exemple, si vous utilisez le processus de création de connexion et que vous ajoutez la connexion au rôle serveur CustomerDbRootRole
, l'utilisateur ne disposera pas des mêmes autorisations que les comptes administrateur du client ou que l'utilisateur sqlserver
. Par conséquent, vous pouvez utiliser Cloud SQL pour créer un utilisateur si vous souhaitez que celui-ci dispose des mêmes autorisations de base de données que la connexion sqlserver
.
Pour valider la différence d'autorisation entre deux comptes, vous pouvez utiliser la fonction suivante : sys.fn_my_permissions.
Importations de base de données : autorisations du propriétaire
Lorsque vous importez une base de données, le traitement du propriétaire varie selon le type de propriétaire, comme suit :
- Pour une connexion existante autre que
sa
: Cloud SQL conserve ce propriétaire et crée un utilisateur nommésqlserver
, qui correspond à la connexionsqlserver
. Cloud SQL accorde à cet utilisateursqlserver
les autorisationsCONTROL
etALTER ANY USER
. - Pour les connexions inconnues ou créées par le système : Cloud SQL transfère la propriété de la base de données à la connexion
sqlserver
.
Modifier les autorisations des utilisateurs
La commande ALTER ROLE permet de modifier les autorisations des utilisateurs. Si vous créez un utilisateur avec un client, vous pouvez l'associer à un autre rôle ou lui accorder des autorisations différentes.
Dépannage
Erreur lors de l'accès à la base de données
Lorsque vous tentez d'accéder à une base de données que vous avez créée, avec l'identité d'un utilisateur que vous avez créé, vous obtenez l'erreur suivante :
The server principal USERNAME is not able to access the database DATABASE_NAME under the current security context.
Cause possible
L'utilisateur n'est pas membre de la base de données.
Solutions possibles
Connectez-vous à la base de données en tant qu'utilisateur sqlserver
et ajoutez le nouvel utilisateur, puis attribuez le rôle db_owner
au nouvel utilisateur pour la base de données. Exemple :
EXEC sp_adduser 'user'; EXEC sp_addrolemember 'db_owner', 'user'
Étapes suivantes
- Configurez l'utilisateur pour votre instance.
- Créez et gérez des utilisateurs.
- Créez et gérez des bases de données.