Hızlı Başlangıç: .NET Core ile uyumlu olmayan kaynakları belirlemek için 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 tanımlamak için bir ilke ataması oluşturabilirsiniz. Tamamlandığında, uyumlu olmayan sanal makineleri tanımlaycaz.
Azure kaynaklarını yönetmek için .NET Core kitaplığı kullanılır. Bu kılavuzda, ilke ataması oluşturmak için .NET Core Azure İlkesi nasıl kullanabileceğiniz açık bir şekilde açık bulunmaktadır.
Önkoşullar
- Azure aboneliği. Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
- clientId ve clientSecret dahil olmak üzere bir Azure hizmet sorumlusu. Hizmet sorumluyla kullanmak için bir hizmet sorumlu Azure İlkesi veya yeni bir tane oluşturmak istemiyorsanız bkz. .NET kimlik doğrulaması için Azure yönetim kitaplıkları. Sonraki adımlarda bunu yapacak olan .NET Core paketlerini yükleme adımını atlayabilirsiniz.
Azure İlkesi oluşturma
.NET Core'Azure İlkesi için yeni bir konsol uygulaması oluşturun ve gerekli paketleri yükleyin.
En son .NET Core sürümünün yüklü olup olmayacağını kontrol edin (en az 3.1.8). Henüz yüklü değilse, dotnet.microsoft.com.
"policyAssignment" adlı yeni bir .NET Core konsol uygulaması başlatın:
dotnet new console --name "policyAssignment"Dizinleri yeni proje klasörüne dönüştür ve aşağıdakiler için gerekli Azure İlkesi:
# Add the Azure Policy package for .NET Core dotnet add package Microsoft.Azure.Management.ResourceManager --version 3.10.0-preview # Add the Azure app auth package for .NET Core dotnet add package Microsoft.Azure.Services.AppAuthentication --version 1.5.0Varsayılanı
program.csaşağıdaki kodla değiştirin ve güncelleştirilmiş dosyayı kaydedin:using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Microsoft.Rest; using Microsoft.Azure.Management.ResourceManager; using Microsoft.Azure.Management.ResourceManager.Models; namespace policyAssignment { class Program { static async Task Main(string[] args) { string strTenant = args[0]; string strClientId = args[1]; string strClientSecret = args[2]; string strSubscriptionId = args[3]; string strName = args[4]; string strDisplayName = args[5]; string strPolicyDefID = args[6]; string strDescription = args[7]; string strScope = args[8]; var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{strTenant}"); var authResult = await authContext.AcquireTokenAsync( "https://management.core.windows.net", new ClientCredential(strClientId, strClientSecret)); using (var client = new PolicyClient(new TokenCredentials(authResult.AccessToken))) { var policyAssignment = new PolicyAssignment { DisplayName = strDisplayName, PolicyDefinitionId = strPolicyDefID, Description = strDescription }; var response = await client.PolicyAssignments.CreateAsync(strScope, strName, policyAssignment); } } } }Konsol uygulamasını derleme
policyAssignmentve yayımlama:dotnet build dotnet publish -o {run-folder}
İlke ataması oluşturma
Bu hızlı başlangıçta, bir ilke ataması oluşturun ve yönetilen diskleri kullanmayan VM'leri denetle ( 06a78e20-9358-41c9-923c-fb736d382a4d ) tanımını atarsınız. Bu ilke tanımı, ilke tanımında ayarlanmış koşullarla uyumlu olmayan kaynakları tanımlar.
Dizinleri önceki
{run-folder}komutla tanımlandığı gibidotnet publishdeğiştirme.Terminale aşağıdaki komutu girin:
policyAssignment.exe ` "{tenantId}" ` "{clientId}" ` "{clientSecret}" ` "{subscriptionId}" ` "audit-vm-manageddisks" ` "Audit VMs without managed disks Assignment" ` "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d" ` "Shows all virtual machines not using managed disks" ` "{scope}"
Yukarıdaki komutlarda aşağıdaki bilgiler kullanılmaktadır:
{tenantId}- Yerine kiracı kimliğinizi girin{clientId}- yerine hizmet sorumlus nizin istemci kimliğini girin{clientSecret}- Yerine hizmet sorumlus nizin istemci gizli adı ile değiştirin{subscriptionId}- Abonelik kimliğinizle değiştirin- name - İlke atama nesnesinin benzersiz adı. Yukarıdaki örnekte audit-vm-manageddisks mektedir.
- displayName - İlke ataması için görünen ad. Bu durumda, Yönetilen disk ataması olmadan VM'leri denetle'leri kullanırsınız.
- policyDefID - Atamayı oluşturmak için kullanmakta olduğunu temel alan ilke tanımı yolu. Bu durumda, yönetilen disk kullanmayan VM'leri denetle ilke tanımının kimliğidir.
- description - İlkenin ne yaptığına veya bu kapsama neden atandığına ilişkin daha ayrıntılı bir açıklama.
- scope - Kapsam, ilke ataması için hangi kaynakların veya kaynak gruplamalarının uygulanıyor olduğunu belirler. Bir yönetim grubundan tek bir kaynağa kadar farklı olabilir. yerine aşağıdaki
{scope}desenlerden birini değiştirilebilir:- 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:
Artık ortamının uyumluluk durumunu anlamak için uyumlu olmayan kaynakları belirlemeye hazırsınız.
Uyumlu olmayan kaynakları belirleme
İlke atamanız oluşturulduktan sonra uyumlu olmayan kaynakları tanımlayabilirsiniz.
"policyCompliance" adlı yeni bir .NET Core konsol uygulaması başlatın:
dotnet new console --name "policyCompliance"Dizinleri yeni proje klasörüne dönüştür ve aşağıdakiler için gerekli Azure İlkesi:
# Add the Azure Policy package for .NET Core dotnet add package Microsoft.Azure.Management.PolicyInsights --version 3.1.0 # Add the Azure app auth package for .NET Core dotnet add package Microsoft.Azure.Services.AppAuthentication --version 1.5.0Varsayılanı
program.csaşağıdaki kodla değiştirin ve güncelleştirilmiş dosyayı kaydedin:using System; using System.Collections.Generic; using System.Threading.Tasks; using Microsoft.IdentityModel.Clients.ActiveDirectory; using Microsoft.Rest; using Microsoft.Azure.Management.PolicyInsights; using Microsoft.Azure.Management.PolicyInsights.Models; namespace policyAssignment { class Program { static async Task Main(string[] args) { string strTenant = args[0]; string strClientId = args[1]; string strClientSecret = args[2]; string strSubscriptionId = args[3]; string strName = args[4]; var authContext = new AuthenticationContext($"https://login.microsoftonline.com/{strTenant}"); var authResult = await authContext.AcquireTokenAsync( "https://management.core.windows.net", new ClientCredential(strClientId, strClientSecret)); using (var client = new PolicyInsightsClient(new TokenCredentials(authResult.AccessToken))) { var policyQueryOptions = new QueryOptions { Filter = $"IsCompliant eq false and PolicyAssignmentId eq '{strName}'", Apply = "groupby(ResourceId)" }; var response = await client.PolicyStates.ListQueryResultsForSubscriptionAsync( "latest", strSubscriptionId, policyQueryOptions); Console.WriteLine(response.Odatacount); } } } }Konsol uygulamasını derleme
policyAssignmentve yayımlama:dotnet build dotnet publish -o {run-folder}Dizinleri önceki
{run-folder}komutla tanımlandığı gibidotnet publishdeğiştirme.Terminale aşağıdaki komutu girin:
policyCompliance.exe ` "{tenantId}" ` "{clientId}" ` "{clientSecret}" ` "{subscriptionId}" ` "audit-vm-manageddisks"
Yukarıdaki komutlarda aşağıdaki bilgiler kullanılmaktadır:
{tenantId}- Yerine kiracı kimliğinizi girin{clientId}- yerine hizmet sorumlus nizin istemci kimliğini girin{clientSecret}- Yerine hizmet sorumlus nizin istemci gizli adı ile değiştirin{subscriptionId}- Abonelik kimliğinizle değiştirin- name - İlke atama nesnesinin benzersiz adı. Yukarıdaki örnekte audit-vm-manageddisks mektedir.
Sonuçlar, response ilke atamalarının Kaynak uyumluluğu sekmesindeki görünümde gördüğünüz sonuçlarla Azure portal verir.
Kaynakları temizleme
İlke ataması Yönetilen diskleri olmayan VM'leri denetle Portal üzerinden atamayı silin. İlke tanımı yerleşiktir, bu nedenle kaldıracak bir tanım yoktur.
.NET Core konsol uygulamalarını ve yüklü paketleri kaldırmak isterseniz ve proje
policyAssignmentpolicyComplianceklasörlerini silin.
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 için ilke tanımları atama hakkında daha fazla bilgi edinmek için şu öğreticiye devam edin: