凭据保护:AIP 还是 Key Vault?

You have been informed by your superiors of the company’s intentions to automate server deployment to Azure. There is, however, some concern that administrative credentials could be uncovered during this process.

You are required to make sure that during the deployment, the administrative credentials are encrypted using a suitable Azure solution.

Solution: You recommend the use of Azure Information Protection.

Does the solution meet the goal?

提供答案和解释。


针对上面的目标可用有多种选择。

其主要目的需要了解的是 AIP 是对文件的保护,而不是针对密钥等敏感信息的保护。

不,该解决方案不符合目标。

解释

Azure Information Protection (AIP) 的主要用途是用于对文档和电子邮件进行分类、标记和保护。它旨在保护非结构化数据(如 Word 文档、Excel 表格、PDF 文件等),防止敏感信息被未经授权的人员访问、共享或泄露。AIP 关注的是数据本身,无论它存储在哪里。

这个场景的核心问题是保护自动化部署过程中使用的凭据(如服务器管理员密码、API 密钥、数据库连接字符串等)。这些是结构化的机密信息 (Secrets),需要在部署时由自动化脚本或模板以编程方式安全地访问。

AIP 并不是为这种用途设计的,使用它来解决这个问题会非常笨拙且不安全。

正确的解决方案:Azure Key Vault

解决此问题的正确且推荐的 Azure 解决方案是 Azure Key Vault

Azure Key Vault 是一项云服务,专门用于安全地存储和管理应用程序和自动化流程所需的密钥、证书和机密信息。

正确的工作流程如下:

  1. 存储凭据:将服务器的管理员密码作为一个“机密 (Secret)”存储在 Azure Key Vault 中。
  2. 控制访问:为执行自动化部署的身份(例如,服务主体、托管标识或用户帐户)授予从 Key Vault 读取该特定机密的权限。
  3. 引用凭据:在您的自动化部署脚本或模板(如 ARM 模板、Bicep 文件、Terraform 或 PowerShell 脚本)中,不要硬编码密码。相反,您应该引用存储在 Key Vault 中的那个机密。
  4. 安全检索:在部署过程中,Azure 平台(或您的脚本)会使用经过身份验证的标识,在运行时安全地从 Key Vault 中检索密码,并用它来配置服务器。

为什么 Azure Key Vault 是正确的选择:

  • 专为机密设计:它是专门为管理凭据和密钥而构建的服务。
  • 集中管理:将所有凭据集中存放在一个安全的位置,便于管理和轮换。
  • 避免硬编码:凭据永远不会以明文形式出现在您的代码、配置文件或源代码管理系统(如 Git)中。
  • 精细的访问控制:您可以通过 Azure RBAC 精确控制谁或什么服务可以访问哪些机密。
  • 提供审计日志:Key Vault 会记录所有对机密的访问尝试,提供了完整的审计跟踪。

总之,Azure Information Protection 用于保护文档和邮件,而 Azure Key Vault 才是保护自动化部署过程中凭据的正确工具。