Como posso duplicar ou clonar minhas permissões de login de usuário do RDS for SQL Server?

3 minuto de leitura
0

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