Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Com o MSP (Protocolo de Segurança de Metadados), você pode definir uma lista de permissões de RBAC (controle de acesso baseado em função) personalizada para ajudar a proteger pontos de extremidade de serviço de metadados. O conteúdo da lista de permissões vem dos logs de auditoria. Um novo tipo de recurso na Galeria de Computação do Azure InVMAccessControlProfile habilita a lista de permissão.
Para saber mais sobre o RBAC e o InVMAccessControlProfile tipo de 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: Endereços finais que as identidades acessam.
- Funções: um agrupamento de privilégios.
- Atribuições de função: Funções e a lista de identidades que receberam acesso para essas funções.
Coletar logs de auditoria
Se você habilitar o MSP no modo audit ou enforce, poderá coletar dados de log de um cliente de máquina virtual por meio do Azure Monitor.
Windows: O agente de monitoramento do Azure coleta eventos do Windows por meio do XPath Personalizado
Windows Azure!*[System[Provider[@Name=`GuestProxyAgent`]]]Linux: Coletar eventos do Syslog com o Agente do Azure Monitor selecionando
Log_DAEMONeLOG_DEBUG
Consultar logs de auditoria
Depois que os logs de auditoria forem coletados conforme explicado na seção anterior, você poderá verificar os logs:
Consulta do Windows Kusto: vá para o Log Analytics e execute a consulta
/// Windows VMs
Event
| where TimeGenerated >ago(1d)
| where EventLog == "Windows Azure" and Source == "GuestProxyAgent"
| where _ResourceId startswith "/subscriptions/<your subscription id>/resourcegroups/<your recrouce group>"
| where RenderedDescription has "processFullPath" and RenderedDescription has "runAsElevated" and RenderedDescription has "processCmdLine"
| extend json = parse_json(RenderedDescription)
| extend method = json.method, url = json.url, processFullPath = json.processFullPath, username = json.userName, runAsElevated = json.runAsElevated
| extend userGroups = json.userGroups, ip = json.ip, port = json.port, processCmdLine = json.processCmdLine
| project TimeGenerated, _ResourceId, url, ip, port, processFullPath, method, username, runAsElevated, processCmdLine
Consulta Kusto do Linux: Vá para o Log Analytics e execute a consulta
/// Linux VMs
Syslog
| where TimeGenerated >ago(1d)
| where ProcessName == "azure-proxy-agent"
| where _ResourceId startswith "/subscriptions/<your subscription id>/resourcegroups/<your recrouce group>"
| where SyslogMessage has "processFullPath" and SyslogMessage has "runAsElevated" and SyslogMessage has "processCmdLine"
| extend message = substring(SyslogMessage, indexof(SyslogMessage, "{"))
| extend json = parse_json(message)
| extend method = json.method, url = json.url, processFullPath = json.processFullPath, username = json.userName, runAsElevated = json.runAsElevated
| extend userGroups = json.userGroups, ip = json.ip, port = json.port, processCmdLine = json.processCmdLine
| project TimeGenerated, _ResourceId, url, ip, port, processFullPath, method, username, runAsElevated, processCmdLine
Se você possui a VM do Azure, pode obter os logs de arquivos dentro da VM do Azure seguindo estas etapas
Localize o arquivo de configuração json do Agente Proxy:
- Windows VM:
GuestProxyAgent.jsonna pasta intituladaGuestProxyAgent windows service - VM do Linux:
etc/azure/proxy-agent.jsonarquivo
- Windows VM:
Ative o registro de arquivos alterando a configuração
logFolderno arquivo config.json. Defina-o como-
%SYSTEMDRIVE%\\WindowsAzure\\ProxyAgent\\Logspara VMs do Windows -
/var/log/azure-proxy-agentpara VMs do Linux.
-
Reiniciar o serviço
-
GuestProxyAgentpara VMs do Windows -
azure-proxy-agentpara VMs4 Linux
- Aguarde
ProxyAgent.Connection.logser preenchido enquanto os serviços do cliente estão em execução. - Obter logs de arquivos de conexão do ProxyAgent das VMs do Azure
Windows:
C:\WindowsAzure\ProxyAgent\Logs\ProxyAgent.Connection.logLinux:
/var/log/azure-proxy-agent/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 de gerador 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.
Baixe e execute a ferramenta de gerador de lista de permissões. Na última página de lançamento, em Ativos, selecione
allowListTool.exe.A ferramenta analisa os
ProxyAgentConnectionlogs e exibe os privilégios e identidades atuais na VM.Criar 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 modo Audit ou no modo Enforce, o agente proxy capturará todas as solicitações que estão sendo feitas nos endpoints do host.
Nos logs de conexão, você pode analisar os aplicativos que estão fazendo as solicitações para o Serviço de Metadados de Instância do Azure ou para os pontos de extremidade do WireServer.
O exemplo a seguir mostra o formato do JSON capturado.
No arquivo de log, você pode identificar os pontos de extremidade que deseja proteger. Esses pontos de extremidade aparecem em privileges na instância final InVMAccessControlProfile. Você também pode identificar as identidades (identities) que devem ter acesso.
Um esquema de regras simples pode ser semelhante ao exemplo a seguir.
Criar uma instância InVMAccessControlProfile usando um modelo do ARM
Crie uma nova galeria privada na Galeria de Computação do Azure.
Crie uma
InVMAccessControlProfiledefinição com parâmetros para:- Nome da galeria para armazenar (da etapa 1)
- Nome do perfil
- Tipo do SO
- Tipo de ponto de extremidade do host (WireServer ou Serviço de Metadados de Instância)
Crie uma versão específica.
Exemplo de InVMAccessControlProfile
Aqui está uma instância de 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"
]
}
]
},
Como usar o PowerShell
Se você estiver usando o PowerShell para gerar um InVMAccessControlProfile, verifique se você tem a versão mínima de 10.1.0 do PowerShell
Siga o guia passo a passo abaixo para gerar um InVMAccessControlProfile:
- Faça logon em sua conta do Azure
Connect-AzAccount
- Crie o Grupo de Recursos em que a galeria privada é criada. Você pode ignorar esta etapa se já tiver um Grupo de Recursos criado.
$resourceGroup = "MyResourceGroup4"
$location = "EastUS2EUAP"
New-AzResourceGroup -Name $resourceGroup -Location $location
- Crie uma galeria privada. Esta galeria é usada como um contêiner para o
InVMAccessControlProfileartefato
$galleryName = "MyGallery4"
New-AzGallery -ResourceGroupName $resourceGroup -GalleryName $galleryName -Location $location -Description "My custom image gallery"
- Crie o
InVMAccessControlProfileartefato na galeria privada criada na etapa anterior. Clique aqui para saber mais sobre os vários parâmetros para este artefato.
$InVMAccessControlProfileName= "testInVMAccessControlProfileP"
New-AzGalleryInVMAccessControlProfile -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName -Location $location -OsType "Windows" -ApplicableHostEndPoint "WireServer" -Description "this test1"
- Obter Galeria
InVMAccessControlProfile
$inVMAccessCP=Get-AzGalleryInVMAccessControlProfile -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName

