Compartilhar via


Configurar contas com privilégios mínimos no Azure Migrate

O dispositivo de Migrações para Azure é uma ferramenta leve que descobre servidores locais e envia seus dados de configuração e desempenho para o Azure. Ele também executa o inventário de software, executa a análise de dependência sem agente e detecta cargas de trabalho como aplicativos Web e instâncias do SQL Server ou do MySQL Server.

Para usar esses recursos, adicione credenciais de servidor e convidado no gerenciador de configurações do dispositivo. Seguir o princípio do privilégio mínimo ajuda a manter a configuração segura e eficiente.

Descoberta da propriedade VMware

Para descobrir as configurações básicas dos servidores em execução na propriedade VMware, você precisa das permissões a seguir.

Permissões de conta do vCenter

Descoberta de metadados do servidor

  • Para descobrir as configurações básicas do servidor em um ambiente VMware, você precisa dessas permissões:
    • Somente leitura: Use a função somente leitura integrada ou crie uma cópia dela.
  • Para descobrir metadados do servidor e habilitar o inventário de software, a análise de dependência e as avaliações de desempenho, você precisa dessas permissões:
    • Somente leitura: Use a função somente leitura integrada ou crie uma cópia dela.
    • Operações de convidado: Adicione privilégios de operações de convidado à função somente leitura.

Descoberta de escopo definido de servidores VMware

  • Para descobrir VMs (máquinas virtuais) específicas, atribua permissões de leitura nas VMs individuais.
  • Para descobrir todas as VMs em uma pasta, atribua permissões de leitura no nível da pasta e ative a opção Propagar para filhos .
  • Para habilitar o inventário de software, a análise de dependência e as avaliações de desempenho, atribua permissões de operações de convidado à conta do vCenter juntamente com permissões de leitura.
  • Dê acesso de leitura a todos os objetos pai que hospedam as máquinas virtuais, como o host, o cluster, a pasta de host, a pasta de cluster e o datacenter. Você não precisa aplicar essas permissões a todos os objetos filho.
  • No cliente vSphere, verifique se as permissões de leitura estão definidas em objetos pai na exibição Hosts e Clusters e na exibição VMs &Templates .

Migração sem agente

Para executar a migração sem agente, verifique se a conta do vCenter que o dispositivo de Migrações para Azure usa tem permissões em todos os níveis necessários: datacenter, cluster, host, VM e armazenamento de dados. Aplique permissões em cada nível para evitar erros de replicação.

Nome do privilégio do vSphere Finalidade de privilégio Obrigatório Nome do privilégio da API
Explorar banco de dados Permitir que os usuários naveguem pelos arquivos de log de VM para solucionar problemas na criação e exclusão de instantâneos. Armazenamentos de dados Datastore.Browse
Operações de arquivo de baixo nível Permitir ações de leitura, gravação, exclusão e renomeação no navegador de armazenamento de dados para solucionar problemas de criação e exclusão de instantâneos Armazenamentos de dados Datastore.FileManagement
Alterar configuração - Alternar rastreamento de alterações de disco Permitir que os usuários habilitem ou desabilitem o controle de alterações de discos de VM para efetuar pull de blocos de dados alterados entre instantâneos Máquinas virtuais VirtualMachine.Config.ChangeTracking
Alterar Configuração – Adquirir arrendamento de disco Permitir que operações de concessão de disco em uma VM leiam o disco usando o VMware vSphere Virtual Disk Development Kit (VDDK) Máquinas virtuais VirtualMachine.Config.DiskLease
Provisionamento – Permitir acesso somente de leitura ao disco Permitir acesso ao disco em modo somente leitura: acessar um disco em uma VM para leitura usando o VDDK. Máquinas virtuais VirtualMachine.Provisioning.DiskRandomRead
Provisionamento – Permitir acesso ao disco Permitir a abertura de um disco em uma VM para ler o disco usando o VDDK Máquinas virtuais VirtualMachine.Provisioning.DiskRandomAccess
Provisionamento – Permitir o download da máquina virtual Permitir o download das máquinas virtuais para que possam ser lidos os arquivos de VM, obtidos os logs e solucionados problemas e falhas. Host raiz ou vCenter Server VirtualMachine.Provisioning.GetVmFiles
Gerenciamento de instantâneo Permitir descoberta, inventário de software e mapeamento de dependência em VMs Máquinas virtuais VirtualMachine.State.*
Operações de convidado Permitir a criação e o gerenciamento de instantâneos de VM para replicação Máquinas virtuais VirtualMachine.GuestOperations.*
Interação Desligada Permitir que a VM seja desativada durante a migração para o Azure Máquinas virtuais VirtualMachine.Interact.PowerOff

