Azure Ilkesiyle uyumlu olmayan kaynakları düzeltRemediate non-compliant resources with Azure Policy

Bir Deployifnotexists veya MODIFY Policy ile uyumlu olmayan kaynaklar, Düzeltmearacılığıyla uyumlu bir duruma yerleştirilebilir.Resources that are non-compliant to a deployIfNotExists or modify policy can be put into a compliant state through Remediation. Düzeltme, Azure Ilkesini, bu atamanın bir yönetim grubuna, aboneliğe, bir kaynak grubuna veya tek bir kaynağa bağlı olup olmadığına bakılmaksızın, mevcut kaynaklarınızın dağıtım ilkesi veya atanan ilkenin değiştirme işlemlerini çalıştırmak üzere karşılaştırarak gerçekleştirilir.Remediation is accomplished by instructing Azure Policy to run the deployIfNotExists effect or the modify operations of the assigned policy on your existing resources, whether that assignment is to a management group, a subscription, a resource group, or an individual resource. Bu makalede, Azure Ilkesini anlamak ve düzeltmeyi gerçekleştirmek için gereken adımlar gösterilir.This article shows the steps needed to understand and accomplish remediation with Azure Policy.

Düzeltme güvenliğinin nasıl çalıştığıHow remediation security works

Azure Ilkesi, şablonu Deployifnotexists ilke tanımında çalıştırdığında, bu, yönetilen bir kimlikkullanılarak yapılır.When Azure Policy runs the template in the deployIfNotExists policy definition, it does so using a managed identity. Azure Ilkesi, her atama için yönetilen bir kimlik oluşturur, ancak yönetilen kimliğe hangi rollerin verilmek üzere ayrıntıları içermelidir.Azure Policy creates a managed identity for each assignment, but must have details about what roles to grant the managed identity. Yönetilen kimliğin rolleri eksikse, ilke veya girişim ataması sırasında bir hata görüntülenir.If the managed identity is missing roles, an error is displayed during the assignment of the policy or an initiative. Portalı kullanırken, Azure Ilkesi, atama başladıktan sonra listelenen roller için yönetilen kimliğe otomatik olarak izin verir.When using the portal, Azure Policy automatically grants the managed identity the listed roles once assignment starts. SDK kullanırken, rollerin yönetilen kimliğe el ile verilmesi gerekir.When using SDK, the roles must manually be granted to the managed identity. Yönetilen kimliğin konumu , Azure ilkesiyle birlikte çalışmasını etkilemez.The location of the managed identity doesn't impact its operation with Azure Policy.

Yönetilen kimlik üzerinde tanımlı bir izin eksik olan bir deployIfNotExists ilkesinin ekran görüntüsü.

Önemli

Aşağıdaki senaryolarda, atamaya ait yönetilen kimliğin el ile erişim izni verilmesi gerekir, aksi durumda düzeltme dağıtımı başarısız olur:In the following scenarios, the assignment's managed identity must be manually granted access or the remediation deployment will fail:

  • Atama SDK aracılığıyla oluşturulduysaIf the assignment is created through SDK
  • Deployifnotexists veya MODIFY tarafından değiştirilen bir kaynak, ilke atamasının kapsamı dışındaysaIf a resource modified by deployIfNotExists or modify is outside the scope of the policy assignment
  • Şablon, kaynakların ilke atamasının kapsamı dışındaki özelliklerine eriştiğindeIf the template accesses properties on resources outside the scope of the policy assignment

İlke tanımını YapılandırConfigure policy definition

İlk adım, dahil edilen şablonunuzun içeriğini başarılı bir şekilde dağıtmak için, dağıtım ve ilke tanımında yapılan ihtiyaçları karşılayan rolleri tanımlamaktır.The first step is to define the roles that deployIfNotExists and modify needs in the policy definition to successfully deploy the content of your included template. Ayrıntılar özelliği altında, bir roledefinitionıds özelliği ekleyin.Under the details property, add a roleDefinitionIds property. Bu özellik, ortamınızdaki rollerle eşleşen dizelerin bir dizisidir.This property is an array of strings that match roles in your environment. Tam bir örnek için, Deployifnotexists örneğine veya değiştirme örneklerinebakın.For a full example, see the deployIfNotExists example or the modify examples.

