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.
Semelhante a auditIfNotExists, uma deployIfNotExists definição de política executa uma implantação de modelo quando a condição é atendida. As atribuições de política com efeito definido como DeployIfNotExists exigem uma identidade gerenciada para realizar a remediação.
Observação
Os Modelos aninhados são compatíveis com deployIfNotExists, mas os modelos vinculados atualmente não são compatíveis.
Avaliação de DeployIfNotExists
deployIfNotExists é executado após um atraso configurável quando um Provedor de Recursos lida com uma solicitação de criação ou atualização de recurso e retorna um código de status de êxito. Uma implantação de modelo ocorrerá se não houver recursos relacionados ou se os recursos definidos por existenceCondition não forem avaliados como verdadeiros. A duração da implantação depende da complexidade dos recursos incluídos no modelo.
Durante um ciclo de avaliação, as definições de política com um efeito DeployIfNotExists que correspondem aos recursos são marcadas como não compatíveis, mas nenhuma ação é tomada nesse recurso. Os recursos não compatíveis existentes podem ser corrigidos com uma tarefa de correção.
Propriedades de DeployIfNotExists
A propriedade details do efeito DeployIfNotExists tem todas as subpropriedades que definem os recursos relacionados a serem correspondidos e a implantação de modelo a ser executada.
type(obrigatório)- Especifica o tipo de recurso relacionado a ser igualado.
- Se
typefor um tipo de recurso abaixo doifrecurso de condição, a política consultará recursos dessetyperecurso no escopo do recurso avaliado. Caso contrário, a política consultará no mesmo grupo de recursos ou assinatura como recurso avaliado, dependendo doexistenceScope.
name(opcional)- Especifica o nome exato do recurso a ser correspondido e faz com que a política busque um recurso específico em vez de todos os recursos do tipo especificado.
- Quando os valores condição de
if.field.typeethen.details.typecoincidem, entãonametorna-se necessário e deve ser[field('name')], ou[field('fullName')]no caso de um recurso filho.
Observação
Os segmentos type e name podem ser combinados para recuperarem de forma genérica os recursos aninhados.
Para recuperar um recurso específico, você pode usar "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" e "name": "parentResourceName/nestedResourceName".
Para recuperar uma coleção de recursos aninhados, um caractere curinga ? pode ser fornecido no lugar do segmento de sobrenome. Por exemplo, "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType" e "name": "parentResourceName/?". Isso pode ser combinado com funções de campo para acessar recursos relacionados ao recurso avaliado, como "name": "[concat(field('name'), '/?')]"."
resourceGroupName(opcional)- Permite que a correspondência do recurso relacionado venha de um grupo de recursos diferente.
- Não se aplica se
typefor um recurso que estaria abaixo do recurso deifcondição. - O padrão é o grupo de recursos do recurso de condição
if. - Se uma implantação de um modelo for executada, ela será implantada no grupo de recursos do valor especificado.
existenceScope(opcional)- Os valores permitidos são Assinatura e ResourceGroup.
- Define o escopo de onde buscar o recurso relacionado com o qual corresponder.
- Não se aplica se
typefor um recurso que estaria abaixo do recurso deifcondição. - Para ResourceGroup, seria limitado ao grupo de recursos em
resourceGroupNamese especificado. SeresourceGroupNamenão for especificado, limitará aoifgrupo de recursos do recurso de condição, que é o comportamento padrão. - Quanto à Assinatura, consulta a toda a assinatura para o recurso relacionado. O escopo de atribuição deve ser definido na assinatura ou superior para uma avaliação adequada.
- O padrão é ResourceGroup.
evaluationDelay(opcional)- Especifica quando a existência dos recursos relacionados deve ser avaliada. O atraso é usado apenas para avaliações que são resultado de uma solicitação de criação ou atualização de recursos.
- Os valores permitidos são
AfterProvisioning,AfterProvisioningSuccessouAfterProvisioningFailureuma duração ISO 8601 entre 0 e 360 minutos. - Os valores AfterProvisioning inspecionam o resultado de provisionamento do recurso que foi avaliado na condição
ifda regra de política.AfterProvisioningé executado após a conclusão do provisionamento, independentemente do resultado. O provisionamento que leva mais de seis horas é tratado como uma falha ao se determinar atrasos na avaliação AfterProvisioning. - O padrão é
PT10M(10 minutos). - A especificação de um atraso de avaliação longo pode fazer com que o estado de conformidade registrado do recurso não seja atualizado até o próximo gatilho de avaliação.
existenceCondition(opcional)- Se não for especificado, qualquer recurso relacionado de
typesatisfaz o efeito e não inicia a implantação. - Usa a mesma linguagem que a regra de política para a condição
if, mas é avaliada em relação a cada recurso relacionado individualmente. - Se qualquer recurso relacionado correspondente for avaliado como verdadeiro, o efeito será considerado satisfeito e não iniciará a implantação.
- Pode usar [field()] para verificar a equivalência com valores na
ifcondição. - Por exemplo, pode ser usado para validar que o recurso pai (na
ifcondição) está no mesmo local de recurso que o recurso relacionado correspondente.
- Se não for especificado, qualquer recurso relacionado de
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.
deploymentScope(opcional)- Os valores permitidos são Assinatura e ResourceGroup.
- Define o tipo de implantação a ser disparada. Assinatura indica uma implantação no nível de assinatura, ResourceGroup indica uma implantação em um grupo de recursos.
- Uma propriedade de localização deverá ser especificada na Implantação quando usar implantações no nível da assinatura.
- O padrão é ResourceGroup.
deployment(obrigatório)- Essa propriedade deve incluir a implantação completa do modelo, pois ela seria passada para a
Microsoft.Resources/deploymentsAPI PUT. Para obter mais informações, consulte a API REST de Implantações. Microsoft.Resources/deploymentsaninhado no modelo deve usar nomes exclusivos para evitar a contenção entre várias avaliações de política. O nome da implantação pai pode ser usado como parte do nome da implantação aninhada por meio de[concat('NestedDeploymentName-', uniqueString(deployment().name))].
Observação
Todas as funções dentro da
deploymentpropriedade são avaliadas como componentes do modelo, não da política. A exceção é aparameterspropriedade que passa valores da política para o modelo. Ovaluenesta seção sob um nome de parâmetro de template é usado para executar essa passagem de valor (consulte fullDbName no exemplo DeployIfNotExists).- Essa propriedade deve incluir a implantação completa do modelo, pois ela seria passada para a
Exemplo de DeployIfNotExists
Exemplo: avalia os bancos de dados do SQL Server para determinar se transparentDataEncryption estão habilitados. Se não estiver, uma implantação será executada para habilitá-lo.
"if": {
"field": "type",
"equals": "Microsoft.Sql/servers/databases"
},
"then": {
"effect": "deployIfNotExists",
"details": {
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"name": "current",
"evaluationDelay": "AfterProvisioning",
"roleDefinitionIds": [
"/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
"/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
],
"existenceCondition": {
"field": "Microsoft.Sql/transparentDataEncryption.status",
"equals": "Enabled"
},
"deployment": {
"properties": {
"mode": "incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"fullDbName": {
"type": "string"
}
},
"resources": [
{
"name": "[concat(parameters('fullDbName'), '/current')]",
"type": "Microsoft.Sql/servers/databases/transparentDataEncryption",
"apiVersion": "2014-04-01",
"properties": {
"status": "Enabled"
}
}
]
},
"parameters": {
"fullDbName": {
"value": "[field('fullName')]"
}
}
}
}
}
}
Próximas etapas
- Examine os exemplos em Amostras 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 não compatíveis.
- Examine os grupos de gerenciamento do Azure.