Partilhar via


Converter logs de auditoria em uma lista de permissões

Com o MSP (Metadata Security Protocol), você pode definir uma lista de permissões RBAC (controle de acesso baseado em função) personalizada para ajudar a proteger os pontos de extremidade do serviço de metadados. O conteúdo da lista de permissões vem de logs de auditoria. Um novo tipo de recurso na Galeria de Computação do Azure, InVMAccessControlProfile, habilita a lista de permissões.

Para saber mais sobre o RBAC e o tipo de InVMAccessControlProfile recurso, consulte Configuração avançada para MSP.

Estrutura de uma lista de permissões

Uma lista de permissões consiste em:

  • Identidades: Processos na máquina.
  • Privilégios: pontos de extremidade que as identidades acessam.
  • Funções: Um agrupamento de privilégios.
  • Atribuições de função: funções e a lista de identidades com acesso concedido para essas funções.

Recolher registos de auditoria

Se ativar o MSP no modo Audit ou Enforce, o Guest Proxy Agent (GPA) cria registos de auditoria nas pastas seguintes dentro da máquina virtual (VM):

Sistema operativo Local do log de auditoria
Linux /var/lib/azure-proxy-agent/ProxyAgent.Connection.log
Windows C:\WindowsAzure\ProxyAgent\Logs\ProxyAgent.Connection.log

Converter logs em regras

Para criar uma lista de permissões, você pode usar um método automatizado ou um método manual.

Gerar uma lista de permissões automaticamente

Você pode usar uma ferramenta geradora de lista de permissões para gerar as regras de controle de acesso. A ferramenta ajuda a analisar os logs de auditoria e fornece uma interface do usuário para gerar as regras.

  1. Faça o download e execute a ferramenta geradora de lista de permissões. Na página da versão mais recente, em Ativos, selecione allowListTool.exe.

    A ferramenta analisa os ProxyAgentConnection logs e exibe os privilégios e identidades atuais na VM.

  2. Crie funções e atribuições de função:

    • Para criar uma função, selecione um agrupamento de privilégios e dê à função um nome descritivo.
    • Para criar uma atribuição de função, selecione uma função e um agrupamento de identidades. Essas identidades podem acessar os privilégios agrupados nessa função. Dê à atribuição de função um nome descritivo.

Criar manualmente uma lista de permissões

Depois de habilitar uma VM com MSP no Audit modo ou Enforce , o agente proxy captura todas as solicitações que estão sendo feitas aos pontos de extremidade do host.

Nos logs de conexão, é possível analisar as aplicações que estão fazendo os pedidos para o Serviço de Metadados de Instância do Azure ou endpoints do WireServer.

Captura de ecrã dos registos de ligação.

O exemplo a seguir mostra o formato do JSON capturado.

Captura de ecrã de registos de auditoria com JSON capturado.

No arquivo de log, você pode identificar os pontos de extremidade que deseja proteger. Estes endpoints aparecem em privileges na última InVMAccessControlProfile instância. Você também pode identificar as identidades (identities) que devem ter acesso.

Um esquema de regras simples pode se parecer com o exemplo a seguir.

Captura de tela de um esquema de regras simples.

Criar uma instância do InVMAccessControlProfile usando um modelo ARM

  1. Crie uma nova galeria privada na Galeria de Computação do Azure.

  2. Crie uma InVMAccessControlProfile definição com parâmetros para:

    • Nome da galeria para armazenar (a partir da etapa 1)
    • Nome do perfil
    • Tipo de SO
    • Tipo de ponto de extremidade do host (WireServer ou Instance Metadata Service)
  3. Crie uma versão específica.

Aqui está um exemplo InVMAccessControlProfile:

"properties": {
    "mode": "Enforce",
    "defaultAccess": "Allow",
    "rules": {
      "privileges": [
        {
          "name": "GoalState",
          "path": "/machine",
          "queryParameters": {
            "comp": "goalstate"
          }
        }
      ],
      "roles": [
        {
          "name": "Provisioning",
          "privileges": [
            "GoalState"
          ]
        },
        {
          "name": "ManageGuestExtensions",
          "privileges": [
            "GoalState"
          ]
        },
        {
          "name": "MonitoringAndSecret",
          "privileges": [
            "GoalState"
          ]
        }
      ],
      "identities": [
        {
          "name": "WinPA",
          "userName": "SYSTEM",
          "exePath": "C:\\Windows\\System32\\cscript.exe"
        },
        {
          "name": "GuestAgent",
          "userName": "SYSTEM",
          "processName": "WindowsAzureGuestAgent.exe"
        },
        {
          "name": "WaAppAgent",
          "userName": "SYSTEM",
          "processName": "WaAppAgent.exe"
        },
        {
          "name": "CollectGuestLogs",
          "userName": "SYSTEM",
          "processName": "CollectGuestLogs.exe"
        },
        {
          "name": "AzureProfileExtension",
          "userName": "SYSTEM",
          "processName": "AzureProfileExtension.exe"
        },
        {
          "name": "AzurePerfCollectorExtension",
          "userName": "SYSTEM",
          "processName": "AzurePerfCollectorExtension.exe"
        },
        {
          "name": "WaSecAgentProv",
          "userName": "SYSTEM",
          "processName": "WaSecAgentProv.exe"
        }
      ],
      "roleAssignments": [
        {
          "role": "Provisioning",
          "identities": [
            "WinPA"
          ]
        },
        {
          "role": "ManageGuestExtensions",
          "identities": [
            "GuestAgent",
            "WaAppAgent",
            "CollectGuestLogs"
          ]
        },
        {
          "role": "MonitoringAndSecret",
          "identities": [
            "AzureProfileExtension",
            "AzurePerfCollectorExtension",
            "WaSecAgentProv"
          ]
        }
      ]
    },