Azure Key Vault(密钥库)是用于安全地存储和访问Secret的云服务,Secret是需要严格控制访问权限的内容,例如API密钥,密码,证书或加密密钥。Key Vault Service支持两种类型的容器:保管库(Valut)和托管HSM池(Hardware Security Module Pools)。 Valut支持存储软件和HSM-backed的密钥,Secret和证书,托管HSM池仅支持HSM-backed的密钥。
用户从Key Valut中获取Secret,使用Secret作为身份验证来访问数据。
一,Azure Key Valut的作用
Azure Key Vault是用于管理密钥,机密和证书的云服务,Key Vault避免了开发人员直接在代码中存储Secret信息的情况。Key Valut可以集中存储应用程序Secret,这大大减少了Secret被泄露的可能。Key Valut不经能够安全地存储由HSM支持的Secret和Key,还提供了对所有Secret访问和尝试使用的日志,因此具有完整的审核跟踪以确保合规性。
- Secret 管理:Azure Key Valut用于安全地存储和严格控制对token,密码,证书,API密钥和其他Secret的访问
- 密钥管理:Azure Key Vault可以用作密钥管理解决方案,使用Azure Key Vault可以轻松创建和控制用于加密数据的加密密钥。
- 证书管理:Azure Key Vault也是一项服务,使您可以轻松地设置,管理和部署公共和私有传输层安全性/安全套接字层(TLS / SSL)证书,以与Azure和内部连接的资源一起使用。
Azure Key Vault具有两个服务层:使用软件密钥加密的标准服务层和包含受HSM保护的密钥的高级服务层。
二,Azure Key Valut的相关概念
租户(Tenant):租户是拥有和管理Microsoft云服务的特定实例的组织,它最常用于指一个组织的Azure和Microsoft 365服务集。
安全主体(Security Pricipal):Azure安全主体是用户创建的安全身份ID,应用程序,服务和自动化工具使用安全主体来访问特定的Azure资源。可以把Security Pricipal视为具有特定角色且受到严格控制的权限的“用户身份”(用户名和密码,或证书)。与一般用户身份不同,安全主体只需要做特定的事情。如果仅授予它执行管理任务所需的最低权限级别,则可以提高安全性。与应用程序或服务一起使用的安全主体专门称为服务主体(Service Principal)。
资源(Resource):资源是可通过Azure进行管理的项目,常见资源包括虚拟机,存储帐户,Web应用程序,数据库和虚拟网络。
资源组(Resource Group):资源组是一个容器,其中包含Azure解决方案的相关资源。资源组可以包含解决方案的所有资源,也可以仅包含要作为一个组进行管理的资源。
Azure Active Directory(简称 Azure AD):Azure AD是租户的AD服务,每个Directory都有一个或多个Domain,一个Directory可以有许多与其相关联的订阅(Subscription),但只能有一个租户。
托管ID(Managed identities): Azure Key Valut提供了一种安全地存储凭据以及其他密钥和Secret的方法,但是您的代码需要通过Key Valut进行身份验证才能检索它们。使用托管身份可以很简单地解决此问题:通过在Azure AD中为Azure服务提供自动托管身份,用户可以使用此托管身份对Key Vault或支持Azure AD身份验证的任何服务进行身份验证,而无需在代码中包含任何凭据。
访问Key Valut: 要对Key Vault进行任何操作,首先需要对其进行身份验证。 推荐使用“Azure资源的托管身份”对Key Vault进行身份验证。当向Azure中的虚拟机上部署应用程序时,可以向有权访问Key Vault的虚拟机分配身份,还可以把身份分配给其他Azure资源,这种方法的好处是应用程序或服务不负责管理第一个Secret的轮换, Azure自动旋转身份。
三,创建Azure Key Valut
使用Partal UI创建Azure Key Valut
step1:Basic 选项卡
Basic 选项卡部分,第一部分是设置Subscription 和 Resource Group,第二部分是设置Soft Deletion
软删除保护将自动在此密钥库(Key Valut)上启用,此功能用于在保留期内恢复或永久删除密钥库和Secret,软删除保护适用于密钥保管库和密钥保管库中存储的Secret。在Basic选项卡中,选项"Days to retain deleted values"用于设置软删除保护的保留期(retention period)。要强制执行保留期,并防止在保留期内永久删除密钥库或Secret,可以打开清除保护(Purge Protection)。 启用清除保护后,用户或Microsoft无法清除机密。选项“Enable purge protection (enforce a mandatory retention period for deleted vaults and vault objects)” 用于启用清除保护(Purge Protection),强制保留期。
Step2:设置Access Policy
设置访问策略(Access Policy)也分两部分,第一部分是设置 Enable Access to,第二部分是设置Permission Model和Access Policy。
通过“+Add Access Policy”来添加新的访问策略。
Step3:Networking选项卡
设置网络连接,勾选 “Public endpoint(all networks)”
点击“Review+Create”按钮,创建Key Valut
四,配置Key Valut
打开一个新建的Key Valut,从overview选项卡中,可以看到Key Valut的必要信息(Essential Info),其中Valut URL用于唯一标识给Key Valut:
在Settings分组中打开Secrets,本文示例如何配置一个新的Secret。
点击“+Generate/Import”,打开“Create a Secret”对话框,新建一个Secret,一个Secret主要是由Name和Value来构成的。
用户从Key Valut中获取Secret,使用Secret作为身份验证来访问数据。
参考文档: