İzlenecek yol: Azure hizmetleriyle Python uygulamaları için tümleşik kimlik doğrulaması

Azure Key Vault ile birlikte Azure Active Directory (azure AD), uygulamaların Azure hizmetlerinde kimlik doğrulaması yapması ve erişim anahtarlarının bulunduğu üçüncü taraf hizmetler için kapsamlı ve kullanışlı bir yol sunar.

Bir arka plan sağladıktan sonra Bu izlenecek yol, GitHub.com/Azure-Samples/Python-integrated-Authentication, bu kimlik doğrulama özelliklerini örnek bağlamında açıklar.

Bu örnek, daha kolay bir şekilde Azure 'a dağıtılmakta olduğundan, işleme devam edebilir. Örneği kendi Azure aboneliğinize dağıtmak istiyorsanız, depo Ayrıca Azure CLı dağıtım betikleri içerir.

1. kısım: arka plan

Birçok Azure hizmeti yalnızca yetkilendirme için rol tabanlı erişim denetimine bağlı olsa da, belirli hizmetler gizli dizileri veya anahtarları kullanarak ilgili kaynaklarına erişimi denetler. bu hizmetler Azure Depolama, veritabanları, bilişsel hizmetler, Key Vault ve Event Hubs içerir.

bu hizmetler içindeki kaynakları kullanan bir bulut uygulaması oluştururken, uygulamanız için belirli erişim ilkelerine bağlı anahtarlar oluşturmak ve yapılandırmak üzere Azure portal, Azure clı veya Azure PowerShell kullanın. Bu anahtarlar uygulamaya özgü kaynaklara erişimi başka herhangi bir yetkisiz kodla engeller.

Bu genel tasarımda, bulut uygulamaları genellikle bu anahtarları Yönetmeli ve her bir hizmette kimlik doğrulaması yapmanız gerekir. Bu işlem hem sıkıcı hem de hata durumunda olabilir. Anahtarları doğrudan uygulama kodunda yönetmek Ayrıca, kaynak denetiminde ve anahtarlarda bu anahtarların kullanıma sunulmasına neden olan riskler, güvenli olmayan geliştirici iş istasyonlarında depolanabilir.

Neyse ki Azure, işlemi basitleştirmek ve daha fazla güvenlik sağlamak için iki özel hizmet sağlar:

  • Azure Key Vault erişim anahtarlarına yönelik güvenli bulut tabanlı depolama sağlar (Bu makalede kapsanmayan şifreleme anahtarları ve sertifikaları ile birlikte). Key Vault kullanarak, uygulama bu anahtarlara yalnızca çalışma zamanında erişir, böylece doğrudan kaynak kodunda gözükmez.

  • Azure Active Directory (Azure AD) tarafından yönetilen kimlikler sayesinde, uygulamanın Active Directory ile yalnızca bir kez kimlik doğrulaması yapması gerekir. Daha sonra uygulama, Key Vault dahil diğer Azure hizmetleriyle otomatik olarak doğrulanır. Sonuç olarak, kodunuzun, bu Azure hizmetleri için anahtarlar veya diğer kimlik bilgileriyle kendisini hiçbir şekilde ilgilendirilmesi gerekmez. Yine de, aynı kodu hem yerel olarak hem de bulutta en az yapılandırma gereksinimleriyle aynı şekilde çalıştırabilirsiniz.

Azure AD 'yi kullanarak bir arada Key Vault, uygulamanız hiçbir şekilde tek tek Azure hizmetleriyle kimliğini doğrulamalıdır ve üçüncü taraf hizmetler için gereken tüm anahtarlara kolayca ve güvenli bir şekilde erişebilir.

Önemli

Bu makalede, bir REST API için erişim anahtarı gibi Azure Key Vault "gizli diziler" olarak depolanmış olan "gizli" genel terimi kullanılmaktadır. Bu kullanım, Key Vault gizlidizilerinizden ayrı bir özellik olan cryıtographic anahtarlarının Key Vault yönetimiyle karıştırılmamalıdır.

Örnek Cloud App senaryosu

Azure 'un kimlik doğrulama sürecini daha derin anlamak için aşağıdaki senaryoyu göz önünde bulundurun:

  • Ana uygulama, JSON verileriyle HTTP isteklerine yanıt veren genel (kimliği doğrulanmamış) bir API uç noktası sunar. Bu makalede gösterildiği gibi örnek uç nokta, Azure App Service dağıtılan basit bir Flask uygulaması olarak uygulanır.

  • Yanıt oluşturmak için API, erişim anahtarı gerektiren bir üçüncü taraf API çağırır. Uygulama, çalışma zamanında bu erişim anahtarını Azure Key Vault alır.

  • apı 'si yanıtını döndürmeden önce, daha sonra işlenmek üzere bir Azure Depolama kuyruğuna bir ileti yazar. (Bu iletilerin belirli işleme ana senaryoyla ilgili değildir.)

Uygulama senaryosunun diyagramı

Not

Ortak bir API uç noktası genellikle kendi erişim anahtarı tarafından korunsa da, bu makalenin amaçları doğrultusunda uç noktanın açık ve doğrulanmadı olduğunu varsaymaktadır. Bu varsayım, uygulamanın kimlik doğrulaması ile bu uç noktanın bir dış çağıranının gereksinimleriyle ilgili herhangi bir karışıklığı önler. Bu senaryo böyle bir dış çağrıyı göstermez.