Aracılığıyla paylaş


Spring Cloud Azure kimlik doğrulaması

Bu makale şunlar için geçerlidir: ✔️ Sürüm 4.14.0 ✔️ Sürüm 5.8.0

Bu makalede tüm Spring Cloud Azure kimlik doğrulama yöntemleri açıklanmaktadır.

DefaultAzureCredential

DefaultAzureCredential, uygulamanın Azure Bulut'ta çalıştırılmasının amaçlandığı çoğu senaryo için uygundur. Bunun nedeni, DefaultAzureCredential geliştirme ortamında kimlik doğrulaması yapmak için kullanılan kimlik bilgileriyle dağıtıldığında kimlik doğrulaması için yaygın olarak kullanılan kimlik bilgilerini birleştirmesidir.

Dekont

DefaultAzureCredential , makul varsayılan davranışlarla yaygın senaryoları işleyerek SDK ile çalışmaya başlamayı basitleştirmeye yöneliktir. Daha fazla denetim istiyorsanız veya senaryonuz varsayılan ayarlar tarafından sunulmadıysa, diğer kimlik bilgileri türlerini kullanmanız gerekir.

DefaultAzureCredential, sırasıyla aşağıdaki mekanizmaları kullanarak kimlik doğrulaması gerçekleştirmeye çalışır:

Diagram showing the authentication mechanism for `DefaultAzureCredential`.

  • Ortam: DefaultAzureCredential, ortam değişkenleri aracılığıyla belirtilen hesap bilgilerini okur ve kimlik doğrulaması için bunları kullanır.
  • Yönetilen Kimlik: Uygulamanın Yönetilen Kimlik özelliğinin etkin olduğu bir Azure konağına dağıtılması durumunda DefaultAzureCredential, ilgili hesapla kimlik doğrulaması gerçekleştirir.
  • IntelliJ - Azure Toolkit for IntelliJ aracılığıyla kimlik doğrulaması yaptıysanız, DefaultAzureCredential bu hesapta kimlik doğrulaması yapılır.
  • Visual Studio Code - Visual Studio Code Azure Hesabı eklentisi aracılığıyla kimlik doğrulaması yaptıysanız, DefaultAzureCredential bu hesapla kimlik doğrulaması yapılır.
  • Azure CLI - Azure CLI az login komutuyla bir hesabın kimliğini doğruladıysanız, DefaultAzureCredential bu hesapla kimlik doğrulaması yapılır.

Bahşiş

Güvenlik sorumlusuna Azure kaynağına erişmek için yeterli izin verildiğinden emin olun. Daha fazla bilgi için bkz . Microsoft Entra Id ile erişimi yetkilendirme.

Dekont

Spring Cloud Azure AutoConfigure 4.1.0'dan bu yana, adlı springCloudAzureCredentialTaskExecutor bir ThreadPoolTaskExecutor fasulye varsayılan olarak otomatik olarak kaydedilir ve Azure Identity tarafından oluşturulan tüm iş parçacıklarını yönetir. Bu iş parçacığı havuzu tarafından yönetilen her iş parçacığının adı ile az-identity-ön eklenmiştir. Bu ThreadPoolTaskExecutor fasulye Spring Boot tarafından sağlanan fasulyeden Executor bağımsızdır.

Yönetilen kimlikler

Yaygın bir zorluk, çözüm oluşturan farklı bileşenler arasındaki iletişimin güvenliğini sağlamak için kullanılan gizli dizilerin ve kimlik bilgilerinin yönetimidir. Yönetilen kimlikler, kimlik bilgilerini yönetme gereksinimini ortadan kaldırır. Yönetilen kimlikler, Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlanırken uygulamaların kullanması için bir kimlik sağlar. Uygulamalar, Microsoft Entra belirteçlerini almak için yönetilen kimliği kullanabilir. Örneğin bir uygulama, kimlik bilgilerini güvenli bir şekilde depolayabileceğiniz veya depolama hesaplarına erişebileceğiniz Azure Key Vault gibi kaynaklara erişmek için yönetilen kimlik kullanabilir.

