我正在构建一项服务,其中将允许用户使用不同的身份提供程序。用户向提供程序进行身份验证后,我需要存储令牌,以便我可以代表他们进行调用。
我的问题是关于将此令牌安全地存储在 Azure 中。
我认为最好的候选人是:
- 使用"始终加密"将令牌存储在 Azure SQL 中。存储加密密钥 在 Azure 密钥保管库中。
- 将令牌存储在 Azure 密钥保管库中的机密下。
我是否忘记了安全存储令牌的任何其他选项?关于哪种方法更好的任何建议?
Azure SQL 信息保护怎么样?可从 Azure 门户进行管理,并具有很大的灵活性。您甚至可以监视表并授予对表的特定权限: https://azure.microsoft.com/nl-nl/blog/information-security-policy-in-asc/
但是,对于你的方案,我认为使用密钥保管库是最佳选择,因为它是为此目的而构建的。
通过将令牌作为机密直接存储在密钥保管库中来减少攻击面。
你可能还有其他应用程序访问不需要访问密钥保管库的 SQL 实例,因此密钥保管库网络访问可能比 SQL 服务器更严格地锁定。
值得记住的是 KeyVault 的服务限制:
机密、托管存储帐户密钥和保管库事务:2,000 每个区域每个文件库在 10 秒内允许的最大事务数
所有事务类型的订阅范围限制为每个密钥保管库限制的五倍。例如,每个订阅的 HSM 其他事务限制为每个订阅在 10 秒内处理 5,000 个事务。
可在此处找到详细信息:Azure 密钥保管库服务限制
根据可伸缩性目标,你可能还希望考虑 Cosmos DB:
Cosmos DB 并不便宜,但它的可伸缩性很强,并支持静态加密。
静态加密是一个短语,通常指加密 非易失性存储设备(如固态驱动器(上的数据 (固态硬盘(和硬盘驱动器 (HDD(。Cosmos DB 存储其主数据库 固态硬盘上的数据库。其媒体附件和备份存储在 Azure Blob 存储,通常由 HDD 备份。随着 发布 Cosmos DB、所有数据库、媒体的静态加密 附件和备份已加密。您的数据现已加密 传输(通过网络(和静态(非易失性存储(,提供 您进行端到端加密。
作为 PaaS 服务,Cosmos DB 非常易于使用。因为所有用户 存储在 Cosmos DB 中的数据在静态和传输中加密,你 不必采取任何行动。另一种说法是 默认情况下,静态加密处于"打开"状态。没有控件可以转动 它关闭或打开。Azure Cosmos DB 在所有区域使用 AES-256 加密 帐户正在运行的位置。我们提供此功能,而我们 继续满足我们的可用性和性能 SLA。
https://learn.microsoft.com/en-us/azure/cosmos-db/database-encryption-at-rest