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.
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
Not
Yeni Azure hizmeti bağlantısı oluşturma deneyimini dağıtıyoruz. Bu özelliği kuruluşunuzda kullanıp kullanamayacağınız çeşitli faktörlere bağlıdır ve yine de eski kullanıcı deneyimini görebilirsiniz.
Azure Resource Manager hizmet bağlantısı, işlem hattınızdan Azure Key Vault gibi Azure kaynaklarına bağlanmanızı sağlar. Bu bağlantı, Azure Uygulaması Hizmeti uygulaması gibi Azure kaynaklarına dağıtmak için her seferinde kimlik doğrulaması yapmanıza gerek kalmadan işlem hattı kullanmanıza olanak tanır.
Azure Resource Manager hizmet bağlantısıyla Azure'a bağlanmak için birden çok kimlik doğrulama seçeneğiniz vardır. İş yükü kimlik federasyonu ile uygulama kaydı veya yönetilen kimlik kullanmanızı öneririz. İş yükü kimlik federasyonu, gizli bilgi ve gizli bilgi yönetimi gereksinimini ortadan kaldırır.
Önerilen seçenekler:
- İş yükü kimliği federasyon ile uygulama kaydı (otomatik)
- İş yükü kimliği federasyon kimlik bilgilerini oluşturarak mevcut kullanıcı tarafından atanan yönetilen kimliğe bağlanan yönetilen kimlik. Uygulama kaydı oluşturma izniniz olmadığında bu seçeneği kullanın.
- İş yükü kimlik federasyonu veya bir gizli dizi ile uygulama kaydı ya da yönetilen kimlik (manuel). El ile yapılandırma, otomatik yapılandırmadan daha fazla zaman alır ve yalnızca otomatik seçeneği zaten denediyseniz kullanılmalıdır.
Not
İş yükü kimlik federasyonu kullanmayan başka Azure Resource Manager hizmet bağlantısı kimlik doğrulama seçenekleri vardır. Bu seçenekler geriye dönük uyumluluk ve kenar durumları için kullanılabilir ve önerilmez. İlk kez bir hizmet bağlantısı kuruyorsanız iş yükü kimlik federasyonu kullanın. Mevcut bir hizmet bağlantınız varsa, önce hizmet bağlantınızı iş yükü kimlik federasyonu kullanacak şekilde dönüştürmeyi
İş yükü kimlik federasyonuyla uygulama kaydı oluşturma (otomatik)
Senaryonuz için aşağıdaki öğelerin tümü doğruysa bu yaklaşımı kullanabilirsiniz:
- Azure aboneliğiniz için Sahip rolünüz var.
- Azure Stack'e veya Azure ABD Hükümeti ortamlarına bağlanmıyorsunuz.
- Kullandığınız tüm Market uzantıları görevleri, iş yükü kimlik federasyonu desteği için güncelleştirilir.
Bu seçimle, Azure DevOps bağlanmak istediğiniz abonelik, yönetim grubu veya Machine Learning çalışma alanı için otomatik olarak sorgular ve kimlik doğrulaması için bir iş yükü kimlik federasyonu oluşturur.
Azure DevOps projesinde Proje ayarları>Hizmet bağlantıları'na gidin.
Daha fazla bilgi için bkz. Proje ayarlarını açma.
Yeni hizmet bağlantısı'nı ve ardından Azure Resource Manager ve İleri'yi seçin.
Uygulama kaydı (otomatik) seçeneğini İş yükü kimlik federasyonu kimlik bilgileriyle seçin.
Kapsam düzeyi seçin. Abonelik, Yönetim Grubu veya Machine Learning Çalışma Alanı'yı seçin. Yönetim grupları , birden çok abonelikte erişimi, ilkeyi ve uyumluluğu yönetmenize yardımcı olan kapsayıcılardır. Machine Learning Çalışma Alanı, makine öğrenmesi yapıtları oluşturmak için kullanılabilir.
Abonelik kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Abonelik Gerekli. Azure aboneliğini seçin. Kaynak grubu isteğe bağlı. Azure kaynak grubunu seçin. Yönetim Grubu kapsamı için Azure yönetim grubunu seçin.
Machine Learning Çalışma Alanı kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Abonelik Gerekli. Azure aboneliğini seçin. Kaynak Grubu Gerekli. Çalışma alanını içeren kaynak grubunu seçin. Machine Learning Çalışma Alanı Gerekli. Azure Machine Learning çalışma alanını seçin.
Hizmet Bağlantı Adı girin.
İsteğe bağlı olarak, hizmet bağlantısı için bir açıklama girin.
Tüm işlem hatlarının bu hizmet bağlantısını kullanmasına izin vermek için Tüm işlem hatlarına erişim izni ver'i seçin. Bu seçeneği belirtmezseniz, bu hizmet bağlantısını kullanan her işlem hattına el ile erişim vermelisiniz.
Kaydet'i seçin.
Kullanıcı tarafından atanan mevcut yönetilen kimlik için bir hizmet bağlantısı oluşturma
Mevcut kullanıcı tarafından atanan yönetilen kimlik için otomatik olarak bir iş yükü kimliği bilgisi oluşturmak için bu seçeneği kullanın. Başlamadan önce mevcut bir kullanıcı tarafından atanan yönetilen kimliğe sahip olmanız gerekir.
Azure DevOps projesinde Proje ayarları>Hizmet bağlantıları'na gidin.
Daha fazla bilgi için bkz. Proje ayarlarını açma.
Yeni hizmet bağlantısı'nı ve ardından Azure Resource Manager ve İleri'yi seçin.
Yönetilen kimlik'i seçin.
Adım 1: Yönetilen kimlik ayrıntıları
- Yönetilen Kimlik için Abonelik'i seçin. Bu, yönetilen kimliğinizi içeren Azure aboneliğidir.
- Yönetilen Kimlik için Kaynak grubunu seçin. Bu, yönetilen kimliğinizi içeren kaynak grubudur.
- Yönetilen Kimlik'i seçin. Bu, kaynak grubunuzdaki kaynaklara erişmek için kullanacağınız yönetilen kimliktir.
2. Adımda: Azure Kapsamı:
Kapsam Düzeyi'ni seçin. Abonelik, Yönetim Grubu veya Machine Learning Çalışma Alanı'yı seçin. Yönetim grupları , birden çok abonelikte erişimi, ilkeyi ve uyumluluğu yönetmenize yardımcı olan kapsayıcılardır. Machine Learning Çalışma Alanı, makine öğrenmesi yapıtları oluşturmak için kullanılabilir.
Abonelik kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Hizmet bağlantısı aboneliği Gerekli. Yönetilen kimliğinizin erişeceği Azure aboneliği adını seçin. Hizmet bağlantısı için kaynak grubu isteğe bağlı. Yönetilen kimlik erişimini bir kaynak grubuyla sınırlamak için girin. Yönetim Grubu kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Yönetim Grubu Gerekli. Azure yönetim grubunu seçin. Machine Learning Çalışma Alanı kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Abonelik Gerekli. Azure aboneliği adını seçin. Hizmet bağlantısı için kaynak grubu isteğe bağlı. Çalışma alanını içeren kaynak grubunu seçin. ML Çalışma Alanı çalışma alanı Gerekli. Mevcut Azure Machine Learning çalışma alanının adını girin.
3. Adım: Hizmet bağlantısı ayrıntıları: bölümünde aşağıdaki parametreleri girin veya seçin:
Parametre Açıklama Hizmet Bağlantı Adı Gerekli. Görev özelliklerinde bu hizmet bağlantısına başvurmak için kullandığınız ad. Azure aboneliğinizin adı değil. Hizmet Yönetimi Referansı isteğe bağlı. ITSM veritabanından bağlam bilgileri. Açıklama isteğe bağlı. Hizmet bağlantısının açıklamasını girin. Güvenlik bölümünde Tüm işlem hatlarının bu hizmet bağlantısını kullanmasına izin vermek için Tüm işlem hatlarına erişim izni ver'i seçin. Bu seçeneği belirtmezseniz, bu hizmet bağlantısını kullanan her işlem hattına el ile erişim vermelisiniz.
Hizmet bağlantısını doğrulamak ve oluşturmak için Kaydet'i seçin.
Mevcut bir hizmet bağlantısını iş yükü kimlik federasyonu kullanmak için dönüştürme
Mevcut bir Azure Resource Manager hizmet bağlantısını hızla gizli dizi yerine kimlik doğrulaması için iş yükü kimlik federasyonu kullanacak şekilde dönüştürebilirsiniz. Hizmet bağlantınız şu gereksinimleri karşılıyorsa Azure DevOps'ta hizmet bağlantısı dönüştürme aracını kullanabilirsiniz:
- Azure DevOps başlangıçta hizmet bağlantısını oluşturmuştur. Hizmet bağlantınızı el ile oluşturursanız, Azure DevOps'un kendi kimlik bilgilerini değiştirme izinleri olmadığından hizmet bağlantısı dönüştürme aracını kullanarak hizmet bağlantısını dönüştüremezsiniz.
- Hizmet bağlantısını yalnızca bir proje kullanır. Çapraz proje hizmeti bağlantılarını dönüştüremezsiniz.
Hizmet bağlantısını dönüştürmek için:
Azure DevOps projesinde Proje ayarları>Hizmet bağlantıları'na gidin.
Daha fazla bilgi için bkz. Proje ayarlarını açma.
İş yükü kimliğini kullanmak için dönüştürmek istediğiniz hizmet bağlantısını seçin.
Dönüştür'ü seçin.
Süresi dolmuş gizli anahtara sahip bir kimlik bilginiz varsa, farklı bir dönüşüm seçeneği görürsünüz.
Yeni bir hizmet bağlantısı oluşturmak istediğinizi onaylamak için Yeniden Dönüştür'ü seçin.
Dönüştürme işlemi birkaç dakika sürebilir. Bağlantıyı geri almak istiyorsanız, yedi gün içinde bağlantıyı geri döndürmeniz gerekir.
Betik kullanarak birden çok hizmet bağlantısı dönüştürme
Birden fazla hizmet bağlantısını, artık kimlik doğrulama için iş yükü kimlik federasyonu kullanacak şekilde aynı anda güncellemek için bir betik kullanın.
Bu örnek PowerShell betiği iki parametre gerektirir: Azure DevOps kuruluşu (örnek: https://dev.azure.com/fabrikam-tailspin
) ve Azure DevOps projesi (örnek: Space game web agent
). Betik daha sonra Azure DevOps projeniz ve kuruluşunuz için ilişkili hizmet bağlantılarını alır.
Hizmet bağlantılarını iş yükü kimlik federasyonu kullanacak şekilde dönüştürürken, henüz kullanmayan her bağlantı için güncelleştirmeyi onaylamanız istenir. Onaylandığında, betik Azure DevOps REST API aracılığıyla bu hizmet bağlantılarını iş yükü kimlik federasyonu kullanmak üzere güncelleştirir.
Betiğin çalışması için PowerShell 7.3 veya üzeri ve Azure CLI gerekir. Betiği bir .ps1
dosyaya kaydedin ve PowerShell 7 kullanarak çalıştırın.
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Convert multiple Azure Resource Manager service connection(s) to use Workload identity federation
.LINK
https://aka.ms/azdo-rm-workload-identity-conversion
.EXAMPLE
./convert_azurerm_service_connection_to_oidc_simple.ps1 -Project <project> -OrganizationUrl https://dev.azure.com/<organization>
#>
#Requires -Version 7.3
param (
[parameter(Mandatory=$true,HelpMessage="Name of the Azure DevOps Project")]
[string]
[ValidateNotNullOrEmpty()]
$Project,
[parameter(Mandatory=$true,HelpMessage="Url of the Azure DevOps Organization")]
[uri]
[ValidateNotNullOrEmpty()]
$OrganizationUrl
)
$apiVersion = "7.1"
$PSNativeCommandArgumentPassing = "Standard"
#-----------------------------------------------------------
# Log in to Azure
$azdoResource = "499b84ac-1321-427f-aa17-267ca6975798" # application id of Azure DevOps
az login --allow-no-subscriptions --scope ${azdoResource}/.default
$OrganizationUrl = $OrganizationUrl.ToString().Trim('/')
#-----------------------------------------------------------
# Retrieve the service connection
$getApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints?authSchemes=ServicePrincipal&type=azurerm&includeFailed=false&includeDetails=true&api-version=${apiVersion}"
az rest --resource $azdoResource -u "${getApiUrl} " -m GET --query "sort_by(value[?authorization.scheme=='ServicePrincipal' && data.creationMode=='Automatic' && !(isShared && serviceEndpointProjectReferences[0].projectReference.name!='${Project}')],&name)" -o json `
| Tee-Object -Variable rawResponse | ConvertFrom-Json | Tee-Object -Variable serviceEndpoints | Format-List | Out-String | Write-Debug
if (!$serviceEndpoints -or ($serviceEndpoints.count-eq 0)) {
Write-Warning "No convertible service connections found"
exit 1
}
foreach ($serviceEndpoint in $serviceEndpoints) {
# Prompt user to confirm conversion
$choices = @(
[System.Management.Automation.Host.ChoiceDescription]::new("&Convert", "Converting service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Skip", "Skipping service connection '$($serviceEndpoint.name)'...")
[System.Management.Automation.Host.ChoiceDescription]::new("&Exit", "Exit script")
)
$prompt = $serviceEndpoint.isShared ? "Convert shared service connection '$($serviceEndpoint.name)'?" : "Convert service connection '$($serviceEndpoint.name)'?"
$decision = $Host.UI.PromptForChoice([string]::Empty, $prompt, $choices, $serviceEndpoint.isShared ? 1 : 0)
if ($decision -eq 0) {
Write-Host "$($choices[$decision].HelpMessage)"
} elseif ($decision -eq 1) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
continue
} elseif ($decision -ge 2) {
Write-Host "$($PSStyle.Formatting.Warning)$($choices[$decision].HelpMessage)$($PSStyle.Reset)"
exit
}
# Prepare request body
$serviceEndpoint.authorization.scheme = "WorkloadIdentityFederation"
$serviceEndpoint.data.PSObject.Properties.Remove('revertSchemeDeadline')
$serviceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
$serviceEndpoint | ConvertTo-Json -Depth 4 -Compress | Set-Variable serviceEndpointRequest
$putApiUrl = "${OrganizationUrl}/${Project}/_apis/serviceendpoint/endpoints/$($serviceEndpoint.id)?operation=ConvertAuthenticationScheme&api-version=${apiVersion}"
# Convert service connection
az rest -u "${putApiUrl} " -m PUT -b $serviceEndpointRequest --headers content-type=application/json --resource $azdoResource -o json `
| ConvertFrom-Json | Set-Variable updatedServiceEndpoint
$updatedServiceEndpoint | ConvertTo-Json -Depth 4 | Write-Debug
if (!$updatedServiceEndpoint) {
Write-Debug "Empty response"
Write-Error "Failed to convert service connection '$($serviceEndpoint.name)'"
exit 1
}
Write-Host "Successfully converted service connection '$($serviceEndpoint.name)'"
}
Gizli anahtar kullanan mevcut bir hizmet bağlantısını geri alma
Çevrilmiş otomatik hizmet bağlantısını gizli anahtarıyla yedi gün boyunca geriye döndürebilirsiniz. Yedi gün sonra el ile yeni bir sır oluşturun.
Hizmet bağlantınızı el ile oluşturur ve dönüştürürseniz, Azure DevOps'un kendi kimlik bilgilerini değiştirme izinleri olmadığından hizmet bağlantısı dönüştürme aracını kullanarak hizmet bağlantısını geri döndüremezsiniz.
Hizmet bağlantısını geri döndürmek için:
Azure DevOps projesinde Pipelines>Service bağlantıları'na gidin.
Geri dönmek için mevcut bir hizmet bağlantısını seçin.
Dönüştürmeyi özgün düzene geri döndür'e tıklayın.
Seçiminizi onaylamak için Yeniden Döndür'e tıklayın.
Mevcut hizmet sorumlusunu kullanan bir hizmet bağlantısı oluşturun.
Önceden tanımlanmış bir erişim izinleri kümesi kullanmak istiyorsanız ve bu amaçla tanımlanmış bir hizmet sorumlunuz yoksa, yeni bir hizmet sorumlusu oluşturmak için şu öğreticilerden birini izleyin:
- Kaynaklara erişebilen bir Microsoft Entra uygulaması ve hizmet sorumlusu oluşturmak için portalı kullanın
- Sertifikaya sahip bir Azure hizmet sorumlusu oluşturmak için Azure PowerShell kullanma
Mevcut hizmet sorumlusunu kullanan bir hizmet bağlantısı oluşturmak için:
Azure DevOps projesinde Proje ayarları>Hizmet bağlantıları'na gidin.
Daha fazla bilgi için bkz. Proje ayarlarını açma.
Yeni hizmet bağlantısı'nı ve ardından Azure Resource Manager ve İleri'yi seçin.
Hizmet sorumlusu (el ile) ve İleri seçin.
Yeni Azure hizmet bağlantısı iletişim kutusunda Ortam'ı seçin. Azure Stack'i seçerseniz, ortam URL'sini girin (gibi bir şey).
Kapsam Düzeyi'ni seçin. Abonelik veya Yönetim Grubu'nun seçin. Yönetim grupları , birden çok abonelikte erişimi, ilkeyi ve uyumluluğu yönetmenize yardımcı olan kapsayıcılardır.
Abonelik kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Abonelik Kimliği Gerekli. Azure abonelik kimliğini girin. Abonelik Adı Gerekli. Azure aboneliği adını girin. Yönetim Grubu kapsamı için aşağıdaki parametreleri girin:
Parametre Açıklama Yönetim Grubu Kimliği Gerekli. Azure yönetim grubu kimliğini girin. Yönetim Grubu Adı Gerekli. Azure yönetim grubu adını girin.
Kimlik Doğrulaması bölümünde aşağıdaki parametreleri girin veya seçin:
Parametre Açıklama Hizmet Sorumlusu Kimliği Gerekli. Hizmet sorumlusu kimliğini girin. Kimlik bilgileri Hizmet Sorumlusu Anahtarı veya Sertifika'ya tıklayın. Hizmet Sorumlusu Anahtarı'nı seçtiyseniz anahtarı (parola) girin. Sertifika'yı seçtiyseniz sertifikayı girin. Kiracı Kimliği Gerekli. Kiracı kimliğini girin. Doğrulamak Girdiğiniz ayarları doğrulamak için seçin. Ayrıntılar bölümünde aşağıdaki parametreleri girin:
Parametre Açıklama Bağlantı Adı Gerekli. Görev özelliklerinde bu hizmet bağlantısına başvurmak için kullandığınız ad. Azure aboneliğinizin adı değil. Açıklama isteğe bağlı. Hizmet bağlantısının açıklamasını girin. Güvenlik Tüm işlem hatlarının bu hizmet bağlantısını kullanmasına izin vermek için Tüm işlem hatlarına erişim izni ver'i seçin. Bu seçeneği belirtmezseniz, bu hizmet bağlantısını kullanan her işlem hattına el ile erişim vermelisiniz. Hizmet bağlantısını doğrulamak ve oluşturmak için Doğrula ve kaydet'i seçin.
Yardım ve destek
- Sorun giderme ipuçlarını keşfedin.
- Stack Overflow hakkında öneri alın.
- Azure DevOps Geliştirici Topluluğu'nda sorularınızı gönderin, yanıt arayın veya bir özellik önerin.
- Azure DevOps için destek alın.