Uygulamanızda bağlantı dizesi veya anahtar kullanmak yerine yönetilen kimlik kullanılmasını öneririz çünkü daha güvenlidir ve gizli dizileri ve kimlik bilgilerini yönetme zahmetini azaltır. Bu durumda, DefaultAzureCredential yerel olarak depolanan hesap bilgilerini kullanarak yerel olarak geliştirme, ardından uygulamayı Azure Bulut'a dağıtma ve yönetilen kimlik kullanma senaryosuna daha iyi hizmet verebilir.

Yönetilen kimlik türleri

İki tür yönetilen kimlik vardır:

  • Sistem tarafından atanan - Bazı Azure hizmetleri, yönetilen kimliği doğrudan bir hizmet örneğinde etkinleştirmenize olanak tanır. Sistem tarafından atanan yönetilen kimliği etkinleştirdiğinizde, Microsoft Entra'da söz konusu hizmet örneğinin yaşam döngüsüne bağlı bir kimlik oluşturulur. Bu nedenle, kaynak silindiğinde, Azure sizin için kimliği otomatik olarak siler. Tasarım gereği, yalnızca bu Azure kaynağı Microsoft Entra ID’den belirteç istemek için bu kimliği kullanabilir.
  • Kullanıcı tarafından atanan - Yönetilen kimliği tek başına Azure kaynağı olarak da oluşturabilirsiniz. Kullanıcı tarafından atanan bir yönetilen kimlik oluşturabilir ve bunu bir Azure hizmetinin bir veya daha fazla örneğine atayabilirsiniz. Kullanıcı tarafından atanan yönetilen kimlikler ile kimlik, onu kullanan kaynaklardan ayrı olarak yönetilir.

Dekont

Kullanıcı tarafından atanan yönetilen kimliği kullanırken, veya spring.cloud.azure.<azure-service>.credential.managed-identity-client-idaracılığıyla spring.cloud.azure.credential.managed-identity-client-id istemci kimliğini belirtebilirsiniz. Sistem tarafından atanan bir yönetilen kimlik kullanıyorsanız kimlik bilgisi yapılandırmasına ihtiyacınız yoktur.

Bahşiş

Güvenlik sorumlusuna Azure kaynağına erişmek için yeterli izin verildiğinden emin olun. Daha fazla bilgi için bkz . Microsoft Entra Id ile erişimi yetkilendirme.

Yönetilen kimlik hakkında daha fazla bilgi için bkz . Azure kaynakları için yönetilen kimlikler nelerdir?.

Diğer kimlik bilgisi türleri

Daha fazla denetim istiyorsanız veya senaryonuz veya varsayılan ayarları tarafından DefaultAzureCredential sunulmadıysa, diğer kimlik bilgileri türlerini kullanmanız gerekir.

Microsoft Entra Id ile kimlik doğrulaması ve yetkilendirme

Microsoft Entra Id ile Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak bir kullanıcı veya uygulama hizmet sorumlusu olabilecek bir güvenlik sorumlusuna izin vekleyebilirsiniz. Bir güvenlik sorumlusu (kullanıcı veya uygulama) bir Event Hubs kaynağı gibi bir Azure kaynağına erişmeye çalıştığında istek yetkilendirilmelidir. Microsoft Entra Id ile kaynağa erişim iki adımlı bir işlemdir:

  1. İlk olarak, güvenlik sorumlusunun kimliği doğrulanır ve bir OAuth 2.0 belirteci döndürülür.
  2. Ardından belirteç, belirtilen kaynağa erişim yetkisi vermek için Azure hizmetine yapılan bir isteğin parçası olarak geçirilir.

Microsoft Entra ID ile kimlik doğrulaması

Uygulamaları Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlamak için aşağıdaki yapılandırmaları veya spring.cloud.azure.credentialspring.cloud.azure.<azure-service>.credential

Aşağıdaki tabloda kimlik doğrulama özellikleri listelenir:

