Perché l'utente principale della mia istanza RDS per SQL Server ha perso l'accesso e come posso recuperarlo?

5 minuti di lettura
0

L'utente principale della mia istanza Amazon Relational Database Service (Amazon RDS) per SQL Server ha perso l'accesso. Oppure devo concedere all'utente principale l'accesso a un database creato da un altro utente. Cosa devo fare per ripristinare o concedere l'accesso all'utente principale?

Breve descrizione

Quando si crea una nuova istanza database, l'utente principale predefinito riceve automaticamente determinati privilegi per tale istanza. Non puoi modificare il nome utente principale dopo la creazione dell'istanza database.

Nota: è da considerarsi best practice non utilizzare l'utente principale direttamente nelle applicazioni. Ti consigliamo invece di utilizzare un utente del database con i privilegi minimi richiesti per l'applicazione.

Se elimini accidentalmente le autorizzazioni dell'utente principale, puoi ripristinarle modificando l'istanza database e impostando una nuova password utente principale. Per ulteriori informazioni, consulta Privilegi dell'account utente master.

Risoluzione

Di seguito sono riportati gli scenari comuni che potrebbero comportare la perdita dell'accesso alla connessione dell'istanza database da parte dell'utente principale. In alternativa, l'utente principale potrebbe non essere in grado di connettersi e accedere a un database utente specifico.

Scenario 1: l'utente principale non può connettersi all'istanza database a causa di un DENY esplicito

L'utente principale potrebbe non essere in grado di connettersi all'istanza database perché sul privilegio Connect SQL è impostato un DENY esplicito. Per impostazione predefinita, all'utente principale viene concesso il privilegio Connect SQL da parte dell'account di accesso dell'amministratore di sistema di Amazon RDS (rdsa). In Microsoft SQL Server, tuttavia, un DENY esplicito ha la precedenza su un GRANT esplicito.

Per risolvere il problema, effettua le seguenti operazioni:

1.    Connettiti a RDS per SQL Server utilizzando l'account di accesso dell'utente che concede le autorizzazioni. Tale utente ha impostato DENY esplicito su Connect SQL per l'account di accesso dell'utente principale.

2.    Usa il comando T-SQL seguente per revocare il DENY esplicito. Nell'esempio seguente, l'account di accesso dell'utente principale di RDS è master_user e l''utente che concede le autorizzazioni è grantor_principal. Modifica questi valori per adattarli al tuo caso d'uso.

USE [master];
GO
REVOKE CONNECT SQL TO [master_user] AS [grantor_principal];
GO

Scenario 2: l'utente principale non può connettersi a un database specifico perché non è mappato a un utente nel database

Ciò può verificarsi nelle seguenti circostanze:

  • Il database è stato creato da un altro account di accesso e l'account di accesso dell'utente principale non è mappato a un utente del database, quindi non dispone dei privilegi necessari.
  • L'utente del database precedentemente mappato all'account di accesso dell'utente principale con le autorizzazioni appropriate è stato eliminato in modo esplicito.

Per risolvere questo problema, reimposta la password utente principale. La reimpostazione della password crea un utente del database mappato all'account di accesso dell'utente principale, se tale utente è stato eliminato. Inoltre, concede all'utente il ruolo predefinito del database db_owner. Per istruzioni su come reimpostare la password utente principale, consulta In che modo è possibile reimpostare la password utente master per l'istanza DB di Amazon RDS?

Nota: l'utente IAM (AWS Identify and Access Management) che reimposta la password deve disporre dell'autorizzazione per eseguire l'operazione ModifyDBInstance sulla risorsa RDS.

L'aggiornamento della password utente principale effettua le seguenti operazioni:

  • Assegna all'utente principale il ruolo a livello di database db_owner a un database creato da un altro utente.
  • Ripristina i privilegi di sistema per l'utente principale.
  • Ripristina i ruoli a livello di server per l'utente principale.
  • Ripristina le autorizzazioni a livello di server per l'utente principale.
  • Ripristina l'accesso alle procedure archiviate del sistema per l'utente principale.
  • Ripristina l'accesso alle procedure archiviate specifiche di RDS per l'utente principale.

Scenario 3: l'utente principale non può eseguire determinate azioni

L'utente principale dispone dell'autorizzazione per il ruolo db_owner sul database, ma esegue determinate azioni, come CONNECT, SELECT, INSERT, UPDATE, ALTER e così via. Ciò può verificarsi quando all'utente del database mappato all'account di accesso dell'utente principale sono state negate esplicitamente determinate autorizzazioni per il database.

Per visualizzare l'elenco dei ruoli del database e gli utenti che ne fanno parte, esegui il comando T-SQL seguente. Nell'esempio seguente, sostituisci database_namecon i valori corretti per il tuo caso d'uso.

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;

Esegui i comandi seguenti per visualizzare l'elenco delle autorizzazioni di cui dispone un utente in un determinato database. Nell'esempio seguente, sostituisci database_name con il valore corretto per il tuo caso d'uso.

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

In questo esempio, l'utente principale viene aggiunto ai ruoli predefiniti del database db_denydatawriter e db_denydatareader. Nonostante sia membro del ruolo predefinito del database db_owner, i privilegi di negazione di db_denydatawriter e db_denydatareader vietano le autorizzazioni SELECT, INSERT, UPDATE e DELETE sul database.

Per risolvere questo problema:

1.    Accedi all'istanza di RDS per SQL Server utilizzando l'utente principale.

2.    Usa il comando T-SQL seguente per eliminare l'utente principale come membro di questi due ruoli:

USE [database_name];
GO
ALTER ROLE [db_denydatawriter] DROP MEMBER [master_user];
ALTER ROLE [db_denydatareader] DROP MEMBER [master_user];
GO

Dopo aver eseguito i comandi, l'utente principale dispone delle autorizzazioni SELECT, INSERT, UPDATE e DELETE per il database ripristinato.

Per ulteriori informazioni sui ruoli specifici dell'utente principale, consulta Privilegi dell'account utente master.


Informazioni correlate

Reimpostazione della password del ruolo db_owner

Sicurezza di Microsoft SQL Server

DENY (Transact-SQL)