Direkt zum Inhalt

Wie dupliziere oder klone ich meine Benutzer-Login-Berechtigungen für Amazon RDS für SQL Server?

Lesedauer: 3 Minute
0

Ich möchte meine Benutzer-Login-Berechtigungen für Amazon Relational Database Service (Amazon RDS) für SQL Server klonen.

Lösung

Gespeicherte Prozeduren erstellen

Um deinen RDS-für-SQL-Server-Benutzer zu duplizieren, musst du zunächst gespeicherte Prozeduren in der Umgebung erstellen, in der du den Benutzer duplizieren möchtest.

Um die gespeicherten Prozeduren zu erstellen, führe das MSSQL_RDS_Clone_Login-Skript aus. Weitere Informationen findest du unter MSSQL_RDS_Clone_Login-Skript auf der GitHub-Website. Du kannst die gespeicherten Prozeduren in jeder Benutzerdatenbank erstellen, die sich nicht in der Systemdatenbank von RDS für SQL Server befindet.

Das MSSQL_RDS_Clone_Login-Skript kann keine Änderungen an neuen Logins vornehmen, es sei denn, der Benutzer, der das Skript ausführt, verfügt über die Berechtigung, diese Berechtigungen zu erteilen. Wenn der Benutzer nicht über Berechtigungen zum Erteilen von Berechtigungen verfügt, werden die Berechtigungen nicht im Skript angezeigt. Wenn du keine Berechtigungen zum Erteilen von Berechtigungen hast und versuchst, die Berechtigungen manuell zum Skript hinzuzufügen, schlägt das Skript fehl.

Das MSSQL_RDS_Clone_Login-Skript erstellt drei gespeicherte Prozeduren:

  • DuplicateLogin: Diese Prozedur dupliziert das Login und den/die Datenbankbenutzer:in aus den Login-Berechtigungen jeder Datenbank, aus der du kopierst.
  • GrantUserRoleMembership: Diese Prozedur dupliziert DB-Benutzerberechtigungen und Rollen für den/die neue(n) Benutzer:in.
  • DuplicateRDS: Diese Prozedur konsolidiert die Ergebnisse der gespeicherten Prozeduren DuplicateLogin und GrantUserRoleMembership.

Die gespeicherten Prozeduren ausführen

Gehe wie folgt vor, um die gespeicherten Prozeduren auszuführen:

  1. Öffne ein neues Transact-SQL (TSQL)-Fenster.

  2. Drücke STRG+T, um sicherzustellen, dass die Ergebnisse im Textformat vorliegen.

  3. Führe die folgenden Skripts aus.
    SQL-Login:

    USE [DB_NAME]   
    EXEC    DuplicateRDS @NewLogin=[duplicate_login_name]  
        ,@NewLoginPwd = password  
        ,@LoginToDuplicate = primary_login  
        ,@WindowsLogin  = F  
        ,@DatabaseName=NULL

    Hinweis: Ersetze DB_NAME durch den Namen der Benutzerdatenbank, duplicate_login_name durch deinen Login-Namen und password durch dein Passwort.
    Windows-Login:

    USE [DB_NAME]   
    EXEC    DuplicateRDS @NewLogin=[domain\duplicate_login_name]  
        ,@LoginToDuplicate = primary_login  
        ,@NewLoginPwd = NULL  
        ,@WindowsLogin  = T  
        ,@DatabaseName=NULL

    Hinweis: ErsetzeDB_NAME durch den Namen der Benutzerdatenbank, domain durch deinen Domainnamen und duplicate_login_name durch deinen Login-Namen.

  4. Nachdem das Skript generiert wurde, kopiere das Skript von der Registerkarte Results (Ergebnisse) und führe es dann in einem neuen Abfragefenster aus.
    Hinweis: Nach der Ausführung des Skripts wird dein SQL-Server-Login mit ähnlichen Berechtigungen auf Server- und Datenbankebene generiert wie dein primäres Login.

  5. Das generierte Login schließt die SSISDB-Berechtigungen von Microsoft SQL Server Integration Services (SSIS) für ssis_admin und ssis_logreader aus. Wenn du diese Berechtigungen benötigst, führe den folgenden Befehl aus:

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

    Hinweis: Ersetze mydomain durch deinen Domainnamen und user_name durch deinen Benutzernamen. Möglicherweise erhältst du aufgrund temporärer Tabellen, die die gespeicherte Prozedur verwendet, eine ungeordnete Skriptausgabe. Wenn dies der Fall ist, lösche die gespeicherte Prozedur und erstelle sie erneut.

  6. Führe das folgende Skript aus, um nach verwaisten Benutzern zu suchen:

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

    Hinweis: Ersetze DB_NAME durch den Namen der Benutzerdatenbank.

  7. Führe das folgende Skript aus, um verwaiste Benutzer zu löschen:

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

    Hinweis: Ersetze DB_NAME durch den Namen der Benutzerdatenbank und username durch deinen Benutzernamen.

  8. Wenn du die gespeicherten Prozeduren nach dem Duplizieren des Logins nicht behalten möchtest, führe das folgende Skript aus:

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

    Hinweis: Ersetze DB_NAME durch den Namen der Benutzerdatenbank.

AWS OFFICIALAktualisiert vor 9 Monaten