Geliştirici hesaplarını kullanarak yerel geliştirme sırasında Azure hizmetlerinde Python uygulamalarının kimliğini doğrulama

Geliştiriciler bulut uygulamaları oluştururken genellikle yerel iş istasyonlarında uygulamaların hatalarını ayıklar ve test eder. Yerel geliştirme sırasında bir uygulama geliştiricinin iş istasyonunda çalıştırıldığında, yine de uygulama tarafından kullanılan tüm Azure hizmetlerinde kimlik doğrulaması yapması gerekir. Bu makalede, yerel geliştirme sırasında uygulamanın Kimliğini Azure'da doğrulamak için bir geliştiricinin Azure kimlik bilgilerinin nasıl kullanılacağı ele alınır.

Yerel geliştirme sırasında python uygulamasının yerel olarak yüklenen geliştirme araçlarından bu kimlik bilgilerini alarak Azure'a bağlanmak için geliştiricilerin kimlik bilgilerini nasıl kullandığını gösteren diyagram.

Bir uygulamanın yerel geliştirme sırasında geliştiricinin Azure kimlik bilgilerini kullanarak Azure'da kimlik doğrulaması yapması için bir geliştiricinin Azure CLI, Azure PowerShell veya Azure Geliştirici CLI'sinden Azure'da oturum açması gerekir. Python için Azure SDK, geliştiricinin bu araçlardan birinden oturum açtığını algılayabilir ve ardından uygulamanın oturum açmış kullanıcı olarak Azure'da kimliğini doğrulamak için kimlik bilgileri önbelleğinden gerekli kimlik bilgilerini alabilir.

Geliştiricilerin mevcut Azure hesaplarından yararlandığından, geliştirme ekibi için bu yaklaşımı ayarlamak en kolay yöntemdir. Ancak, bir geliştirici hesabının büyük olasılıkla uygulamanın gerektirdiğinden daha fazla izni olacaktır, bu nedenle uygulamanın üretimde çalıştırılacağı izinleri aşacaktır. Alternatif olarak, yerel geliştirme sırasında kullanmak üzere uygulama hizmet sorumluları oluşturabilirsiniz. Bu sorumluların kapsamı yalnızca uygulamanın ihtiyaç duyduğu erişime sahip olacak şekilde ayarlanabilir.

1 - Yerel geliştirme için Microsoft Entra güvenlik grubu oluşturma

Bir uygulama üzerinde çalışan neredeyse her zaman birden çok geliştirici olduğundan, önce uygulamanın yerel geliştirmede ihtiyaç duyduğu rolleri (izinleri) kapsüllemek için bir Microsoft Entra güvenlik grubu oluşturmanız önerilir. Bu yaklaşım aşağıdaki avantajları sunar.

  • Roller grup düzeyinde atandığından her geliştiricinin aynı rollere atandığından emin olur.
  • Uygulama için yeni bir rol gerekiyorsa, yalnızca uygulama için Microsoft Entra grubuna eklenmesi gerekir.
  • Ekibe yeni bir geliştirici katılırsa, uygulama üzerinde çalışmak için doğru izinleri almak için doğru Microsoft Entra grubuna eklenmesi yeterlidir.

Geliştirme ekibiniz için mevcut bir Microsoft Entra güvenlik grubunuz varsa bu grubu kullanabilirsiniz. Aksi takdirde, bir Microsoft Entra güvenlik grubu oluşturmak için aşağıdaki adımları tamamlayın.

az ad group create komutu, Microsoft Entra ID'de grup oluşturmak için kullanılır. --display-name ve --main-nickname parametreleri zorunludur. Gruba verilen ad, uygulamanın adına dayalı olmalıdır. Grubun amacını belirtmek için grubun adına 'local-dev' gibi bir tümcecik eklemek de yararlıdır.

az ad group create \
    --display-name MyDisplay \
    --mail-nickname MyDisplay  \
    --description "<group-description>"

komutunun id çıkışındaki özelliğinin değerini kopyalayın. Bu, grubun nesne kimliğidir. Sonraki adımlarda buna ihtiyacınız vardır. Bu özelliği almak için az ad group show komutunu da kullanabilirsiniz.

Gruba üye eklemek için Azure kullanıcısının nesne kimliğine ihtiyacınız vardır. Kullanılabilir hizmet sorumlularını listelemek için az ad user list komutunu kullanın. --filter parametre komutu OData stil filtrelerini kabul eder ve gösterildiği gibi kullanıcının görünen adında listeyi filtrelemek için kullanılabilir. parametresi, --query çıkışı ilgilendiğim sütunlarda sınırlar.

