Azure API Management'ta abonelikler

UYGULANANLAR: Tüm API Management katmanları

Azure API Management'ta abonelikler, API tüketicilerinin bir API Management örneği aracılığıyla yayımlanan API'lere erişmesinin en yaygın yoludur. Bu makalede kavramla ilgili genel bir bakış sunulmaktadır.

Not

API Management aboneliği, api Management aracılığıyla API'leri bir abonelik anahtarı kullanarak çağırmak için özel olarak kullanılır. Azure aboneliğiyle aynı değildir.

Abonelikler nedir?

API'leri API Management aracılığıyla yayımlayarak, abonelik anahtarlarını kullanarak API erişiminin güvenliğini kolayca sağlayabilirsiniz. Yayımlanan API'leri kullanması gereken geliştiriciler, bu API'leri çağırırken HTTP isteklerine geçerli bir abonelik anahtarı eklemelidir. Geçerli bir abonelik anahtarı olmadan çağrılar:

  • API Management ağ geçidi tarafından hemen reddedilir.
  • Arka uç hizmetlerine iletilmez.

API'lere erişmek için geliştiricilerin bir aboneliğe ve abonelik anahtarına ihtiyacı olur. Abonelik, bir çift abonelik anahtarı için adlandırılmış bir kapsayıcıdır.

Ayrıca

  • Geliştiriciler API yayımcılarının onayına gerek kalmadan abonelik alabilir.
  • API yayımcıları doğrudan API tüketicileri için abonelik oluşturabilir.

İpucu

API Management, aşağıdaki örnekler de dahil olmak üzere API'lere erişimin güvenliğini sağlamaya yönelik diğer mekanizmaları da destekler:

Abonelik anahtarlarını yönetme

Anahtarları düzenli olarak yeniden oluşturmak yaygın bir güvenlik önlemidir. Abonelik anahtarı gerektiren çoğu Azure hizmeti gibi API Management da anahtarları çiftler halinde oluşturur. Hizmeti kullanan her uygulama A anahtarından B tuşuna geçebilir ve A anahtarını en az kesintiyle yeniden oluşturabilir ve tam tersi de geçerlidir.

Azure API Management Aboneliği - Azure REST API'sini Oluşturma veya Güncelleştirme çağrılarak, yeni anahtarlar yerine belirli anahtarların ayarlanması gerçekleştirilebilir. Özellikle ve/veya properties.secondaryKey değerinin properties.primaryKey HTTP isteği gövdesinde ayarlanması gerekir.

Not

  • API Management, abonelik anahtarlarının yaşam döngüsünü yönetmek için son kullanma tarihlerini ayarlama veya anahtarları otomatik olarak döndürme gibi yerleşik özellikler sağlamaz. Azure PowerShell veya Azure SDK'ları gibi araçları kullanarak bu işlemleri otomatikleştirmek için iş akışları geliştirebilirsiniz.
  • API'lere zaman sınırlı erişimi zorlamak için API yayımcıları abonelik anahtarlarıyla ilkeleri kullanabilir veya belirteç tabanlı kimlik doğrulaması gibi yerleşik süre sonu sağlayan bir mekanizma kullanabilir.

Aboneliklerin kapsamı

Abonelikler çeşitli kapsamlarla ilişkilendirilebilir: ürün, tüm API'ler veya tek bir API.

Bir ürün için abonelikler

Geleneksel olarak API Management'taki abonelikler tek bir ürün kapsamıyla ilişkilendirilmiştir. Geliştiriciler:

  • Geliştirici portalında ürünlerin listesini buldum.
  • Kullanmak istedikleri ürünler için abonelik istekleri gönderildi.
  • Üründeki tüm API'lere erişmek için bu aboneliklerdeki anahtarları kullanın (otomatik olarak veya API yayımcıları tarafından onaylanmıştır).

Şu anda geliştirici portalı yalnızca Kullanıcı Profili bölümünde ürün kapsamı aboneliklerini gösterir.