"details": {
    ...
    "roleDefinitionIds": [
        "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/{roleGUID}",
        "/providers/Microsoft.Authorization/roleDefinitions/{builtinroleGUID}"
    ]
}

Roledefinitionıds özelliği, tam kaynak tanımlayıcıyı kullanır ve rolün kısa roleName özelliğini almaz.The roleDefinitionIds property uses the full resource identifier and doesn't take the short roleName of the role. Ortamınızdaki ' katkıda bulunan ' rolünün KIMLIĞINI almak için aşağıdaki kodu kullanın:To get the ID for the 'Contributor' role in your environment, use the following code:

az role definition list --name 'Contributor'

Yönetilen kimliği el ile yapılandırManually configure the managed identity

Portalı kullanarak bir atama oluştururken, Azure Ilkesi yönetilen kimliği oluşturur ve rol Definitionıdsiçinde tanımlanan rollere izin verir.When creating an assignment using the portal, Azure Policy both generates the managed identity and grants it the roles defined in roleDefinitionIds. Aşağıdaki koşullarda, yönetilen kimlik oluşturma ve bu izinleri atama adımlarının el ile yapılması gerekir:In the following conditions, steps to create the managed identity and assign it permissions must be done manually:

  • SDK kullanılırken (örneğin, Azure PowerShell)While using the SDK (such as Azure PowerShell)
  • Atama kapsamı dışında bir kaynak şablon tarafından değiştirildiğindeWhen a resource outside the assignment scope is modified by the template
  • Atama kapsamı dışında bir kaynak, şablon tarafından okunmasıylaWhen a resource outside the assignment scope is read by the template

PowerShell ile yönetilen kimlik oluşturmaCreate managed identity with PowerShell

İlke ataması sırasında yönetilen bir kimlik oluşturmak için, konumun tanımlanması ve atamadan kimlik kullanılması gerekir.To create a managed identity during the assignment of the policy, Location must be defined and AssignIdentity used. Aşağıdaki örnek, SQL veritabanı saydam veri şifrelemesi dağıtma, hedef kaynak grubunu ayarlayan ve sonra atamayı oluşturan yerleşik ilke tanımını alır.The following example gets the definition of the built-in policy Deploy SQL DB transparent data encryption, sets the target resource group, and then creates the assignment.

# Login first with Connect-AzAccount if not using Cloud Shell

# Get the built-in "Deploy SQL DB transparent data encryption" policy definition
$policyDef = Get-AzPolicyDefinition -Id '/providers/Microsoft.Authorization/policyDefinitions/86a912f6-9a06-4e26-b447-11b16ba8659f'

# Get the reference to the resource group
$resourceGroup = Get-AzResourceGroup -Name 'MyResourceGroup'

# Create the assignment using the -Location and -AssignIdentity properties
$assignment = New-AzPolicyAssignment -Name 'sqlDbTDE' -DisplayName 'Deploy SQL DB transparent data encryption' -Scope $resourceGroup.ResourceId -PolicyDefinition $policyDef -Location 'westus' -AssignIdentity

$assignmentDeğişken, bir ilke ataması oluştururken döndürülen standart değerlerle birlikte, yönetilen kimliğin asıl kimliğini de içerir.The $assignment variable now contains the principal ID of the managed identity along with the standard values returned when creating a policy assignment. Üzerinden erişilebilir $assignment.Identity.PrincipalId .It can be accessed through $assignment.Identity.PrincipalId.

PowerShell ile tanımlı roller vermeGrant defined roles with PowerShell

Yeni yönetilen kimliğin, gerekli rollere verilebilmesi için Azure Active Directory aracılığıyla çoğaltmayı tamamlaması gerekir.The new managed identity must complete replication through Azure Active Directory before it can be granted the needed roles. Çoğaltma tamamlandıktan sonra aşağıdaki örnek, $policyDef Roledefinitionıds için içindeki ilke tanımını yineler ve yeni yönetilen kimliğe roller vermek Için New-azroleatama kullanır.Once replication is complete, the following example iterates the policy definition in $policyDef for the roleDefinitionIds and uses New-AzRoleAssignment to grant the new managed identity the roles.

