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
Hizmet sorumluları ve yönetilen kimlikler, Azure DevOps otomasyon iş akışları için güvenli, ölçeklenebilir kimlik doğrulaması sağlar. Bu Microsoft Entra kimlik türleri, geleneksel kişisel erişim belirteçlerine (PAT) göre gelişmiş güvenlik sağlar. Otomatik kimlik bilgisi yönetimi, daha kısa belirteç ömrü ve kurumsal sınıf erişim denetimleri kullanır.
Tip
Bu makalenin devamında AI kullanarak bu göreve yardımcı olabilirsiniz veya başlamak için Azure DevOps MCP Server ile yapay zeka yardımı sağlama konusuna bakın.
Hizmet sorumlularının ve yönetilen kimliklerin avantajları
Gelişmiş güvenlik
- Kısa ömürlü belirteçler: Microsoft Entra belirteçleri saatte bir sürelerinin dolmasıyla yenilenir ki bu da KAB'lere kıyasla maruz kalma riskini azaltır (bir yıla kadar sürebilir).
- Otomatik döngü: Yönetilen kimlikler kimlik bilgisi döngüsünü otomatik olarak gerçekleştirir.
- Depolanan gizli bilgi yok: Kod veya yapılandırmada uzun süreli kimlik bilgilerini depolama gereksinimi ortadan kalkar.
Önemli
Daha yüksek riskli kişisel erişim belirteçleri yerine daha güvenli Microsoft Entra belirteçleri kullanmayı düşünün. Daha fazla bilgi için bkz . PAT kullanımını azaltma. İhtiyaçlarınıza uygun kimlik doğrulama mekanizmasını seçmek için kimlik doğrulama kılavuzunu gözden geçirin.
Operasyonel mükemmellik
- Merkezli yönetim: Microsoft Entra ID ilkeleri ve Azure DevOps izinleri aracılığıyla erişimi denetleyin.
- Denetim özellikleri: Kapsamlı günlük kaydıyla kimlik doğrulama ve erişim desenlerini izleyin.
- Verimli bir şekilde ölçeklendirin: Bireysel kullanıcı bağımlılıkları olmadan kurumsal otomasyon senaryolarını destekleyin.
Modern kimlik doğrulaması
- Standartlara dayalı: OAuth 2.0 ve OpenID Connect protokollerini kullanır.
- Çok faktörlü kimlik doğrulama desteği: Kuruluş güvenlik ilkelerini devralır.
- Koşullu erişim: Bağlama göre gelişmiş güvenlik ilkeleri uygular.
Hizmet sorumlularını ve yönetilen kimlikleri anlama
Hizmet sorumluları
Service principals kiracı içindeki uygulamaları temsil eden Microsoft Entra nesnelerdir. Bir uygulamanın neler yapabileceğini, hangi kaynaklara erişebileceğini ve bunu kimlerin kullanabileceğini tanımlar. Hizmet sorumluları, bir uygulamayı Microsoft Entra ID kaydettiğinizde otomatik olarak oluşturulur ve uygulamaların kimlik doğrulaması ve kaynaklara erişmesi için güvenli bir yol sağlar.
Temel özellikler
- Microsoft Entra ID'de uygulama kaydıyla oluşturulur.
- Çok kiracılı senaryoları destekleyin.
- Açık kimlik doğrulama yönetimi (sertifikalar veya istemci gizli dizileri) gerektirir.
- Farklı ortamlarda kimlik doğrulaması gerektiren uygulamalar için idealdir.
Yönetilen kimlikler
Yönetilen kimlikler Azure tarafından otomatik olarak yönetilen özel bir hizmet ilkesi türüdür. Azure kaynaklar için Microsoft Entra ID otomatik olarak yönetilen bir kimlik sağlayarak geliştiricilerin kimlik bilgilerini yönetme gereksinimini ortadan kaldırır.
Yönetilen kimlik türleri
Sistem tarafından atanan yönetilen kimlik:
- Otomatik olarak oluşturulur ve belirli bir Azure kaynağına bağlanır.
- Azure tarafından yönetilen yaşam döngüsü (kaynak silindiğinde silinir).
- Azure kaynağıyla bire bir ilişki oluşturma.
- Tek bir Azure kaynağında dağıtılan uygulamalar için en iyi yöntemdir.
Kullanıcı tarafından atanan yönetilen kimlik:
- Tek başına Azure kaynağı olarak oluşturulur.
- Birden çok Azure kaynağına atanabilir.
- Yaşam döngüsü ilişkili kaynaklardan bağımsız olarak yönetilir.
- Birden çok kaynakta çalışan veya paylaşılan kimliğe ihtiyaç duyan uygulamalar için idealdir.
Her tür ne zaman kullanılır:
- Hizmet sorumluları: Bulutlar arası dağıtımlar, sürekli tümleştirme ve sürekli teslim (CI/CD) işlem hatları, Azure dışındaki uygulamalar.
- System tarafından atanan yönetilen kimlikler: Tek Azure kaynak uygulamaları (Azure Functions, Azure App Service).
- Kullanıcı tarafından atanan yönetilen kimlikler: Çok kaynaklı uygulamalar, paylaşılan kimlik senaryoları.
Uygulama kılavuzu
Azure DevOps kimlik doğrulaması için hizmet sorumlularını veya yönetilen kimlikleri uygulamak için bu adımları izleyin. Tam kod örnekleri için örnek uygulamalarımıza bakın.
1. Adım: Kimliğinizi oluşturma
Dağıtım senaryonuza göre uygun kimlik türünü seçin.
Seçenek A: Hizmet sorumlusu oluşturma (uygulama kaydı)
Hizmet sorumluları CI/CD işlem hatları, bulutlar arası senaryolar ve esnek dağıtım seçenekleri gerektiren uygulamalar için iyi çalışır.
uygulamayı Microsoft Entra admin center kaydedin.
App registrations>Yeni kayıt'a gidin.
Uygulamayı yapılandırın:
- Ad: Uygulamanız için açıklayıcı bir ad kullanın.
- Hesap türleri: Uygun kiracı desteğini seçin.
- Yeniden yönlendirme URI'si: Hizmet-hizmet senaryoları için boş bırakın.
Kimlik doğrulama bilgileri oluşturma
- Önerilen: Gelişmiş güvenlik için bir sertifika yükleyin.
- Alternatif: İstemci sırrı oluşturun (düzenli aralıklarla yenilenmelidir).
Önemli
Bir uygulamayı kaydettiğinizde, Azure hem uygulama nesnesi hem de hizmet sorumlusu nesnesi oluşturur. Hizmet sorumlusunun nesne kimliğini (Kurumsal Uygulamalar bölmesinde bulunur) Azure DevOps'a eklerken kullanın, uygulamanın nesne kimliğini değil.
Daha fazla bilgi için aşağıdaki makalelere bakın:
B Seçeneği: Yönetilen kimlik oluşturma
Yönetilen kimlikler, Azure barındırılan uygulamalar için en basit kimlik doğrulama deneyimini sağlar.
Sistem tarafından atanan yönetilen kimlik için:
- App Service veya Azure Functions uygulaması gibi Azure kaynağınıza gidin.
- Atanan Kimlik>Sistemi'ne gidin.
- Durumu Açık olarak değiştirin.
- Yapılandırmayı kaydetmek için Kaydet'i seçin.
Kullanıcı tarafından atanan yönetilen kimlik için:
- yönetilen kimliği Azure portalında oluşturun.
- Kaynak Oluştur>Yönetilen Kimlik oluşturma'ya gidin.
- Temel ayarları yapılandırın ve kaynağı oluşturun.
- Kaynaklara gerektiği gibi atayın.
Daha fazla bilgi için aşağıdaki makalelere bakın:
2. Adım: Kimliği Azure DevOps ekleme
kimliğinizi Microsoft Entra ID oluşturduktan sonra kaynaklara erişim vermek için Azure DevOps kuruluşunuza ekleyin.
Önkoşullar
- "Proje koleksiyonu yöneticisi rolü."
- "Proje yöneticisi veya ekip yöneticisi rolü, davet politikası ekip yöneticilerinin kullanıcı eklemesine izin verdiğinde verilir."
Kimliği ekle
kimliği Azure DevOps portalı üzerinden eklemek için:
Kuruluş Ayarları>Kullanıcıları'na gidin.
Kullanıcı ekle'yi seçin.
Hizmet sorumlunuzun veya yönetilen kimliğinizin görünen adını girin.
Uygun erişim düzeyini ve proje erişimini seçin.
Daveti gönderin.
Kimliği program aracılığıyla ekleyin:
İşlemi otomatikleştirmek için ServicePrincipalEntitlements REST API'sini kullanın.
Diğer önemli noktalar:
- Doğru kimliği bulun: Uygulama kaydının nesne kimliğini değil Microsoft Entra admin center Enterprise uygulamaları bölmesinde hizmet sorumlusunun nesne kimliğini kullanın.
- Tenant kısıtlamaları: Kimlikleri yalnızca Azure DevOps kuruluşunuzun bağlı olduğu kiracıdan ekleyebilirsiniz. Kiracılar arası senaryolar için SSS geçici çözümüne bakın.
3. Adım: İzinleri yapılandırma
Azure DevOps içinde hizmet sorumlunuz veya yönetilen kimliğiniz için ayrıntılı izinleri yapılandırın. Diğer Azure hizmetlerinden farklı olarak, Azure DevOps uygulama izinlerini Microsoft Entra yerine kendi izin modelini kullanır.
İzin seçenekleri:
- Doğrudan atama: İzinleri doğrudan kimliğe atayın.
- Group üyeliği: Azure DevOps veya Microsoft Entra güvenlik gruplarına ekleyin.
- Access düzeyleri: Uygun lisans düzeyini (Temel, Temel + Test Planları veya Visual Studio abone) atayın.
En iyi uygulamalar:
- En az ayrıcalık uygula: Yalnızca gereken en düşük izinleri verin.
- Grupları kullanma: Daha kolay bakım için izinleri gruplar aracılığıyla yönetin.
- Düzenli incelemeler: İzinleri düzenli aralıklarla denetleyin.
İzin yönetimi seçenekleri:
- Azure DevOps portal: Organizasyon ayarları>Permissions öğesini seçin.
- REST API'leri: Programlı yönetim için Hizmet Sorumlusu Graf API'lerini kullanın.
Önemli
Azure DevOps ve Microsoft Entra izinleri: Azure DevOps Microsoft Entra ID uygulama izinlerini kullanmaz. Tüm erişim denetimi, ayrıntılı proje ve kaynak düzeyinde izinler sağlayan Azure DevOps izin sistemi aracılığıyla yönetilir.
4. Adım: Microsoft Entra ID belirteçleri alma
Azure DevOps API'leri ve hizmetleriyle uygulamalarınızın kimliğini doğrulamak için erişim belirteçleri alın.
Hizmet sorumluları için
İstemci kimlik bilgileri akışını kullanın:
POST https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded
client_id={client-id}
&scope=https://app.vssps.visualstudio.com/.default
&client_secret={client-secret}
&grant_type=client_credentials
Sertifika kimlik doğrulaması kullan (önerilen):
using Microsoft.Identity.Client;
var app = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithCertificate(certificate)
.WithAuthority(new Uri($"https://login.microsoftonline.com/{tenantId}"))
.Build();
var result = await app
.AcquireTokenForClient(new[] { "https://app.vssps.visualstudio.com/.default" })
.ExecuteAsync();
string accessToken = result.AccessToken;
Yönetilen kimlikler için
Azure kaynaklardan:
using Azure.Identity;
using Azure.Core;
var credential = new ManagedIdentityCredential();
var tokenRequest = new TokenRequestContext(new[] { "https://app.vssps.visualstudio.com/.default" });
var token = await credential.GetTokenAsync(tokenRequest);
string accessToken = token.Token;
Azure Örnek Meta Veri Hizmeti'ni kullanın:
GET http://169.254.169.254/metadata/identity/oauth2/token?api-version=2019-0801&resource=https://app.vssps.visualstudio.com/
Metadata: true
Geçici işlemler için Azure CLI
Tek seferlik işlemler veya test için Azure CLI kullanın:
# For service principal
az login --service-principal --username {client-id} --password {client-secret} --tenant {tenant-id}
az account get-access-token --scope https://app.vssps.visualstudio.com/.default
# For managed identity (from Azure resource)
az login --identity
az account get-access-token --scope https://app.vssps.visualstudio.com/.default
Daha fazla bilgi için bkz. Microsoft Entra belirteçlerini edinme.
5. Adım: belirteçleri Azure DevOps ile kullanma
REST API çağrılarının ve diğer Azure DevOps işlemlerinin kimliğini doğrulamak için alınan belirteçlerinizi kullanın.
Kimliği doğrulanmış API çağrıları yapın:
using System.Net.Http;
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("Bearer", accessToken);
var response = await client.GetAsync(
"https://dev.azure.com/{organization}/_apis/projects?api-version=7.2");
Video örnekleri
Yaygın tümleştirme senaryoları
- NuGet akışları: NuGet.exe veya dotnet CLI ile bağlanın.
- Pazar Yeri yayımlama: Uzantıları komut satırı aracılığıyla yayımlayın.
- Azure Pipelines: Entra iş yükü kimliği ile Azure DevOps'a erişin.
- Git işlemleri: Git Kimlik Bilgileri Yöneticisi ile depoları kopyalama.
Tam kod örnekleri için örnek uygulamalarımıza bakın.
Yönetimle ilgili dikkat edilmesi gerekenler
Hizmet sorumluları ve yönetilen kimlikler, kullanıcı hesaplarına kıyasla farklı yönetim özelliklerine sahiptir.
Lisanslama
- Her kimlik, katıldığı her kuruluşta bir lisans gerektirir.
- Çok kuruluşlu faturalama , hizmet sorumluları için geçerli değildir.
- Grup tabanlı lisanslama kuralları otomatik olarak uygulanmaz. Lisansları doğrudan atamanız gerekir.
Kimlik yönetimi
- E-posta adresleri kullanılmaz, bu nedenle e-posta yoluyla davet yoktur.
- Azure DevOps'ta görünen adlar veya avatarlar değiştirilmez.
- Görünen adlar Microsoft Entra ID'den devralınır.
Grup üyeliği
- Microsoft Entra gruplarına ve Azure DevOps gruplarına eklenebilir.
- Microsoft Entra grup üyesi listelerinde görüntülenmesini engelleyen teknik bir sınırlaması vardır (yalnızca kullanıcı arabirimi sınırlaması).
- Yine de ait oldukları Microsoft Entra gruplardan izinleri devralabilir.
Somutlaştırma
- Kuruluşlara açıkça eklenmelidir (kullanıcılar gibi otomatik gerçekleştirme yoktur).
- Hizmet sorumluları etkileşimli olarak oturum açamadığından gereklidir.
Kullanıcı hesaplarından önemli farklar
Hizmet sorumluları ve yönetilen kimlikler, normal kullanıcılara kıyasla belirli sınırlamalara sahiptir.
Capabilities
- ✅ API erişimi için Microsoft Entra belirteçleri oluşturun.
- ✅ Azure DevOps kaynaklarına uygun izinlerle erişin.
- ✅ Güvenlik gruplarına ve ekiplere katılın.
- ❌ PATs veya Secure Shell anahtarları oluşturun.
- ❌ Etkileşimli olarak oturum açın veya web kullanıcı arabirimi aracılığıyla erişim sağlayın.
- ❌ Kuruluşlar oluşturun veya kuruluşlara sahip olun.
- ❌ Azure DevOps OAuth akışlarını destekler.
Billing
- Her kuruluşta ayrı bir lisans olarak sayılır. (Çoklu kuruluş indirimi yoktur.)
- Erişim düzeyini doğrudan atamanız gerekir. (Grup kuralları otomatik olarak uygulanmaz.)
Sıkça sorulan sorular
Q. Pat yerine neden hizmet sorumlusu veya yönetilen kimlik kullanmalıyım?
A. Hizmet sorumluları ve yönetilen kimlikler, PAT'lere göre önemli güvenlik avantajları sunar.
Güvenlik avantajları:
- Shorter lifespan: Microsoft Entra belirteçlerin süresi, bir yıla kadar sürebilen PAT'lere kıyasla saatlik olarak sona erer.
- Otomatik döndürme: Yönetilen kimlikler kimlik bilgilerini otomatik olarak döndürür.
- Paylaşılan gizli anahtar yok: Uzun süreli belirteçlerin depolanması veya yanlışlıkla ifşa edilmesi riski ortadan kalkar.
- Merkezli denetim: Kurumsal güvenlik ilkeleriyle Microsoft Entra ID aracılığıyla yönetilir.
Operasyonel avantajlar:
- Denetim kaydı: Kimlik doğrulama ve erişim desenlerini tamamen günlüğe kaydeder.
- Koşullu erişim: Konum, cihaz ve risk faktörlerine göre ilkeler uygular.
- Hizmet hesabı yok: Otomasyon için tek tek kullanıcı hesaplarına bağımlılığı ortadan kaldırır.
Geçiş örnekleri için bkz. PAT'leri Microsoft Entra belirteçleriyle değiştirme.
Q. Hizmet sorumluları ve yönetilen kimliklerdeki oran sınırlamaları nelerdir?
A. Hizmet sorumluları ve yönetilen kimlikler, kullanıcılarla aynı hız sınırlarına sahiptir.
Q. Bu özelliği kullanmak daha mı pahalı olacak?
A. Hizmet sorumluları ve yönetilen kimlikler, erişim düzeyine göre kullanıcılar gibi fiyatlendirilir. Önemli farklar şunlardır:
- Çok kuruluşlu faturalama indirimi yok: Her kimlik, her kuruluşta ayrı bir lisans olarak sayılır.
- Lisans ataması: Erişim düzeyleri doğrudan atanmalıdır. (Grup kuralları otomatik olarak uygulanmaz.)
- Same fiyatlandırma katmanları: Temel, Temel + Test Planları ve Visual Studio abone ücretleri geçerlidir.
Q. Kuruluşuma farklı bir kiracıdan yönetilen kimlik ekleyebilir miyim?
A. Kimlikleri doğrudan kuruluşunuzun bağlı kiracısından ekleyebilirsiniz. Kiracılar arası senaryolar için bu geçici çözümü kullanın.
Çok kiracılı ortamda yönetilen kimlik oluşturmak için:
- Kaynak kiracısında kullanıcı tarafından atanan bir yönetilen kimlik oluşturun.
- Bunu sanal makine veya İşlevler uygulaması gibi bir Azure kaynağına atayın).
- Anahtar kasası oluştur ve sertifika oluştur (PEM olmayan biçim).
- Gizli dizi alma ve listeleme izinleriyle anahtar kasasına yönetilen kimlik erişimi verin.
- Sertifikayı CER biçiminde indirin (yalnızca ortak anahtar).
- Uygulamayı hedef kiracıya kaydedin.
- Sertifikayı uygulama kaydına yükleyin.
- Hizmet sorumlusunu Azure DevOps kuruluşuna ekleyin.
- Anahtar kasasından sertifikayı kullanarak kimlik doğrulamasını yapılandırın.
// Example: Acquire token using managed identity certificate
public static async Task<string> GetSecret(string keyVaultName, string secretName)
{
var keyVaultUri = new Uri($"https://{keyVaultName}.vault.azure.net");
var client = new SecretClient(keyVaultUri, new ManagedIdentityCredential());
var keyVaultSecret = await client.GetSecretAsync(secretName);
return keyVaultSecret.Value.Value;
}
private static async Task<AuthenticationResult> GetAppRegistrationAADAccessToken(
string applicationClientID, string appTenantId)
{
byte[] privateKeyBytes = Convert.FromBase64String(await GetSecret(keyVaultName, secretName));
var certificate = new X509Certificate2(privateKeyBytes, (string)null, X509KeyStorageFlags.MachineKeySet);
var app = ConfidentialClientApplicationBuilder.Create(applicationClientID)
.WithCertificate(certificate)
.WithAuthority(new Uri($"https://login.microsoftonline.com/{appTenantId}"))
.Build();
var result = await app.AcquireTokenForClient(
new[] { "499b84ac-1321-427f-aa17-267ca6975798/.default" })
.ExecuteAsync();
return result;
}
Önemli
Güvenlikle ilgili en iyi yöntemler için sertifikaları düzenli olarak döndürün.
Yaygın hatalar ve çözümler
Adı veya tanımlayıcısı olan Git deposu yok veya izinleriniz yok
Çözüm: Hizmet sorumlusunun en az bir Temel lisansa sahip olduğundan emin olun. Paydaş lisansları depo erişimi sağlamaz.
Nesne kimliğiyle hizmet sorumlusu oluşturulamadı
Çözüm: Uygulama kaydının nesne kimliğini değil Kurumsal uygulamalar bölmesinden hizmet sorumlusunun nesne kimliğini kullandığınızı doğrulayın.
Doğru kimliği bulmak için:
- Microsoft Entra admin center>Enterprise applications adresine gidin.
- Uygulamanızın adını arayın.
- Kurumsal uygulamalar bölmesinde nesne kimliğini kullanın.
Erişim reddedildi: Kullanıcı eklemek için izin gerekiyor
Olası nedenler ve çözümler:
- Yetersiz rol: Proje koleksiyonu yöneticisi (PCA) veya davet izinleri etkinleştirilmiş bir proje veya ekip yöneticisi olmalıdır.
- İlke kısıtlaması: Ekip ve proje yöneticilerinin yeni kullanıcıları davet etmelerine izin ver ilkesinin etkinleştirilip etkinleştirilmediğini denetleyin.
- License assignment: Project yöneticileri davet sırasında lisans atayamaz. Lisans değişiklikleri için PCA'ya başvurun.
Azure DevOps Grafik Listesi API'sinde boş liste döndürülüyor
Çözüm: Tüm sayfalarda yineleme yapmak için kullanın continuationToken . Api sayfalandırma davranışı nedeniyle hizmet sorumluları sonraki sayfalarda görünebilir.
TF401444: Oturum açma gerekiyor hatası
Çözüm: Hizmet sorumlusunun gerekli izinlerle kuruluşa düzgün bir şekilde eklendiğinden emin olun. Bu hata, kimliğin kuruluşta tanınmadığını gösterir.
Hizmet sorumlusu ve yönetilen kimlik kurulumu için yapay zeka kullanma
Azure DevOps MCP Server yapay zeka ajanınıza ajan modu ile bağlıysa, hizmet ilkesi ve yönetilen kimlik doğrulaması ayarlamak ve sorun gidermek için doğal dil istemlerini kullanabilirsiniz.
| Görev | Örnek talimat |
|---|---|
| Yönetilen kimliği ayarla | Walk me through setting up a managed identity for an Azure Function that needs to access Azure DevOps APIs |
| Hizmet sorumlusu oluşturma | Show me how to create a service principal in Microsoft Entra ID and add it to my Azure DevOps organization with the correct permissions |
| Jeton edin | Write C# code to acquire a Microsoft Entra token for Azure DevOps using a service principal with certificate authentication |
| Kiracılar arası erişim | How do I configure a service principal to access Azure DevOps in a different tenant? |
| Kimlik doğrulama hatalarını giderme | I'm getting a VssUnauthorizedException when using a managed identity to call Azure DevOps APIs — help me troubleshoot |
| PAT'lerden geçiş | Help me migrate my Azure DevOps automation from PAT-based authentication to a managed identity for an Azure-hosted application |
Uyarı
Aracı modu ve MCP Sunucusu doğal dil kullandığından, bu istemleri ayarlayabilir veya sonuçları iyileştirmek için takip soruları sorabilirsiniz.