- Atualizar Galeria
InVMAccessControlProfileDepois que oInVMAccessControlProfilefor criado, o único atributo editável será a descrição. Para quaisquer outras alterações, crie um novo artefato.
Para atualizar a descrição:
Update-AzGalleryInVMAccessControlProfile -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName -Location $location -Description "this test2"
7. Criar InVMAccessControlProfileVersion
Para criar um InVMAccessControlProfileVersion, é necessária uma carga. Como esses conteúdo podem ser grandes, especialmente devido à propriedade de regras, não é prático usar um único comando do PowerShell para criar todo o recurso de uma só vez. A propriedade rules, em qualquer conteúdo de versão, é composta por quatro listas: privilégios, funções, identidades e roleAssignments. Essas listas podem tornar o conteúdo grande e complexo. Introduzimos o objeto PowerShell GalleryInVMAccessControlProfileVersionConfig para simplificar esse processo. Você pode saber mais sobre isso aqui.
Esse objeto permite que você compile incrementalmente a configuração usando vários comandos para adicionar ou remover propriedades de regra.
Quando o objeto de configuração estiver pronto, você poderá usá-lo para criar um InVMAccessControlProfileVersion, descrito nas próximas seções.
Como alternativa, se você já tiver a propriedade de regras como uma cadeia de caracteres JSON e preferir não usar o objeto de configuração, poderá ignorar essas etapas e criar o InVMAccessControlProfileVersion usando uma implantação de modelo do ARM, que também é abordada posteriormente na seção.
Conteúdo para referência:
{
"name": "1.0.0",
"location": "East US 2 EUAP",
"properties": {
"mode": "Audit",
"defaultAccess": "Deny",
"rules": {
"privileges": [
{
"name": "GoalState",
"path": "/machine",
"queryParameters": {
"comp": "goalstate"
}
}
],
"roles": [
{
"name": "Provisioning",
"privileges": [
"GoalState"
]
}
],
"identities": [
{
"name": "WinPA",
"userName": "SYSTEM",
"groupName": "Administrators",
"exePath": "C:\\Windows\\System32\\cscript.exe",
"processName": "cscript"
}
],
"roleAssignments": [
{
"role": "Provisioning",
"identities": [
"WinPA"
]
}
]
},
"targetLocations": [
{
"name": "East US 2 EUAP"
}
],
"excludeFromLatest": false
}
}
- Criar
InVMAccessControlProfileVersionConfiguração
$inVMAccessControlProfileVersionName= "1.0.0"
$targetRegions= @("EastUS2EUAP", "CentralUSEUAP")
$inVMAccessConrolProfileVersion = New-AzGalleryInVMAccessControlProfileVersionConfig `
-Name $inVMAccessControlProfileVersionName `
-Location $location `
-Mode "Audit" `
-DefaultAccess "Deny" -TargetLocation $targetRegions -ExcludeFromLatest
Execute este comando para adicionar cada privilégio:
Add-AzGalleryInVMAccessControlProfileVersionRulesPrivilege `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-PrivilegeName "GoalState" `
-Path "/machine" `
-QueryParameter @{ comp = "goalstate" }
Para remover um privilégio:
Remove-AzGalleryInVMAccessControlProfileVersionRulesPrivilege `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-PrivilegeName "GoalState2"
Execute este comando para adicionar cada função:
Add-AzGalleryInVMAccessControlProfileVersionRulesRole `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-RoleName "Provisioning" `
-Privilege @("GoalState")
Execute este comando para remover funções:
Remove-AzGalleryInVMAccessControlProfileVersionRulesRole `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-RoleName "Provisioning2"
Adicionar RulesIdentity:
Add-AzGalleryInVMAccessControlProfileVersionRulesIdentity `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-IdentityName "WinPA" `
-UserName "SYSTEM" `
-GroupName "Administrators" `
-ExePath "C:\Windows\System32\cscript.exe" `
-ProcessName "cscript"
Remover RulesIdentity:
Remove-AzGalleryInVMAccessControlProfileVersionRulesIdentity `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-IdentityName "WinPA2"
Execute este comando para adicionar cada Atribuição de Função:
Add-AzGalleryInVMAccessControlProfileVersionRulesRoleAssignment `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-Role "Provisioning" `
-Identity @("WinPA")
Remover atribuição de função:
Remove-AzGalleryInVMAccessControlProfileVersionRulesRoleAssignment `
-GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion `
-Role "Provisioning2"
- Criar Galeria
InVMAccessControlProfileVersion
New-AzGalleryInVMAccessControlProfileVersion -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName -GalleryInVmAccessControlProfileVersion $inVMAccessConrolProfileVersion
- Obter
InVMAccessControlProfileVersion
$ver = Get-AzGalleryInVMAccessControlProfileVersion -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName `
-GalleryInVMAccessControlProfileVersionName $inVMAccessControlProfileVersionName
$ver | ConvertTo-Json -Depth 10
- Atualização
InVMAccessControlProfileVersion
É recomendável criar um novo InVMAccessControlProfileVersion , pois a maioria dos parâmetros não pode ser atualizada. Veja um exemplo:
$targetRegions= @("EastUS2EUAP")
$ver = Get-AzGalleryInVMAccessControlProfileVersion -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName `
-GalleryInVMAccessControlProfileVersionName $inVMAccessControlProfileVersionName
Update-AzGalleryInVMAccessControlProfileVersion `
-GalleryInVmAccessControlProfileVersion $ver `
-TargetLocation $targetRegions -ExcludeFromLatest $true
- Excluir
InVMAccessControlProfileVersion
Remove-AzGalleryInVMAccessControlProfileVersion -ResourceGroupName $resourceGroup -GalleryName $galleryName -GalleryInVMAccessControlProfileName $InVMAccessControlProfileName `
-GalleryInVMAccessControlProfileVersionName $inVMAccessControlProfileVersionName
- Listar toda a galeria
InVMAccessControlProfile
Get-AzGalleryInVMAccessControlProfile -ResourceGroupName "myResourceGroup" -GalleryName "myGallery"
Usando a CLI
Siga o guia passo a passo abaixo para gerar um InVMAccessControlProfile:
- Faça logon em sua conta do Azure
az login
- Criar um grupo de recursos no local desejado
az group create --resource-group ResourceGroupForINVM --location eastus
- Criar uma galeria que abrigará o
InVMAccessControlProfilerecurso
az sig create --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --location eastus
- Criar um
InVMAccessControlProfilena galeria criada na etapa anterior Para obter mais detalhes sobre os comandos: az sig in-vm-access-control-profile | Microsoft Learn
az sig in-vm-access-control-profile create --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --name myInVMAccessControlProfileName --location eastus --os-type Linux --applicable-host-endpoint WireServer
Execute este comando para ver detalhes adicionais sobre os comandos e as propriedades
az sig in-vm-access-control-profile create --help
- Atualizar o
InVMAccessControlProfileÉ possível atualizar apenas a descrição doInVMAccessControlProfile. Se forem necessárias alterações adicionais, exclua a atualInVMAccessControlProfilee crie uma nova
az sig in-vm-access-control-profile update --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --name myInVMAccessControlProfileName --description test
- Obter a operação de
InVMAccessControlProfile
az sig in-vm-access-control-profile show --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --name myInVMAccessControlProfileName
- Listar todos os
InVMAccessControlProfileartefatos
Este comando mostra a lista de todos InVMAccessControlProfile sob uma galeria específica
az sig in-vm-access-control-profile show --resource-group ResourceGroupForINVM --gallery-name MyGallery67
- Criar
InVMAccessControlProfileVersion
Você deve fornecer um conteúdo para criar um InVMAccessControlProfileVersion. Este conteúdo pode ser grande, sobretudo por causa da propriedade rules, que pode conter configurações extensas.
Em vez de passar partes individuais da propriedade de regras diretamente, introduzimos um parâmetro de regras que aceita um arquivo JSON como entrada. Essa abordagem simplifica o processo e mantém o comando limpo e gerenciável.
Este é um arquivo de exemplo "rules.json".
1. {
2. "privileges": [
3. {
4. "name": "GoalState",
5. "path": "/machine",
6. "queryParameters": {
7. "comp": "goalstate"
8. }
9. }
10. ],
11. "roles": [
12. {
13. "name": "Provisioning",
14. "privileges": [
15. "GoalState"
16. ]
17. }
18. ],
19. "identities": [
20. {
21. "name": "WinPA",
22. "userName": "SYSTEM",
23. "groupName": "Administrators",
24. "exePath": "C:\\Windows\\System32\\cscript.exe",
25. "processName": "cscript"
26. }
27. ],
28. "roleAssignments": [
29. {
30. "role": "Provisioning",
31. "identities": [
32. "WinPA"
33. ]
34. }
35. ]
36. }
Veja detalhes adicionais do comando aqui: az sig in-vm-access-control-profile-version | Microsoft Learn
Depois de criar sua versão do arquivo rules.json, use o comando a seguir para criar o InVMAccessControlProfileVersion
az sig in-vm-access-control-profile-version create \
--resource-group ResourceGroupForINVM \
--gallery-name MyGallery67 \
--profile-name myInVMAccessControlProfileName \
--version-name 1.0.0 \
--mode Audit \
--default-access Deny \
--target-regions EastUS2EUAP \
--exclude-from-latest true \
--rules @rules.json
- Obter
InVMAccessControlProfileVersion
az sig in-vm-access-control-profile-version show --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --profile-name myInVMAccessControlProfileName --profile-version 1.0.0
- Listar todos os
InVMAccessControlProfileVersionartefatos
az sig in-vm-access-control-profile-version list --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --profile-name myInVMAccessControlProfileName
- Excluir
InVMAccessControlProfileVersion
Antes de excluir qualquer InVMAccessControlProfileVersion, verifique se ele não está sendo usado por nenhum InVMAccessControlProfile em nenhuma Máquina Virtual nem em Conjuntos de Dimensionamento de Máquinas Virtuais.
az sig in-vm-access-control-profile-version delete --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --profile-name myInVMAccessControlProfileName --profile-version 1.0.0
- Excluir
InVMAccessControlProfile
az sig in-vm-access-control-profile delete --resource-group ResourceGroupForINVM --gallery-name MyGallery67 --name myInVMAccessControlProfileName