当一个人向程序验证自己的身份时,他们会输入密码来执行此操作。但是,当程序需要向另一个资源验证自身身份时,它会做什么呢?借助 Azure Identity,Microsoft 为大多数场景提供了解决方案。然而,在当前的项目中,我们遇到了我们的程序必须登录到机器的控制服务器的问题。这不支持Azure,制造商只为我们提供了用户名和密码。
直观的方法是将访问数据存储在机器上。为了使任何用户都无法读取它们,它们必须被加密。钥匙必须存放在某个地方,所以这个想法一直在循环。但微软也有一个解决方案:Azure KeyVault。
密钥库
Azure Key Vault 是一项用于安全存储 API 令牌、密码、证书或加密 贝宁 whatsapp 数据 密钥的云服务。可以非常精确地控制对它的访问。
首先,建议为每个应用程序创建一个单独的保管库。然后可以将对其的访问限制在一定范围的 IP 地址内,仅允许来自您自己的 VPN 的用户。为了准确了解谁读取或更改了机密以及何时读取或更改了机密,可以选择打开详细日志记录。
角色确定允许哪些用户读取、写入或删除保管库中的机密。基于角色的访问控制(RBAC)概念贯穿整个 Azure。要理解它,首先必须明确三个基本概念:
安全主体:这个总括术语包括用户、组、托管身份和服务主体。后者也称为注册应用程序,代表在云外运行的程序的权利。
范围:这个术语最好翻译为“范围”。它是有限数量的资源。理想情况下,这是单个 Azure 服务,但权限也可以分配给整个资源组
角色:角色定义包含权限和禁止列表。
为了让程序访问其机密,它需要一个具有允许此操作的角色的安全主体。服务主体是在 Azure 中管理的身份。程序如何与其身份相关联以及其角色取决于它所在的位置。
注册应用程序
假设涉及的所有服务都在任意数据中心运行。所讨论的 Web 服务(我们将其称为计算机客户端)可以访问 Internet 上的 Azure 和本地网络中的计算机服务器。所有必要的访问数据都在 KeyVault 中得到很好的保护。
在最简单的情况下,机器客户端将在 Docker 容器中运行。然后,您可以通过Azure DevOps中的管道启动它,并将 KeyVault 中的所有必要机密作为环境变量提供给它。只有管道需要访问 KeyVault。不幸的是事实并非如此。相反,客户端应该在靠近该机器的本地机器上运行。所以他必须亲自去和蔚蓝沟通。