À propos des utilisateurs de SQL Server

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 connexion sqlserver. Cloud SQL accorde à cet utilisateur sqlserver les autorisations CONTROL et ALTER 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