Ürün abonelikleri

Tüm API'ler veya tek bir API için abonelikler

Aşağıdakilerden herhangi biri için erişim izni veren anahtarlar da oluşturabilirsiniz:

  • Tek bir API veya
  • BIR API Management örneği içindeki tüm API'ler.

Bu gibi durumlarda, önce bir ürün oluşturmanız ve buna API eklemeniz gerekmez.

Tüm erişimli abonelik

Her API Management örneği, tüm API'lere erişim sağlayan yerleşik bir tüm erişim aboneliğiyle birlikte gelir. Hizmet kapsamlı bu abonelik, hizmet sahiplerinin test konsolundaki API'leri test etmelerini ve hatalarını ayıklamalarını kolaylaştırır.

Uyarı

Tümü erişimli abonelik, API Management örneğindeki her API'ye erişim sağlar ve yalnızca yetkili kullanıcılar tarafından kullanılmalıdır. Bu aboneliği hiçbir zaman rutin API erişimi için kullanmayın veya istemci uygulamalarına tüm erişimli abonelik anahtarını eklemeyin.

Not

API kapsamlı bir abonelik, tüm API'ler aboneliği veya yerleşik tüm erişimli abonelik kullanıyorsanız, ürün kapsamında yapılandırılan ilkeler bu abonelikten gelen isteklere uygulanmaz.

Tek başına abonelikler

API Management, geliştirici hesabıyla ilişkilendirilmeyen tek başına aboneliklere de izin verir. Bu özellik, bir aboneliği paylaşan çeşitli geliştiricilere veya takımlara benzer senaryolarda yararlı olduğunu kanıtlar.

Sahip atamadan abonelik oluşturmak tek başına abonelik olmasını sağlar. Geliştiricilere ve ekibinizin geri kalanına tek başına abonelik anahtarına erişim vermek için:

  • Abonelik anahtarını el ile paylaşın.
  • Abonelik anahtarını ekibinizin kullanımına açmak için özel bir sistem kullanın.

Azure portalında abonelik oluşturma ve yönetme

API yayımcıları doğrudan Azure portalında abonelik oluşturabilir.

Portalda oluşturulduğunda abonelik Etkin durumdadır; bu da abonenin geçerli bir abonelik anahtarı kullanarak ilişkili BIR API'yi çağırabileceği anlamına gelir. Aboneliğin durumunu gerektiği gibi değiştirebilirsiniz. Örneğin, API erişimini önlemek için herhangi bir aboneliği (yerleşik tüm erişim aboneliği dahil) askıya alabilir, iptal edebilir veya silebilirsiniz.

Abonelik anahtarı kullanma

Abone, API Management abonelik anahtarını iki yoldan biriyle kullanabilir:

  • geçerli bir abonelik anahtarının değerini geçirerek isteğe Ocp-Apim-Subscription-Key HTTP üst bilgisini ekleyin.

  • URL'ye abonelik anahtarı sorgu parametresini ve geçerli bir değeri ekleyin. Sorgu parametresi yalnızca üst bilgi yoksa denetlenilir.

İpucu

Ocp-Apim-Subscription-Key , abonelik anahtarı üst bilgisinin varsayılan adıdır ve abonelik anahtarı sorgu parametresinin varsayılan adıdır. İsterseniz, her API'nin ayarlarında bu adları değiştirebilirsiniz. Örneğin, portalda bu adları bir API'nin Ayarlar sekmesinde güncelleştirin.

Not

bir istek üst bilgisine veya sorgu parametresine eklendiğinde, abonelik anahtarı varsayılan olarak arka uçtan geçirilir ve arka uç izleme günlüklerinde veya diğer sistemlerde gösterilebilir. Bu hassas veriler olarak kabul edilirse, abonelik anahtarı üst bilgisini () veya sorgu parametresini (set-headerset-query-parameter ) kaldırmak için bölümün inbound sonunda bir ilke yapılandırabilirsiniz.

