Azure Key Vault azaltma yönergeleri

Azaltma, kaynakların fazla kullanımına engel olmak için eş zamanlı çağrı sayısını Azure hizmetine sınırlayan bir işlemdir. Azure Key Vault (AKV), yüksek hacimli istekleri işlemek için tasarlanmıştır. Çok fazla sayıda istek oluşursa istemcinizin isteklerinin azaltması, AKV hizmetinin en iyi performansını ve güvenilirliğini korumaya yardımcı olur.

Azaltma sınırları senaryoya göre değişiklik gösterir. Örneğin, büyük hacimli yazmalar yapıyorsanız azaltma olasılığı yalnızca okumalar yapıyorsanız daha yüksektir.

Bu Key Vault nasıl ele alır?

Hizmet sınırları Key Vault kaynakların kötüye kullanımını önler ve tüm müşterilerin hizmet Key Vault sağlar. Bir hizmet eşiği aşılırsa, Key Vault bir süre boyunca bu istemciden gelen diğer istekleri sınırlar, 429 (Çok fazla istek) HTTP durum kodu döndürür ve istek başarısız olur. 429 dönüşen başarısız istekler, 429 sayısı tarafından izlenen kısıtlama sınırlarına Key Vault.

Key Vault başlangıçta dağıtım zamanında gizli dizilerinizi depolamak ve almak için kullanılacak şekilde tasarlanmıştır. Dünya gelişti ve Key Vault gizli dizileri depolamak ve almak için çalışma zamanında kullanılıyor ve genellikle uygulama ve hizmetler veritabanı gibi Key Vault kullanmak istiyor. Geçerli sınırlar yüksek aktarım hızı hızlarını desteklemez.

Key Vault başlangıçta hizmet sınırları içinde belirtilen sınırlarla Azure Key Vault oluşturulmuş. Aktarım hızınızı en Key Vault için, aktarım hızınızı en üst düzeye çıkarmak için önerilen yönergeler/en iyi yöntemlerden bazıları:

  1. Azaltmanın olduğundan emin olmak. İstemcinin 429'lar için üstel geri kapatma ilkelerine uygun olması ve aşağıdaki kılavuza göre yeniden denemeler yaparkenn emin olması gerekir.
  2. Trafiğinizi Key Vault kasalar ve farklı bölgeler arasında bölün. Her güvenlik/kullanılabilirlik etki alanı için ayrı bir kasa kullanın. Her biri iki bölgede bulunan beş uygulamanız varsa, her biri uygulamaya ve bölgeye özgü gizli dizileri içeren 10 kasa öneririz. Tüm işlem türleri için abonelik genelinde sınır, tek tek anahtar kasası sınırının beş katıdır. Örneğin, abonelik başına HSM-diğer işlemler, abonelik başına 10 saniye içinde 5.000 işlemle sınırlıdır. RPS'yi doğrudan anahtar kasasına azaltmak ve/veya seri hale gelen trafiği işlemek için gizli anahtarı hizmetinizin veya uygulamanın içinde önbelleğe almayı göz önünde bulundurabilirsiniz. Ayrıca gecikme süresini en aza indirmek ve farklı bir abonelik/kasa kullanmak için trafiğinizi farklı bölgelere bölebilirsiniz. Tek bir Azure bölgesinde Key Vault fazla abonelik sınırı göndermeyin.
  3. Dosyadan alınan gizli dizileri Azure Key Vault bellekte önbelleğe alın ve mümkün olduğunca bellekten yeniden kullanabilirsiniz. Önbellekten yeniden Azure Key Vault ancak önbelleğe alınmış kopya çalışmayı durdurursa (örneğin, kaynakta döndürülmüşse).
  4. Key Vault, kendi hizmet gizli dizileriniz için tasarlanmıştır. Müşterilerinize yönelik gizli dizileri (özellikle yüksek aktarım hızına sahip anahtar depolama senaryoları için) depolarsanız, anahtarları şifreleme ile bir veritabanına veya depolama hesabına koyarak yalnızca ana anahtarı depolamayı Azure Key Vault.
  5. Ortak anahtar işlemlerini şifreleme, sarmalama ve doğrulama işlemleri Key Vault erişimi olmayan bir şekilde gerçekleştirebilirsiniz. Bu işlem yalnızca azaltma riskini azaltmanın yanı sıra güvenilirliği de artırır (ortak anahtar malzemesini düzgün bir şekilde önbelleğe alırsınız).
  6. Bir hizmetin kimlik bilgilerini Key Vault kimlik bilgilerini depolamak için Key Vault kullanıyorsanız, bu hizmetin doğrudan kimlik doğrulaması için Azure AD Kimlik Doğrulaması'nın destekleyip desteklemey olduğunu kontrol edin. Bu, Key Vault yükünü azaltır, güvenilirliği artırır ve artık Azure AD belirteci Key Vault kodunuzu basitleştirmektedir. Birçok hizmet Azure AD Kimlik Doğrulaması'nın kullanımına taşınmıştır. Azure kaynakları için yönetilen kimlikleri destekleyen hizmetler'de geçerli listeye bakın.
  7. Geçerli RPS sınırlarının altında kalmak için yük/dağıtımlarınızı daha uzun bir süre boyunca hazırlamayı göz önünde bulundurabilirsiniz.
  8. Uygulamanız aynı gizli Key Vault okuması gereken birden çok düğümden oluşursa, bir varlığın gizli Key Vault ve tüm düğümlere fanları okuduğu bir fan desenini kullanmayı göz önünde bulundurabilirsiniz. Alınan gizli dizileri yalnızca bellekte önbelleğe alın.

