Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Регулирование — это процесс, который инициирует ограничение количества одновременных вызовов в службу Azure, чтобы предотвратить чрезмерное использование ресурсов. Azure Key Vault (AKV) предназначен для обработки большого объема запросов. Если происходит подавляющее количество запросов, регулирование запросов клиента помогает обеспечить оптимальную производительность и надежность службы AKV.
Ограничения скорости зависят от сценария. Например, при выполнении большого объема операций записи возможность регулирования будет более высокой по сравнению с ситуацией, когда выполняются только операции чтения.
Как Key Vault обрабатывает свои ограничения?
Ограничения служб в Key Vault предотвращают неправильное использование ресурсов и обеспечивают качество обслуживания для всех клиентов Key Vault. При превышении порогового значения службы Key Vault ограничивает все дальнейшие запросы от этого клиента, возвращает код состояния HTTP 429 (слишком много запросов), а запрос завершается ошибкой. Неудачные запросы, возвращающие 429, не учитываются в рамках допустимых лимитов, отслеживаемых Хранилищем ключей.
Key Vault изначально предназначен для хранения и извлечения секретов во время развертывания. В процессе развития технологий Key Vault все больше используется в ходе выполнения для хранения и извлечения секретов. Многие приложения и службы используют Key Vault подобно базе данных. Однако текущие ограничения службы не предназначены для поддержки таких сценариев высокой пропускной способности.
Key Vault изначально был создан с ограничениями, указанными в ограничениях службы Azure Key Vault. Чтобы максимально увеличить скорость пропускной способности Key Vault, ниже приведены некоторые рекомендации и передовые методы для ее увеличения.
- Убедитесь, что ограничение скорости установлено. Клиент должен учитывать экспоненциальные политики резервного копирования для 429-х и убедиться, что вы выполняете повторные попытки в отношении рекомендаций.
- Разделите трафик Key Vault между несколькими хранилищами и различными регионами. Используйте отдельное хранилище для каждого домена безопасности и доступности. Если у вас есть пять приложений, в каждом из двух регионов, мы рекомендуем 10 хранилищ, каждое из которых содержит секреты, уникальные для каждого приложения и региона. Ограничение на уровне подписки для всех типов транзакций составляет пять раз, чем ограничение отдельного хранилища ключей. Например, транзакции HSM-other для каждой подписки ограничены 5000 транзакций в 10 секунд на подписку. Рассмотрите возможность кэширования секрета в службе или приложении, чтобы также уменьшить количество RPS непосредственно в хранилище ключей и (или) обрабатывать всплески трафика. Вы также можете разделить трафик между различными регионами, чтобы свести к минимуму задержку и использовать другую подписку или хранилище. Не отправляйте больше подписки в службу Key Vault в одном регионе Azure.
- Кэшируйте секреты, полученные из Azure Key Vault в памяти, и повторное использование из памяти по возможности. Повторное чтение из Azure Key Vault только в том случае, если кэшированная копия перестает работать (например, из-за обновления на источнике).
- Key Vault предназначен для собственных секретов служб. Если вы храните секреты клиентов (особенно для сценариев хранилища ключей с высокой пропускной способностью), рекомендуется поместить ключи в базу данных или учетную запись хранения с шифрованием и сохранить только первичный ключ в Azure Key Vault.
- Для операций с открытым ключом, таких как шифрование, упаковка и проверка, эти операции выполняются локально без доступа к Key Vault путем кэширования материала открытого ключа. Этот подход не только снижает риск регулирования, но и повышает надежность приложения.
- Если вы используете Key Vault для хранения учетных данных для службы, проверьте, поддерживает ли эта служба проверку подлинности Microsoft Entra напрямую. Это снижает нагрузку на Key Vault, повышает надежность и упрощает код, так как Key Vault теперь может использовать токен Microsoft Entra. Многие службы теперь используют проверку подлинности Microsoft Entra. См. текущий список служб, поддерживающих управляемые удостоверения для ресурсов Azure.
- Рассмотрите возможность распределения нагрузки или развертывания на более длительный период времени, чтобы не превышать текущие ограничения RPS (запросов в секунду).
- Если ваше приложение состоит из нескольких узлов, которым нужно прочитать один или несколько одних и тех же секретов, рассмотрите возможность использования шаблона 'расщепление', при котором одна сущность считывает секрет из Key Vault и распределяет его по всем узлам. Кэшируйте извлеченные секреты только в памяти.
Как регулировать работу приложения в ответ на ограничения сервисов
Ниже приведены лучшие практики, которые следует реализовать при ограничении скорости вашей службы.
- Сократите число операций на запрос.
- Уменьшите частоту запросов.
- Избегайте немедленных повторных попыток.
- Все запросы начисляются в соответствии с ограничениями использования.
При реализации обработки ошибок приложения используйте код ошибки HTTP 429, чтобы определить необходимость регулирования на стороне клиента. Если запрос снова завершается ошибкой с кодом ошибки HTTP 429, вы по-прежнему сталкиваетесь с ограничением службы Azure. Продолжайте использовать рекомендуемый метод регулирования на стороне клиента, повторив запрос до тех пор, пока он не завершится успешно.
Ниже приведен код, реализующий экспоненциальную обратную передачу:
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);
Использование этого кода в клиентском приложении C# просто.
Рекомендуемый метод регулирования на стороне клиента
При возврате кода ошибки HTTP 429 начните ограничение скорости клиента с помощью метода экспоненциального понижения.
- Подождите 1 с и повторите запрос
- Подождите 2 секунды, если всё ещё действует ограничение, и повторно выполните запрос.
- Если запрос по-прежнему не выполнен, подождите 4 с и повторите запрос
- Если запрос по-прежнему не выполнен, подождите 8 с и повторите запрос
- Если запрос по-прежнему не выполнен, подождите 16 с и повторите запрос
На этом этапе вы не должны получать коды ответа HTTP 429.
См. также
Более глубокая ориентация регулирования в Microsoft Cloud см. в разделе "Шаблон регулирования".