Programlı olarak ilkeler oluşturma

Bu makalede ilkeleri program aracılığıyla oluşturma ve yönetme adımları gösterilmektedir. Azure İlkesi tanımları, kaynaklarınız üzerinde farklı kuralları ve etkileri zorunlu kılar. Zorlama, kaynakların kurumsal standartlarınız ve hizmet düzeyi sözleşmelerinizle uyumlu kalmasını sağlar.

Uyumluluk hakkında bilgi için bkz. Uyumluluk verilerini alma.

Önkoşullar

Başlamadan önce aşağıdaki önkoşulların karşılandığından emin olun:

  1. Henüz yapmadıysanız ARMClient’ı yükleyin. Bu, HTTP isteklerini Azure Resource Manager tabanlı API’lere gönderen bir araçtır.

  2. Azure PowerShell modülünüzü en son sürüme güncelleştirin. Ayrıntılı bilgi için bkz. Azure PowerShell modülünü yükleme. En son sürüm hakkında daha fazla bilgi için bkz. Azure PowerShell.

  3. Aboneliğinizin kaynak sağlayıcısıyla çalıştığını doğrulamak için Azure PowerShell kullanarak Azure İlkesi Insights kaynak sağlayıcısını kaydedin. Bir kaynak sağlayıcısını kaydetmek için, kaynak sağlayıcısı için kaydetme eylemi işlemini çalıştırma izniniz olmalıdır. Bu işlem, Katkıda Bulunan ve Sahip rolleriyle birlikte sunulur. Aşağıdaki komutu çalıştırarak kaynak sağlayıcısını kaydedin:

    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Kaynak sağlayıcılarını kaydetme ve görüntüleme hakkında daha fazla bilgi için bkz. Kaynak Sağlayıcıları ve Türleri.

  4. Henüz yapmadıysanız Azure CLI'yı yükleyin. En son sürümü Windows'a Azure CLI yükleme sayfasından edinebilirsiniz.

İlke tanımı oluşturma ve atama

Kaynaklarınızın daha iyi görünür olmasını sağlamak için ilk adım, kaynaklarınız üzerinde ilkeler oluşturmak ve atamaktır. Sonraki adım, program aracılığıyla ilke oluşturmayı ve atamayı öğrenmektir. Örnek ilke, PowerShell, Azure CLI ve HTTP isteklerini kullanarak tüm genel ağlara açık depolama hesaplarını denetler.

PowerShell ile ilke tanımı oluşturma ve atama

  1. AuditStorageAccounts.json adlı bir JSON dosyası oluşturmak için aşağıdaki JSON kod parçacığını kullanın.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    İlke tanımı yazma hakkında daha fazla bilgi için bkz. Tanım Yapısı Azure İlkesi.

  2. AuditStorageAccounts.json dosyasını kullanarak bir ilke tanımı oluşturmak için aşağıdaki komutu çalıştırın.

    New-AzPolicyDefinition -Name 'AuditStorageAccounts' -DisplayName 'Audit Storage Accounts Open to Public Networks' -Policy 'AuditStorageAccounts.json'
    

    Komut, Ortak Ağlara Açık Depolama Hesaplarını Denetle adlı bir ilke tanımı oluşturur. Kullanabileceğiniz diğer parametreler hakkında daha fazla bilgi için bkz. New-AzPolicyDefinition.

    Konum parametreleri olmadan çağrıldığında, New-AzPolicyDefinition varsayılan olarak ilke tanımını oturumlar bağlamının seçili aboneliğine kaydeder. Tanımı farklı bir konuma kaydetmek için aşağıdaki parametreleri kullanın:

    • SubscriptionId - Farklı bir aboneliğe kaydedin. GUID değeri gerektirir.
    • ManagementGroupName - Bir yönetim grubuna kaydedin. Bir dize değeri gerektirir.
  3. İlke tanımınızı oluşturduktan sonra aşağıdaki komutları çalıştırarak bir ilke ataması oluşturabilirsiniz:

    $rg = Get-AzResourceGroup -Name 'ContosoRG'
    $Policy = Get-AzPolicyDefinition -Name 'AuditStorageAccounts'
    New-AzPolicyAssignment -Name 'AuditStorageAccounts' -PolicyDefinition $Policy -Scope $rg.ResourceId
    

    ContosoRG değerini hedeflenen kaynak grubunuzun adıyla değiştirin.

    üzerindeki New-AzPolicyAssignmentKapsam parametresi yönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla çalışır. parametresi, üzerindeki Get-AzResourceGroupResourceId özelliğinin döndürdüğü tam kaynak yolunu kullanır. Her kapsayıcı için Kapsam deseni aşağıdaki gibidir. , {rgName}, {subId}ve {mgName} yerine sırasıyla kaynak adını, kaynak grubu adını, abonelik kimliğini ve yönetim grubu adını yazın{rName}. {rType}vm için olduğu gibi Microsoft.Compute/virtualMachines kaynağın kaynak türüyle değiştirilir.

    • Kaynak- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Kaynak grubu - /subscriptions/{subId}/resourceGroups/{rgName}
    • Abonelik- /subscriptions/{subId}
    • Yönetim grubu - /providers/Microsoft.Management/managementGroups/{mgName}