API veya ürün erişimi için abonelik gereksinimini etkinleştirme veya devre dışı bırakma

Varsayılan olarak BIR API oluşturduğunuzda, API erişimi için bir abonelik anahtarı gerekir. Benzer şekilde, bir ürün oluşturduğunuzda, ürüne eklenen herhangi bir API'ye erişmek için varsayılan olarak bir abonelik anahtarı gerekir. Belirli senaryolarda, API yayımcısı abonelik gereksinimi olmadan bir ürünü veya belirli bir API'yi genel kullanıma yayımlamak isteyebilir. Yayımcı belirli API'lere güvenli olmayan (anonim) erişimi etkinleştirmeyi seçebilse de, istemci erişimini güvenli hale getirmek için başka bir mekanizma yapılandırmanız önerilir.

Dikkat

Abonelik gerektirmeyen bir ürünü veya API'yi yapılandırırken dikkatli olun. Bu yapılandırma fazla izin verebilir ve bir API'yi belirli API güvenlik tehditlerine karşı daha savunmasız hale getirebilir.

Not

Açık ürünlerde Abonelik gerekli ayarı devre dışı bırakılır ve bu da kullanıcıların abone olması gerekmeyecek anlamına gelir. Bu nedenle, geliştirici portalının Ürünler sayfasında açık ürünler görüntülenmez.

Api veya ürün oluştururken veya daha sonraki bir tarihte abonelik gereksinimini devre dışı bırakabilirsiniz.

Portalı kullanarak abonelik gereksinimini devre dışı bırakmak için:

  • Ürün gereksinimini devre dışı bırakma - ÜrününAyarlar sayfasında Abonelik gerektirir'i devre dışı bırakın
  • API gereksinimini devre dışı bırakma - API'nin Ayarlar sayfasında Abonelik gerekli seçeneğini devre dışı bırakın.

Abonelik gereksinimi devre dışı bırakıldıktan sonra, seçilen API'ye veya API'lere abonelik anahtarı olmadan erişilebilir.

API Management abonelik anahtarlarıyla veya abonelik anahtarları olmadan istekleri nasıl işler?

Abonelik anahtarı olan API isteği

API Management, abonelik anahtarı olan bir istemciden API isteği aldığında isteği şu kurallara göre işler:

  1. Bunun etkin bir abonelikle ilişkili geçerli bir anahtar olup olmadığını şunlara bakarak denetler:

    • API kapsamındaki bir abonelik
    • API'ye atanmış bir ürün kapsamındaki abonelik
    • Tüm API’lerin kapsamındaki bir abonelik
    • Hizmet kapsamlı abonelik (yerleşik tüm erişim aboneliği)

    Uygun kapsamda etkin bir abonelik için geçerli bir anahtar sağlanırsa erişime izin verilir. İlkeler, bu kapsamdaki ilke tanımının yapılandırmasına bağlı olarak uygulanır.

  2. Aksi takdirde erişim reddedilir (401 Erişim reddedildi hatası).

Abonelik anahtarı olmadan API isteği

API Management, abonelik anahtarı olmayan bir istemciden API isteği aldığında isteği şu kurallara göre işler:

  1. Öncelikle API'yi içeren ancak abonelik (açık ürün) gerektirmeyen bir ürünün mevcut olup olmadığını denetleyin. Açık ürün varsa, isteği ürün için yapılandırılan API'ler, ilkeler ve erişim kuralları bağlamında işleyin. Bir API en fazla bir açık ürünle ilişkilendirilebilir.
  2. API'yi içeren açık bir ürün bulunamazsa, API'nin abonelik gerektirip gerektirmediğini denetleyin. Bir abonelik gerekli değilse, isteği bu API ve işlem bağlamında işleyin.
  3. Yapılandırılmış ürün veya API bulunamazsa erişim reddedilir (401 Erişim reddedildi hatası).

