Pokyny k omezování služby Azure Key Vault

Omezování je proces, který zahájíte, čímž omezíte počet souběžných volání služby Azure, aby se zabránilo nadměrnému využití prostředků. Služba Azure Key Vault (AKV) je navržená tak, aby zpracovávala velký objem požadavků. Pokud dojde k zahlcení počtu požadavků, pomáhá omezování požadavků klienta udržovat optimální výkon a spolehlivost služby AKV.

Limity omezování se liší v závislosti na scénáři. Pokud například provádíte velký objem zápisů, je možnost omezování vyšší, než když provádíte jenom čtení.

Jak Key Vault zpracovává své limity?

Omezení služeb ve službě Key Vault brání zneužití prostředků a zajišťují kvalitu služby pro všechny klienty služby Key Vault. Když dojde k překročení prahové hodnoty služby, služba Key Vault omezuje všechny další požadavky z daného klienta, vrátí stavový kód HTTP 429 (Příliš mnoho požadavků) a požadavek selže. Neúspěšné požadavky, které vrací chybu 429, se nezapočítávají do limitů omezení sledovaných službou Key Vault.

Služba Key Vault byla původně navržena tak, aby ukládala a načítala tajné kódy v době nasazení. Svět se vyvinul a Služba Key Vault se používá za běhu k ukládání a načítání tajných kódů a často aplikací a služeb, které chtějí používat službu Key Vault jako databázi. Aktuální limity nepodporují vysokou propustnost.

Služba Key Vault byla původně vytvořena s limity zadanými v limitech služby Azure Key Vault. Pokud chcete maximalizovat rychlost propustnosti služby Key Vault, tady je několik doporučených pokynů a osvědčených postupů pro maximalizaci propustnosti:

  1. Ujistěte se, že máte zavedené omezování. Klient musí dodržovat zásady exponenciálního back-off pro 429 a zajistit, že provádíte opakování podle následujících pokynů.
  2. Rozdělte provoz služby Key Vault mezi několik trezorů a různých oblastí. Pro každou doménu zabezpečení a dostupnosti použijte samostatný trezor. Pokud máte pět aplikací, každý ze dvou oblastí, doporučujeme 10 trezorů obsahujících tajné kódy jedinečné pro aplikaci a oblast. Limit pro všechny typy transakcí v rámci předplatného je pětkrát limit jednotlivých trezorů klíčů. Například transakce jiné HSM na předplatné jsou omezené na 5 000 transakcí za 10 sekund na předplatné. Zvažte ukládání tajného kódu do mezipaměti ve vaší službě nebo aplikaci, aby se také snížil počet rpS přímo do trezoru klíčů nebo zpracování provozu založeného na shluku. Přenosy můžete také rozdělit mezi různé oblasti, abyste minimalizovali latenci a použili jiné předplatné nebo trezor. Do služby Key Vault v jedné oblasti Azure neodesílejte více než limit předplatného.
  3. Do mezipaměti ukládejte tajné kódy, které načítáte ze služby Azure Key Vault, do paměti a opakovaně je používejte z paměti, kdykoli je to možné. Opětovné čtení ze služby Azure Key Vault pouze v okamžiku, kdy kopírování v mezipaměti přestane fungovat (např. proto, že se otočil ve zdroji).
  4. Key Vault je navržený pro vaše vlastní tajné kódy služeb. Pokud ukládáte tajné kódy zákazníků (zejména pro scénáře úložiště klíčů s vysokou propustností), zvažte umístění klíčů do databáze nebo účtu úložiště s šifrováním a uložení pouze primárního klíče ve službě Azure Key Vault.
  5. Operace šifrování, zabalení a ověření veřejného klíče je možné provádět bez přístupu ke službě Key Vault, což nejen snižuje riziko omezování, ale také zvyšuje spolehlivost (pokud správně ukládáte do mezipaměti materiál veřejného klíče).
  6. Pokud k ukládání přihlašovacích údajů pro službu používáte Key Vault, zkontrolujte, jestli tato služba podporuje ověřování Microsoft Entra přímo. Tím se snižuje zatížení služby Key Vault, zvyšuje spolehlivost a zjednodušuje váš kód, protože Key Vault teď může používat token Microsoft Entra. Mnoho služeb se přesunulo na používání ověřování Microsoft Entra. Aktuální seznam najdete ve službách, které podporují spravované identity pro prostředky Azure.
  7. Zvažte zastřešování zatížení a nasazení za delší dobu, abyste zůstali pod aktuálními limity RPS.
  8. Pokud vaše aplikace obsahuje více uzlů, které potřebují číst stejné tajné kódy, zvažte použití vzoru fanoušek, kde jedna entita čte tajný kód ze služby Key Vault a ventilátory do všech uzlů. Ukládejte načtené tajné kódy do mezipaměti pouze v paměti.

Omezení aplikace v reakci na limity služeb

Při omezování služby byste měli implementovat následující osvědčené postupy :

  • Snižte počet operací na požadavek.
  • Snižte frekvenci požadavků.
  • Vyhněte se okamžitým opakovaným pokusům.
    • Všechny požadavky nabíhají proti limitům využití.

Při implementaci zpracování chyb vaší aplikace použijte kód chyby HTTP 429 ke zjištění potřeby omezování na straně klienta. Pokud se požadavek znovu nezdaří s kódem chyby HTTP 429, stále dochází k limitu služby Azure. Pokračujte v používání doporučené metody omezování na straně klienta a opakujte pokus o požadavek, dokud nebude úspěšný.

Tady je kód, který implementuje exponenciální zpochybnění:

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);

Použití tohoto kódu v klientské aplikaci jazyka C# je jednoduché.

U kódu chyby HTTP 429 začněte s omezováním klienta pomocí metody exponenciálního zpomalování přístupu:

  1. Počkejte 1 sekundu a zopakujte požadavek
  2. Pokud stále dochází k omezování, počkejte 2 sekundy a zopakujte požadavek
  3. Pokud stále dochází k omezování, počkejte 4 sekundy a zopakujte požadavek
  4. Pokud stále dochází k omezování, počkejte 8 sekund a zopakujte požadavek
  5. Pokud stále dochází k omezování, počkejte 16 sekund a zopakujte požadavek

V tuto chvíli by se vám už neměly zobrazovat kódy odpovědí HTTP 429.

Viz také

Podrobnější orientaci omezování v Microsoft Cloudu najdete v tématu Omezení.