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 Azure'da kimliği doğrulanmalıdır. 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 SDK, belirteç tabanlı kimlik doğrulamasını destekleyen sınıflar sağlar. Uygulama yerel geliştirme aşamasında, Azure'a dağıtılmış veya şirket içi bir sunucuya dağıtılmış olsun, uygulamalar Azure kaynaklarında sorunsuz bir şekilde kimlik doğrulaması yapabilir.

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.

A diagram that shows the recommended token-based authentication strategies for an app depending on where it's running.

  • 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 SDK 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 SDK'daki azure.identity paketi, arka planda sizin için belirteçleri yönetir. Yönetilen belirteçler, belirteç tabanlı kimlik doğrulamasını bağlantı dizesi olarak kullanmayı 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 SDK'sı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, yine de 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

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

pip install azure-identity

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)

nesnesi, DefaultAzureCredential uygulama için yapılandırılan kimlik doğrulama mekanizmasını otomatik olarak algılar ve uygulamanın Azure'da kimliğini doğrulamak için gerekli belirteçleri alır. Bir uygulama birden fazla SDK istemcisi kullanıyorsa, her SDK istemci nesnesiyle aynı kimlik bilgisi nesnesini kullanabilirsiniz.

DefaultAzureCredential kullandığınızda kimlik doğrulama yöntemlerinin sırası

Dahili olarak, DefaultAzureCredential Azure kaynaklarında uygulamaların kimliğini doğrulamak için bir kimlik bilgisi sağlayıcıları zinciri uygular. Her kimlik bilgisi sağlayıcısı, bu türdeki kimlik bilgilerinin uygulama için yapılandırılıp yapılandırılmadığını algılayabilir. DefaultAzureCredential Nesnesi her sağlayıcıyı sırayla denetler ve kimlik bilgilerinin yapılandırıldığı ilk sağlayıcının kimlik bilgilerini kullanır.

Kimlik bilgilerini arama sırası DefaultAzureCredential aşağıdaki diyagramda ve tabloda gösterilmiştir:

A diagram that shows the sequence in which DefaultAzureCredential checks to see what authentication source is configured for an application.

Kimlik bilgisi türü Açıklama
Ortam nesnesi, DefaultAzureCredential uygulama için bir uygulama hizmet sorumlusunun (uygulama kullanıcısı) ayarlandığını belirlemek üzere bir dizi ortam değişkeni okur. Öyleyse, DefaultAzureCredential uygulamanın kimliğini Azure'da doğrulamak için bu değerleri kullanır.

Bu yöntem genellikle sunucu ortamlarında kullanılır, ancak yerel olarak geliştirirken de kullanabilirsiniz.
İş yükü kimliği Uygulama yönetilen kimlik etkinken Azure Kubernetes Service'e (AKS) dağıtılırsa, DefaultAzureCredential bu yönetilen kimliği kullanarak uygulamanın kimliğini Azure'da doğrular. İş yükü kimliği, kullanıcı tarafından atanan yönetilen kimlik ile AKS hizmet hesabı arasındaki güven ilişkisini temsil eder. İş yükü kimliği kullanarak kimlik doğrulaması, Azure Kubernetes Service ile Microsoft Entra İş Yükü Kimliği kullanma AKS makalesinde ele alınmaktadır.
Yönetilen kimlik Uygulama yönetilen kimlik etkin bir Azure konağına dağıtılırsa, DefaultAzureCredential bu yönetilen kimliği kullanarak uygulamanın kimliğini Azure'da doğrular. Yönetilen kimlik kullanarak kimlik doğrulaması, sunucu ortamlarında kimlik doğrulaması bölümünde açıklanmıştır.

Bu yöntem yalnızca bir uygulama Azure'da Azure Uygulaması Hizmeti, Azure İşlevleri veya Azure Sanal Makineler gibi bir hizmet kullanılarak barındırıldığında kullanılabilir.
Azure CLI Azure CLI'daki komutunu kullanarak az login Azure'da kimlik doğrulaması yaptıysanız, DefaultAzureCredential aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular.
Azure PowerShell Azure PowerShell'den cmdlet'ini Connect-AzAccount kullanarak Azure'da kimlik doğrulaması yaptıysanız, DefaultAzureCredential aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular.
Azure Geliştirici CLI Azure Geliştirici CLI'sindeki komutunu kullanarak azd auth login Azure'da kimlik doğrulaması yaptıysanız, DefaultAzureCredential aynı hesabı kullanarak uygulamanın kimliğini Azure'da doğrular.
Etkileşimli Etkinleştirilirse, DefaultAzureCredential geçerli sistemin varsayılan tarayıcısı aracılığıyla etkileşimli olarak kimliğinizi doğrular. Varsayılan olarak, bu seçenek devre dışıdır.

Not

Bilinen bir sorun nedeniyle belirteç VisualStudioCodeCredential zincirinden DefaultAzureCredential kaldırıldı. Sorun gelecek bir sürümde çözüldüğünde, bu değişiklik geri döndürülür. Daha fazla bilgi için bkz . Python için Azure Identity istemci kitaplığı.