Özellik Açıklama
istemci kimliği Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci kimliği.
client-secret Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak istemci gizli dizisi.
istemci-sertifika-yolu Azure ile hizmet sorumlusu kimlik doğrulaması gerçekleştirirken kullanılacak PEM sertifika dosyasının yolu.
client-certificate-password Sertifika dosyasının parolası.
username Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak kullanıcı adı.
password Azure ile kullanıcı adı/parola kimlik doğrulaması gerçekleştirirken kullanılacak parola.
yönetilen kimlik etkin Yönetilen kimliğin etkinleştirilip etkinleştirilmeyileceği.

Bahşiş

Tüm Spring Cloud Azure yapılandırma özelliklerinin listesi için bkz . Spring Cloud Azure yapılandırma özellikleri.

Uygulama, kullanılabilir bir kimlik bilgilerini bulmak için birkaç yere bakar ve hiçbir kimlik bilgisi özelliği yapılandırılmamışsa kullanır DefaultAzureCredential . Belirli bir kimlik bilgisi kullanmak istiyorsanız, rehberlik için aşağıdaki örneklere bakın.

Aşağıdaki örnekte, sistem tarafından atanan yönetilen kimliği kullanarak kimlik doğrulamasının nasıl yapılacağını gösterilmektedir:

spring.cloud.azure:
  credential:
    managed-identity-enabled: true

Aşağıdaki örnekte, kullanıcı tarafından atanan yönetilen kimlik kullanılarak kimlik doğrulamasının nasıl yapılacağını gösterilmektedir:

spring.cloud.azure:
  credential:
    managed-identity-enabled: true
    client-id: ${AZURE_CLIENT_ID}

Aşağıdaki örnekte, istemci gizli dizisiyle hizmet sorumlusu kullanarak kimlik doğrulamasının nasıl yapılacağını gösterilmektedir:

spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    client-secret: ${AZURE_CLIENT_SECRET}
  profile:
    tenant-id: <tenant>

Dekont

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Aşağıdaki örnekte, istemci PFX sertifikasıyla hizmet sorumlusu kullanarak kimlik doğrulaması yapma adımları gösterilmektedir:

spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
    client-certificate-password: ${AZURE_CLIENT_CERTIFICATE_PASSWORD}
  profile:
    tenant-id: <tenant>

Dekont

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Aşağıdaki örnekte, istemci PEM sertifikasıyla hizmet sorumlusu kullanarak kimlik doğrulaması yapma adımları gösterilmektedir:

spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
  profile:
    tenant-id: <tenant>

Dekont

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Aşağıdaki örnekte, kullanıcı kimlik bilgilerini kullanarak kimlik doğrulamasının nasıl yapılacağını gösterilmektedir:

spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    username: ${AZURE_USER_USERNAME}
    password: ${AZURE_USER_PASSWORD}

Aşağıdaki örnekte farklı bir hizmet sorumlusu kullanarak Key Vault ile kimlik doğrulaması gerçekleştirme adımları gösterilmektedir. Bu örnekte, uygulama iki kimlik bilgisi ile yapılandırılır: bir sistem tarafından atanan yönetilen kimlik ve bir hizmet sorumlusu. Key Vault Gizli Anahtarı istemcisi hizmet sorumlusunu kullanır, ancak diğer bileşenler bunun yerine yönetilen kimliği kullanır.

spring.cloud.azure:
  credential:
    managed-identity-enabled: true
  keyvault.secret:
    credential:
      client-id: ${AZURE_CLIENT_ID}
      client-secret: ${AZURE_CLIENT_SECRET}
    profile:
      tenant-id: <tenant>

Dekont

için tenant-id izin verilen değerler şunlardır: common, organizations, consumersveya kiracı kimliği. Bu değerler hakkında daha fazla bilgi için Hata AADSTS50020 - Kimlik sağlayıcısı kullanıcı hesabı kiracıda yok hatasının Yanlış uç nokta (kişisel ve kuruluş hesapları) kullanıldı bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz . Microsoft Entra Id'de tek kiracılı uygulamayı çok kiracılıya dönüştürme.

Microsoft Entra Kimliği ile erişimi yetkilendirme

Yetkilendirme adımı için güvenlik sorumlusuna bir veya daha fazla Azure rolü atanmalıdır. Güvenlik sorumlusuna atanan roller, sorumlunun sahip olacağı izinleri belirler.

