Passer au contenu

Comment restaurer l'accès de l'utilisateur principal à mon instance Amazon RDS pour SQL Server ?

Lecture de 6 minute(s)
0

L'utilisateur principal de mon instance Amazon Relational Database Service (Amazon RDS) pour SQL Server a perdu l'accès. Ou je souhaite autoriser l'utilisateur principal à accéder à une base de données créée par un autre utilisateur.

Brève description

Pour rétablir les autorisations de l'utilisateur principal, modifiez l'instance de base de données RDS et définissez un nouveau mot de passe d'utilisateur administrateur.

Lorsque vous créez une nouvelle instance de base de données, l'utilisateur principal par défaut reçoit automatiquement certaines autorisations pour l'instance de base de données. Après avoir créé l'instance de base de données, vous ne pouvez pas modifier le nom d'utilisateur de l'utilisateur principal.

Remarque : N'utilisez pas l'utilisateur principal pour les connexions à la base de données d'application. Créez plutôt un identifiant avec uniquement les autorisations requises pour les tâches spécifiques de votre application.

Résolution

Remarque : Dans cet article, l'utilisateur principal fait référence à l'utilisateur principal de votre instance Amazon RDS pour SQL Server.

L'utilisateur principal peut perdre l'autorisation de se connecter à l'instance de base de données, d'accéder à une base de données spécifique ou d'effectuer certaines actions. Suivez les étapes de la section suivante qui correspond à votre situation.

L'utilisateur principal ne peut pas se connecter à l'instance de base de données

L'utilisateur principal ne peut pas se connecter à l'instance de base de données lorsque l'autorisation Connect SQL est définie sur un refus (DENY) explicite. Par défaut, la connexion Amazon RDS System Administrator (RDSA) accorde l’autorisation Connect SQL à l'utilisateur principal. Toutefois, dans Microsoft SQL Server, un refus (DENY) explicite a priorité sur une autorisation (GRANT) explicite.

Afin de résoudre ce problème, procédez comme suit :

  1. Connectez-vous à l'instance RDS pour SQL Server avec les informations d’identification de connexion de l'utilisateur qui a défini explicitement le refus (DENY) explicite sur l'autorisation Connect SQL pour l'utilisateur principal.
  2. Exécutez la commande T-SQL suivante pour révoquer le refus (DENY) explicite :
    USE master;
    GO
    REVOKE CONNECT SQL TO master_user AS grantor_principal;
    GO
    Remarque : Remplacez master_user par votre identifiant d'utilisateur principal RDS et grantor_principal par votre fournisseur principal.

L'utilisateur principal ne peut pas accéder à une base de données spécifique

Les raisons pour lesquelles l'utilisateur principal ne peut pas accéder à une base de données spécifique sont les suivantes :

  • Un autre compte de connexion a créé la base de données. La connexion de l'utilisateur principal n'a aucun mappage utilisateur de base de données ni aucune autorisation de base de données.
  • Un administrateur a supprimé l'utilisateur de base de données qui était mappé à l'identifiant de connexion de l'utilisateur principal et qui disposait d'autorisations valides.

Pour résoudre le problème, réinitialisez le mot de passe de l'utilisateur principal. Un utilisateur de base de données qui correspond à la connexion de l'utilisateur principal est alors créé. Vous pouvez également créer un utilisateur de base de données pour la connexion de l'utilisateur principal dans la base de données concernée et accorder l'autorisation db_owner à l'utilisateur.

Lorsque vous réinitialisez uniquement le mot de passe de l'utilisateur principal, cette opération n'entraîne pas de durée d'indisponibilité. Toutefois, si vous apportez simultanément d'autres modifications à l'instance de base de données, telles qu'une modification de la classe d'instance, ces modifications combinées peuvent entraîner une durée d’indisponibilité. L'utilisateur Gestion des identités et des accès AWS (AWS IAM) qui réinitialise le mot de passe doit être autorisé à effectuer l'action ModifyDBInstance sur la ressource.

Lorsque vous mettez à jour le mot de passe de l'utilisateur principal, vous restaurez les éléments suivants pour l'utilisateur principal :

  • Autorisations du système
  • Rôles au niveau du serveur
  • Autorisations au niveau du serveur
  • Accès aux procédures stockées dans le système
  • Accès aux procédures stockées spécifiques à RDS

L'utilisateur principal ne peut pas effectuer certaines actions

L'utilisateur principal possède l'autorisation de rôle db_owner sur la base de données, mais ne peut pas effectuer certaines actions, telles que CONNECT, SELECT, INSERT, UPDATE et ALTER. Cela se produit lorsqu'un administrateur définit explicitement des autorisations DENY sur la base de données qui remplacent les autorisations du rôle db_owner.

Exécutez la commande T-SQL suivante pour afficher la liste des rôles de base de données et les utilisateurs de base de données qui sont membres de ces rôles :

USE DATABASE_NAME;
GO
SELECT DP1.name AS DatabaseRoleName,
   isnull (DP2.name, 'No members') AS DatabaseUserName
 FROM sys.database_role_members AS DRM
 RIGHT OUTER JOIN sys.database_principals AS DP1
   ON DRM.role_principal_id = DP1.principal_id
 LEFT OUTER JOIN sys.database_principals AS DP2
   ON DRM.member_principal_id = DP2.principal_id
WHERE DP1.type = 'R'
ORDER BY DP1.name;

Remarque : Remplacez DATABASE_NAME par le nom de votre base de données.

Exécutez les commandes suivantes pour obtenir la liste des autorisations dont dispose un utilisateur dans une base de données spécifique :

USE DATABASE_NAME;
GO
EXECUTE AS USER = 'master_user';
SELECT * FROM sys.fn_my_permissions(NULL, 'DATABASE');
GO

Remarque : Remplacez master_user par l'utilisateur principal et DATABASE_NAME par le nom de votre base de données.

Dans l'exemple précédent, un administrateur ajoute l'utilisateur principal aux rôles de base de données fixes db_denydatawriter et db_denydatareader. Même si l'utilisateur principal est membre du rôle db_owner, le refus (DENY) explicite remplace les autorisations SELECT, INSERT, UPDATE et DELETE sur la base de données.

Afin de résoudre ce problème, procédez comme suit :

  1. Utilisez le mot de passe principal pour vous connecter à l'instance RDS pour SQL Server.
  2. Exécutez la commande T-SQL suivante pour supprimer l'utilisateur principal en tant que membre de db_denydatawriter et db_denydatareader :
    USE DATABASE_NAME;
    GO
    ALTER ROLE db_denydatawriter DROP MEMBER MASTER_USER;
    ALTER ROLE db_denydatareader DROP MEMBER MASTER_USER;
    GO

Remarque : Remplacez DATABASE_NAME par le nom de votre base de données et MASTER_USER par l'utilisateur principal.

L'utilisateur principal dispose maintenant des autorisations SELECT, INSERT, UPDATE et DELETE sur la base de données.

Informations connexes

Réinitialisation de l'appartenance au rôle db_owner pour l'utilisateur principal d’Amazon RDS pour SQL Server

Sécurité de Microsoft SQL Server

DENY (Transact-SQL) sur le site Web de Microsoft

AWS OFFICIELA mis à jour il y a 8 mois