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.
Bu makalede Spring Cloud Azure kimlik doğrulama yöntemleri açıklanmaktadır ve Azure kaynaklara erişimin güvenliğini sağlamak için doğru kimlik bilgisi türünü seçmenize yardımcı olur.
Microsoft Entra Id ile kimlik doğrulaması ve yetkilendirme
Microsoft Entra ID kullanarak Azure rol tabanlı erişim denetimini (Azure RBAC) kullanarak bir kullanıcı veya uygulama hizmet sorumlusu olabilecek bir güvenlik sorumlusuna izinler verilmektedir. Güvenlik sorumlusu (kullanıcı veya uygulama) Event Hubs kaynağı gibi bir Azure kaynağına erişmeye çalıştığında, istek yetkilendirilmelidir. Microsoft Entra ID kullanarak kaynağa erişim iki adımlı bir işlemdir:
- İlk olarak, güvenlik sorumlusunun kimliğini doğrulayıp bir OAuth 2.0 belirteci döndürür.
- Ardından belirteci belirtilen kaynağa erişim yetkisi vermek için Azure hizmetine bir isteğin parçası olarak geçirin.
Kimlik bilgisi türleri
Spring Cloud Azure, kimlik doğrulaması için , WorkloadIdentityCredential, , ManagedIdentityCredentialClientSecretCredential, AzureCliCredentialve daha fazlası gibi DefaultAzureCredentialfarklı kimlik bilgileri türlerini yapılandırmanızı sağlar.
DefaultAzureCredential
DefaultAzureCredential, uygulamanın Azure Bulut'ta çalıştırılması amaçlandığı çoğu senaryo için uygundur çünkü aşağıdaki kimlik bilgilerini birleştirir:
- Dağıtıldığında kimlik doğrulaması yapmak için yaygın olarak kullanılan kimlik bilgileri.
- Geliştirme ortamında kimlik doğrulaması yapmak için kullanılan kimlik bilgileri.
Not
DefaultAzureCredentialyaygın senaryoları makul varsayılan davranışlarla işleyerek Azure SDK kullanmaya başlamayı kolaylaştırır. Daha fazla denetim istiyorsanız veya varsayılan ayarlar senaryonuzu desteklemiyorsa, diğer kimlik bilgileri türlerini kullanın.
DefaultAzureCredential sırayla aşağıdaki mekanizmalar aracılığıyla kimlik doğrulaması yapmaya çalışır:
- Ortam -
DefaultAzureCredentialortam değişkenleri aracılığıyla belirtilen hesap bilgilerini okumaya çalışır ve kimlik doğrulaması için kullanır. - Yönetilen Kimlik - Uygulama, Yönetilen Kimlik etkinleştirilmiş bir Azure konağına dağıtıldıysa,
DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulamayı dener. - İş Yükü Kimliği - Uygulama bir sanal makineye (VM) dağıtıldıysa,
DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulaması yapmaya çalışır. - Paylaşılan Belirteç Önbelleği - Visual Studio aracılığıyla kimlik doğrulaması aldıysanız,
DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulamayı dener. - IntelliJ - Azure Toolkit for IntelliJ aracılığıyla kimlik doğrulaması aldıysanız,
DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulamayı dener. - Azure CLI - Azure CLI
az loginkomutuyla bir hesabın kimliğini doğruladıysanız,DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulamayı dener. - Azure PowerShell - Azure PowerShell aracılığıyla kimlik doğrulaması aldıysanız,
DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulamayı dener. - Azure Geliştirici CLI'sı - Azure Geliştirici CLI'sı aracılığıyla kimlik doğrulaması aldıysanız,
DefaultAzureCredentialbu hesabı kullanarak kimlik doğrulamayı dener.
Bahşiş
Güvenlik sorumlusunun Azure kaynağına erişmek için yeterli izne sahip olduğundan emin olun. Daha fazla bilgi için bkz. Microsoft Entra ID ile erişimi yetkilendirme.
Not
Spring Cloud Azure AutoConfigure 4.1.0'dan bu yana Azure Identity tarafından oluşturulan tüm iş parçacıklarını yönetmek için ThreadPoolTaskExecutor adlı bir springCloudAzureCredentialTaskExecutor çekirdeği kaydetmeniz gerekir. Bu iş parçacığı havuzu tarafından yönetilen her iş parçacığının adı az-identity-ön ekindedir. Bu ThreadPoolTaskExecutor fasulye, Spring Boot tarafından sağlanan Executor fasulyeden 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çleri 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ın çü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 senaryosuna daha iyi hizmet eder, ardından uygulamayı Azure Bulut'a dağıtıp yönetilen kimliği kullanır.
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 bu hizmet örneğinin yaşam döngüsüne bağlı bir kimlik oluşturursunuz. Bu nedenle, kaynağı sildiğinizde 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 kimliklerle, kimliği kullanan kaynaklardan ayrı olarak yönetirsiniz.
Not
Kullanıcı tarafından atanan bir yönetilen kimlik kullanırken veya aracılığıyla spring.cloud.azure.credential.client-idspring.cloud.azure.<azure-service>.credential.client-idistemci kimliğini belirtin. Sistem tarafından atanan bir yönetilen kimlik kullanıyorsanız kimlik bilgisi yapılandırmasına ihtiyacınız yoktur.
Bahşiş
Azure kaynağına erişmek için güvenlik sorumlusunun yeterli izne sahip olduğundan 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
tarafından DefaultAzureCredentialsağlanandan daha fazla denetim istiyorsanız veya varsayılan ayarlar senaryonuzu desteklemiyorsa, diğer kimlik bilgileri türlerini kullanın.
Microsoft Entra Kimliği ile kimlik doğrulaması
Uygulamaları Microsoft Entra kimlik doğrulamasını destekleyen kaynaklara bağlamak için veya spring.cloud.azure.<azure-service>.credentialön ekiyle spring.cloud.azure.credential aşağıdaki yapılandırmaları ayarlayın.
Aşağıdaki tabloda kimlik doğrulama özellikleri listelenir:
| Mülk | Açıklama |
|---|---|
client-id |
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. |
client-certificate-path |
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. |
managed-identity-enabled |
Yönetilen kimliğin etkinleştirilip etkinleştirilmeyileceği. |
token-credential-bean-name |
Azure ile kimlik doğrulaması yaparken kullanılacak TokenCredential türündeki fasulye adı. |
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 çeşitli yerlerde arar. her Azure SDK istemci oluşturucu fabrikası, özelliğini token-credential-bean-namebelirtirseniz önce türünde TokenCredential bir özel fasulye benimser ve kimlik bilgisi özelliklerini yapılandırmazsanız kullanmaya DefaultAzureCredential geri döner.
Özelleştirilmiş bir TokenCredential çekirdeği kullanarak kimlik doğrulaması
Aşağıdaki örnekte, kimlik doğrulamasını yapmak için özel TokenCredential bir çekirdeğin nasıl tanımlanacağı gösterilmektedir:
@Bean
TokenCredential myTokenCredential() {
// Your concrete TokenCredential instance
}
spring.cloud.azure:
credential:
token-credential-bean-name: myTokenCredential
Sistem tarafından atanan yönetilen kimliği kullanarak kimlik doğrulaması
Aşağıdaki örnek, sistem tarafından atanan yönetilen kimlik kullanılarak kimlik doğrulamasının nasıl yapılacağını gösterir:
spring.cloud.azure:
credential:
managed-identity-enabled: true
Kullanıcı tarafından atanan yönetilen kimliği kullanarak kimlik doğrulaması
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}
İstemci gizli anahtarıyla hizmet sorumlusu kullanarak kimlik doğrulaması yapma
Aşağıdaki örnekte, istemci gizli anahtarıyla 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>
Not
tenant-id için 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ından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta kullanıldı (kişisel ve kuruluş hesapları) bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
İstemci sertifikasıyla hizmet sorumlusu kullanarak kimlik doğrulaması yapma
Aşağıdaki örnek, istemci PFX sertifikasıyla hizmet sorumlusu kullanarak kimlik doğrulamasının nasıl yapılacağını gösterir:
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>
Not
tenant-id için 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ından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta kullanıldı (kişisel ve kuruluş hesapları) bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
Aşağıdaki örnekte, istemci PEM sertifikasıyla 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-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
profile:
tenant-id: <tenant>
Not
tenant-id için 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ından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta kullanıldı (kişisel ve kuruluş hesapları) bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
Kullanıcı kimlik bilgilerini kullanarak kimlik doğrulaması
Aşağıdaki örnekte, kullanıcı kimlik bilgileri kullanılarak 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}
Diğerlerinden farklı bir kimlik bilgisi kullanarak hizmetin kimliğini doğrulama
Aşağıdaki örnek, farklı bir hizmet sorumlusu kullanarak Key Vault ile kimlik doğrulaması yapmayı gösterir. 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 kimlik 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>
Not
tenant-id için 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ından kullanıcı hesabı kiracımevcut değil bölümünün Yanlış uç nokta kullanıldı (kişisel ve kuruluş hesapları) bölümüne bakın. Tek kiracılı uygulamanızı dönüştürme hakkında bilgi için bkz. Tek kiracılı uygulamayı Microsoft Entra IDüzerinde çok kiracılıya dönüştürme.
Microsoft Entra Kimliği ile erişimi yetkilendirme
Yetkilendirme adımı, güvenlik sorumlusuna bir veya daha fazla Azure rolü atamayı gerektirir. Güvenlik sorumlusuna atadığınız roller, sorumlunun sahip olduğu izinleri belirler.
Bahşiş
Tüm Azure yerleşik rollerinin listesi için bkz.
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ırma veri sahibi |
Uygulama Yapılandırması verilerine tam erişime izin verir. |
| uygulama yapılandırma veri okuyucu |
Uygulama Yapılandırması verilerine 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 blobu veri sahibi |
POSIX erişim denetimi atama dahil olmak üzere Azure Depolama blob kapsayıcılarına ve verilerine tam erişim sağlar. |
| depolama blobu veri okuyucu |
Azure Depolama kapsayıcılarını ve bloblarını okuyun ve listeleyin. |
| depolama kuyruğu veri okuyucu |
Azure Depolama kuyruklarını ve kuyruk iletilerini okuyun ve listeleyin. |
| Redis Cache Katkıda Bulunanı |
Redis önbelleklerini yönetme. |
Not
Event Hubs, Service Bus ve Depolama Kuyruğu için bağlantı dizelerini veya Redis için Cache'in özelliklerini almak için Spring Cloud Azure Resource Manager kullandığınızda, Azure yerleşik rolünü Contributoratayın. Redis için Azure Cache özeldir ve Redis özelliklerini almak için Redis Cache Contributor rolünü de atayabilirsiniz.
Not
Key Vault erişim ilkesi, belirli bir güvenlik sorumlusuna (kullanıcı, uygulama veya kullanıcı grubu) Key Vault gizli diziler, anahtarlar ve sertifikalar üzerinde farklı işlemler gerçekleştirip gerçekleştiremeyeceğini belirler. Azure portalını, Azure CLI veya Azure PowerShell kullanarak erişim ilkeleri 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çlerini kullanarak kimlik doğrulaması
Paylaşılan Erişim İmzası (SAS) kullanarak da hizmetleri kimlik doğrulaması için yapılandırabilirsiniz. Bu kimlik doğrulamasını spring.cloud.azure.<azure-service>.sas-token yapılandırmak için özelliğini kullanın. Örneğin, Depolama Blobu hizmetinde kimlik doğrulaması yapmak için kullanın spring.cloud.azure.storage.blob.sas-token .
Bağlantı dizelerini kullanarak kimlik doğrulaması
Bazı Azure hizmetleri, bağlantı bilgilerini ve kimlik bilgilerini sağlamak için bağlantı dizelerini destekler. Bağlantı dizelerini 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 spring.cloud.azure.eventhubs.connection-string yapılandırın.