Bahşiş

Tüm Azure yerleşik rollerinin listesi için bkz . Azure yerleşik rolleri.

Aşağıdaki tabloda Spring Cloud Azure'da desteklenen Azure hizmetlerine erişimi yetkilendirmeye yönelik Azure yerleşik rolleri listelenmektedir:

Rol Açıklama
Uygulama Yapılandırması Veri Sahibi Uygulama Yapılandırması verilere tam erişime izin verir.
Veri Okuyucusu'Uygulama Yapılandırması Uygulama Yapılandırması verilere okuma erişimine izin verir.
Azure Event Hubs Veri Sahibi Azure Event Hubs kaynaklarına tam erişim sağlar.
Azure Event Hubs Veri Alıcısı Azure Event Hubs kaynaklarına erişim izni verir.
Azure Event Hubs Veri Göndereni Azure Event Hubs kaynaklarına erişim göndermeye izin verir.
Azure Service Bus Veri Sahibi Azure Service Bus kaynaklarına tam erişim sağlar.
Azure Service Bus Veri Alıcısı Azure Service Bus kaynaklarına erişim izni verir.
Azure Service Bus Veri Göndereni Azure Service Bus kaynaklarına erişim göndermeye izin verir.
Depolama Blob Verileri Sahibi POSIX erişim denetimi atama dahil olmak üzere Azure Depolama blob kapsayıcılarına ve verilerine tam erişim sağlar.
Depolama Blob Verileri Okuyucusu Azure Depolama kapsayıcılarını ve bloblarını okuyun ve listeleyin.
Kuyruk Veri Okuyucusu'Depolama Azure Depolama kuyruklarını ve kuyruk iletilerini okuyun ve listeleyin.
Redis Cache Katkıda Bulunanı Redis önbelleklerini yönetme.

Dekont

Event Hubs, Service Bus ve Depolama Kuyruğu için bağlantı dizesi veya Redis için Cache özelliklerini almak için Spring Cloud Azure Resource Manager'ı kullanırken Azure yerleşik rolünü Contributoratayın. Redis için Azure Cache özeldir ve Redis özelliklerini almak için rolü de atayabilirsinizRedis Cache Contributor.

Dekont

Key Vault erişim ilkesi, belirli bir güvenlik sorumlusuna (kullanıcı, uygulama veya kullanıcı grubu) Key Vault gizli dizileri, anahtarları ve sertifikaları üzerinde farklı işlemler gerçekleştirip gerçekleştiremeyeceğini belirler. Erişim ilkelerini Azure portalını, Azure CLI'yı veya Azure PowerShell'i kullanarak atayabilirsiniz. Daha fazla bilgi için bkz . Key Vault erişim ilkesi atama.

Önemli

Azure Cosmos DB iki yerleşik rol tanımını kullanıma sunar: Cosmos DB Built-in Data Reader ve Cosmos DB Built-in Data Contributor. Ancak rol yönetimi için Azure portal desteği henüz sağlanmamıştır. İzin modeli, rol tanımları ve rol ataması hakkında daha fazla bilgi için bkz . Azure Cosmos DB hesabınız için Microsoft Entra Id ile rol tabanlı erişim denetimini yapılandırma.

SAS belirteçleri

Paylaşılan Erişim İmzası (SAS) ile kimlik doğrulaması için hizmetleri de yapılandırabilirsiniz. spring.cloud.azure.<azure-service>.sas-token , yapılandırılan özelliktir. Örneğin, Depolama Blob hizmetinde kimlik doğrulaması yapmak için kullanınspring.cloud.azure.storage.blob.sas-token.

Bağlantı dizeleri

Bağlan dize, bağlantı bilgileri ve kimlik bilgileri sağlamak için bazı Azure hizmetleri tarafından desteklenir. bağlantı dizesi kullanarak bu Azure hizmetlerine bağlanmak için yapılandırınspring.cloud.azure.<azure-service>.connection-string. Örneğin, Event Hubs hizmetine bağlanmak için yapılandırın spring.cloud.azure.eventhubs.connection-string .