Microsoft SQL Server 사용자 로그인 권한을 위해 Amazon Relation Database(RDS)를 복제하고 싶습니다. 어떻게 해야 하나요?
해결 방법
참고: 이 스크립트는 스크립트를 실행하는 사용자에게 해당 권한을 부여할 권한이 없는 한 새 로그인을 변경하지 않습니다. 사용자에게 권한을 부여할 권한이 없는 경우 해당 권한이 스크립트에 표시되지 않습니다. 이는 스크립트에 액세스하는 데 사용된 로그인에는 보기 권한이 없기 때문입니다. 또한 부여 권한이 없을 때 권한 스크립트를 수동으로 추가하려고 하면 스크립트가 실패합니다.
1. MSSQL_RDS_Clone_login 스크립트를 복사하고 실행하여 사용자를 복제하려는 환경에서 저장된 프로시저를 생성합니다. 나중에 이 저장된 프로시저를 사용하여 사용자 로그인, 데이터베이스 사용자, 서버 수준 및 데이터베이스 수준 권한의 복제본을 만들 수 있습니다.
Amazon RDS for SQL Server 시스템 데이터베이스 내에 있지 않은 모든 사용자 데이터베이스에서 저장된 프로시저를 생성할 수 있습니다. 사용 사례에 따라 **[DB_NAME]**을 사용자 데이터베이스의 이름으로 바꾸세요.
다음 스크립트는 세 개의 저장된 프로시저를 만듭니다.
- DuplicateLogin: 복사하려는 로그인 권한이 포함된 각 데이터베이스의 해당 로그인에 대해 로그인 및 중복 데이터베이스 사용자를 복제합니다.
- GrantUserRoleMembership: DB 사용자 권한 및 역할을 새 사용자에게 복제합니다.
- DuplicateRDS: DuplicateLogin 및 GrantUserRoleMembership의 저장된 프로시저의 결과를 통합합니다.
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_admin 및 ssis_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