Descoberta de convidado de software, dependências e cargas de trabalho instaladas

Para descobrir efetivamente o software, as dependências do aplicativo e as cargas de trabalho em servidores de destino, o dispositivo de Migrações para Azure requer credenciais do sistema operacional convidado (SO). Essas credenciais permitem que o dispositivo se conecte com segurança aos servidores e colete dados detalhados de inventário e desempenho.

Descoberta rápida de convidados

Para a descoberta rápida de inventário de software, dependências de servidor e instâncias de banco de dados, você precisa das seguintes permissões:

Caso de uso Metadados descobertos Tipo de credencial Permissões seguras
Descoberta rápida de convidados Inventário de software

Dependências do servidor (dados limitados)

Inventário de instâncias de banco de dados
Windows

Linux
Conta de usuário convidado local

Qualquer conta de usuário convidado não Sudo

Observação

Você pode usar um convidado do Windows ou uma conta de usuário não Sudo do Linux para obter dados de mapeamento de dependência. Mas, com contas com menos privilégios, talvez você não colete informações do processo (como nome do processo ou nome do aplicativo) para alguns processos executados com privilégios mais altos. Esses processos aparecem como Desconhecidos no computador no modo de exibição de servidor único.

Descoberta aprofundada dos hóspedes

Para a descoberta detalhada de inventário de software, dependências de servidor e aplicativos Web, como .NET e Java Tomcat, você precisa das seguintes permissões:

Caso de uso Metadados descobertos Tipo de credencial Permissões necessárias
Descoberta aprofundada dos hóspedes Inventário de software

Dependências do servidor (dados completos)

Inventário de instâncias de banco de dados

Aplicativos Web como .NET e Java Tomcat
Windows Administradores
Descoberta aprofundada dos hóspedes Inventário de software

Dependências do servidor (dados completos)

Inventário de instâncias de banco de dados

Aplicativos Web como .NET e Java Tomcat
Linux As seguintes permissões sudo são necessárias para identificar as dependências do servidor: /usr/bin/netstat e /usr/bin/ls.

Se netstat não estiver disponível, serão necessárias permissões Sudo em ss.

Para a descoberta de aplicativos Web Java (servidores Tomcat), o usuário deve ter permissões de leitura e execução (r-x) em todos os diretórios base do Catalina.

Use o seguinte comando para localizar todas as casas Catalina: ps -ef \| grep catalina.home.

Aqui está um comando de exemplo para configurar um usuário com menos privilégios: setfacl -m u:<username>:rx <catalina/home/path>.

Descoberta da propriedade Hyper-V

Para encontrar as configurações básicas dos servidores em execução na infraestrutura do Hyper-V, você precisa de certas permissões. Em todos os hosts Hyper-V, crie um usuário local que faça parte desses três grupos:

  • administradores do Hyper-V
  • Usuários do monitor de desempenho
  • Usuários de gerenciamento remoto

Use o script para preparar os hosts do Hyper-V.

Para uma exploração aprofundada da infraestrutura Hyper-V e para executar o inventário de software e a análise de dependência, as credenciais da conta de convidado são necessárias.

Descoberta de servidores físicos e de nuvem

Para descobrir e avaliar servidores físicos ou servidores hospedados em outras nuvens públicas, o dispositivo de Migrações para Azure requer credenciais com acesso menos privilegiado. Essas credenciais permitem que o dispositivo se conecte e colete os dados necessários sem exexpor demais as permissões confidenciais do sistema.

Descoberta rápida do servidor

Para a descoberta rápida de inventário de software, dependências de servidor e instâncias de banco de dados, você precisa das seguintes permissões:

Caso de uso Metadados descobertos Tipo de credencial Detalhes
Descoberta rápida do servidor Inventário de software

Análise de dependência sem agente (dados limitados)

