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.
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 bbbbbbbb-1111-2222-3333-cccccccccccc
okuma, yazma ve silme olan bir grubun üyelerine, kimliği aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
olan 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 Blobu Veri Katkıda Bulunanı rolünü atarsınız.
az role assignment create --assignee bbbbbbbb-1111-2222-3333-cccccccccccc \
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 DefaultAzureCredential
azure.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:
- sınıfını
DefaultAzureCredential
modülden içeri aktarınazure.identity
. - Bir
DefaultAzureCredential
nesne oluşturun. 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)