# Use the $policyDef to get to the roleDefinitionIds array
$roleDefinitionIds = $policyDef.Properties.policyRule.then.details.roleDefinitionIds

if ($roleDefinitionIds.Count -gt 0)
{
    $roleDefinitionIds | ForEach-Object {
        $roleDefId = $_.Split("/") | Select-Object -Last 1
        New-AzRoleAssignment -Scope $resourceGroup.ResourceId -ObjectId $assignment.Identity.PrincipalId -RoleDefinitionId $roleDefId
    }
}

Portal aracılığıyla tanımlı roller vermeGrant defined roles through portal

Erişim denetimi (IAM) kullanarak veya ilkeyi veya girişim atamasını düzenleyerek ve Kaydet' i seçerek, bir atamanın yönetilen kimliğine portalı kullanarak tanımlanmış rolleri vermenin iki yolu vardır.There are two ways to grant an assignment's managed identity the defined roles using the portal, by using Access control (IAM) or by editing the policy or initiative assignment and selecting Save.

Atamanın yönetilen kimliğine bir rol eklemek için aşağıdaki adımları izleyin:To add a role to the assignment's managed identity, follow these steps:

  1. Tüm hizmetler' i seçip ilkearayıp ' yi seçerek Azure Portal Azure ilke hizmetini başlatın.Launch the Azure Policy service in the Azure portal by selecting All services, then searching for and selecting Policy.

  2. Azure İlkesi sayfasının sol tarafından Atamalar'ı seçin.Select Assignments on the left side of the Azure Policy page.

  3. Yönetilen bir kimliğe sahip olan atamayı bulun ve adı seçin.Locate the assignment that has a managed identity and select the name.

  4. Düzenleme sayfasında atama kimliği özelliğini bulun.Find the Assignment ID property on the edit page. Atama KIMLIĞI şöyle bir şey olacaktır:The assignment ID will be something like:

    /subscriptions/{subscriptionId}/resourceGroups/PolicyTarget/providers/Microsoft.Authorization/policyAssignments/2802056bfc094dfb95d4d7a5
    

    Yönetilen kimliğin adı, atama kaynak KIMLIĞININ 2802056bfc094dfb95d4d7a5 Bu örnekteki son bölümüdür.The name of the managed identity is the last portion of the assignment resource ID, which is 2802056bfc094dfb95d4d7a5 in this example. Atama kaynak KIMLIĞININ bu kısmını kopyalayın.Copy this portion of the assignment resource ID.

  5. Rol tanımı el ile eklenmiş olması gereken kaynağa veya kaynak üst kapsayıcısına (kaynak grubu, abonelik, yönetim grubu) gidin.Navigate to the resource or the resources parent container (resource group, subscription, management group) that needs the role definition manually added.

  6. Kaynaklar sayfasında erişim denetimi (IAM) bağlantısını seçin ve ardından erişim denetimi sayfasının en üstünde + rol ataması Ekle ' yi seçin.Select the Access control (IAM) link in the resources page and then select + Add role assignment at the top of the access control page.

  7. İlke tanımındaki bir Roledefinitionıds ile eşleşen uygun rolü seçin.Select the appropriate role that matches a roleDefinitionIds from the policy definition. ' Azure AD Kullanıcı, Grup veya uygulama ' için varsayılan değer olarak ayarlanan ata erişimini bırak.Leave Assign access to set to the default of 'Azure AD user, group, or application'. Seç kutusunda, daha önce bulunan atama kaynağı kimliğinin bölümünü yapıştırın veya yazın.In the Select box, paste or type the portion of the assignment resource ID located earlier. Arama tamamlandıktan sonra KIMLIĞI seçmek için aynı ada sahip nesneyi seçin ve Kaydet' i seçin.Once the search completes, select the object with the same name to select ID and select Save.

