Parolasız Kimlik Doğrulama için Yönetilen Kimlik
Bir VM’ye veya App Service’e sistem tarafından atanan bir yönetilen kimlik verin, Key Vault ve Blob Storage için RBAC erişimi tanıyın ve gizli bilgileri uygulama kodunuzdan kaldırın.
Parolasız Kimlik Doğrulama için Yönetilen Kimlik, CoddyKit'te ücretsiz bir Azure Fundamentals dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Azure Fundamentals öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Azure Fundamentals kursu toplamda 4 dersten oluşur.
Depolanan Kimlik Bilgileriyle İlgili Sorun
Geleneksel olarak uygulamalar, Azure hizmetlerine (Storage veya Key Vault gibi) yapılandırma dosyalarında ya da ortam değişkenlerinde depolanan bağlantı dizeleri veya API anahtarları kullanarak bağlanır. Bu kimlik bilgileri yanlışlıkla kaynak denetimine gönderilebilir, günlüklerde açığa çıkabilir veya bir ihlal sırasında çalınabilir. Yönetilen Kimlik, uygulamaların kimlik bilgilerini tamamen depolama gereksinimini ortadan kaldırır — bunun yerine Azure, kaynak adına bir belirteç oluşturup yeniler ve uygulama yalnızca çalışma zamanında Azure'dan güncel belirteci ister.
Yönetilen Kimlik Nedir?
Yönetilen Kimlik, Microsoft Entra ID içindeki bir Azure kaynağına (VM, App Service veya Function App gibi) bağlı, otomatik olarak yönetilen bir hizmet sorumlusudur. Azure platformu kimliğin kimlik bilgilerini oluşturur ve korur — bunları düzenli olarak yeniler — böylece kodunuz hiçbir zaman parola veya gizli dizi işlemez. Kaynak üzerinde çalışan uygulamalar, kısa ömürlü bir OAuth belirteci almak için Azure Instance Metadata Service (IMDS) uç noktasını çağırır: http://169.254.169.254. Uygulamalar daha sonra bu belirteci Azure hizmetlerine sunar.
# Get a token from IMDS (runs inside an Azure VM or App Service)
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://storage.azure.com/' \
-H 'Metadata: true'Sistem Atamalı ve Kullanıcı Atamalı
İki tür yönetilen kimlik vardır: Sistem atamalı kimlik tek bir Azure kaynağına bağlıdır; kaynak üzerinde etkinleştirildiğinde oluşturulur ve kaynak silindiğinde otomatik olarak silinir. Kullanıcı atamalı kimlik, ayrı olarak oluşturduğunuz ve daha sonra bir veya daha fazla Azure kaynağına bağladığınız bağımsız bir Entra ID kimliğidir. Kullanıcı atamalı kimlikler, birden çok hizmetin (örneğin birkaç Function App'in) aynı kimliği ve RBAC izinlerini paylaşması gerektiğinde, rol atamalarının yinelenmesini önlemek için kullanışlıdır.
# Enable system-assigned managed identity on an App Service
az webapp identity assign \
--resource-group myRG \
--name myWebApp
# Create and assign a user-assigned identity
az identity create --name mySharedIdentity --resource-group myRG
az webapp identity assign \
--resource-group myRG \
--name myWebApp \
--identities mySharedIdentityRBAC İzinleri Verme
Yönetilen bir kimliği etkinleştirdikten sonra hedef Azure kaynağı üzerinde ona RBAC izinleri vermeniz gerekir. Örneğin, bir App Service'in blob'ları okumasına izin vermek için depolama hesabında App Service'in yönetilen kimliğine Storage Blob Data Reader rolünü atayın. RBAC atamaları en az ayrıcalık ilkesini izler — yalnızca gerekli en düşük izinleri verin. Kesinlikle gerekli olmadıkça yönetilen bir kimliğe Owner veya Contributor atamayın.
# Get the managed identity object ID
PRINCIPAL_ID=$(az webapp identity show \
--resource-group myRG --name myWebApp \
--query principalId --output tsv)
# Assign Storage Blob Data Reader role
az role assignment create \
--assignee $PRINCIPAL_ID \
--role 'Storage Blob Data Reader' \
--scope '/subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.Storage/storageAccounts/mystorageacct'Kodda DefaultAzureCredential Kullanma
Azure SDK, birden çok kimlik doğrulama yöntemini sırayla otomatik olarak deneyen bir DefaultAzureCredential sınıfı sağlar: ortam değişkenleri, iş yükü kimliği, yönetilen kimlik, Azure CLI, Visual Studio ve diğerleri. Uygulamanız Azure üzerinde (App Service, VM, Function App) çalıştığında DefaultAzureCredential, herhangi bir kod değişikliği olmadan yönetilen kimliği otomatik olarak kullanır. Yerel ortamda geliştiriciler Azure CLI oturumları aracılığıyla kimlik doğrulaması yapar. Bu tek kimlik bilgisi sınıfı, koşullu mantık gerektirmeden tüm ortamlarda çalışır.
# Python example using DefaultAzureCredential
from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient
credential = DefaultAzureCredential()
client = BlobServiceClient(
account_url='https://mystorageacct.blob.core.windows.net',
credential=credential
)
blobs = client.get_container_client('mycontainer').list_blobs()
for blob in blobs:
print(blob.name)Azure Key Vault ile Yönetilen Kimlik
Yaygın bir yaklaşım, çalışma zamanında Azure Key Vault gizli dizilerine erişmek için yönetilen kimlik kullanmaktır. Veritabanı parolasını uygulama ayarlarında depolamak yerine Key Vault'ta depolar ve uygulamanın yönetilen kimliğine bu kasada Key Vault Secrets User rolünü verirsiniz. Uygulama başlatılırken gizli diziyi DefaultAzureCredential kullanarak Key Vault'tan alır. Bu yaklaşım, gizli dizilerin kodda, yapılandırma dosyalarında veya ortam değişkenlerinde hiçbir zaman depolanmamasını sağlar — bunlar yalnızca Key Vault'ta bulunur ve geçici olarak alınır.
# Python: Read a Key Vault secret using managed identity
from azure.identity import DefaultAzureCredential
from azure.keyvault.secrets import SecretClient
credential = DefaultAzureCredential()
client = SecretClient(
vault_url='https://mykeyvault.vault.azure.net/',
credential=credential
)
secret = client.get_secret('DatabasePassword')
print('Secret value retrieved successfully')Azure SQL Erişimi için Yönetilen Kimlik
Azure SQL Database, Entra ID kimlik doğrulamasını destekler; bu, yönetilen bir kimliğin kullanıcı adı/parola olmadan SQL'de kimlik doğrulaması yapabileceği anlamına gelir. Bunu etkinleştirmek için SQL sunucusunda bir Entra ID yöneticisi belirleyin, ardından hedef veritabanında yönetilen kimliğin görünen adı için bir CREATE USER ifadesi çalıştırın ve uygun veritabanı rolünü verin. Uygulama, Azure SDK'nın DefaultAzureCredential öğesini ve https://database.windows.net/ kapsamına sahip bir erişim belirtecini kullanarak tamamen parolasız şekilde bağlanır.
-- In Azure SQL: create a user for the managed identity
CREATE USER [myWebApp] FROM EXTERNAL PROVIDER;
ALTER ROLE db_datareader ADD MEMBER [myWebApp];
ALTER ROLE db_datawriter ADD MEMBER [myWebApp];AKS İş Yükleri için Yönetilen Kimlik
Azure Kubernetes Service'te tek tek pod'lar, İş Yükü Kimliği (AAD Pod Identity'nin ardılı) kullanarak yönetilen kimlik belirteçleri alabilir. Kullanıcı atamalı bir yönetilen kimlik oluşturur, bunu AKS OIDC veren kuruluşuyla federasyona dahil eder, Kubernetes hizmet hesabına ek açıklama eklersiniz; ardından Azure İş Yükü Kimliği web kancası, pod'un DefaultAzureCredential ile belirteç alabilmesi için gerekli ortam değişkenlerini ekler. Bu, gizli dizileri Kubernetes Secrets nesnelerinde depolamadan parolasız kimlik doğrulamayı kapsayıcılı mikro hizmetlere genişletir.
# Create federated identity credential for AKS workload identity
az identity federated-credential create \
--name myFederatedCredential \
--identity-name mySharedIdentity \
--resource-group myRG \
--issuer $(az aks show --resource-group myRG --name myAKS --query 'oidcIssuerProfile.issuerUrl' -o tsv) \
--subject 'system:serviceaccount:default:myapp-sa' \
--audiences 'api://AzureADTokenExchange'Yönetilen Kimlik Erişimini Denetleme
Yönetilen kimlik kimlik bilgileri geliştiriciler için görünmez olsa da tüm belirteç verme ve kaynak erişimi olayları günlüğe kaydedilir. Entra ID Oturum Açma günlükleri, bir yönetilen kimlik tarafından yapılan her belirteç isteğini; erişilen kaynak, zaman ve isteğin başarılı olup olmadığı bilgileriyle birlikte kaydeder. Azure Storage etkinlik günlükleri ve Key Vault denetim günlükleri, belirteç kullanılarak gerçekleştirilen belirli işlemleri kaydeder. Bu günlükler, yönetilen kimlikleri içeren güvenlik denetimleri ve olay incelemeleri için gereklidir.
# Query Entra ID sign-in logs for a managed identity
az monitor activity-log list \
--resource-group myRG \
--caller myWebApp \
--start-time 2024-06-01 \
--output tableBağlantı Dizelerinden Geçiş
Uygulamanız şu anda bağlantı dizeleri veya API anahtarları kullanıyorsa üç adımda yönetilen kimliğe geçin: 1. Adım — İşlem kaynağında yönetilen kimliği etkinleştirin. 2. Adım — Her hedef hizmette kimliğe uygun RBAC rollerini atayın. 3. Adım — Uygulama kodunu bağlantı dizesi yerine DefaultAzureCredential kullanacak şekilde güncelleyin. Geçiş doğrulandıktan sonra bağlantı dizesini App Service yapılandırmasından ve Key Vault'tan kaldırın. Bu geçiş, modern Azure SDK uygulamalarında genellikle en az düzeyde kod değişikliğiyle tamamlanabilir.
Güvenlik Avantajları Özeti
Yönetilen Kimlik, kimlik bilgilerine dayalı kimlik doğrulamaya kıyasla dört temel güvenlik avantajı sağlar: Kimlik bilgisi depolama yok — çalınabilecek veya yanlışlıkla gönderilebilecek hiçbir şey bulunmaz. Otomatik yenileme — Azure, temel sertifikaları kesinti olmadan yeniler. Kapsamlandırılmış izinler — kimliklere, en az ayrıcalık ilkesine uygun olarak yalnızca ihtiyaç duydukları RBAC rolleri verilir. Tam denetim izi — tüm erişim girişimleri Entra ID'ye ve erişilen hizmetin denetim günlüklerine kaydedilir. Her yeni Azure hizmeti tümleştirmesinde yönetilen kimlik varsayılan kimlik doğrulama yaklaşımı olmalıdır.
Hızlı Kontrol
Bu dersteki Microsoft Azure Fundamentals (AZ-900) kavramlarını anlayıp anlamadığınızı test edin.
Ders Özeti
Bu derste şunları öğrendiniz: yönetilen kimlik, Azure kaynaklarına otomatik olarak yönetilen bir Entra ID kimliği sağlayarak depolanan kimlik bilgilerine duyulan ihtiyacı ortadan kaldırır; Azure SDK içindeki DefaultAzureCredential, Azure'da yönetilen kimliği, yerel ortamda ise geliştirici kimlik bilgilerini şeffaf bir şekilde kullanır; hedef hizmetlerdeki RBAC rol atamaları ise kimliğin neleri kullanabileceğini denetler. Sırada, uygulama bileşenleri arasında gevşek bağlı iletişim sağlayan Azure Service Bus'ı inceleyeceğiz.
Sıkça Sorulan Sorular
“Parolasız Kimlik Doğrulama için Yönetilen Kimlik” dersi ücretsiz mi?
Evet — “Parolasız Kimlik Doğrulama için Yönetilen Kimlik” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Azure Fundamentals kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Azure Fundamentals kursu toplamda 4 dersten oluşur.
“Parolasız Kimlik Doğrulama için Yönetilen Kimlik” dersinde ne öğreneceğim?
Bir VM’ye veya App Service’e sistem tarafından atanan bir yönetilen kimlik verin, Key Vault ve Blob Storage için RBAC erişimi tanıyın ve gizli bilgileri uygulama kodunuzdan kaldırın. Azure Fundamentals ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Azure Fundamentals öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Azure Fundamentals, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.
“Parolasız Kimlik Doğrulama için Yönetilen Kimlik” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Azure Fundamentals dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Azure Fundamentals dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Parolasız Kimlik Doğrulama için Yönetilen Kimlik
- Ayrıştırılmış Mesajlaşma için Azure Service Bus
- Azure Container Apps
- Uçtan Uca Geliştirici İş Akışı