Hizmet sınırlarına yanıt olarak uygulamalarınızı kısıtlama

Hizmetiniz kısıtlandı olduğunda aşağıdaki en iyi uygulamaları gerçekleştirin:

  • İstek başına işlem sayısını azaltma.
  • İstek sıklığını azaltma.
  • Hemen yeniden denemelerden kaçının.
    • Tüm istekler kullanım sınırlarınıza göre tahakkuk ediyor.

Uygulamanıza hata işlemeyi uygulamak için 429 HTTP hata kodunu kullanarak istemci tarafı azaltmaya olan ihtiyacı tespit edin. İstek http 429 hata koduyla yeniden başarısız olursa, yine de Bir Azure hizmet sınırıyla karşılaşabilirsiniz. Önerilen istemci tarafı azaltma yöntemini kullanmaya devam eder ve başarılı olana kadar isteği yeniden deneyin.

Üstel geri tarak uygulayan kod aşağıda gösterilmiştir.

SecretClientOptions options = new SecretClientOptions()
    {
        Retry =
        {
            Delay= TimeSpan.FromSeconds(2),
            MaxDelay = TimeSpan.FromSeconds(16),
            MaxRetries = 5,
            Mode = RetryMode.Exponential
         }
    };
    var client = new SecretClient(new Uri("https://keyVaultName.vault.azure.net"), new DefaultAzureCredential(),options);
                                 
    //Retrieve Secret
    secret = client.GetSecret(secretName);

Bu kodu bir istemci C# uygulamasında kullanmak oldukça kolaydır.

HTTP hata kodu 429'da, üstel gerileme yaklaşımını kullanarak istemcinizi azaltmaya başlayabilirsiniz:

  1. 1 saniye bekleyin, isteği yeniden deneyin
  2. Yine de 2 saniyelik bekleme süresi kısıtlandı ise isteği yeniden deneyin
  3. 4 saniye bekleme süresi yine kısıtlandı ise isteği yeniden deneyin
  4. 8 saniye bekleme süresi yine kısıtlandı ise isteği yeniden deneyin
  5. 16 saniye bekleme süresi yine kısıtlandı ise isteği yeniden deneyin

Bu noktada HTTP 429 yanıt kodları almamalısiniz.

Ayrıca bkz.

Microsoft Bulut'ta azaltmanın daha derin bir yönü için bkz. Azaltma Düzeni.