Hızlı başlangıç: Python kullanarak uyumlu olmayan kaynakları belirlemek için bir ilke ataması oluşturma
Azure’da uyumluluğu anlamanın ilk adımı, kaynaklarınızın durumunu belirlemektir. Bu hızlı başlangıçta, yönetilen disk kullanmayan sanal makineleri belirlemek için bir ilke ataması oluşturacaksınız. Bu tamamlandığında, uyumlu olmayan sanal makineleri tanımlayacaksınız.
Python kitaplığı, Azure kaynaklarını komut satırından veya betiklerden yönetmek için kullanılır. Bu kılavuzda, bir ilke ataması oluşturmak için Python kitaplığı 'nın nasıl kullanılacağı açıklanmaktadır.
Önkoşullar
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Azure Cloud Shell kullanma
Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell’i barındırır. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Bu makaledeki kodu, yerel ortamınıza herhangi bir şey yüklemeye gerek kalmadan çalıştırmak için Cloud Shell’in önceden yüklenmiş komutlarını kullanabilirsiniz.
Azure Cloud Shell’i başlatmak için:
| Seçenek | Örnek/Bağlantı |
|---|---|
| Kod bloğunun sağ üst köşesindeki Deneyin’i seçin. Deneyin seçeneği belirlendiğinde, kod otomatik olarak Cloud Shell’e kopyalanmaz. | ![]() |
| Cloud Shell’i tarayıcınızda açmak için https://shell.azure.com bölümüne gidin veya Cloud Shell’i Başlat düğmesini seçin. | ![]() |
| Azure portalın sağ üst köşesindeki menü çubuğunda yer alan Cloud Shell düğmesini seçin. | ![]() |
Azure Cloud Shell’de bu makaledeki kodu çalıştırmak için:
Cloud Shell’i başlatın.
Kodu kopyalamak için kod bloğunda Kopyala düğmesini seçin.
Windows ve Linux sisteminde Ctrl+Shift+V tuşlarını kullanarak veya macOS’de Cmd+Shift+V tuşlarını kullanarak kodu Cloud Shell oturumuna yapıştırın.
Kodu çalıştırmak için Enter tuşuna basın.
Ilke kitaplığını ekleme
Python 'un Azure Ilkesiyle çalışmasını sağlamak için, kitaplığın eklenmesi gerekir. bu kitaplık, Windows 10 bash veya yerel olarak yüklü dahil olmak üzere Python 'un kullanılabileceği her yerde çalışmaktadır.
En son Python 'un yüklü olup olmadığını denetleyin (en az 3,8). Henüz yüklenmemişse, Python.orgadresinden indirin.
En son Azure CLı 'nın yüklü olup olmadığını denetleyin (en azından 2.5.1). Henüz yüklenmemişse bkz. Azure CLI 'Yı yükleme.
Not
Azure CLı, Python 'un aşağıdaki örneklerde CLI tabanlı kimlik doğrulamasını kullanmasını sağlamak için gereklidir. Diğer seçenekler hakkında daha fazla bilgi için bkz. Python Için Azure Yönetim kitaplıklarını kullanarak kimlik doğrulama.
Azure CLı aracılığıyla kimlik doğrulaması yapın.
az loginTercih ettiğiniz Python ortamınızda Azure Ilkesi için gerekli kitaplıkları yükler:
# Add the Python library for Python pip install azure-mgmt-policyinsights # Add the Resources library for Python pip install azure-mgmt-resource # Add the CLI Core library for Python for authentication (development only!) pip install azure-cli-core # Add the Azure identity library for Python pip install azure.identityNot
Tüm kullanıcılar için Python yüklüyse, bu komutların yükseltilmiş bir konsoldan çalıştırılması gerekir.
Kitaplıkların yüklü olduğunu doğrulayın.
azure-mgmt-policyinsights0.5.0 veya üzeri olmalıdır,azure-mgmt-resource9.0.0 veya üzeri olmalıdır veazure-cli-core2.5.0 veya üzeri olmalıdır.# Check each installed library pip show azure-mgmt-policyinsights azure-mgmt-resource azure-cli-core azure.identity
İlke ataması oluşturma
Bu hızlı başlangıçta, bir ilke ataması oluşturup yönetilen diskler () tanımını kullanmayan denetim sanal makinelerini atarsınız 06a78e20-9358-41c9-923c-fb736d382a4d . Bu ilke tanımı, ilke tanımında ayarlanan koşullarla uyumlu olmayan kaynakları belirler.
Yeni bir ilke ataması oluşturmak için aşağıdaki kodu çalıştırın:
# Import specific methods and models from other libraries
from azure.mgmt.resource.policy import PolicyClient
from azure.mgmt.resource.policy.models import PolicyAssignment, Identity, UserAssignedIdentitiesValue, PolicyAssignmentUpdate
from azure.identity import AzureCliCredential
# Set subscription
subId = "{subId}"
assignmentLocation = "westus2"
# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyClient(credential, subId, base_url=none)
# Create details for the assignment
policyAssignmentIdentity = Identity(type="SystemAssigned")
policyAssignmentDetails = PolicyAssignment(display_name="Audit VMs without managed disks Assignment", policy_definition_id="/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d", description="Shows all virtual machines not using managed disks", identity=policyAssignmentIdentity, location=assignmentLocation)
# Create new policy assignment
policyAssignment = policyClient.policy_assignments.create("{scope}", "audit-vm-manageddisks", policyAssignmentDetails)
# Show results
print(policyAssignment)
Yukarıdaki komutlarda aşağıdaki bilgiler kullanılmaktadır:
Atama ayrıntıları:
- Subıd -aboneliğiniz. Kimlik doğrulaması için gereklidir.
{subId}Aboneliğiniz ile değiştirin. - display_name -ilke ataması için görünen ad. Bu durumda, yönetilen disk ataması olmadan VM 'Leri denetleme kullanıyorsunuz demektir.
- policy_definition_id -atamayı oluşturmak için kullandığınız ilke tanımı yolu. Bu durumda, yönetilen diskleri kullanmayan ilke tanımı denetim VM'lerinin kimliğidir. Bu örnekte, ilke tanımı yerleşik bir örnektir ve yol yönetim grubu veya abonelik bilgileri içermez.
- kapsam -bir kapsam, ilke atamasının hangi kaynaklarda veya gruplandırmaya uygulanacağını belirler. Bir yönetim grubundan tek bir kaynağa kadar değişebilir.
{scope}Aşağıdaki desenlerden biriyle değiştirdiğinizden emin olun:- Yönetim grubu:
/providers/Microsoft.Management/managementGroups/{managementGroup} - Abonelik:
/subscriptions/{subscriptionId} - Kaynak grubu:
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} - Kaynak
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/[{parentResourcePath}/]
- Yönetim grubu:
- Açıklama -ilkenin ne yaptığını veya neden bu kapsama atandığını daha derin bir açıklama.
Atama oluşturma:
- Kapsam-bu kapsam, ilke atamasının nereye kaydedileceğini belirler. Atama ayrıntılarında ayarlanan kapsam bu kapsam içinde bulunmalıdır.
- Ad - Atamanın gerçek adı. Bu örnekte audit-vm-manageddisks kullanıldı.
- İlke ataması-önceki adımda oluşturulan Python PolicyAssignment nesnesi.
Artık ortamınızın uyumluluk durumunu anlamak için uyumlu olmayan kaynakları belirlemek için hazırsınız demektir.
Uyumlu olmayan kaynakları belirleme
Oluşturduğunuz ilke atamasıyla uyumlu olmayan kaynakları belirlemek için aşağıdaki bilgileri kullanın. Aşağıdaki kodu çalıştırın:
# Import specific methods and models from other libraries
from azure.mgmt.policyinsights._policy_insights_client import PolicyInsightsClient
from azure.mgmt.policyinsights.models import QueryOptions
from azure.identity import AzureCliCredential
# Set subscription
subId = "{subId}"
# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyInsightsClient(credential, subId, base_url=none)
# Set the query options
queryOptions = QueryOptions(filter="IsCompliant eq false and PolicyAssignmentId eq 'audit-vm-manageddisks'",apply="groupby((ResourceId))")
# Fetch 'latest' results for the subscription
results = policyInsightsClient.policy_states.list_query_results_for_subscription(policy_states_resource="latest", subscription_id=subId, query_options=queryOptions)
# Show results
print(results)
{subId}Bu ilke atamasının uyumluluk sonuçlarını görmek istediğiniz abonelikle değiştirin. Diğer kapsamların listesi ve verileri özetleme yolları için bkz. Ilke durumu yöntemleri.
Sonuçlarınız aşağıdaki örneğe benzer:
{
'additional_properties': {
'@odata.nextLink': None
},
'odatacontext': 'https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/$metadata#latest',
'odatacount': 12,
'value': [{data}]
}
Sonuçlar, Azure portal görünümündeki bir ilke atamasının kaynak uyumluluğu sekmesinde gördüklerinize göre eşleşir.
Kaynakları temizleme
Oluşturulan atamayı kaldırmak için aşağıdaki komutu kullanın:
# Import specific methods and models from other libraries
from azure.mgmt.resource.policy import PolicyClient
from azure.identity import AzureCliCredential
# Set subscription
subId = "{subId}"
# Get your credentials from Azure CLI (development only!) and get your subscription list
credential = AzureCliCredential()
policyClient = PolicyClient(credential, subId, base_url=none)
# Delete the policy assignment
policyAssignment = policyClient.policy_assignments.delete("{scope}", "audit-vm-manageddisks")
# Show results
print(policyAssignment)
{subId}Aboneliğiniz ile ve {scope} ilke atamasını oluşturmak için kullandığınız kapsamla değiştirin.
Sonraki adımlar
Bu hızlı başlangıçta, Azure ortamınızda uyumlu olmayan kaynakları belirlemek üzere bir ilke tanımı atadınız.
Yeni kaynakların uyumlu olduğunu doğrulamak üzere ilke tanımları atama hakkında daha fazla bilgi edinmek için öğreticiye geçin:


