Aracılığıyla paylaş


Python için Azure SDK'sını kullanarak Azure hizmetlerinde Python uygulamalarının kimliğini doğrulama

Bir uygulamanın Azure Depolama, Azure Key Vault veya Azure AI hizmetleri gibi bir Azure kaynağına erişmesi gerektiğinde, uygulamanın Kimliğinin Azure'da doğrulanması gerekir. Azure'a dağıtılan, şirket içinde dağıtılan veya yerel geliştirici iş istasyonunda geliştirme aşamasında olan tüm uygulamalar için bu gereksinim geçerlidir. Bu makalede, Python için Azure SDK'sını kullandığınızda Azure'da bir uygulamanın kimliğini doğrulamak için önerilen yaklaşımlar açıklanmaktadır.

Azure kaynaklarında kimlik doğrulaması yaparken uygulamalarınız için bağlantı dizesi yerine belirteç tabanlı kimlik doğrulaması kullanın. Python için Azure Identity istemci kitaplığı belirteç tabanlı kimlik doğrulamasını destekleyen sınıflar sağlar ve uygulamanın yerel geliştirme aşamasında, Azure'a dağıtıldığında veya şirket içi sunucuya dağıtıldığında uygulamaların Azure kaynaklarında sorunsuz bir şekilde kimlik doğrulaması gerçekleştirmesine olanak sağlar.

Bir uygulamanın Azure kaynaklarında kimlik doğrulaması yapmak için kullandığı belirteç tabanlı kimlik doğrulaması türü, uygulamanın çalıştırıldığı yere bağlıdır. Belirteç tabanlı kimlik doğrulaması türleri aşağıdaki diyagramda gösterilmiştir.

Uygulamanın çalıştığı yere bağlı olarak önerilen belirteç tabanlı kimlik doğrulama stratejilerini gösteren diyagram.

  • Bir geliştirici yerel geliştirme sırasında bir uygulama çalıştırıyorsa: Uygulama, yerel geliştirme için bir uygulama hizmet sorumlusu veya geliştiricinin Azure kimlik bilgilerini kullanarak Azure'da kimlik doğrulaması yapar. Bu seçenekler yerel geliştirme sırasında kimlik doğrulaması bölümünde ele alınıyor.
  • Bir uygulama Azure'da barındırıldığında: Uygulama yönetilen kimlik kullanarak Azure kaynaklarında kimlik doğrulaması yapar. Bu seçenek, sunucu ortamlarında kimlik doğrulaması bölümünde açıklanmıştır.
  • Bir uygulama şirket içinde barındırıldığında ve dağıtıldığında: Uygulama, bir uygulama hizmet sorumlusu kullanarak Azure kaynaklarında kimlik doğrulaması yapar. Bu seçenek, sunucu ortamlarında kimlik doğrulaması bölümünde açıklanmıştır.

DefaultAzureCredential

Azure Identity istemci kitaplığı tarafından sağlanan DefaultAzureCredential sınıfı, uygulamaların çalıştırıldığı ortama bağlı olarak farklı kimlik doğrulama yöntemleri kullanmasına olanak tanır. Bu şekilde uygulamalar yerel geliştirmeden test ortamlarına, kod değişikliği olmadan üretime yükseltilebilir.

Her ortam DefaultAzureCredential için uygun kimlik doğrulama yöntemini yapılandırıp bu kimlik doğrulama yöntemini otomatik olarak algılar ve kullanırsınız. kullanımı DefaultAzureCredential , farklı ortamlarda farklı kimlik doğrulama yöntemlerini kullanmak için koşullu mantığı veya özellik bayraklarını el ile kodlamak yerine tercih edilir.

sınıfını DefaultAzureCredential kullanma hakkındaki ayrıntılar, Bir uygulamada DefaultAzureCredential kullanma bölümünde açıklanmıştır.

Belirteç tabanlı kimlik doğrulamasının avantajları

Azure için uygulama oluştururken bağlantı dizesi kullanmak yerine belirteç tabanlı kimlik doğrulamasını kullanın. Belirteç tabanlı kimlik doğrulaması, bağlantı dizesi kimlik doğrulamasına göre aşağıdaki avantajları sunar:

  • Bu makalede açıklanan belirteç tabanlı kimlik doğrulama yöntemleri, Azure kaynağında uygulamanın ihtiyaç duyduğu belirli izinleri oluşturmanıza olanak sağlar. Bu uygulama en az ayrıcalık ilkesini izler. Buna karşılık, bir bağlantı dizesi Azure kaynağına tam haklar verir.
  • bağlantı dizesi olan herkes veya herhangi bir uygulama Bir Azure kaynağına bağlanabilir, ancak belirteç tabanlı kimlik doğrulama yöntemleri kaynağa erişimi yalnızca kaynağa erişmeyi amaçlayan uygulamalarla kapsama alır.
  • Yönetilen kimlikle depolamak için bir uygulama gizli dizisi yoktur. Gizliliği ihlal edilebilecek bağlantı dizesi veya uygulama gizli dizisi olmadığından uygulama daha güvenlidir.
  • azure-identity paketi sizin için Microsoft Entra belirteçlerini alır ve yönetir. Bu, belirteç tabanlı kimlik doğrulamasının kullanımını bağlantı dizesi kadar kolaylaştırır.

bağlantı dizesi kullanımını üretim veya hassas verilere erişmeyen ilk kavram kanıtı uygulamaları veya geliştirme prototipleriyle sınırlayın. Aksi takdirde, Azure Kimlik istemci kitaplığında bulunan belirteç tabanlı kimlik doğrulama sınıfları, Azure kaynaklarında kimlik doğrulaması yaparken her zaman tercih edilir.

Sunucu ortamlarında kimlik doğrulaması

Bir sunucu ortamında barındırırken, her uygulamaya uygulamanın çalıştığı ortam başına benzersiz bir uygulama kimliği atanır. Azure'da bir uygulama kimliği bir hizmet sorumlusu tarafından temsil edilir. Bu özel güvenlik sorumlusu türü, uygulamaları tanımlar ve Azure'da kimlik doğrulaması yapar. Uygulamanız için kullanılacak hizmet sorumlusunun türü, uygulamanızın çalıştığı yere bağlıdır:

Kimlik doğrulama yöntemi Açıklama
Azure'da barındırılan uygulamalar Azure'da barındırılan uygulamalar yönetilen kimlik hizmet sorumlusu kullanmalıdır. Yönetilen kimlikler, Azure'da barındırılan bir uygulamanın kimliğini temsil etmek üzere tasarlanmıştır ve yalnızca Azure tarafından barındırılan uygulamalarla kullanılabilir.

Örneğin, Azure Uygulaması Hizmetinde barındırılan bir Django web uygulamasına yönetilen kimlik atanır. Ardından uygulamaya atanan yönetilen kimlik, uygulamanın diğer Azure hizmetlerinde kimliğini doğrulamak için kullanılır.

Azure Kubernetes Service'te (AKS) çalışan uygulamalar bir İş yükü kimliği kimlik bilgilerini kullanabilir. Bu kimlik bilgisi, AKS hizmet hesabıyla güven ilişkisi olan yönetilen kimliği temel alır.
,
Azure dışında barındırılan uygulamalar
(örneğin, şirket içi uygulamalar)
Azure hizmetlerine bağlanması gereken Azure dışında barındırılan uygulamalar (örneğin, şirket içi uygulamalar) bir uygulama hizmet sorumlusu kullanmalıdır. Uygulama hizmet sorumlusu, Azure'daki uygulamanın kimliğini temsil eder ve uygulama kayıt işlemi aracılığıyla oluşturulur.

Örneğin, şirket içinde barındırılan ve Azure Blob Depolama kullanan bir Django web uygulaması düşünün. Uygulama kayıt işlemini kullanarak uygulama için bir uygulama hizmet sorumlusu oluşturabilirsiniz. AZURE_CLIENT_ID, AZURE_TENANT_IDve AZURE_CLIENT_SECRET tüm çalışma zamanında uygulama tarafından okunacak ortam değişkenleri olarak depolanır ve uygulamanın uygulama hizmet sorumlusunu kullanarak Azure'da kimlik doğrulamasına izin verir.

Yerel geliştirme sırasında kimlik doğrulaması

Bir uygulama yerel geliştirme sırasında bir geliştiricinin iş istasyonunda çalıştığında, uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapmalıdır. Yerel geliştirme sırasında Azure'da uygulamaların kimliğini doğrulamak için iki ana strateji vardır:

