Programlı olarak ilkeler oluşturma
Bu makalede, program aracılığıyla ilke 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:
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ü yükleme. En son sürüm hakkında daha fazla bilgi için bkz . Azure PowerShell.
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 kayıt 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ı kaydetme ve görüntülemeyle ilgili daha fazla bilgi için bkz. Kaynak Sağlayıcıları ve Türleri.
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
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.
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'
Komutu, Genel 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.
İ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.
Scope
parametresiNew-AzPolicyAssignment
yönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla çalışır. parametresi, üzerindekiGet-AzResourceGroup
özelliğininResourceId
döndürdüğü tam kaynak yolunu kullanır. Her kapsayıcı içinScope
desen aşağıdaki gibidir. ,{rgName}
,{subId}
ve{mgName}
sözcüklerini sırasıyla kaynak adınız, kaynak grubu adınız, abonelik kimliğiniz ve yönetim grubu adınız ile değiştirin{rName}
.{rType}
sanal makine gibiMicrosoft.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}
- Kaynak-
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.
Bir JSON dosyası oluşturmak için aşağıdaki JSON 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>
Öncekini
{subscriptionId}
aboneliğinizin kimliğiyle veya{managementGroupId}
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.
Bir JSON ilke atama dosyası oluşturmak için aşağıdaki JSON 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>" } }
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:
Bir JSON ilke atama dosyası oluşturmak için aşağıdaki JSON 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.
İ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
Komutu, Genel 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.
İlke ataması oluşturmak için aşağıdaki komutu kullanın. Köşeli ayraç sembollerindeki
< >
örnek bilgileri kendi değerlerinizle değiştirin.az policy assignment create --name '<name>' --scope '<scope>' --policy '<policy definition ID>'
scope
parametresiaz policy assignment create
yönetim grubu, abonelik, kaynak grubu veya tek bir kaynakla çalışır. parametresi tam bir kaynak yolu kullanır. Her kapsayıcı içinscope
desen aşağıdaki gibidir. ,{rgName}
,{subId}
ve{mgName}
sözcüklerini sırasıyla kaynak adınız, kaynak grubu adınız, abonelik kimliğiniz ve yönetim grubu adınız ile değiştirin{rName}
.{rType}
sanal makine gibiMicrosoft.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}
- Kaynak-
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 benzer olmalıdır:
"/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.