Inventário de carga de trabalho de bancos de dados e aplicativos Web
Windows Siga esses passos
Descoberta rápida do servidor Inventário de software

Análise de dependência sem agente (dados completos)

Inventário de carga de trabalho de bancos de dados e aplicativos Web
Linux Siga esses passos

Servidores Windows

Para a descoberta rápida de servidores Windows, crie uma conta de usuário do Windows que pertença aos seguintes grupos de usuários:

  • Usuários de gerenciamento remoto
  • Usuários do monitor de desempenho
  • Usuários de log de desempenho

A conta de usuário convidado precisa de permissão para acessar o namespace CIMV2 e seus sub-namespaces no item controle WMI no Painel de Controle. Para definir o acesso, use as seguintes etapas:

  1. No servidor Windows de destino, vá para o menu Iniciar , pesquise Executar e selecione-o.

  2. Na caixa de diálogo Executar , digite wmimgmt.msc e pressione a tecla Enter.

  3. No console wmimgmt , clique com o botão direito do mouse em Controle WMI (Local) e selecione Propriedades.

  4. Na caixa de diálogo Propriedades do Controle WMI (Local), selecione a guia Segurança .

  5. Expanda a pasta Raiz na árvore de namespace e selecione o namespace CIMV2 .

  6. Selecione Segurança para abrir a caixa de diálogo Segurança para ROOT\CIMV2 .

  7. Na seção Grupo ou nomes de usuário , selecione Adicionar para abrir a caixa de diálogo Selecionar Usuários ou Grupos .

  8. Pesquise a conta de usuário, selecione-a e selecione OK para retornar à caixa de diálogo Segurança para ROOT\CIMV2 .

  9. Na seção Grupo ou nomes de usuário , selecione a conta de usuário convidado. Valide se as seguintes permissões são permitidas:

    • Habilitar Conta
    • Habilitação Remota

    Captura de tela que mostra as permissões do usuário convidado.

  10. Selecione Aplicar para habilitar as permissões definidas na conta de usuário.

  11. Reinicie o serviço WinRM depois de adicionar o novo usuário convidado.

Servidores Linux

