Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu makalede, bir Azure Otomasyonu hesabı için kullanıcı tarafından atanan yönetilen kimliğin nasıl ekleneceği ve diğer kaynaklara erişmek için nasıl kullanılacağı gösterilmektedir. Yönetilen kimliklerin Azure Otomasyonu ile nasıl çalıştığı hakkında daha fazla bilgi için bkz. Yönetilen kimlikler.
Not
Bir Otomasyon Hesabı için bir Yönetilen Kimlik (Sistem ya da Kullanıcı Atamalı) oluşturulduğunda bir Hibrit Runbook Çalışanı üzerinde Kullanıcı Atamalı Yönetilen Kimlik kullanmak mümkün değildir. Yönetilen Kimlik Otomasyon Hesabına atanmamışsa, vm'nin Sistem veya Kullanıcı Tarafından Atanan Yönetilen Kimliğini atanan yönetilen kimliklere sahip bir Azure VM olan Karma Runbook Çalışanı üzerinde kullanmak mümkündür.
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Önkoşullar
Azure Otomasyonu hesabı. Yönergeler için bkz. Azure Otomasyonu hesabı oluşturma.
Kullanıcı tarafından atanan yönetilen kimlik ve runbook'unuzun bu kimliği kullanarak yönettiği hedef Azure kaynakları farklı Azure aboneliklerinde olabilir.
Azure Hesabı modüllerinin en son sürümü. Şu anda bu 2.2.8'dir. (Bu sürümle ilgili ayrıntılar için bkz . Az.Accounts .)
Otomasyon runbook'unuzdan erişmek istediğiniz bir Azure kaynağı. Bu kaynağın kullanıcı tarafından atanan yönetilen kimlik için tanımlanmış bir rolü olması gerekir. Bu rol, Otomasyon runbook'unun kaynağa erişirken kimliğini doğrulamasına yardımcı olur. Rol eklemek için ilgili Microsoft Entra kiracısında kaynağın sahibi olmanız gerekir.
Azure rolü atamak için
Microsoft.Authorization/roleAssignments/write
veya Sahip gibi izinlere sahip olmanız gerekir.
Azure Otomasyonu hesabı için kullanıcı tarafından atanan yönetilen kimlik ekleme
Azure portalını, PowerShell'i, Azure REST API'sini veya ARM şablonunu kullanarak Azure Otomasyonu hesabı için kullanıcı tarafından atanan yönetilen kimlik ekleyebilirsiniz. PowerShell ile ilgili örnekler için önce Connect-AzAccount cmdlet'ini kullanarak Azure'da etkileşimli olarak oturum açın ve yönergeleri izleyin.
# Sign in to your Azure subscription
$sub = Get-AzSubscription -ErrorAction SilentlyContinue
if(-not($sub))
{
Connect-AzAccount
}
# If you have multiple subscriptions, set the one to use
# Select-AzSubscription -SubscriptionId "<SUBSCRIPTIONID>"
Ardından, örnekler boyunca kullanılacak birkaç değişken tanımlayın. Aşağıdaki değerleri düzeltin ve ardından yürütebilirsiniz"
$subscriptionID = "subscriptionID"
$resourceGroup = "resourceGroupName"
$automationAccount = "automationAccountName"
$userAssignedOne = "userAssignedIdentityOne"
$userAssignedTwo = "userAssignedIdentityTwo"
Azure portalını kullanarak ekleme
Aşağıdaki adımları gerçekleştirin:
Azure portalında oturum açın.
Azure portalında Otomasyon hesabınıza gidin.
Hesap Ayarları'nın altında Kimlik'i seçin.
Kullanıcı tarafından atanan sekmesini ve ardından Ekle'yi seçin.
Kullanıcı tarafından atanan mevcut yönetilen kimliğinizi ve ardından Ekle'yi seçin. Ardından Kullanıcı tarafından atanan sekmesine geri dönersiniz.
PowerShell kullanarak ekleme
Kullanıcı tarafından atanan yönetilen kimlikleri eklemek için Set-AzAutomationAccount PowerShell cmdlet'ini kullanın. Öncelikle sistem tarafından atanan mevcut bir yönetilen kimlik olup olmadığını göz önünde bulundurmanız gerekir. Aşağıdaki örnek, mevcut bir otomasyon hesabına mevcut kullanıcı tarafından atanan iki yönetilen kimlik ekler ve varsa sistem tarafından atanan yönetilen kimliği devre dışı bırakır.
$output = Set-AzAutomationAccount `
-ResourceGroupName $resourceGroup `
-Name $automationAccount `
-AssignUserIdentity "/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedOne", `
"/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedTwo"
$output
Sistem tarafından atanan mevcut bir yönetilen kimliği korumak için aşağıdakileri kullanın:
$output = Set-AzAutomationAccount `
-ResourceGroupName $resourceGroup `
-Name $automationAccount `
-AssignUserIdentity "/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedOne", `
"/subscriptions/$subscriptionID/resourcegroups/$resourceGroup/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$userAssignedTwo" `
-AssignSystemIdentity
$output
Çıkış aşağıdakine benzer görünmelidir:
Ek çıktı için şunu çalıştırın: $output.identity | ConvertTo-Json
.
REST API kullanarak ekleme
Söz dizimi ve örnek adımlar aşağıda verilmiştır.
Sözdizimi
Aşağıdaki örnek gövde söz dizimi, henüz etkinleştirilmemişse sistem tarafından atanan yönetilen kimliği etkinleştirir ve mevcut Otomasyon hesabına mevcut kullanıcı tarafından atanan iki yönetilen kimlik atar.
YAMA
{
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"/subscriptions/00a000aa-00a0-00aa-00aa-0a0aa000aa00/resourceGroups/resource-group-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/firstIdentity": {},
"/subscriptions/00a000aa-00a0-00aa-00aa-0a0aa000aa00/resourceGroups/resource-group-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/secondIdentity": {}
}
}
}
API'nin sözdizimi aşağıdaki gibidir:
https://management.azure.com/subscriptions/00a000aa-00a0-00aa-00aa-0a0aa000aa00/resourceGroups/resource-group-name/providers/Microsoft.Automation/automationAccounts/automation-account-name?api-version=2020-01-13-preview
Örnek
Aşağıdaki adımları gerçekleştirin.
Yukarıdaki gövdenin söz dizimini
body_ua.json
adlı bir dosyada düzeltin. Dosyayı yerel makinenize veya bir Azure depolama hesabına kaydedin.Aşağıdaki değişken değerini düzenleyin ve çalıştırın.
$file = "path\body_ua.json"
Bu örnekte, Patch isteğini Otomasyon hesabınıza göndermek için Invoke-RestMethod PowerShell cmdlet'i kullanılır.
# build URI $URI = "https://management.azure.com/subscriptions/$subscriptionID/resourceGroups/$resourceGroup/providers/Microsoft.Automation/automationAccounts/$automationAccount`?api-version=2020-01-13-preview" # build body $body = Get-Content $file # obtain access token $azContext = Get-AzContext $azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile $profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile) $token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId) $authHeader = @{ 'Content-Type'='application/json' 'Authorization'='Bearer ' + $token.AccessToken } # Invoke the REST API $response = Invoke-RestMethod -Uri $URI -Method PATCH -Headers $authHeader -Body $body # Review output $response.identity | ConvertTo-Json
Çıkış aşağıdakine benzer görünmelidir:
{ "type": "SystemAssigned, UserAssigned", "principalId": "00a000aa-00a0-00aa-00aa-0a0aa000aa00", "tenantId": "00a000aa-00a0-00aa-00aa-0a0aa000aa00", "userAssignedIdentities": { "/subscriptions/ContosoID/resourcegroups/ContosoLab/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ContosoUAMI1": { "PrincipalId": "00a000aa-00a0-00aa-00aa-0a0aa000aa00", "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444" }, "/subscriptions/ContosoID/resourcegroups/ContosoLab/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ContosoUAMI2": { "PrincipalId": "00a000aa-00a0-00aa-00aa-0a0aa000aa00", "ClientId": "00001111-aaaa-2222-bbbb-3333cccc4444" } } }
ARM şablonu kullanarak ekleme
Söz dizimi ve örnek adımlar aşağıda verilmiştır.
Şablon söz dizimi
Aşağıdaki örnek şablon söz dizimi, henüz etkinleştirilmemişse sistem tarafından atanan yönetilen kimliği etkinleştirir ve mevcut Otomasyon hesabına mevcut kullanıcı tarafından atanan iki yönetilen kimlik atar.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"automationAccountName": {
"defaultValue": "YourAutomationAccount",
"type": "String",
"metadata": {
"description": "Automation account name"
}
},
"userAssignedOne": {
"defaultValue": "userAssignedOne",
"type": "String",
"metadata": {
"description": "User-assigned managed identity"
}
},
"userAssignedTwo": {
"defaultValue": "userAssignedTwo",
"type": "String",
"metadata": {
"description": "User-assigned managed identity"
}
}
},
"resources": [
{
"type": "Microsoft.Automation/automationAccounts",
"apiVersion": "2020-01-13-preview",
"name": "[parameters('automationAccountName')]",
"location": "[resourceGroup().location]",
"identity": {
"type": "SystemAssigned, UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('userAssignedOne'))]": {},
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/',parameters('userAssignedTwo'))]": {}
}
},
"properties": {
"sku": {
"name": "Basic"
},
"encryption": {
"keySource": "Microsoft.Automation",
"identity": {}
}
}
}
]
}
Örnek
Aşağıdaki adımları gerçekleştirin.
Şablonu kopyalayıp adlı
template_ua.json
bir dosyaya yapıştırın. Dosyayı yerel makinenize veya bir Azure depolama hesabına kaydedin.Aşağıdaki değişken değerini düzenleyin ve çalıştırın.
$templateFile = "path\template_ua.json"
Şablonu dağıtmak için New-AzResourceGroupDeployment PowerShell cmdlet'ini kullanın.
New-AzResourceGroupDeployment ` -Name "UserAssignedDeployment" ` -ResourceGroupName $resourceGroup ` -TemplateFile $templateFile ` -automationAccountName $automationAccount ` -userAssignedOne $userAssignedOne ` -userAssignedTwo $userAssignedTwo
Komut bir çıkış oluşturmaz; ancak aşağıdaki kodu kullanarak şunları doğrulayabilirsiniz:
(Get-AzAutomationAccount ` -ResourceGroupName $resourceGroup ` -Name $automationAccount).Identity | ConvertTo-Json
Çıktı, yukarıdaki REST API örneği için gösterilen çıkışa benzer olacaktır.
Bir kullanıcı tarafından atanan yönetilen kimliğe rol atayın
Otomasyon hesabı, kullanıcı tarafından atanan yönetilen kimliğini kullanarak Microsoft Entra ID tarafından korunan Azure Key Vault gibi diğer kaynaklara erişim için belirteçler alabilir. Bu belirteçler uygulamanın belirli bir kullanıcısını temsil etmez. Bunun yerine, kaynağa erişen uygulamayı temsil ederler. Bu durumda, örneğin belirteç bir Otomasyon hesabını temsil eder.
Kimlik doğrulaması için kullanıcı tarafından atanan yönetilen kimliğinizi kullanabilmeniz için önce, kimliği kullanmayı planladığınız Azure kaynağında bu kimliğe erişim ayarlayın. Bu görevi tamamlamak için hedef Azure kaynağında bu kimliğe uygun rolü atayın.
En az ayrıcalık ilkesini izleyin ve yalnızca çalışma kitabınızı yürütmek için gereken izinleri dikkatlice atayın. Örneğin, Otomasyon hesabının yalnızca bir Azure VM’i başlatmak veya durdurmak için gerekli olması durumunda, Farklı Çalıştır hesabına veya yönetilen kimliğe atanan izinlerin yalnızca VM’i başlatmak veya durdurmak için olması gerekir. Benzer şekilde, bir runbook blob storage'dan sürekli okuma yapıyorsa, salt okunur izinler atayın.
Bu örnek, Azure PowerShell'i kullanarak abonelikteki Katkıda Bulunan rolünün hedef Azure kaynağına nasıl atanacağını gösterir. Katılımcı rolü örnek olarak kullanılır ve sizin durumunuzda gerekli olabilir veya olmayabilir. Alternatif olarak, rolü Azure portalında hedef Azure kaynağına da atayabilirsiniz.
New-AzRoleAssignment `
-ObjectId <automation-Identity-object-id> `
-Scope "/subscriptions/<subscription-id>" `
-RoleDefinitionName "Contributor"
Kullanıcı tarafından yönetilen kimliğe rol atamasını doğrulama
Otomasyon hesabının kullanıcı tarafından atanan yönetilen kimliğine sahip bir rolü doğrulamak için şu adımları izleyin:
Azure portalında oturum açın.
Otomasyon hesabınıza gidin.
Hesap Ayarları'nın altında Kimlik, Kullanıcı atanmış'ı seçin.
Kullanıcı tarafından atanan kimlik adı'ne tıklayın.
Roller seçili kullanıcı tarafından atanan yönetilen kimliğe zaten atanmışsa rol atamalarının listesini görebilirsiniz. Bu liste, okuma iznine sahip olduğunuz tüm rol atamalarını içerir.
Aboneliği değiştirmek için Abonelik açılan listesine tıklayın ve uygun aboneliği seçin.
Rol ataması ekle (Önizleme) seçeneğine tıklayın
Açılan listede rol atamasının uyguladığı kaynak kümesini seçin: Abonelik, Kaynak grubu, Rol ve Kapsam.
Rol atamanız yoksa, seçili kapsamın yazma izinlerini satır içi ileti olarak görüntüleyebilirsiniz.Rol açılır listesinden Sanal Makine Katkıda Bulunan olarak bir rol seçin.
Kaydet'e tıklayın.
Birkaç dakika içinde seçilen kapsamda yönetilen kimliğe rol atanır.
Kullanıcı tarafından atanmış yönetilen kimlikle erişimi kimlik doğrulamayla doğrula
Otomasyon hesabınız için kullanıcı tarafından atanan yönetilen kimliği etkinleştirdikten ve hedef kaynağa bir kimlik erişimi verdikten sonra, yönetilen kimliği destekleyen kaynaklara karşı runbook'larda bu kimliği belirtebilirsiniz. Kimlik desteği için Az cmdlet Connect-AzAccount kullanın.
# Ensures you do not inherit an AzContext in your runbook
Disable-AzContextAutosave -Scope Process
# Connect to Azure with user-assigned managed identity
$AzureContext = (Connect-AzAccount -Identity -AccountId <user-assigned-identity-ClientId>).context
# set and store context
$AzureContext = Set-AzContext -SubscriptionName $AzureContext.Subscription -DefaultProfile $AzureContext
Azure cmdlet'lerini kullanmadan erişim belirteci oluşturma
HTTP Uç Noktaları için aşağıdakilerden emin olun.
- Meta veri üst bilgisi mevcut olmalı ve "true" olarak ayarlanmalıdır.
- Bir kaynak, GET isteği için sorgu parametresi ve POST isteği için form verisi olarak, istekle birlikte gönderilmelidir.
- IDENTITY_HEADER ortam değişkeninin değerini X-IDENTITY-HEADER olarak ayarlayın.
- Gönderi isteğinin İçerik Türü olmalıdır
application/x-www-form-urlencoded
.
HTTP GET isteği kullanarak kullanıcı tarafından atanan yönetilen kimlik için erişim belirteci al
$resource= "?resource=https://management.azure.com/"
$client_id="&client_id=<ClientId of USI>"
$url = $env:IDENTITY_ENDPOINT + $resource + $client_id
$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("Metadata", "True")
$headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$accessToken = Invoke-RestMethod -Uri $url -Method 'GET' -Headers $Headers
Write-Output $accessToken.access_token
HTTP Post ile kullanıcı tarafından atanan yönetilen kimlik için erişim belirteci alma
$url = $env:IDENTITY_ENDPOINT
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("Metadata", "True")
$headers.Add("X-IDENTITY-HEADER", $env:IDENTITY_HEADER)
$body = @{'resource'='https://management.azure.com/'
'client_id'='<ClientId of USI>'}
$accessToken = Invoke-RestMethod $url -Method 'POST' -Headers $headers -ContentType 'application/x-www-form-urlencoded' -Body $body
Write-Output $accessToken.access_token
Azure PowerShell'de kullanıcı tarafından atanan yönetilen kimliği kullanma
Write-Output "Connecting to azure via Connect-AzAccount -Identity -AccountId <ClientId of USI>"
Connect-AzAccount -Identity -AccountId <ClientId of USI>
Write-Output "Successfully connected with Automation account's Managed Identity"
Write-Output "Trying to fetch value from key vault using User Assigned Managed identity. Make sure you have given correct access to Managed Identity"
$secret = Get-AzKeyVaultSecret -VaultName '<KVname>' -Name '<KeyName>'
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
$secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
Write-Output $secretValueText
} finally {
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Python Runbook'ta kullanıcı tarafından atanan yönetilen kimliği kullanma
#!/usr/bin/env python3
import os
import requests
resource = "?resource=https://management.azure.com/"
client_id = "&client_id=<ClientId of USI>"
endPoint = os.getenv('IDENTITY_ENDPOINT')+ resource +client_id
identityHeader = os.getenv('IDENTITY_HEADER')
payload={}
headers = {
'X-IDENTITY-HEADER': identityHeader,
'Metadata': 'True'
}
response = requests.request("GET", endPoint, headers=headers, data=payload)
print(response.text)
Sonraki adımlar
Runbook'larınız başarıyla tamamlanmamışsa Azure Otomasyonu yönetilen kimlik sorunlarını giderme makalesini gözden geçirin.
Yönetilen kimliği devre dışı bırakmanız gerekiyorsa bkz. Azure Otomasyonu hesabı yönetilen kimliğinizi devre dışı bırakma.
Azure Otomasyonu hesap güvenliğine genel bakış için bkz. Otomasyon hesabı kimlik doğrulamasına genel bakış.