Özet tablosu

Aşağıdaki tabloda, ağ geçidinin api isteklerini farklı senaryolarda abonelik anahtarlarıyla veya abonelik anahtarları olmadan nasıl işlediği özetlemektedir. İstenmeyen, anonim API erişimini etkinleştirebilecek yapılandırmalar not edilir.

API'ye atanan tüm ürünler için abonelik gerekir API için abonelik gerekiyor Abonelik anahtarıyla API çağrısı Abonelik anahtarı olmadan API çağrısı Tipik senaryolar
✔️ ✔️ Erişime izin verildi:

• Ürün kapsamlı anahtar
• API kapsamlı anahtar
• Tüm API'ler kapsamlı anahtar
• Hizmet kapsamlı anahtar

Erişim reddedildi:

• Geçerli ürün veya API kapsamında olmayan diğer anahtarlar
Erişim reddedildi Ürün kapsamlı veya API kapsamlı abonelik kullanarak korumalı API erişimi
✔️ Erişime izin verildi:

• Ürün kapsamlı anahtar
• API kapsamlı anahtar
• Tüm API'ler kapsamlı anahtar
• Hizmet kapsamlı anahtar

Erişim reddedildi:

• Geçerli ürün veya API kapsamında olmayan diğer anahtarlar
Erişime izin verildi (API bağlamı) • Ürün kapsamlı abonelikle korumalı API erişimi

• API'ye anonim erişim. Anonim erişim amaçlanmamışsa, kimlik doğrulaması ve yetkilendirmeyi zorunlu kılmak için API düzeyinde ilkeler yapılandırın.
1 ✔️ Erişime izin verildi:

• Ürün kapsamlı anahtar
• API kapsamlı anahtar
• Tüm API'ler kapsamlı anahtar
• Hizmet kapsamlı anahtar

Erişim reddedildi:

• Geçerli ürün veya API kapsamında olmayan diğer anahtarlar
Erişime izin verildi (açık ürün bağlamı) • API kapsamlı abonelikle korumalı API erişimi

• API'ye anonim erişim. Anonim erişim amaçlanmamışsa, kimlik doğrulaması ve yetkilendirmeyi zorunlu kılmak için ürün ilkeleriyle yapılandırın
1 Erişime izin verildi:

• Ürün kapsamlı anahtar
• API kapsamlı anahtar
• Tüm API'ler kapsamlı anahtar
• Hizmet kapsamlı anahtar

Erişim reddedildi:

• Geçerli ürün veya API kapsamında olmayan diğer anahtarlar
Erişime izin verildi (açık ürün bağlamı) API'ye anonim erişim. Anonim erişim amaçlanmamışsa, kimlik doğrulaması ve yetkilendirmeyi zorunlu kılmak için ürün ilkeleriyle yapılandırın

1 API ile ilişkili açık bir ürün vardır.

Dikkat edilmesi gereken noktalar

  • Ürün bağlamında API erişimi, ürünün yayımlanıp yayımlanmadığıyla aynıdır. Ürünün yayımdan kaldırılması geliştirici portalında gizlenir, ancak yeni veya mevcut abonelik anahtarlarını geçersiz kılmaz.
  • Bir ürün veya API abonelik gerektirmese bile, etkin bir abonelikten ürüne veya API'ye erişim sağlayan geçerli bir anahtar kullanılabilir.
  • API erişimi "bağlamı", belirli bir kapsamda (örneğin, API veya ürün) uygulanan ilkeler ve erişim denetimleri anlamına gelir.

Sonraki adımlar

API Management hakkında daha fazla bilgi edinin:

  • API Management ilkelerinin farklı kapsamlarda nasıl uygulandığını öğrenin.
  • API Management'ta diğer kavramları öğrenin.
  • API Management hakkında daha fazla bilgi edinmek için öğreticilerimizi izleyin.
  • Sık sorulan sorular için SSS sayfamıza bakın.