Para descoberta rápida de servidores Linux:

  1. Criar uma conta de usuário; por exemplo, AzMigrateLeastprivuser.

  2. Conceda privilégios do Sudo ao usuário apenas para os comandos necessários adicionando a seguinte linha no /etc/sudoers arquivo:

    AzMigrateLeastprivuser ALL=(ALL) NOPASSWD: /usr/sbin/dmidecode, /usr/sbin/fdisk -l, /usr/sbin/fdisk -l *, /usr/bin/ls -l /proc/*/exe, /usr/bin/netstat -atnp, /usr/sbin/lvdisplay ""
    Defaults:AzMigrateLeastprivuser !requiretty
    
    

Descoberta detalhada do servidor

Para a descoberta detalhada de inventário de software, dependências de servidor e aplicativos Web, como .NET e Java Tomcat, você precisa das seguintes permissões:

Caso de uso Metadados descobertos Tipo de credencial Comandos para configurar
Descoberta detalhada do servidor Descoberta detalhada de aplicativos Web, como .NET e Java Tomcat

Análise de dependência sem agente (dados completos)
Windows

Linux
Permissões de administrador são necessárias.

Para descobrir aplicativos Web Java em servidores Tomcat, a conta de usuário precisa de permissões de leitura e execução (r-x) em todos os diretórios base do Catalina.

Use o seguinte comando para localizar todas as casas Catalina: ps -ef \| grep catalina.home.

Aqui está um comando de exemplo para configurar um usuário com menos privilégios: setfacl -m u:<username>:rx <catalina/home/path>.

Descoberta de banco de dados

O inventário de software é necessário para iniciar a descoberta de carga de trabalho. Para habilitá-lo, verifique se as credenciais de convidado são adicionadas. As permissões para descobrir bancos de dados SQL e MySQL são as mesmas para todos os tipos de dispositivo: VMware, Hyper-V e servidores físicos.

Descubra instâncias e bancos de dados do SQL Server

Crie contas com privilégios mínimos em instâncias individuais do SQL Server. Use a autenticação do Windows e atribua apenas as permissões necessárias.

autenticação do Windows

-- Create a login to run the assessment.
use master;
DECLARE @SID NVARCHAR(MAX) = N'';
CREATE LOGIN [MYDOMAIN\MYACCOUNT] FROM WINDOWS;
SELECT @SID = N'0x'+CONVERT(NVARCHAR, sid, 2) FROM sys.syslogins where name = 'MYDOMAIN\MYACCOUNT'
IF (ISNULL(@SID,'') != '')
  PRINT N'Created login [MYDOMAIN\MYACCOUNT] with SID = ' + @SID
ELSE
  PRINT N'Login creation failed'
GO    

-- Create a user in every database other than tempdb, model, and secondary AG databases (with connection_type = ALL) and provide minimal read-only permissions.
USE master;
EXECUTE sp_MSforeachdb '
  USE [?];
  IF (''?'' NOT IN (''tempdb'',''model''))
  BEGIN
    DECLARE @is_secondary_replica BIT = 0;
    IF CAST(PARSENAME(CAST(SERVERPROPERTY(''ProductVersion'') AS VARCHAR), 4) AS INT) >= 11
    BEGIN
      DECLARE @innersql NVARCHAR(MAX);
      SET @innersql = N''
        SELECT @is_secondary_replica = IIF(
          EXISTS (
              SELECT 1
              FROM sys.availability_replicas a
              INNER JOIN sys.dm_hadr_database_replica_states b
              ON a.replica_id = b.replica_id
              WHERE b.is_local = 1
              AND b.is_primary_replica = 0
              AND a.secondary_role_allow_connections = 2
              AND b.database_id = DB_ID()
          ), 1, 0
        );
      '';
      EXEC sp_executesql @innersql, N''@is_secondary_replica BIT OUTPUT'', @is_secondary_replica OUTPUT;
    END
    IF (@is_secondary_replica = 0)
    BEGIN
      CREATE USER [MYDOMAIN\MYACCOUNT] FOR LOGIN [MYDOMAIN\MYACCOUNT];
      GRANT SELECT ON sys.sql_expression_dependencies TO [MYDOMAIN\MYACCOUNT];
      GRANT VIEW DATABASE STATE TO [MYDOMAIN\MYACCOUNT];
    END
  END'
GO

-- Provide server-level read-only permissions.
use master;
GRANT SELECT ON sys.sql_expression_dependencies TO [MYDOMAIN\MYACCOUNT];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [MYDOMAIN\MYACCOUNT];
GRANT EXECUTE ON OBJECT::sys.xp_instance_regread TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW DATABASE STATE TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW SERVER STATE TO [MYDOMAIN\MYACCOUNT];
GRANT VIEW ANY DEFINITION TO [MYDOMAIN\MYACCOUNT];
GO

-- Provide msdb-specific permissions.
use msdb;
GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [MYDOMAIN\MYACCOUNT];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [MYDOMAIN\MYACCOUNT];
GO
  
-- Clean up
--use master;
-- EXECUTE sp_MSforeachdb 'USE [?]; DROP USER [MYDOMAIN\MYACCOUNT]'
-- DROP LOGIN [MYDOMAIN\MYACCOUNT];
--GO

Autenticação do SQL Server

--- Create a login to run the assessment.
use master;
-- NOTE: SQL Server instances that host replicas of Always On availability groups must use the same SID for the SQL Server login.
  -- After the account is created in one of the members, copy the SID output from the script and include this value when executing against the remaining replicas.
  -- When the SID needs to be specified, add the value to the following @SID variable definition.
DECLARE @SID NVARCHAR(MAX) = N'';
IF (@SID = N'')
BEGIN
  CREATE LOGIN [evaluator]
      WITH PASSWORD = '<provide a strong password>'
END
ELSE
BEGIN
  DECLARE @SQLString NVARCHAR(500) = 'CREATE LOGIN [evaluator]
    WITH PASSWORD = ''<provide a strong password>''
    , SID = ' + @SID
  EXEC SP_EXECUTESQL @SQLString
END
SELECT @SID = N'0x'+CONVERT(NVARCHAR(100), sid, 2) FROM sys.syslogins where name = 'evaluator'
IF (ISNULL(@SID,'') != '')
  PRINT N'Created login [evaluator] with SID = '''+ @SID +'''. If this instance hosts any Always On Availability Group replica, use this SID value when executing the script against the instances hosting the other replicas'
ELSE
  PRINT N'Login creation failed'
GO
  
-- Create a user in every database other than tempdb, model, and secondary AG databases (with connection_type = ALL) and provide minimal read-only permissions.
USE master;
EXECUTE sp_MSforeachdb '
  USE [?];
  IF (''?'' NOT IN (''tempdb'',''model''))
  BEGIN
    DECLARE @is_secondary_replica BIT = 0;
    IF CAST(PARSENAME(CAST(SERVERPROPERTY(''ProductVersion'') AS VARCHAR), 4) AS INT) >= 11
    BEGIN
      DECLARE @innersql NVARCHAR(MAX);
      SET @innersql = N''
        SELECT @is_secondary_replica = IIF(
          EXISTS (
            SELECT 1
            FROM sys.availability_replicas a
            INNER JOIN sys.dm_hadr_database_replica_states b
              ON a.replica_id = b.replica_id
            WHERE b.is_local = 1
              AND b.is_primary_replica = 0
              AND a.secondary_role_allow_connections = 2
              AND b.database_id = DB_ID()
          ), 1, 0
        );
      '';
      EXEC sp_executesql @innersql, N''@is_secondary_replica BIT OUTPUT'', @is_secondary_replica OUTPUT;
    END

    IF (@is_secondary_replica = 0)
    BEGIN
        CREATE USER [evaluator] FOR LOGIN [evaluator];
        GRANT SELECT ON sys.sql_expression_dependencies TO [evaluator];
        GRANT VIEW DATABASE STATE TO [evaluator];
    END
  END'
GO
  
-- Provide server-level read-only permissions.
USE master;
GRANT SELECT ON sys.sql_expression_dependencies TO [evaluator];
GRANT EXECUTE ON OBJECT::sys.xp_regenumkeys TO [evaluator];
GRANT EXECUTE ON OBJECT::sys.xp_instance_regread TO [evaluator];
GRANT VIEW DATABASE STATE TO [evaluator];
GRANT VIEW SERVER STATE TO [evaluator];
GRANT VIEW ANY DEFINITION TO [evaluator];
GO
  
-- Provide msdb-specific permissions.
USE msdb;
GRANT EXECUTE ON [msdb].[dbo].[agent_datetime] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobsteps] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syssubsystems] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobhistory] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syscategories] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysjobs] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmaintplan_plans] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[syscollector_collection_sets] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_profile] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_profileaccount] TO [evaluator];
GRANT SELECT ON [msdb].[dbo].[sysmail_account] TO [evaluator];
GO
  
-- Clean up
--use master;
-- EXECUTE sp_MSforeachdb 'USE [?]; BEGIN TRY DROP USER [evaluator] END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH;'
-- BEGIN TRY DROP LOGIN [evaluator] END TRY BEGIN CATCH PRINT ERROR_MESSAGE() END CATCH;
--GO

Para obter informações sobre como configurar contas SQL personalizadas com privilégios mínimos em larga escala, consulte Provisionar contas personalizadas com privilégios mínimos para descoberta e avaliação do SQL Server.

Descoberta de instâncias e bancos de dados do MySQL Server

Para descobrir bancos de dados MySQL, adicione credenciais de banco de dados MySQL ao dispositivo.

Verifique se o usuário que corresponde às credenciais mySQL adicionadas tem os seguintes privilégios:

  • Selecionar permissões nas tabelas information_schema
  • Selecionar permissões nas tabelas mysql.users

Para a descoberta do MySQL, verifique se o IP ou domínio do dispositivo é permitido configurando as regras de firewall necessárias e os privilégios de usuário do MySQL. O endereço de associação em my.cnf também deve ser definido para permitir conexões externas, se necessário.

Use os seguintes comandos para conceder os privilégios necessários ao usuário do MySQL:

GRANT USAGE ON *.* TO 'username'@'ip';
GRANT PROCESS ON *.* TO 'username'@'ip';
GRANT SELECT (User, Host, Super_priv, File_priv, Create_tablespace_priv, Shutdown_priv) ON mysql.user TO 'username'@'ip';
GRANT SELECT ON information_schema.* TO 'username'@'ip';
GRANT SELECT ON performance_schema.* TO 'username'@'ip';  

Saiba mais.