SQL Server용 RDS 사용자 로그인 권한을 복제하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 10월 13일

Microsoft SQL Server 사용자 로그인 권한을 위해 Amazon Relation Database(RDS)를 복제하고 싶습니다. 어떻게 해야 하나요?

해결 방법

참고: 이 스크립트는 스크립트를 실행하는 사용자에게 해당 권한을 부여할 권한이 없는 한 새 로그인을 변경하지 않습니다. 사용자에게 권한을 부여할 권한이 없는 경우 해당 권한이 스크립트에 표시되지 않습니다. 이는 스크립트에 액세스하는 데 사용된 로그인에는 보기 권한이 없기 때문입니다. 또한 부여 권한이 없을 때 권한 스크립트를 수동으로 추가하려고 하면 스크립트가 실패합니다.

1.    MSSQL_RDS_Clone_login 스크립트를 복사하고 실행하여 사용자를 복제하려는 환경에서 저장된 프로시저를 생성합니다. 나중에 이 저장된 프로시저를 사용하여 사용자 로그인, 데이터베이스 사용자, 서버 수준 및 데이터베이스 수준 권한의 복제본을 만들 수 있습니다.

Amazon RDS for SQL Server 시스템 데이터베이스 내에 있지 않은 모든 사용자 데이터베이스에서 저장된 프로시저를 생성할 수 있습니다. 사용 사례에 따라 [DB_NAME]을 사용자 데이터베이스의 이름으로 바꾸세요.

다음 스크립트는 세 개의 저장된 프로시저를 만듭니다.

  • DuplicateLogin: 복사하려는 로그인 권한이 포함된 각 데이터베이스의 해당 로그인에 대해 로그인 및 중복 데이터베이스 사용자를 복제합니다.
  • GrantUserRoleMembership: DB 사용자 권한 및 역할을 새 사용자에게 복제합니다.
  • DuplicateRDS: DuplicateLoginGrantUserRoleMembership의 저장된 프로시저의 결과를 통합합니다.

2.    저장된 프로시저를 만든 후 새 TSQL 창을 열고 다음 형식을 사용하여 저장된 프로시저를 실행합니다.

참고: 스크립트를 실행하기 전에 키보드에서 CTRL+T를 눌러 결과가 텍스트 형식인지 확인하세요.

--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.    스크립트가 생성된 후 결과(Results) 탭에서 스크립트를 복사하고 새 쿼리 창에서 실행합니다. 스크립트가 실행되면 마스터 로그인과 유사한 서버 및 데이터베이스 수준 권한으로 SQL Server 로그인이 생성됩니다.

참고: 이 예에서는 ssis_adminssis_logreader에 대한 SSISDB 권한을 제외합니다. 이러한 권한이 필요한 경우 별도로 제공하세요.

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

참고: 저장된 프로시저에서 사용되는 임시 테이블로 인해 스크립트 아웃이 순서가 맞지 않는 방식으로 발생할 수 있습니다. 이 경우 저장된 프로시저를 삭제한 다음 다시 만들어 올바른 형식으로 가져오세요.

4.    분리된 사용자가 있는 경우 다음 스크립트를 실행합니다. 이 스크립트는 데이터베이스에서 스크립트가 실패한 분리된 사용자를 확인하여 해당 분리된 사용자를 제거합니다.

다음 스크립트는 분리된 사용자를 확인합니다.

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

다음 스크립트는 분리된 사용자를 삭제합니다.

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

5.    로그인을 복제한 후 (예: 규정 준수) 저장된 프로시저를 보관하지 않으려면 다음 스크립트를 실행합니다.

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

이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?