Düzeltme görevi oluşturmaCreate a remediation task

Portal aracılığıyla düzeltme görevi oluşturmaCreate a remediation task through portal

Değerlendirme sırasında, Deployifnotexists veya değişiklik efektlerine sahip ilke ataması uyumlu olmayan kaynaklar olup olmadığını belirler.During evaluation, the policy assignment with deployIfNotExists or modify effects determines if there are non-compliant resources. Uyumlu olmayan kaynaklar bulunduğunda, Ayrıntılar Düzeltme sayfasında sağlanır.When non-compliant resources are found, the details are provided on the Remediation page. Uyumlu olmayan kaynaklara sahip ilkelerin listesi ile birlikte bir Düzeltme görevitetikleme seçeneği vardır.Along with the list of policies that have non-compliant resources is the option to trigger a remediation task. Bu seçenek, Deployifnotexists şablonundan veya değiştirme işlemlerinden bir dağıtım oluşturur.This option is what creates a deployment from the deployIfNotExists template or the modify operations.

Bir Düzeltme görevioluşturmak için aşağıdaki adımları izleyin:To create a remediation task, follow these steps:

  1. Tüm hizmetler' i seçip ilkearayıp ' yi seçerek Azure Portal Azure ilke hizmetini başlatın.Launch the Azure Policy service in the Azure portal by selecting All services, then searching for and selecting Policy.

    Yönetilen kimlik üzerinde tanımlı bir izin eksik olan bir deployIfNotExists ilkesinin ekran görüntüsü.

  2. Azure Ilkesi sayfasının sol tarafındaki Düzeltme ' yi seçin.Select Remediation on the left side of the Azure Policy page.

    Yönetilen kimlik üzerinde tanımlı bir izin eksik olan bir deployIfNotExists ilkesinin ekran görüntüsü.

  3. Tüm Deployifnotexists ve uyumlu olmayan kaynaklarla ilke atamalarını değiştirme , sekme ve veri tablosunu düzeltme ilkelerine dahildir.All deployIfNotExists and modify policy assignments with non-compliant resources are included on the Policies to remediate tab and data table. Uyumlu olmayan kaynaklarla bir ilke seçin.Select on a policy with resources that are non-compliant. Yeni düzeltme görev sayfası açılır.The New remediation task page opens.

    Not

    Düzeltme görevi sayfasını açmak için alternatif bir yol, Uyumluluk sayfasında ilkeyi bulup seçmek ve sonra Düzeltme görevi oluştur düğmesini seçmesidir.An alternate way to open the remediation task page is to find and select the policy from the Compliance page, then select the Create Remediation Task button.

  4. Yeni düzeltme görevi sayfasında, ilkenin atandığı alt kaynakları (tek tek kaynak nesneleri dahil) seçmek için kapsam üç noktayı kullanarak düzeltmek üzere kaynakları filtreleyin.On the New remediation task page, filter the resources to remediate by using the Scope ellipses to pick child resources from where the policy is assigned (including down to the individual resource objects). Ayrıca, kaynakları daha fazla filtrelemek için konumlar açılan konumlarını kullanın.Additionally, use the Locations drop-down to further filter the resources. Yalnızca tabloda listelenen kaynaklar düzeltilmeyecektir.Only resources listed in the table will be remediated.

    Yönetilen kimlik üzerinde tanımlı bir izin eksik olan bir deployIfNotExists ilkesinin ekran görüntüsü.

  5. Kaynaklar, düzeltme ' i seçerek filtrelendiğinde, düzeltme görevini başlatın .Begin the remediation task once the resources have been filtered by selecting Remediate. İlke uyumluluğu sayfası, görev ilerleme durumunun durumunu göstermek için Düzeltme görevleri sekmesinde açılır.The policy compliance page opens to the Remediation tasks tab to show the state of the tasks progress. Düzeltme görevi tarafından oluşturulan dağıtımlar hemen başlar.Deployments created by the remediation task begin right away.

    Yönetilen kimlik üzerinde tanımlı bir izin eksik olan bir deployIfNotExists ilkesinin ekran görüntüsü.

  6. İlerleme hakkındaki ayrıntıları almak için ilke uyumluluğu sayfasından Düzeltme görevi ' ni seçin.Select on the remediation task from the policy compliance page to get details about the progress. Görev için kullanılan filtreleme, düzeltilen kaynakların bir listesi ile birlikte gösterilir.The filtering used for the task is shown along with a list of the resources being remediated.

  7. Düzeltme görevi sayfasında, düzeltme görevinin dağıtımını ya da kaynağını görüntülemek için bir kaynağa sağ tıklayın.From the Remediation task page, right-click on a resource to view either the remediation task's deployment or the resource. Bir hata iletisi gibi ayrıntıları görmek için satırın sonunda ilgili olaylar ' ı seçin.At the end of the row, select on Related events to see details such as an error message.

    Yönetilen kimlik üzerinde tanımlı bir izin eksik olan bir deployIfNotExists ilkesinin ekran görüntüsü.

