Partilhar via


Gerenciar bancos de dados no banco de dados SQL do Azure usando a 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 ao 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 Az PowerShell mais recentes disponíveis no Azure Az PowerShell.

A Automação do Azure tem esses cmdlets do Azure Az PowerShell disponíveis prontamente, para 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 nos 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 ao sistema.
  • Forneça as permissões apropriadas para a identidade gerenciada de automação.
  • Configure o servidor SQL para utilizar a autenticação do Microsoft Entra.
  • Crie um usuário no servidor SQL que mapeie para a identidade gerenciada da conta de automação.
  • Crie um runbook para conectar e executar os comandos.
  • (Opcional) Se o servidor SQL 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 estiver desativada, faça o seguinte:

    1. Inicie sessão no portal do Azure.

    2. Aceda à sua conta de Automatização.

    3. Na página Conta de automação, em Configurações da conta, selecione Identidade.

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

      Captura de ecrã a mostrar a definição do estado como ATIVADO para a identidade gerida atribuída ao sistema.

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

    1. Na conta de Automação | Página 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 (visualização).
    3. Em Adicionar atribuição de função (visualização), selecione o Escopo como SQL, selecione Assinatura, Recurso na lista suspensa e Função de acordo com as permissões mínimas necessárias e selecione Salvar.

    Captura de tela mostrando a adição de atribuição de função quando o status da identidade gerenciada atribuída ao sistema está definido como ATIVADO.

  3. Configure o servidor SQL para autenticação do Ative Directory usando estas etapas:

    1. Vá para a home page do portal do Azure e selecione SQL servers.
    2. Na página 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 autenticação no lado SQL usando estas etapas:

    1. Vá para a home page do portal do Azure e selecione SQL servers.
    2. Na página SQL server, em Configurações, selecione Bancos de Dados SQL.
    3. Selecione seu banco de dados para ir para a página do banco de dados SQL e selecione Editor de consultas (visualização) 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 SQL Server 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' 

Verifique as permissões da conta no lado 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] 

Nota

Quando um servidor SQL está sendo executado atrás de um firewall, você deve executar o runbook de Automação do Azure em uma máquina em sua própria rede. Certifique-se de configurar esta máquina como um Hybrid Runbook Worker para que o endereço IP ou a rede não sejam bloqueados pelo firewall. Para obter mais informações sobre como configurar uma máquina como um trabalhador híbrido, consulte Criar um trabalhador híbrido.

Usar trabalhador híbrido

Quando você usa um trabalhador híbrido, os módulos que seu runbook usa devem ser instalados localmente a partir de um prompt do PowerShell elevado. 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 o cmdlet Connect-AzAccounts que faz parte do módulo Az.Account, execute o comando: get-command Connect-AzAccount

Nota

Recomendamos que você adicione o seguinte código na parte superior de qualquer runbook destinado a ser executado em um trabalhador híbrido: 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 ele está sendo executado e, caso você o execute acidentalmente na nuvem do Azure em vez do trabalhador híbrido, ele ajuda a determinar o motivo pelo qual um runbook não funcionou.

Próximos passos