az ad user list \
    --filter "startswith(displayName, 'Bob')" \
    --query "[].{objectId:id, displayName:displayName}" \
    --output table

Ardından az ad group member add komutu, gruplara üye eklemek için kullanılabilir.

az ad group member add \
    --group <group-name> \
    --member-id <object-id>

Not

Varsayılan olarak, Microsoft Entra güvenlik gruplarının oluşturulması bir dizindeki belirli ayrıcalıklı rollerle sınırlıdır. Grup oluşturamıyorsanız dizininizin yöneticisine başvurun. Mevcut bir gruba üye ekleyemiyorsanız, grup sahibine veya dizin yöneticisine başvurun. Daha fazla bilgi edinmek için bkz . Microsoft Entra gruplarını ve grup üyeliğini yönetme.

2 - Microsoft Entra grubuna rol atama

Ardından, uygulamanızın hangi kaynaklar üzerinde hangi rollere (izinlere) ihtiyacı olduğunu belirlemeniz ve bu rolleri uygulamanıza atamanız gerekir. Bu örnekte roller, 1. adımda oluşturulan Microsoft Entra grubuna atanır. Roller bir kaynak, kaynak grubu veya abonelik kapsamında atanabilir. Bu örnekte, çoğu uygulama tüm Azure kaynaklarını tek bir kaynak grubunda gruplandırdığından kaynak grubu kapsamında rollerin nasıl atandığı gösterilmektedir.

Azure'da az role assignment create komutu kullanılarak bir kullanıcı, grup veya uygulama hizmet sorumlusuna bir rol atanır. Nesne kimliğine sahip bir grup belirtebilirsiniz.

az role assignment create --assignee {objectId} \
    --scope /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName} \
    --role "{roleName}" 

Atanabilecek rol adlarını almak için az role definition list komutunu kullanın.

az role definition list --query "sort_by([].{roleName:roleName, description:description}, &roleName)" --output table

Örneğin, nesne kimliği 00000000-0000-0000-0000-000000000000 okuma, yazma ve silme olan bir grubun üyelerine, kimliği 11111111-1111-1111-1111-111111111111olan abonelikteki msdocs-python-sdk-auth-example kaynak grubundaki tüm depolama hesaplarındaki azure Depolama blob kapsayıcılarına ve verilerine erişim izni vermek için, aşağıdaki komutu kullanarak gruba Depolama Blob Veri Katkıda Bulunanı rolünü atarsınız.

az role assignment create --assignee 00000000-0000-0000-0000-000000000000 \
    --scope /subscriptions/11111111-1111-1111-1111-111111111111/resourceGroups/msdocs-python-sdk-auth-example \
    --role "Storage Blob Data Contributor"

Azure CLI kullanarak kaynak veya abonelik düzeyinde izin atama hakkında bilgi için Azure CLI kullanarak Azure rolleri atama makalesine bakın.

3 - Azure CLI, Azure PowerShell, Azure Geliştirici CLI'sını kullanarak veya tarayıcıda Azure'da oturum açma

Geliştirici iş istasyonunuzda bir terminal açın ve Azure CLI'dan Azure'da oturum açın.

az login

4 - Uygulamanızda DefaultAzureCredential uygulama

Azure SDK istemci nesnelerinin kimliğini Azure'da doğrulamak için uygulamanız paketteki DefaultAzureCredentialazure.identity sınıfını kullanmalıdır. Bu senaryoda, geliştiricinin Azure CLI, DefaultAzureCredential Azure PowerShell veya Azure geliştirici CLI kullanarak Azure'da oturum açıp açmadığını sırayla denetler. Geliştirici bu araçlardan herhangi birini kullanarak Azure'da oturum açtıysa, araçta oturum açmak için kullanılan kimlik bilgileri uygulama tarafından Azure'da kimlik doğrulaması yapmak için kullanılır.

Uygulamanıza azure.identity paketini ekleyerek başlayın.

pip install azure-identity

Ardından, uygulamanızda bir Azure SDK istemci nesnesi oluşturan tüm Python kodları için şunları yapmak istersiniz:

  1. sınıfını DefaultAzureCredential modülden içeri aktarın azure.identity .
  2. Bir DefaultAzureCredential nesne oluşturun.
  3. DefaultAzureCredential Nesnesini Azure SDK istemci nesnesi oluşturucusna geçirin.

Aşağıdaki kod kesiminde bu adımlara bir örnek gösterilmiştir.

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

# Acquire a credential object
token_credential = DefaultAzureCredential()

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