Мультитенантность и Azure Key Vault
Azure Key Vault используется для управления безопасными данными для решения, включая секреты, ключи шифрования и сертификаты. В этой статье описаны некоторые функции Azure Key Vault, которые полезны для мультитенантных решений. Затем мы предоставляем ссылки на рекомендации, которые помогут вам при планировании использования Key Vault.
Модели изоляции
При работе с мультитенантной системой с помощью Key Vault необходимо принять решение о уровне изоляции, которую вы хотите использовать. Выбор используемых моделей изоляции зависит от следующих факторов:
- Сколько клиентов планируется иметь?
- Совместно ли вы используете уровень приложений между несколькими клиентами, развертываете экземпляры приложений с одним клиентом или развертываете отдельные метки развертывания для каждого клиента?
- Нужно ли клиентам управлять собственными ключами шифрования?
- Есть ли у клиентов требования к соответствию требованиям, которые требуют хранения секретов отдельно от секретов других клиентов?
В следующей таблице перечислены различия между основными моделями аренды для Key Vault:
Фактор | Хранилище для каждого клиента в подписке поставщика | Хранилище для каждого клиента в подписке клиента | Общее хранилище |
---|---|---|---|
Изоляция данных | Высокая | Крайне высоко | Низкая |
Изоляция производительности | Средняя. Высокая пропускная способность может быть ограничена, даже с большим количеством хранилищ | Высокая | Низкая |
Сложность развертывания | Низкий уровень в зависимости от количества клиентов | Высокая. Клиент должен правильно предоставить доступ к поставщику | Низкая |
Операционная сложность | Высокая | Низкий для поставщика, более высокий для клиента | Наиболее низкий |
Пример сценария | Отдельные экземпляры приложений для каждого клиента | Управляемые пользователем ключи шифрования | Крупное мультитенантное решение с общим уровнем приложений |
Хранилище для каждого клиента в подписке поставщика
Вы можете рассмотреть возможность развертывания хранилища для каждого клиента в подписке Azure (поставщика услуг). Этот подход обеспечивает надежную изоляцию данных между данными каждого клиента. Однако для этого требуется развернуть и управлять большим количеством хранилищ, так как вы увеличиваете число клиентов.
Количество хранилищ, которые можно развернуть в подписке Azure, не ограничено. Однако следует учитывать следующие ограничения:
- Существуют ограничения на количество запросов, которые можно сделать в течение определенного периода времени. Эти ограничения применяются независимо от количества хранилищ в подписке. Поэтому важно следовать нашим рекомендациям по регулированию, даже если у вас есть хранилища, относящиеся к клиенту.
- Существует ограничение на количество назначений ролей Azure, которые можно создать в подписке. При развертывании и настройке большого количества хранилищ в подписке можно приблизиться к этим ограничениям.
Хранилище для каждого клиента в подписке клиента
В некоторых ситуациях клиенты могут создавать хранилища в своих подписках Azure, и они могут предоставить приложению доступ к секретам, сертификатам или ключам. Этот подход подходит, если вы разрешаете ключи, управляемые клиентом (CMKs), для шифрования в решении.
Чтобы получить доступ к данным в хранилище клиента, клиент должен предоставить приложению доступ к хранилищу. Для этого процесса требуется, чтобы приложение проходило проверку подлинности с помощью экземпляра Microsoft Entra. Одним из способов является публикация мультитенантного приложения Microsoft Entra. Клиенты должны выполнять однократный процесс согласия. Сначала они регистрируют мультитенантное приложение Microsoft Entra в собственном клиенте Microsoft Entra. Затем они предоставляют мультитенантное приложение Microsoft Entra соответствующим уровнем доступа к хранилищу. Они также должны предоставить полный идентификатор ресурса созданного хранилища. Затем код приложения может использовать субъект-службу, связанный с мультитенантным приложением Microsoft Entra в собственном идентификаторе Microsoft Entra, для доступа к хранилищу каждого клиента.
Кроме того, вы можете попросить каждого клиента создать субъект-службу для использования службы и предоставить вам свои учетные данные. Однако этот подход требует безопасного хранения учетных данных для каждого клиента и управления ими, что является ответственностью за безопасность.
Если клиенты настраивают элементы управления доступом к сети в своих хранилищах, убедитесь, что вы сможете получить доступ к хранилищам. Создайте приложение для обработки ситуаций, когда клиент изменяет свои элементы управления доступом к сети и запрещает доступ к своим хранилищам.
Общие хранилища
Вы можете предоставить общий доступ к секретам клиентов в одном хранилище. Хранилище развертывается в подписке Azure (поставщика решений) и отвечаете за управление ею. Этот подход прост, но он обеспечивает наименьшую изоляцию данных и изоляцию производительности.
Вы также можете развернуть несколько общих хранилищ. Например, если следовать шаблону меток развертывания, скорее всего, вы развернете общее хранилище в каждой метки. Аналогичным образом, при развертывании решения с несколькими регионами следует развернуть хранилища в каждом регионе по следующим причинам:
- Чтобы избежать задержки трафика между регионами при работе с данными в хранилище.
- Для поддержки требований к месту расположения данных.
- Чтобы включить использование региональных хранилищ в других службах, требующих развертывания в одном регионе.
При работе с общим хранилищем важно учитывать количество операций, выполняемых в хранилище. Операции включают чтение секретов и выполнение операций шифрования или расшифровки. Key Vault накладывает ограничения на количество запросов , которые могут быть сделаны в одном хранилище и во всех хранилищах в подписке Azure. Убедитесь, что вы следуйте инструкциям по регулированию. Важно следовать рекомендациям, включая безопасное кэширование секретов, которые вы извлекаете и используете шифрование конверта, чтобы избежать отправки каждой операции шифрования в Key Vault. При выполнении этих рекомендаций можно выполнять высокомасштабные решения в одном хранилище.
Если вам нужно хранить секреты, ключи или сертификаты для конкретного клиента, рассмотрите возможность использования соглашения об именовании, например префикса именования. Например, можно присвоить идентификатор клиента имени каждого секрета. Затем код приложения может легко загрузить значение определенного секрета для конкретного клиента.
Функции Azure Key Vault, поддерживающие мультитенантность
Теги
Key Vault поддерживает теги секретов, сертификатов и ключей с пользовательскими метаданными, поэтому можно использовать тег для отслеживания идентификатора клиента для каждого секрета для конкретного клиента. Однако Key Vault не поддерживает запросы по тегам, поэтому эта функция лучше подходит для целей управления, а не для использования в логике приложения.
Подробнее:
Поддержка службы "Политика Azure"
Если вы решите развернуть большое количество хранилищ, важно убедиться, что они соответствуют согласованному стандарту конфигурации сетевого доступа, ведения журнала и управления доступом. Рассмотрите возможность использования Политика Azure для проверки конфигурации хранилищ в соответствии с вашими требованиями.
Подробнее:
Управляемый HSM и выделенный HSM
Если необходимо выполнить большое количество операций в секунду, а ограничения операций Key Vault недостаточно, рассмотрите возможность использования управляемого HSM или выделенного HSM. Обе продукты предоставляют зарезервированную емкость, но обычно они дороже, чем Key Vault. Кроме того, следует учитывать ограничения на количество экземпляров этих служб, которые можно развернуть в каждом регионе.
Подробнее:
- Разделы справки решить, следует ли использовать Azure Key Vault или выделенный HSM Azure?
- Подходит ли для вас выделенный HSM Azure?
Соавторы
Эта статья поддерживается корпорацией Майкрософт. Первоначально он был написан следующими участниками.
Автор субъекта:
- Джон Даунс | Главный инженер программного обеспечения
Другие участники:
- Джек Личва | Основной диспетчер продуктов, Azure Key Vault
- Арсен Владимирский | Главный инженер клиента, FastTrack для Azure
Чтобы просмотреть недоступные профили LinkedIn, войдите в LinkedIn.
Следующие шаги
Просмотрите подходы к развертыванию и настройке для мультитенантности.