Kimlik doğrulama yöntemi Açıklama
Yerel geliştirme sırasında kullanılacak ayrılmış uygulama hizmet sorumlusu nesneleri oluşturun. Bu yöntemde, yerel geliştirme sırasında kullanılmak üzere uygulama kayıt işlemi kullanılarak ayrılmış uygulama hizmet sorumlusu nesneleri ayarlanır. Hizmet sorumlusunun kimliği daha sonra yerel geliştirmede çalıştırıldığında uygulama tarafından erişilecek ortam değişkenleri olarak depolanır.

Bu yöntem, yerel geliştirme sırasında geliştiriciler tarafından kullanılan hizmet sorumlusu nesnelerine uygulama için gereken belirli kaynak izinlerini atamanızı sağlar. Bu uygulama, uygulamanın yalnızca ihtiyaç duyduğu belirli kaynaklara erişmesini sağlar ve uygulamanın üretimde sahip olacağı izinleri çoğaltır.

Bu yaklaşımın dezavantajı, bir uygulama üzerinde çalışan her geliştirici için ayrı hizmet sorumlusu nesneleri oluşturma gereksinimidir.

Yerel geliştirme sırasında geliştiricinin kimlik bilgilerini kullanarak uygulamanın Kimliğini Azure'da doğrular. Bu yöntemde bir geliştiricinin yerel iş istasyonunda Azure CLI, Azure PowerShell veya Azure Developer CLI'dan Azure'da oturum açması gerekir. Daha sonra uygulama, geliştiricinin kimlik bilgilerine kimlik bilgisi deposundan erişebilir ve bu kimlik bilgilerini kullanarak uygulamadan Azure kaynaklarına erişebilir.

Bir geliştiricinin yalnızca yukarıda belirtilen geliştirici araçlarından biri aracılığıyla Azure hesabında oturum açması gerektiğinden, bu yöntem daha kolay kurulum avantajına sahiptir. Bu yaklaşımın dezavantajı, geliştirici hesabının büyük olasılıkla uygulama için gerekenden daha fazla izine sahip olmasıdır. Sonuç olarak, uygulama üretimde birlikte çalıştırılacağı izinleri doğru bir şekilde çoğaltmaz.

Uygulamada DefaultAzureCredential kullanma

DefaultAzureCredential , Microsoft Entra Id'de kimlik doğrulaması yapmak için fikir verilen, sıralı bir mekanizma dizisidir. Her kimlik doğrulama mekanizması, TokenCredential protokolunu uygulayan ve kimlik bilgisi olarak bilinen bir sınıftır. Çalışma zamanında, DefaultAzureCredential ilk kimlik bilgilerini kullanarak kimlik doğrulamayı dener. Bu kimlik bilgisi bir erişim belirteci alamazsa, bir erişim belirteci başarıyla alınana kadar dizideki bir sonraki kimlik bilgisi denenir ve bu şekilde devam edilir. Bu şekilde, uygulamanız ortama özgü kod yazmadan farklı ortamlarda farklı kimlik bilgilerini kullanabilir.

Python uygulamasında kullanmak DefaultAzureCredential için azure-identity paketini uygulamanıza ekleyin.

pip install azure-identity

Azure hizmetlerine çeşitli Azure SDK istemci kitaplıklarından özel istemci sınıfları kullanılarak erişilir. Aşağıdaki kod örneğinde, bir DefaultAzureCredential nesnenin örneğini oluşturma ve bir Azure SDK istemci sınıfıyla kullanma adımları gösterilmektedir. Bu durumda, Azure Blob Depolama erişmek için kullanılan bir BlobServiceClient nesnedir.

from azure.identity import DefaultAzureCredential
from azure.storage.blob import BlobServiceClient

# Acquire a credential object
credential = DefaultAzureCredential()

blob_service_client = BlobServiceClient(
        account_url="https://<my_account_name>.blob.core.windows.net",
        credential=credential)

Yukarıdaki kod yerel geliştirme iş istasyonunuzda çalıştırıldığında, bir uygulama hizmet sorumlusunun ortam değişkenlerini veya bir dizi geliştirici kimlik bilgisi için Azure CLI gibi yerel olarak yüklenen geliştirici araçlarını arar. Her iki yaklaşım da yerel geliştirme sırasında azure kaynaklarında uygulamanın kimliğini doğrulamak için kullanılabilir.

Azure'a dağıtıldığında, aynı kod uygulamanızın kimliğini Azure kaynaklarda da doğrulayabilir. DefaultAzureCredential Azure hizmetlerinde otomatik olarak kimlik doğrulaması yapmak için ortam ayarlarını ve yönetilen kimlik yapılandırmalarını alabilir.