Надежное хранение токенов oAuth в Azure - PullRequest
2 голосов
/ 19 октября 2019

Я создаю сервис, в котором я позволю пользователям использовать разных провайдеров идентификации. Как только пользователь проходит аутентификацию у провайдера, мне нужно сохранить токен, чтобы я мог совершать звонки от его имени.

Мой вопрос касается безопасного хранения этого токена в Azure.

Я считаю, чтоЛучшие кандидаты:

  1. Сохраните токен в Azure SQL с Always Encrypted. Храните ключ шифрования в хранилище ключей Azure.
  2. Хранить токен в хранилище ключей Azure под секретами.

Не забываю ли я о других способах безопасного хранения токена? Любые рекомендации, какой подход лучше?

Ответы [ 3 ]

2 голосов
/ 25 октября 2019

А как насчет Azure SQL Information Protection? Управляется с портала Azure и обладает большой гибкостью. Вы даже можете контролировать свою таблицу и давать ей определенные разрешения: https://azure.microsoft.com/nl-nl/blog/information-security-policy-in-asc/

Однако для вашего сценария я думаю, что использование хранилища ключей - лучший вариант, потому что оно предназначено для этой цели.

2 голосов
/ 21 октября 2019

Вы уменьшите поверхность атаки, сохранив токен непосредственно в Key Vault в качестве секрета.

У вас также могут быть другие приложения, которые обращаются к экземпляру SQL, которым не требуется доступ к Key Vault, итак что доступ к сети Key Vault может быть заблокирован более жестко, чем ваш SQL-сервер.

1 голос
/ 28 октября 2019

Стоит помнить, что пределы обслуживания для KeyVault:

Секреты, ключи учетной записи управляемого хранилища и транзакции хранилища: 2000 Максимально допустимые транзакции в течение 10 секунд на хранилище на регион

Лимит по всей подписке для всех типов транзакций - пять раз для лимита хранилища ключей. Например, другие транзакции HSM для каждой подписки ограничены 5000 транзакциями за 10 секунд для каждой подписки.

Подробности можно найти здесь: Ограничения службы хранилища ключей Azure

В зависимости от ваших целей масштабируемости вы также можете рассмотреть возможность использования Cosmos DB:

Cosmos DB недешев, но он очень масштабируем и поддерживает шифрование в состоянии покоя.

Шифрование в состоянии покояэто фраза, которая обычно относится к шифрованию данных на энергонезависимых устройствах хранения, таких как твердотельные накопители (SSD) и жесткие диски (HDD). Cosmos DB хранит свои первичные базы данных на SSD. Его медиа-вложения и резервные копии хранятся в хранилище BLOB-объектов Azure, которое обычно резервируется жесткими дисками. С выпуском шифрования в состоянии покоя для Cosmos DB все ваши базы данных, медиа-вложения и резервные копии зашифрованы. Теперь ваши данные шифруются при передаче (по сети) и в состоянии покоя (энергонезависимое хранилище), обеспечивая вам сквозное шифрование.

В качестве службы PaaS Cosmos DB очень прост в использовании. Поскольку все пользовательские данные, хранящиеся в Cosmos DB, зашифрованы в состоянии покоя и при транспортировке, вам не нужно предпринимать никаких действий. Еще один способ это сделать - шифрование в состоянии покоя по умолчанию включено. Нет элементов управления, чтобы выключить или включить его. Azure Cosmos DB использует шифрование AES-256 во всех регионах, где работает учетная запись. Мы предоставляем эту функцию, продолжая соответствовать нашим соглашениям о доступности и производительности .

https://docs.microsoft.com/en-us/azure/cosmos-db/database-encryption-at-rest

...