Resource Manager PowerShell modülünü kullanarak kaynak ilkelerini yönetme hakkında daha fazla bilgi için bkz. Az.Resources.

ARMClient kullanarak ilke tanımı oluşturma ve atama

İlke tanımı oluşturmak için aşağıdaki yordamı kullanın.

  1. Bir JSON dosyası oluşturmak için aşağıdaki JSON kod parçacığını kopyalayın. Sonraki adımda dosyayı çağıracaksınız.

    "properties": {
        "displayName": "Audit Storage Accounts Open to Public Networks",
        "policyType": "Custom",
        "mode": "Indexed",
        "description": "This policy ensures that storage accounts with exposure to Public Networks are audited.",
        "parameters": {},
        "policyRule": {
            "if": {
                "allOf": [{
                        "field": "type",
                        "equals": "Microsoft.Storage/storageAccounts"
                    },
                    {
                        "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                        "equals": "Allow"
                    }
                ]
            },
            "then": {
                "effect": "audit"
            }
        }
    }
    
  2. Aşağıdaki çağrılardan birini kullanarak ilke tanımını oluşturun:

    # For defining a policy in a subscription
    armclient PUT "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    
    # For defining a policy in a management group
    armclient PUT "/providers/Microsoft.Management/managementgroups/{managementGroupId}/providers/Microsoft.Authorization/policyDefinitions/AuditStorageAccounts?api-version=2021-09-01" @<path to policy definition JSON file>
    

    Önceki {subscriptionId} değerini aboneliğinizin kimliğiyle veya {managementGroupId} değerini yönetim grubunuzun kimliğiyle değiştirin.

    Sorgunun yapısı hakkında daha fazla bilgi için bkz. Azure İlkesi Tanımları - Oluşturma veya Güncelleştirme ve İlke Tanımları - Yönetim Grubunda Oluşturma veya Güncelleştirme.

İlke ataması oluşturmak ve ilke tanımını kaynak grubu düzeyinde atamak için aşağıdaki yordamı kullanın.

  1. Bir JSON ilke atama dosyası oluşturmak için aşağıdaki JSON kod parçacığını kopyalayın. Simgelerdeki <> örnek bilgileri kendi değerlerinizle değiştirin.

    {
        "properties": {
            "description": "This policy assignment makes sure that storage accounts with exposure to Public Networks are audited.",
            "displayName": "Audit Storage Accounts Open to Public Networks Assignment",
            "parameters": {},
            "policyDefinitionId": "/subscriptions/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks",
            "scope": "/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>"
        }
    }
    
  2. Aşağıdaki çağrıyı kullanarak ilke atamasını oluşturun:

    armclient PUT "/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Authorization/policyAssignments/Audit Storage Accounts Open to Public Networks?api-version=2021-09-01" @<path to Assignment JSON file>
    

    Simgelerdeki <> örnek bilgileri kendi değerlerinizle değiştirin.

    REST API'ye HTTP çağrıları yapma hakkında daha fazla bilgi için bkz. Azure REST API Kaynakları.

