Efekt wdrażania definicji usługi Azure PolicyIfNotExists
Podobnie jak auditIfNotExists
w przypadku deployIfNotExists
, definicja zasad wykonuje wdrożenie szablonu po spełnieniu warunku. Przypisania zasad z ustawionym efektem jako DeployIfNotExists wymagają tożsamości zarządzanej w celu skorygowania.
Uwaga
Szablony zagnieżdżone są obsługiwane w programie deployIfNotExists
, ale połączone szablony nie są obecnie obsługiwane.
Ocena deployIfNotExists
deployIfNotExists
uruchamia się po konfigurowalnym opóźnieniu, gdy dostawca zasobów obsługuje żądanie utworzenia lub zaktualizowania subskrypcji lub zasobu i zwrócił kod stanu powodzenia. Wdrożenie szablonu występuje, jeśli nie ma powiązanych zasobów lub jeśli zasoby zdefiniowane przez existenceCondition
program nie są obliczane na wartość true. Czas trwania wdrożenia zależy od złożoności zasobów zawartych w szablonie.
Podczas cyklu oceny definicje zasad z efektem DeployIfNotExists pasujące do zasobów są oznaczone jako niezgodne, ale nie są podejmowane żadne działania na tym zasobie. Istniejące niezgodne zasoby można skorygować za pomocą zadania korygowania.
Właściwości DeployIfNotExists
Właściwość details
efektu DeployIfNotExists ma wszystkie podwłaściwości definiujące powiązane zasoby, które mają być zgodne, oraz wdrożenie szablonu do wykonania.
type
(wymagane)- Określa typ powiązanego zasobu, który ma być zgodny.
- Jeśli
type
jest typemif
zasobu pod warunkiem, zasady wysyłają zapytania o zasoby tegotype
zasobu w zakresie ocenianego zasobu. W przeciwnym razie zapytania dotyczące zasad w tej samej grupie zasobów lub subskrypcji co oceniony zasób w zależności odexistenceScope
.
name
(opcjonalnie)- Określa dokładną nazwę zasobu do dopasowania i powoduje, że zasady pobierają jeden konkretny zasób zamiast wszystkich zasobów określonego typu.
- Gdy wartości warunku dla
if.field.type
ithen.details.type
są zgodne, stajename
się wymagane i musi mieć[field('name')]
wartość , lub[field('fullName')]
dla zasobu podrzędnego.
Uwaga
type
segmenty i name
można łączyć w celu ogólnego pobierania zagnieżdżonych zasobów.
Aby pobrać określony zasób, możesz użyć elementów "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
i "name": "parentResourceName/nestedResourceName"
.
Aby pobrać kolekcję zasobów zagnieżdżonych, można podać symbol ?
wieloznaczny zamiast segmentu nazwiska. Przykład: "type": "Microsoft.ExampleProvider/exampleParentType/exampleNestedType"
i "name": "parentResourceName/?"
. Można to połączyć z funkcjami pól w celu uzyskania dostępu do zasobów związanych z ocenianym zasobem, takimi jak "name": "[concat(field('name'), '/?')]"
."
resourceGroupName
(opcjonalny)- Umożliwia dopasowanie powiązanego zasobu z innej grupy zasobów.
- Nie ma zastosowania, jeśli
type
jest zasobem, który znajduje się pod zasobemif
warunku. - Wartość domyślna
if
to grupa zasobów zasobu warunku. - Jeśli wdrożenie szablonu zostanie wykonane, zostanie wdrożone w grupie zasobów tej wartości.
existenceScope
(opcjonalny)- Dozwolone wartości to Subscription i ResourceGroup.
- Ustawia zakres, z którego ma być pobierany powiązany zasób, z którego ma być zgodny.
- Nie ma zastosowania, jeśli
type
jest zasobem, który znajduje się pod zasobemif
warunku. - W przypadku grupy zasobów należy ograniczyć grupę zasobów, jeśli
resourceGroupName
zostanie określona. JeśliresourceGroupName
nie zostanie określony, ograniczenie doif
grupy zasobów zasobu warunku, która jest zachowaniem domyślnym. - W polu Subskrypcja wysyła zapytanie do całej subskrypcji powiązanego zasobu. Zakres przypisania należy ustawić w subskrypcji lub wyższej w celu odpowiedniej oceny.
- Wartość domyślna to ResourceGroup.
evaluationDelay
(opcjonalny)- Określa, kiedy należy ocenić istnienie powiązanych zasobów. Opóźnienie jest używane tylko w przypadku ocen, które są wynikiem żądania utworzenia lub zaktualizowania zasobu.
- Dozwolone wartości to
AfterProvisioning
,AfterProvisioningSuccess
,AfterProvisioningFailure
lub ISO 8601 czas trwania od 0 do 360 minut. - Wartości AfterProvisioning sprawdzają wynik aprowizacji zasobu, który został oceniony w warunku reguły
if
zasad.AfterProvisioning
przebiegi po zakończeniu aprowizacji, niezależnie od wyniku. Aprowizowanie, które trwa dłużej niż sześć godzin, jest traktowane jako błąd podczas określania opóźnień oceny AfterProvisioning . - Wartość domyślna to
PT10M
(10 minut). - Określenie długiego opóźnienia oceny może spowodować, że zarejestrowany stan zgodności zasobu nie zostanie zaktualizowany do momentu następnego wyzwalacza oceny.
existenceCondition
(opcjonalny)- Jeśli nie zostanie określony, jakikolwiek powiązany zasób
type
spełnia ten efekt i nie wyzwoli wdrożenia. - Używa tego samego języka co reguła zasad dla
if
warunku, ale jest obliczana dla każdego powiązanego zasobu indywidualnie. - Jeśli jakikolwiek pasujący zasób ma wartość true, efekt jest spełniony i nie wyzwala wdrożenia.
- Można użyć [field()] do sprawdzenia równoważności z wartościami w
if
warunku. - Na przykład może służyć do sprawdzania, czy zasób nadrzędny (w warunku) znajduje się w
if
tej samej lokalizacji zasobu co pasujący powiązany zasób.
- Jeśli nie zostanie określony, jakikolwiek powiązany zasób
roleDefinitionIds
(wymagane)- Ta właściwość musi zawierać tablicę ciągów pasujących do identyfikatora roli kontroli dostępu opartej na rolach dostępnego dla subskrypcji. Aby uzyskać więcej informacji, zobacz Korygowanie — konfigurowanie definicji zasad.
deploymentScope
(opcjonalny)- Dozwolone wartości to Subscription i ResourceGroup.
- Ustawia typ wdrożenia, który ma zostać wyzwolony. Subskrypcja wskazuje wdrożenie na poziomie subskrypcji, a grupa zasobów wskazuje wdrożenie w grupie zasobów.
- Właściwość lokalizacji musi być określona we wdrożeniu podczas korzystania z wdrożeń na poziomie subskrypcji.
- Wartość domyślna to ResourceGroup.
deployment
(wymagane)- Ta właściwość powinna zawierać pełne wdrożenie szablonu, ponieważ zostanie przekazane do interfejsu
Microsoft.Resources/deployments
API PUT. Aby uzyskać więcej informacji, zobacz Interfejs API REST wdrożeń. - Zagnieżdżone
Microsoft.Resources/deployments
w szablonie powinny używać unikatowych nazw, aby uniknąć rywalizacji między wieloma ocenami zasad. Nazwa wdrożenia nadrzędnego może być używana jako część nazwy zagnieżdżonego wdrożenia za pomocą polecenia[concat('NestedDeploymentName-', uniqueString(deployment().name))]
.
Uwaga
Wszystkie funkcje wewnątrz
deployment
właściwości są oceniane jako składniki szablonu, a nie zasady. Wyjątkiem jest właściwość przekazującaparameters
wartości z zasad do szablonu. Wvalue
tej sekcji pod nazwą parametru szablonu służy do przekazywania tej wartości (zobacz fullDbName w przykładzie DeployIfNotExists).- Ta właściwość powinna zawierać pełne wdrożenie szablonu, ponieważ zostanie przekazane do interfejsu
Przykład deployIfNotExists
Przykład: ocenia bazy danych programu SQL Server w celu określenia, czy transparentDataEncryption
jest włączona. Jeśli nie, zostanie wykonane wdrożenie do włączenia.
"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')]"
}
}
}
}
}
}
Następne kroki
- Zapoznaj się z przykładami w przykładach usługi Azure Policy.
- Przejrzyj temat Struktura definicji zasad Azure Policy.
- Dowiedz się, jak programowo tworzyć zasady.
- Dowiedz się, jak uzyskać dane zgodności.
- Dowiedz się, jak korygować niezgodne zasoby.
- Przejrzyj grupy zarządzania platformy Azure.