Programlı olarak ilkeler oluşturma
Bu makale, ilkeleri programlı olarak oluşturma ve yönetme konusunda size kılavuzluk eder. Azure Ilke tanımları, kaynaklarınız üzerinde farklı kurallar ve etkiler uygular. Zorlama, kaynakların kurumsal standartlarınızla ve hizmet düzeyi sözleşmelerle uyumlu kalmasını sağlar.
Uyumluluk hakkında daha fazla bilgi için bkz. Uyumluluk verileri alma.
Önkoşullar
Başlamadan önce, aşağıdaki önkoşulların karşılandığından emin olun:
Henüz yapmadıysanız ARMClient’ı yükleyin. Bu, HTTP isteklerini Azure Resource Manager tabanlı API’lere gönderen bir araçtır.
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ü ınstall . En son sürüm hakkında daha fazla bilgi için bkz. Azure PowerShell.
aboneliğinizin kaynak sağlayıcısıyla birlikte çalışıp çalışmadığını doğrulamak için Azure PowerShell kullanarak Azure ilkesi Analizler 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 izninizin olması gerekir. 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.
Henüz yapmadıysanız Azure CLı 'yı yükleyemezsiniz. Azure CLI 'yi Windows ' deen son sürümü edinebilirsiniz.
İlke tanımı oluşturma ve atama
Kaynaklarınızın daha iyi görünürlüğüne yönelik ilk adım, kaynaklarınız üzerinde ilkeler oluşturmak ve atamak. Bir sonraki adım, programlı olarak bir ilke oluşturma ve atamayı öğrenirsiniz. Örnek ilke, PowerShell, Azure CLı ve HTTP istekleri kullanılarak tüm ortak ağlarda açık olan depolama hesaplarını denetler.
PowerShell ile ilke tanımı oluşturma ve atama
AuditStorageAccounts.jsadında 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. Azure Ilke tanımı yapısı.
AuditStorageAccounts.jsdosyası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ğlarda açık olan denetim Depolama hesapları 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-AzPolicyDefinitionVarsayılan olarak ilke tanımını oturum bağlamının seçili aboneliğine kaydetme varsayılan değeri. Tanımı farklı bir konuma kaydetmek için aşağıdaki parametreleri kullanın:- SubscriptionID -farklı bir aboneliğe kaydedin. Bir GUID değeri gerektirir.
- ManagementGroupName -bir yönetim grubuna kaydedin. Bir dize değeri gerektirir.
İ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.ResourceIdContosoRG değerini amaçlanan kaynak grubunuzun adıyla değiştirin.
' Deki kapsam parametresi,
New-AzPolicyAssignmentYönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla birlikte geçerlidir. Parametresi RESOURCEID özelliğinin döndürdüğü tam kaynak yolunu kullanırGet-AzResourceGroup. Her kapsayıcının kapsam için olan model aşağıdaki gibidir. ,,, Ve ' ı{rName}{rgName}{subId}{mgName}kaynak adı, kaynak grubu adı, abonelik kimliği ve yönetim grubu adıyla değiştirin.{rType}kaynağın kaynak türüyle (örneğin,Microsoft.Compute/virtualMachinesbir VM için) değiştirilmelidir.- Kaynak
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName} - Kaynak grubu-
/subscriptions/{subId}/resourceGroups/{rgName} - Aboneliğiniz
/subscriptions/{subId} - Yönetim grubu-
/providers/Microsoft.Management/managementGroups/{mgName}
- Kaynak
Kaynak Yöneticisi 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
Bir ilke tanımı oluşturmak için aşağıdaki yordamı kullanın.
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" } } }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} öğesini aboneliğinizin KIMLIĞIYLE veya {ManagementGroupId} yerine Yönetim GRUBUNUZUNkimliğiyle değiştirin.
Sorgunun yapısı hakkında daha fazla bilgi için bkz. Azure Ilke tanımları-oluşturma veya güncelleştirme ve Ilke tanımları-Yönetim grubunda oluşturma veya güncelleştirme.
Bir ilke ataması oluşturmak ve ilke tanımını kaynak grubu düzeyinde atamak için aşağıdaki yordamı kullanın.
JSON ilke atama dosyası oluşturmak için aşağıdaki JSON kod parçacığını kopyalayın. Semboller içindeki ö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>" } }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>Semboller içindeki örnek bilgileri < > kendi değerlerinizle değiştirin.
REST API HTTP çağrıları yapma hakkında daha fazla bilgi için bkz. Azure REST API kaynakları.
Azure CLı ile ilke tanımı oluşturma ve atama
Bir ilke tanımı oluşturmak için aşağıdaki yordamı kullanın:
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. Azure Ilke tanımı yapısı.
Bir ilke 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 Allkomut, ortak ağlarda açık olan denetim Depolama hesapları 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 creationVarsayılan olarak ilke tanımını oturum bağlamının seçili aboneliğine kaydetme varsayılan değeri. Tanımı farklı bir konuma kaydetmek için aşağıdaki parametreleri kullanın:- abonelik -farklı bir aboneliğe kaydedin. Abonelik KIMLIĞI için bir GUID değeri veya abonelik adı için bir dize değeri gerektirir.
- Yönetim-grup -bir yönetim grubuna kaydedin. Bir dize değeri gerektirir.
Bir ilke ataması oluşturmak için aşağıdaki komutu kullanın. Semboller içindeki örnek bilgileri < > kendi değerlerinizle değiştirin.
az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'' Deki kapsam parametresi,
az policy assignment createYönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla birlikte geçerlidir. Parametresi tam kaynak yolunu kullanır. Her kapsayıcının kapsam için olan model aşağıdaki gibidir. ,,, Ve ' ı{rName}{rgName}{subId}{mgName}kaynak adı, kaynak grubu adı, abonelik kimliği ve yönetim grubu adıyla değiştirin.{rType}kaynağın kaynak türüyle (örneğin,Microsoft.Compute/virtualMachinesbir VM için) değiştirilmelidir.- Kaynak
/subscriptions/{subID}/resourceGroups/{rgName}/providers/{rType}/{rName} - Kaynak grubu-
/subscriptions/{subID}/resourceGroups/{rgName} - Aboneliğiniz
/subscriptions/{subID} - Yönetim grubu-
/providers/Microsoft.Management/managementGroups/{mgName}
- Kaynak
Aşağıdaki komutla PowerShell kullanarak Azure Ilke tanımı KIMLIĞI ' ni edinebilirsiniz:
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 CLı ile kaynak ilkelerini yönetme hakkında daha fazla bilgi için bkz. Azure CLI kaynak ilkeleri.
Sonraki adımlar
Bu makaledeki komutlar ve sorgular hakkında daha fazla bilgi için aşağıdaki makalelere göz atın.