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.
O efeito modify é usado para adicionar, atualizar ou remover propriedades ou marcas em uma assinatura ou um recurso durante a criação ou a atualização. Os recursos fora de conformidade existentes também podem ser corrigidos com uma tarefa de correção. As atribuições de política com efeito definido como Alterar exigem uma identidade gerenciada para fazer a correção. Um exemplo comum do uso do efeito modify é a atualização de marcas em recursos como 'costCenter'.
Há algumas nuances no comportamento de modificação para propriedades de recurso. Saiba mais sobre cenários em que a modificação é ignorada.
Uma única regra modify pode ter qualquer quantidade de operações. As operações com suporte são:
-
Adicionar, substituir ou remover marcas de recursos. Somente marcas podem ser removidas. Para marcas, uma política Modificar deverá ter o modo definido como
indexed, exceto se o recurso de destino for um grupo de recursos. -
Adicionar ou substituir o valor do tipo de identidade gerenciada (
identity.type) de máquinas virtuais e Conjuntos de Dimensionamento de Máquinas Virtuais. Você só pode modificar oidentity.typepara máquinas virtuais ou Conjuntos de Dimensionamento de Máquinas Virtuais. -
Adicionar ou substituir os valores de determinados aliases.
- Use
Get-AzPolicyAlias | Select-Object -ExpandProperty 'Aliases' | Where-Object { $_.DefaultMetadata.Attributes -eq 'Modifiable' }no Azure PowerShell 4.6.0 ou superior para obter uma lista de aliases que podem ser usados commodify.
- Use
Important
Caso você esteja gerenciando marcas, recomendamos o uso de Modify em vez de Append, pois Modify fornece tipos de operação adicionais e a capacidade de corrigir os recursos existentes. No entanto, Append é recomendado se você não consegue criar uma identidade gerenciada ou Modify ainda não dá suporte ao alias na propriedade de recurso.
Modificar avaliação
O efeito Modify é avaliado antes que a solicitação seja processada por um provedor de recursos durante a criação ou a atualização de um recurso. As operações de modify são aplicadas ao conteúdo da solicitação quando a condição if da regra de política é atendida. Cada operação modify pode especificar uma condição que determina quando ela é aplicada.
Quando um alias é especificado, mais verificações são executadas para garantir que a operação modify não altere o conteúdo da solicitação de uma maneira que faça com que o provedor de recursos a rejeite:
- A propriedade mapeada pelo alias é marcada como Modificável na versão de API da solicitação.
- O tipo de token na operação
modifycorresponde ao tipo de token esperado para a propriedade na versão de API da solicitação.
Se qualquer uma dessas verificações falhar, a avaliação da política retornará ao valor especificado conflictEffect.
Important
É recomendável que as definições de modificação que incluem aliases usem o efeito de conflito de auditoria para evitar falhas em solicitações usando versões de API em que a propriedade mapeada não é 'Modificável'. Se o mesmo alias se comporta de maneira diferente entre as versões de API, as operações de modify condicionais podem ser usadas para determinar a operação modify usada para cada versão de API.
Modificação ignorada
Há alguns casos em que as operações de modificação são ignoradas durante a avaliação:
-
Recursos existentes: quando uma definição de política usando o efeito
modifyé executada como parte de um ciclo de avaliação, ela não faz alterações em recursos já existentes. Em vez disso, ele marca qualquer recurso que atenda à condiçãoifcomo não compatível, para que eles possam ser corrigidos por meio de uma tarefa de correção. -
Não aplicável: quando a condição de uma operação na matriz
operationsé avaliada como false, essa operação específica é ignorada. -
Propriedade não modificável: se um alias especificado para uma operação não for modificável na versão da API da solicitação, a avaliação usará o efeito de conflito. Se o efeito do conflito estiver definido como negar, a solicitação será bloqueada. Se o efeito de conflito for definido como auditoria, a solicitação será permitida, mas a
modifyoperação será ignorada. -
Propriedade não presente: se uma propriedade não estiver presente no conteúdo do recurso da solicitação, a modificação poderá ser ignorada. Em alguns casos, as propriedades modificáveis são aninhadas em outras propriedades e têm um alias como
Microsoft.Storage/storageAccounts/blobServices/deleteRetentionPolicy.enabled. Se a propriedade "pai", nesse casodeleteRetentionPolicy, não estiver presente na solicitação, a modificação será ignorada porque essa propriedade será omitida intencionalmente. Para obter um exemplo prático, vá para a seção Exemplo de propriedade não presente. -
Operação de identidade Não VM ou VMSS: quando uma operação de modificação tenta adicionar ou substituir o campo
identity.typeem um recurso diferente de uma Máquina Virtual ou Um Conjunto de Dimensionamento de Máquinas Virtuais, a avaliação da política é ignorada completamente para que a modificação não seja executada. Nesse caso, o recurso é considerado não aplicável à política.
Exemplo de propriedade não presente
A modificação das propriedades do recurso depende da solicitação de API e do conteúdo do recurso atualizado. O conteúdo pode depender do cliente usado, como o portal do Azure e outros fatores, como o provedor de recursos.
Imagine que você aplique uma política que modifique marcas em uma VM (máquina virtual). Sempre que a VM é atualizada, como durante o redimensionamento ou alterações em disco, as marcas são atualizadas de acordo com o conteúdo da VM. Isso ocorre porque as marcas são independentes das propriedades da VM.
No entanto, se você aplicar uma política que modifica propriedades em uma VM, a modificação dependerá do conteúdo do recurso. Se você tentar modificar as propriedades que não estão incluídas no conteúdo da atualização, a modificação não ocorrerá. Por exemplo, isso pode acontecer ao corrigir a propriedade assessmentMode de uma VM (alias Microsoft.Compute/virtualMachines/osProfile.windowsConfiguration.patchSettings.assessmentMode). A propriedade é "aninhada", portanto, se suas propriedades pai não forem incluídas na solicitação, essa omissão será considerada intencional e a modificação será ignorada. Para que a modificação ocorra, o conteúdo do recurso deve conter esse contexto.
Modificar propriedades
A propriedade details do efeito modify tem todas as subpropriedades que definem as permissões necessárias para correção e as operations usadas para adicionar, atualizar ou remover valores de marca.
-
roleDefinitionIds(obrigatório)- Essa propriedade deve incluir uma matriz de cadeias de caracteres que correspondem à ID de controle de acesso baseado em função que pode ser acessada pela assinatura. Para saber mais, confira correção – configurar a definição de política.
- A função definida deve incluir todas as operações concedidas à função Contribuidor/Contribuidor de Rótulo.
-
conflictEffect(opcional)- Determina qual definição de política “vence” se mais de uma definição de política modifica a mesma propriedade ou quando a operação
modifynão funciona no alias especificado.- Em recursos novos ou atualizados, a definição de política com deny tem precedência. As definições de política com auditar ignoram todas
operations. Se mais de uma definição de política tiver o efeito Negar, a solicitação será negada como um conflito. Se todas as definições de política tiverem audit, nenhuma dasoperationsdas definições de política conflitantes será processada. - Em recursos existentes, se mais de uma definição de política tiver o efeito Negar, o status de conformidade será Conflito. Se uma ou menos definições de política tiverem o efeito Negar, cada atribuição retornará o status de conformidade Fora de conformidade.
- Em recursos novos ou atualizados, a definição de política com deny tem precedência. As definições de política com auditar ignoram todas
- Valores disponíveis: audit, deny e disabled.
- O valor padrão é deny.
- Determina qual definição de política “vence” se mais de uma definição de política modifica a mesma propriedade ou quando a operação
-
operations(obrigatório)- Uma matriz de todas as operações de marca a serem concluídas em recursos correspondentes.
- Properties:
-
operation(obrigatório)- Define a ação a ser tomada em um recurso correspondente. As opções são
addOrReplace,AddeRemove. -
Addse comporta de forma semelhante ao efeito acrescentar. -
Removesó é compatível com marcas de recurso.
- Define a ação a ser tomada em um recurso correspondente. As opções são
-
field(obrigatório)- A marca para adicionar, substituir ou remover. Os nomes de marca devem aderir à mesma convenção de nomenclatura dos outros campos.
-
value(opcional)- O valor a ser definido para a marca.
- Essa propriedade será necessária se
operationfor addOrReplace ou Adicionar.
-
condition(opcional)- Uma cadeia de caracteres que contém uma expressão de linguagem do Azure Policy com funções de Política que são avaliadas como true ou false.
- Não dá suporte às seguintes funções de Política:
field(),resourceGroup()esubscription().
-
Modificar operações
A matriz de propriedades de operations torna possível alterar várias marcas de maneiras diferentes a partir de uma única definição de política. Cada operação é composta por propriedades operation, field e value.
operation determina o que a tarefa de correção faz nas marcas, field determina qual marca é alterada, e value define a nova configuração para essa marca. O exemplo a seguir faz as seguintes alterações na marca:
- Define a marca
environmentcomo "Test", mesmo que ela já exista com um valor diferente. - Remove a marca
TempResource. - Define a marca
Deptcomo o parâmetro de política DeptName configurado na atribuição de política.
"details": {
...
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
},
{
"operation": "Remove",
"field": "tags['TempResource']",
},
{
"operation": "addOrReplace",
"field": "tags['Dept']",
"value": "[parameters('DeptName')]"
}
]
}
A propriedade operation oferece as seguintes opções:
| Operation | Description |
|---|---|
addOrReplace |
Adiciona a propriedade ou a marca definida e o valor ao recurso, mesmo que a propriedade ou a marca já exista com um valor diferente. |
add |
Adiciona a propriedade ou marca definida e o valor ao recurso. |
remove |
Remove a marca definida do recurso. Com suporte apenas para marcas. |
Modificar exemplos
Exemplo 1: Adicione o rótulo environment e substitua os rótulos environment existentes por "Teste":
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"operations": [
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "Test"
}
]
}
}
Exemplo 2: Remova o rótulo env e adicione o rótulo environment ou substitua os rótulos environment existentes por um valor parametrizado:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c"
],
"conflictEffect": "deny",
"operations": [
{
"operation": "Remove",
"field": "tags['env']"
},
{
"operation": "addOrReplace",
"field": "tags['environment']",
"value": "[parameters('tagValue')]"
}
]
}
}
Exemplo 3: Garanta que uma conta de armazenamento não permita o acesso público de blob e a operação modify só seja aplicada ao avaliar solicitações com a versão de API maior ou igual a 2019-04-01:
"then": {
"effect": "modify",
"details": {
"roleDefinitionIds": [
"/providers/microsoft.authorization/roleDefinitions/17d1049b-9a84-46fb-8f53-869881c3d3ab"
],
"conflictEffect": "audit",
"operations": [
{
"condition": "[greaterOrEquals(requestContext().apiVersion, '2019-04-01')]",
"operation": "addOrReplace",
"field": "Microsoft.Storage/storageAccounts/allowBlobPublicAccess",
"value": false
}
]
}
}
Próximas etapas
- Revise os exemplos em Exemplos do Azure Policy.
- Revise a estrutura de definição do Azure Policy.
- Entenda como criar políticas de forma programática.
- Saiba como obter dados de conformidade.
- Saiba como corrigir recursos fora de conformidade.
- Examine os grupos de gerenciamento do Azure.