Azure CLI ile ilke tanımı oluşturma ve atama

İlke tanımı oluşturmak için aşağıdaki yordamı kullanın:

  1. Bir JSON ilke atama dosyası oluşturmak için aşağıdaki JSON kod parçacığını kopyalayın.

    {
        "if": {
            "allOf": [{
                    "field": "type",
                    "equals": "Microsoft.Storage/storageAccounts"
                },
                {
                    "field": "Microsoft.Storage/storageAccounts/networkAcls.defaultAction",
                    "equals": "Allow"
                }
            ]
        },
        "then": {
            "effect": "audit"
        }
    }
    

    İlke tanımı yazma hakkında daha fazla bilgi için bkz. Tanım Yapısı Azure İlkesi.

  2. İlke tanımı oluşturmak için aşağıdaki komutu çalıştırın:

    az policy definition create --name 'audit-storage-accounts-open-to-public-networks' --display-name 'Audit Storage Accounts Open to Public Networks' --description 'This policy ensures that storage accounts with exposures to public networks are audited.' --rules '<path to json file>' --mode All
    

    Komut, Ortak Ağlara Açık Depolama Hesaplarını Denetle adlı bir ilke tanımı oluşturur. Kullanabileceğiniz diğer parametreler hakkında daha fazla bilgi için bkz. az policy definition create.

    Konum parametreleri olmadan çağrıldığında, az policy definition creation varsayılan olarak ilke tanımını oturumlar bağlamının seçili aboneliğine kaydeder. Tanımı farklı bir konuma kaydetmek için aşağıdaki parametreleri kullanın:

    • subscription - Farklı bir aboneliğe kaydedin. Abonelik kimliği için BIR GUID değeri veya abonelik adı için bir dize değeri gerektirir.
    • management-group - Bir yönetim grubuna kaydedin. Bir dize değeri gerektirir.
  3. İlke ataması oluşturmak için aşağıdaki komutu kullanın. Simgelerdeki <> örnek bilgileri kendi değerlerinizle değiştirin.

    az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
    

    üzerindeki az policy assignment createkapsam parametresi yönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla çalışır. parametresi tam bir kaynak yolu kullanır. Her kapsayıcının kapsamı için desen aşağıdaki gibidir. , {rgName}, {subId}ve {mgName} yerine sırasıyla kaynak adını, kaynak grubu adını, abonelik kimliğini ve yönetim grubu adını yazın{rName}. {rType}vm için olduğu gibi Microsoft.Compute/virtualMachines kaynağın kaynak türüyle değiştirilir.

    • Kaynak- /subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName}
    • Kaynak grubu - /subscriptions/{subID}/resourceGroups/{rgName}
    • Abonelik- /subscriptions/{subID}
    • Yönetim grubu - /providers/Microsoft.Management/managementGroups/{mgName}

PowerShell'i aşağıdaki komutla kullanarak Azure İlkesi Tanım Kimliğini alabilirsiniz:

az policy definition show --name 'Audit Storage Accounts with Open Public Networks'

Oluşturduğunuz ilke tanımının ilke tanımı kimliği aşağıdaki örneğe benzemelidir:

"/subscription/<subscriptionId>/providers/Microsoft.Authorization/policyDefinitions/Audit Storage Accounts Open to Public Networks"

Azure CLI ile kaynak ilkelerini yönetme hakkında daha fazla bilgi için bkz. Azure CLI Kaynak İlkeleri.

Sonraki adımlar

Bu makaledeki komutlar ve sorgular hakkında daha fazla bilgi için aşağıdaki makaleleri gözden geçirin.