是什么让 Azure Key Vault 比 Azure SQL DB 更安全?

Dat*_*tha 0 azure azure-sql-database azure-keyvault

是什么让 Azure Key Vault 比 Azure SQL DB 更安全?AZ SQL 提供传输安全。

我正在探索 Azure 服务来存储和检索敏感数据。Azure Key Vault,营销名称告诉我 AKV 是正确的选择。

所有数据当前都驻留在 AZ SQL DB 中。AKV 确实带来了另一个额外的 AZ 服务难题,需要在代码中进行管理。

与 AZ SQL DB 相比,Azure Key Vault 真的安全吗?

Chr*_*mus 6

从安全角度来看,您可以精细控制谁有权使用您的机密。例如,您可以向某些用户授予“设置”权限,但只为使用该密钥的应用程序授予“获取”权限。此外,在高级层中,Azure Key Vault 可以使用硬件安全模块 (HSM) 保护密钥,这在敏感环境中可能是必需的。

从实践的角度来看,从我的角度来看,Azure Key Vault 对开发人员来说最有趣的方面是它意味着在开发过程中不再需要将机密存储在环境变量(或类似变量)中,而是可以集中保存在 Key Vault 中- 代码无需修改即可部署到云环境。

一个例子:假设你和一个同事一起开发一个 Python 应用程序,该应用程序需要通过需要密码的第三方服务进行身份验证。您可以将该密码存储在 Azure SQL 中,但要访问 Azure SQL,您再次需要凭据。您如何与您的同事共享这些凭据?将它签入源代码管理不是一个好的做法,您可以通过其他渠道共享它,并且您都将其存储在本地环境变量中,但是如果此密码更改或您加入了新人,麻烦又会开始。通过使用 Azure Key Vault,您可以像这样检索密码:

from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
    
credentials = DefaultAzureCredential()
client = SecretClient("https://yourkeyvault.vault.azure.net/", credentials)
third_party_password = client.get_secret("third-party-password").value
Run Code Online (Sandbox Code Playgroud)

DefaultAzureCredential() 将自动检查多个位置以获取可用于从 Key Vault 获取机密的凭据。

https://pypi.org/project/azure-identity/

“环境”是指,如果你已经创建了一个 App 注册并且设置了以下环境变量

AZURE_USERNAME
AZURE_PASSWORD
AZURE_TENANT_ID
Run Code Online (Sandbox Code Playgroud)

DefaultAzureCredential() 将使用它们登录(当然,在 Key Vault 中必须设置相应的访问策略,以便用户可以读取机密)。

如果未找到环境变量,请DefaultAzureCredential()在下一步检查应用程序是否在托管标识可用的 (Azure) 环境中运行。换句话说,如果你使用启用了托管标识Azure 应用服务,并且此托管标识对你的 Key Vault 具有秘密“获取”权限,DefaultAzureCredential()则将使用这些权限。

如果您在本地开发并且不想设置环境变量,也可以简单地登录 Azure,az login使用它将在本地存储访问令牌。DefaultAzureCredential()可以使用该令牌登录到 Key Vault 并检索机密。在这种情况下,访问 Azure Key Vault 的密码和凭据都不需要本地存储。