Segurança de extensões
Este artigo descreve os fundamentos das extensões de VM para servidores habilitados para Azure Arc e detalha como as configurações de extensão podem ser personalizadas.
Noções básicas de extensão
As extensões de VM para servidores habilitados para Azure Arc são complementos opcionais que habilitam outras funcionalidades, como monitoramento, gerenciamento de patches e execução de scripts. As extensões são publicadas pela Microsoft e por terceiros selecionados no Azure Marketplace e armazenadas em contas de armazenamento gerenciadas pela Microsoft. Todas as extensões são verificadas em busca de malware como parte do processo de publicação. As extensões para servidores habilitados para Azure Arc são idênticas às disponíveis para VMs do Azure, garantindo consistência em todos os seus ambientes operacionais.
As extensões são baixadas diretamente do Armazenamento do Azure (*.blob.core.windows.net
) no momento em que são instaladas ou atualizadas, a menos que você tenha configurado pontos de extremidade privados. As contas de armazenamento mudam regularmente e não podem ser previstas com antecedência. Quando pontos de extremidade privados são usados, as extensões são intermediadas por proxy por meio da URL regional para o serviço Azure Arc.
Um arquivo de catálogo assinado digitalmente é baixado separadamente do pacote de extensão e usado para verificar a integridade de cada extensão antes que o gerenciador de extensões abra ou execute o pacote de extensão. Se o arquivo ZIP baixado para a extensão não corresponder ao conteúdo do arquivo de catálogo, a operação de extensão será anulada.
As extensões podem usar configurações para personalizar ou configurar a instalação, como URLs de proxy ou chaves de API para conectar um agente de monitoramento ao seu serviço de nuvem. As configurações de extensão vêm em dois tipos: configurações regulares e configurações protegidas. As configurações protegidas não persistem no Azure e são criptografadas em repouso em sua máquina local.
Todas as operações de extensão são originadas do Azure por meio de uma chamada de API, CLI, PowerShell ou ação do Portal. Esse design garante que qualquer ação para instalar, atualizar ou atualizar uma extensão em um servidor seja registrada no Log de Atividades do Azure. O agente Azure Connected Machine permite que as extensões sejam removidas localmente para fins de solução de problemas e limpeza. No entanto, se a extensão for removida localmente e o serviço ainda esperar que a máquina tenha a extensão instalada, ela será reinstalada na próxima vez que o gerenciador de extensões sincronizar com o Azure.
Execução de scripts
O gerenciador de extensões pode ser usado para executar scripts em máquinas usando a extensão de script personalizado ou executar comando. Por padrão, esses scripts serão executados no contexto de usuário do gerenciador de extensões – Sistema Local no Windows ou raiz no Linux – o que significa que esses scripts terão acesso irrestrito à máquina. Se você não pretende usar esses recursos, você pode bloqueá-los usando uma lista de permissões ou lista de bloqueio. Um exemplo é fornecido na próxima seção.
Controles de segurança do agente local
A partir da versão 1.16 do agente, você pode, opcionalmente, limitar as extensões que podem ser instaladas no servidor e desabilitar a Configuração de convidado. Esses controles podem ser úteis ao conectar servidores ao Azure para uma única finalidade, como coletar logs de eventos, sem permitir que outros recursos de gerenciamento sejam usados no servidor.
Esses controles de segurança só podem ser configurados executando um comando no próprio servidor e não podem ser modificados do Azure. Essa abordagem preserva a intenção do administrador do servidor ao habilitar cenários de gerenciamento remoto com o Azure Arc, mas também significa que alterar a configuração é mais difícil se você decidir alterá-los posteriormente. Esta funcionalidade destina-se a servidores sensíveis (por exemplo, Controladores de Domínio Ative Directory, servidores que lidam com dados de pagamento e servidores sujeitos a medidas rigorosas de controlo de alterações). Na maioria dos outros casos, não é necessário modificar essas configurações.
Listas de permissões e listas de bloqueio
O agente do Azure Connected Machine dá suporte a uma lista de permissões e uma lista de bloqueio para restringir quais extensões podem ser instaladas em sua máquina. As listas de permissões são exclusivas, o que significa que apenas as extensões específicas que você inclui na lista podem ser instaladas. As listas de bloqueio são exclusivas, o que significa que qualquer coisa, exceto essas extensões, pode ser instalada. As listas de permissões são preferíveis às listas de bloqueio porque bloqueiam inerentemente quaisquer novas extensões que fiquem disponíveis no futuro. As listas de permissões e as listas de bloqueio são configuradas localmente por servidor. Isso garante que ninguém, nem mesmo um usuário com permissões de Proprietário ou Administrador Global no Azure, possa substituir suas regras de segurança tentando instalar uma extensão não autorizada. Se alguém tentar instalar uma extensão não autorizada, o gerenciador de extensões se recusará a instalá-la e marcará o relatório de instalação da extensão como uma falha no Azure. As listas de permissões e as listas de bloqueio podem ser configuradas a qualquer momento após a instalação do agente, inclusive antes de o agente estar conectado ao Azure.
Se nenhuma lista de permissões ou lista de bloqueio estiver configurada no agente, todas as extensões serão permitidas.
A opção mais segura é permitir explicitamente as extensões que você espera que sejam instaladas. Qualquer extensão que não esteja na lista de permissões é automaticamente bloqueada. Para configurar o agente de Máquina Conectada do Azure para permitir apenas o Agente do Azure Monitor para Linux, execute o seguinte comando em cada servidor:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
Aqui está um exemplo de lista de bloqueio que bloqueia todas as extensões com a capacidade de executar scripts arbitrários:
azcmagent config set extensions.blocklist “Microsoft.Cplat.Core/RunCommandHandlerWindows, Microsoft.Cplat.Core/RunCommandHandlerLinux,Microsoft.Compute/CustomScriptExtension,Microsoft.Azure.Extensions/CustomScript,Microsoft.Azure.Automation.HybridWorker/HybridWorkerForWindows,Microsoft.Azure.Automation.HybridWorkerForLinux,Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent, Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux”
Especifique extensões com seu editor e tipo, separados por uma barra /
. Consulte a lista das extensões mais comuns nos documentos ou liste as extensões de VM já instaladas no seu servidor no portal, Azure PowerShell ou Azure CLI.
A tabela descreve o comportamento ao executar uma operação de extensão em relação a um agente que tenha a lista de permissões ou a lista de bloqueio configurada.
Operação | Na lista de permissões | Na lista de bloqueio | Tanto na lista de permissões como na lista de bloqueio | Não em qualquer lista, mas uma lista de permissões está configurada |
---|---|---|---|---|
Instalar a extensão | Permitido | Bloqueado | Bloqueado | Bloqueado |
Extensão de atualização (reconfigurar) | Permitido | Bloqueado | Bloqueado | Bloqueado |
Extensão de atualização | Permitido | Bloqueado | Bloqueado | Bloqueado |
Excluir extensão | Permitido | Permitido | Permitido | Permitido |
Importante
Se uma extensão já estiver instalada no servidor antes de configurar uma lista de permissões ou uma lista de bloqueio, ela não será removida automaticamente. É sua responsabilidade excluir a extensão do Azure para removê-la totalmente da máquina. As solicitações de exclusão são sempre aceitas para acomodar esse cenário. Uma vez excluída, a lista de permissões e a lista de bloqueio determinam se devem ou não permitir futuras tentativas de instalação.
A partir da versão 1.35 do agente, há um valor Allow/None
de lista de permissões especial, que instrui o gerenciador de extensões a ser executado, mas não permite que nenhuma extensão seja instalada. Essa é a configuração recomendada ao usar o Azure Arc para fornecer as Atualizações de Segurança Estendidas (ESU) do Windows Server 2012 sem a intenção de usar outras extensões.
azcmagent config set extensions.allowlist "Allow/None"
As Políticas do Azure também podem ser usadas para restringir quais extensões podem ser instaladas. As Políticas do Azure têm a vantagem de serem configuráveis na nuvem e não exigirem uma alteração em cada servidor individual se você precisar alterar a lista de extensões aprovadas. No entanto, qualquer pessoa com permissão para modificar atribuições de política pode substituir ou remover essa proteção. Se optar por utilizar as Políticas do Azure para restringir extensões, certifique-se de que analisa quais as contas na sua organização que têm permissão para editar atribuições de política e de que estão em vigor as medidas de controlo de alterações adequadas.
Práticas recomendadas de máquinas bloqueadas
Ao configurar o agente do Azure Connected Machine com um conjunto reduzido de recursos, é importante considerar os mecanismos que alguém pode usar para remover essas restrições e implementar os controles apropriados. Qualquer pessoa capaz de executar comandos como administrador ou usuário raiz no servidor pode alterar a configuração do agente da Máquina Conectada do Azure. As extensões e as políticas de configuração de convidado são executadas em contextos privilegiados no servidor e, como tal, podem alterar a configuração do agente. Se você aplicar controles de segurança do agente local para bloquear o agente, a Microsoft recomendará as seguintes práticas recomendadas para garantir que apenas os administradores do servidor local possam atualizar a configuração do agente:
- Use listas de permissões para extensões em vez de listas de bloqueio sempre que possível.
- Não inclua a Extensão de Script Personalizada na lista de permissões de extensão para impedir a execução de scripts arbitrários que possam alterar a configuração do agente.
- Desative a Configuração de Convidado para impedir o uso de políticas personalizadas de Configuração de Convidado que possam alterar a configuração do agente.
Exemplo de configuração para cenários de monitoramento e segurança
É comum usar o Azure Arc para monitorar seus servidores com o Azure Monitor e o Microsoft Sentinel e protegê-los com o Microsoft Defender for Cloud. Esta seção contém exemplos de como bloquear o agente para oferecer suporte apenas a cenários de monitoramento e segurança.
Somente Agente do Azure Monitor
Nos servidores Windows, execute os seguintes comandos em um console de comando elevado:
azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorWindowsAgent"
azcmagent config set guestconfiguration.enabled false
Em seus servidores Linux, execute os seguintes comandos:
sudo azcmagent config set extensions.allowlist "Microsoft.Azure.Monitor/AzureMonitorLinuxAgent"
sudo azcmagent config set guestconfiguration.enabled false
Análise de log e dependência (Azure Monitor VM Insights) somente
Essa configuração é para os agentes herdados do Log Analytics e o agente de dependência.
Em seus servidores Windows, execute os seguintes comandos em um console elevado:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentWindows"
azcmagent config set guestconfiguration.enabled false
Em seus servidores Linux, execute os seguintes comandos:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Microsoft.Azure.Monitoring.DependencyAgent/DependencyAgentLinux"
sudo azcmagent config set guestconfiguration.enabled false
Monitorização e segurança
O Microsoft Defender for Cloud implanta extensões em seu servidor para identificar software vulnerável em seu servidor e habilitar o Microsoft Defender for Endpoint (se configurado). O Microsoft Defender for Cloud também usa a Configuração de Convidado para seu recurso de conformidade regulamentar. Como uma atribuição de Configuração de Convidado personalizada pode ser usada para desfazer as limitações do agente, você deve avaliar cuidadosamente se precisa ou não do recurso de conformidade regulatória e, como resultado, da Configuração de Convidado para ser habilitado na máquina.
Nos servidores Windows, execute os seguintes comandos em um console de comando elevado:
azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/MicrosoftMonitoringAgent,Qualys/WindowsAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Windows,Microsoft.Azure.AzureDefenderForSQL/AdvancedThreatProtection.Windows"
azcmagent config set guestconfiguration.enabled true
Em seus servidores Linux, execute os seguintes comandos:
sudo azcmagent config set extensions.allowlist "Microsoft.EnterpriseCloud.Monitoring/OMSAgentForLinux,Qualys/LinuxAgent.AzureSecurityCenter,Microsoft.Azure.AzureDefenderForServers/MDE.Linux"
sudo azcmagent config set guestconfiguration.enabled true
Modos de agente
Uma maneira mais simples de configurar controles de segurança locais para monitoramento e cenários de segurança é usar o modo de monitor, disponível com o agente versão 1.18 e mais recente. Os modos são configurações predefinidas da lista de permissões de extensão e do agente de configuração de convidado mantidos pela Microsoft. À medida que novas extensões forem disponibilizadas para permitir cenários de monitoramento, a Microsoft atualizará a lista de permissões e a configuração do agente para incluir ou excluir a nova funcionalidade, conforme apropriado.
Há dois modos para escolher:
- full - o modo padrão. Isso permite todas as funcionalidades do agente.
- Monitor - Um modo restrito que desativa o agente de política de configuração de convidado e só permite o uso de extensões relacionadas ao monitoramento e à segurança.
Para ativar o modo de monitor, execute o seguinte comando:
azcmagent config set config.mode monitor
Você pode verificar o modo atual do agente e as extensões permitidas com o seguinte comando:
azcmagent config list
Enquanto estiver no modo de monitor, você não pode modificar a extensão allowlist ou blocklist. Se você precisar alterar qualquer lista, altere o agente de volta para o modo completo e especifique sua própria lista de permissões e lista de bloqueio.
Para alterar o agente de volta ao modo completo, execute o seguinte comando:
azcmagent config set config.mode full
Desativando o gerenciador de extensões
Se você não precisar usar extensões com o Azure Arc, também poderá desabilitar totalmente o gerenciador de extensões. Você pode desativar o gerenciador de extensões com o seguinte comando (executado localmente em cada máquina):
azcmagent config set extensions.enabled false
A desativação do gerenciador de extensões não removerá nenhuma extensão já instalada no servidor. As extensões hospedadas em seus próprios serviços Windows ou Linux, como o Log Analytics Agent, podem continuar a ser executadas mesmo se o gerenciador de extensões estiver desativado. Outras extensões hospedadas pelo próprio gerenciador de extensões, como o Azure Monitor Agent, não são executadas se a manjedoura de extensão estiver desabilitada. Você deve remover todas as extensões antes de desativar o gerenciador de extensões para garantir que nenhuma extensão continue a ser executada no servidor.