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:
- 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-id
aracı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:
- İlk olarak, güvenlik sorumlusunun kimliği doğrulanır ve bir OAuth 2.0 belirteci döndürülür.
- 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.credential
spring.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
, consumers
veya 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
, consumers
veya 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
, consumers
veya 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
, consumers
veya 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ü Contributor
atayı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
.