Quero clonar minhas permissões de login de usuário do Amazon Relation Database (Amazon RDS) para Microsoft SQL Server. Como faço isso?
Resolução
Observação: esse script não faz nenhuma alteração nos novos logins, a menos que o usuário que estiver executando o script tenha acesso para conceder essas permissões. Se o usuário não tiver acesso para conceder permissões, as permissões não aparecerão no script. Isso ocorre porque o login usado para acessar o script não tem privilégios de visualização. Além disso, se você tentar adicionar o script de permissões manualmente quando não tiver privilégios concedidos, o script falhará.
1. Copie e execute o script MSSQL_RDS_CLONE_Login para criar um procedimento armazenado no ambiente no qual você quer duplicar o usuário. Mais tarde, você usará esse procedimento armazenado para criar uma duplicata das permissões de login do usuário, do usuário do banco de dados, do nível do servidor e das permissões do nível do banco de dados.
Você pode criar o procedimento armazenado em qualquer banco de dados de usuário que não esteja no banco de dados do sistema Amazon RDS para SQL Server. Substitua [DB_NAME] pelo nome do banco de dados do usuário, de acordo com o caso de uso.
Este script cria três procedimentos armazenados:
- DuplicateLogin: duplica o login e o usuário do banco de dados para os logins em cada banco de dados contendo as permissões sendo copiadas.
- GrantUserRoleMembership: duplica as permissões e funções do usuário do banco de dados para o novo usuário.
- DuplicateRDS: consolida os resultados dos procedimentos armazenados DuplicateLogin e GrantUserRoleMembership.
2. Depois de criar o procedimento armazenado, abra uma nova janela TSQL e execute o procedimento armazenado usando o formato a seguir.
Observação: antes de executar o script, verifique se os resultados estão em formato de texto pressionando CTRL+T no teclado.
--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. Depois que o script for gerado, copie o script da guia Results (Resultados) e execute-o em uma nova janela de consulta. Depois que o script for executado, seu login do SQL Server será gerado com permissões de servidor e banco de dados semelhantes às do login principal.
Observação: esse exemplo exclui as permissões SSISDB para ssis_admin e ssis_logreader. Se você precisar dessas permissões, forneça-as separadamente.
ALTER ROLE [ssis_admin] ADD MEMBER [mydomain\user_name]
ALTER ROLE [ssis_logreader] ADD MEMBER [mydomain\user_name]
GO
Observação: a saída do script poderá ocorrer de forma não ordenada devido ao uso de tabelas temporárias no procedimento armazenado. Se isso ocorrer, descarte e recrie o procedimento armazenado para colocá-lo no formato correto.
4. Se você tiver usuários órfãos, execute o script a seguir. Esse script verifica se há usuários órfãos nos bancos de dados nos quais o script falhou e os remove.
Este script verifica se há usuários órfãos:
Use [DB_NAME] ;
GO
exec sp_change_users_login @Action='Report' ;
GO
Este script descarta os usuários órfãos:
Use [DB_NAME] ;
GO
exec sp_revokedbaccess 'username'
GO
5. Se você não quiser manter os procedimentos armazenados após duplicar o login (por exemplo, devido à conformidade), execute o seguinte script:
USE [DB_NAME]
GO
DROP PROCEDURE [dbo].[DuplicateRDS]
GO
DROP PROCEDURE [dbo].[DuplicateLogin]
GO
DROP PROCEDURE [dbo].[GrantUserRoleMembership]
GO