Bir Düzeltme görevi aracılığıyla dağıtılan kaynaklar, ilke uyumluluğu sayfasındaki dağıtılan kaynaklar sekmesine eklenir.Resources deployed through a remediation task are added to the Deployed Resources tab on the policy compliance page.

Azure CLı aracılığıyla bir düzeltme görevi oluşturmaCreate a remediation task through Azure CLI

Azure CLı ile bir Düzeltme görevi oluşturmak için az policy remediation komutlarını kullanın.To create a remediation task with Azure CLI, use the az policy remediation commands. {subscriptionId}ABONELIK kimliğinizle ve {myAssignmentId} Deployıfnotexists ile değiştirin ya da ilke atama kimliğini değiştirin .Replace {subscriptionId} with your subscription ID and {myAssignmentId} with your deployIfNotExists or modify policy assignment ID.

# Login first with az login if not using Cloud Shell

# Create a remediation for a specific assignment
az policy remediation create --name myRemediation --policy-assignment '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'

Diğer düzeltme komutları ve örnekleri için, az Policy düzeltme komutlarına bakın.For other remediation commands and examples, see the az policy remediation commands.

Azure PowerShell aracılığıyla düzeltme görevi oluşturmaCreate a remediation task through Azure PowerShell

Azure PowerShell bir Düzeltme görevi oluşturmak için Start-AzPolicyRemediation komutları kullanın.To create a remediation task with Azure PowerShell, use the Start-AzPolicyRemediation commands. {subscriptionId}ABONELIK kimliğinizle ve {myAssignmentId} Deployıfnotexists ile değiştirin ya da ilke atama kimliğini değiştirin .Replace {subscriptionId} with your subscription ID and {myAssignmentId} with your deployIfNotExists or modify policy assignment ID.

# Login first with Connect-AzAccount if not using Cloud Shell

# Create a remediation for a specific assignment
Start-AzPolicyRemediation -Name 'myRemedation' -PolicyAssignmentId '/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyAssignments/{myAssignmentId}'

Diğer düzeltme cmdlet 'leri ve örnekleri için bkz. az. Policınsıghts modülü.For other remediation cmdlets and examples, see the Az.PolicyInsights module.

Azure portal ilke ataması sırasında bir düzeltme görevi oluşturmaCreate a remediation task during policy assignment in the Azure portal

Bir düzeltme görevi oluşturmanın kolaylaştırılmış bir yolu, bunu ilke ataması sırasında Azure portal.A streamlined way of creating a remediation task is to do so from the Azure portal during policy assignment. Atanacak ilke tanımı bir Deployifnotexists veya bir değişiklik efekti ise, Düzeltme sekmesindeki sihirbaz bir Düzeltme görevi oluşturma seçeneği sunar.If the policy definition to assign is a deployIfNotExists or a Modify effect, the wizard on the Remediation tab offers a Create a remediation task option. Bu seçenek işaretliyse, ilke atamasıyla aynı anda bir düzeltme görevi oluşturulur.If this option is selected, a remediation task is created at the same time as the policy assignment.

Sonraki adımlarNext steps