Come posso duplicare o clonare le mie autorizzazioni di accesso utente RDS per SQL Server?

3 minuti di lettura
0

Desidero clonare le mie autorizzazioni di accesso utente Amazon Relation Database (Amazon RDS) per Microsoft SQL Server. In che modo posso farlo?

Risoluzione

Nota: questo script non apporta modifiche ai nuovi accessi a meno che l'utente che esegue lo script non abbia l'accesso per concedere tali autorizzazioni. Se l'utente non ha accesso per concedere le autorizzazioni, esse non vengono visualizzate nello script. Ciò è dovuto al fatto che il login utilizzato per accedere allo script non dispone dei privilegi di visualizzazione. Inoltre, se si tenta di aggiungere lo script delle autorizzazioni manualmente quando non si dispone dei privilegi di concessione, lo script avrà esito negativo.

1.    Copia ed esegui lo script MSSQL_RDS_Clone_Login per creare una stored procedure nell'ambiente in cui desideri duplicare l'utente. Questa stored procedure verrà utilizzata in seguito per creare un duplicato delle autorizzazioni di accesso utente e dell'utente di database, nonché delle autorizzazioni a livello di server e di database.

Puoi creare la stored procedure in qualsiasi database utente che non si trova all'interno del database di sistema Amazon RDS per SQL Server. Sostituisci [DB_NAME] con il nome del database utente, in base al tuo caso d'uso.

Lo script seguente crea tre stored procedure:

  • DuplicateLogin: duplica l'accesso e l'utente del database duplicato per gli accessi in ogni database contenente le autorizzazioni di accesso da cui stai copiando.
  • GrantUserRoleMembership: duplica le autorizzazioni e i ruoli degli utenti DB per il nuovo utente.
  • DuplicateRDS: consolida i risultati delle stored procedure DuplicateLogin e GrantUserRoleMembership.

2.    Dopo aver creato la stored procedure, apri una nuova finestra TSQL ed esegui la stored procedure utilizzando il seguente formato.

Nota: prima di eseguire lo script, assicurati che i risultati siano in formato testo premendo CTRL+T sulla tastiera.

--SQL login
EXEC    DuplicateRDS @NewLogin=[<duplicate_login_name>]
         ,@NewLoginPwd = password
    ,@LoginToDuplicate = master_login
    , @WindowsLogin  = F
    ,@DatabaseName=NULL
-- Windows login
EXEC    DuplicateRDS @NewLogin=[<domain\duplicate_login_name>]
    ,@LoginToDuplicate = master_login
    ,@NewLoginPwd = NULL
    , @WindowsLogin  = T
    ,@DatabaseName=NULL

3.    Dopo la generazione dello script, copia lo script dalla scheda Results (Risultati) ed eseguilo in una nuova finestra di query. Dopo l'esecuzione dello script, l'accesso a SQL Server viene generato con autorizzazioni a livello di server e database simili a quelle dell'accesso principale.

Nota: questo esempio esclude le autorizzazioni SSISDB per ssis_admin e ssis_logreader. Se hai bisogno di queste autorizzazioni, forniscile separatamente.

ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO

Nota: la stored procedure potrebbe non essere inserita nello script in modo ordinato a causa delle tabelle temporanee utilizzate in essa. In questo caso, elimina e poi ricrea la stored procedure per inserirla nel formato corretto.

4.    Se hai utenti orfani, esegui il seguente script. Questo script verifica la presenza di utenti orfani nei database che lo script non è riuscito a rimuovere.

Il seguente script verifica la presenza di utenti orfani:

Use [DB_NAME] ; 
GO 
exec sp_change_users_login @Action='Report' ;
GO

Il seguente script elimina gli utenti orfani:

Use [DB_NAME] ;
GO
exec sp_revokedbaccess 'username'
GO

5.    Se non desideri conservare le stored procedure dopo aver duplicato l'accesso (ad esempio, a causa della conformità), esegui il seguente script:

USE [DB_NAME]
GO
DROP PROCEDURE [dbo].[DuplicateRDS]
GO
DROP PROCEDURE [dbo].[DuplicateLogin]
GO
DROP PROCEDURE [dbo].[GrantUserRoleMembership]
GO