Compartilhar via


Gerenciar bancos de dados no banco de dados SQL do Azure usando Automação do Azure

Este artigo descreve o procedimento para conectar e gerenciar bancos de dados no Banco de Dados SQL do Azure usando a identidade gerenciada atribuída pelo sistema da Automação do Azure. Com a Automação do Azure, você pode gerenciar bancos de dados no Banco de Dados SQL do Azure usando os cmdlets mais recentes do Az PowerShell que estão disponíveis no Azure Az PowerShell.

A Automação do Azure tem esses cmdlets do Az PowerShell do Az disponíveis de modo que você possa executar todas as tarefas de gerenciamento do banco de dados SQL dentro do serviço. Você também pode emparelhar esses cmdlets na Automação do Azure com os cmdlets de outros serviços do Azure para automatizar tarefas complexas em serviços do Azure e em sistemas de terceiros.

A Automação do Azure também pode emitir comandos T-SQL (Transact SQL) nos servidores SQL usando o PowerShell.

Para executar os comandos no banco de dados, você precisa fazer o seguinte:

  • Verifique se a conta de Automação tem uma identidade gerenciada atribuída pelo sistema.
  • Forneça as permissões apropriadas para a identidade gerenciada da Automação.
  • Configure o SQL Server para utilizar a autenticação do Microsoft Entra.
  • Crie um usuário no SQL Server que mapeia para a identidade gerenciada da conta de Automação.
  • Crie um runbook para se conectar e executar os comandos.
  • (Opcional) Se o SQL Server estiver protegido por um firewall, crie um HRW (Hybrid Runbook Worker), instale os módulos SQL nesse servidor e adicione o endereço IP HRW à lista de permissões no firewall.

Conectar-se ao banco de dados SQL do Azure usando a identidade gerenciada atribuída pelo sistema

Para permitir o acesso da identidade gerenciada do sistema de Automação ao Banco de Dados SQL do Azure, siga estas etapas:

  1. Se a identidade gerenciada do sistema de Automação for OFF, faça o seguinte:

    1. Entre no portal do Azure.

    2. Acesse sua conta da Automação.

    3. Na página de conta de Automação, em configurações de conta, selecione Identidade.

    4. Na guia Sistema atribuído, selecione o Status como ON.

      Captura de tela da configuração do status como ATIVADO para a identidade gerenciada atribuída pelo sistema.

  2. Depois que a Identidade Gerenciada do Sistema estiver ON, você deverá fornecer à conta o acesso necessário usando estas etapas:

    1. Na página Conta de Automação | Identidade, guia Sistema atribuído, em permissões, selecione atribuições de função do Azure.
    2. Na página atribuições de função do Azure, selecione +Adicionar atribuição de função (versão prévia).
    3. No Adicionar atribuição de função (versão prévia), selecione Escopo como SQL, selecione Assinatura, Recursos na lista suspensa e Função de acordo com as permissões mínimas necessárias, e selecione Salvar.

    Captura de tela da adição da atribuição de função quando o status da identidade gerenciada atribuída pelo sistema for definido como ATIVADO.

  3. Configure o SQL Server para autenticação do Active Directory usando estas etapas:

    1. Acesse à página inicial do portal do Azure e selecione SQL servers.
    2. Na página do SQL Server, em Configurações, selecione Microsoft Entra ID.
    3. Selecione Definir administrador para configurar o SQL Server para autenticação do AD.
  4. Adicione a autenticação no lado do SQL usando estas etapas:

    1. Acesse à página inicial do portal do Azure e selecione SQL servers.
    2. Na página do SQL Server, em Configurações, selecione Bancos de Dados SQL.
    3. Selecione seu banco de dados para acessar a página do banco de dados SQL e selecione Editor de consultas (versão prévia) e execute as duas consultas a seguir:
      # AutomationAccount - replace with your Automation account's name
      # ObjectID - replace with object (principal) ID for your system managed identity principal from step 1.
      CREATE USER "AutomationAccount" FROM EXTERNAL PROVIDER WITH OBJECT_ID = `ObjectID`
      EXEC sp_addrolemember `db_owner`, "AutomationAccount"
      

Código de exemplo

Conexão com o servidor do SQL do Azure

if ($($env:computerName) -eq "Client") {"Runbook running on Azure Client sandbox"} else {"Runbook running on " + $env:computerName}
Disable-AzContextAutosave -Scope Process
Connect-AzAccount -Identity
$Token = (Get-AZAccessToken -ResourceUrl https://database.windows.net).Token
Invoke-Sqlcmd -ServerInstance azuresqlserverxyz.database.windows.net -Database MyDBxyz -AccessToken $token -query 'select * from TableXYZ' 

Verificar permissões de conta no lado do SQL

SELECT roles.[name] as role_name, members.name as [user_name] 
from sys.database_role_members 
Join sys.database_principals roles on database_role_members.role_principal_id= roles.principal_id 
join sys.database_principals members on database_role_members.member_principal_id=members.principal_id 
Order By 
roles.[name], members.[name] 

Observação

Quando um SQL Server está em execução atrás de um firewall, você deve executar o runbook de Automação do Azure em um computador em sua própria rede. Verifique se você configurou esse computador como um Hybrid Runbook Worker para que o endereço IP ou rede não seja bloqueado pelo firewall. Para obter mais informações sobre como configurar um computador como um Hybrid Worker, consulte criar um hybrid worker.

Usar o Hybrid Worker

Quando você usa um Hybrid Worker, os módulos usados pelo runbook devem ser instalados localmente a partir de um prompt do PowerShell com privilégios elevados. Por exemplo, - Install-module Az.Accounts and Install-module SqlServer. Para localizar os nomes de módulo necessários, execute um comando em cada cmdlet e verifique a origem. Por exemplo, para verificar o nome do módulo para cmdlet Connect-AzAccounts que faz parte do módulo Az.Account, execute o comando: get-command Connect-AzAccount

Observação

Recomendamos que você adicione o seguinte código na parte superior de qualquer runbook destinado a ser executado em um Hybrid Worker: if ($($env:computerName) -eq "CLIENT") {"Runbook running on Azure CLIENT"} else {"Runbook running on " + $env:computerName}. O código permite que você veja o nó em que está em execução e, caso você o execute acidentalmente na nuvem do Azure em vez do Hybrid Worker, isso ajuda a determinar o motivo pelo qual um runbook não funcionou.

Próximas etapas