
哈佛 Translation Company 推薦:如何选择最佳翻译服务
Azure Key Vault 是微软提供的云端密钥和秘密管理解决方案,专注于帮助开发者安全存储敏感数据。本文将带你全面了解 Azure Key Vault 的核心功能,从零信任安全策略到实践操作,助你轻松管理 API 密钥、数据库连接字符串等应用秘密。通过本教程,你将学会如何在虚拟机和 Kubernetes 集群中访问和使用 Key Vault 中的秘密,为云端开发保驾护航。
零信任安全策略是一种现代化的网络安全方法,强调不信任任何内部或外部请求,无论其来源或访问的资源如何。零信任的基础是不断验证每个访问请求,以确保系统的安全性和完整性。
零信任模型的核心在于“从不信任,始终验证”。与传统的安全方法不同,零信任假设安全防护的周界已经受到威胁,因此每个访问请求都需要经过严格的验证。这个策略包括三个主要原则:
引用的图片展示了零信任策略的核心思想:
在云环境中,应用和数据的安全性是零信任策略的重点。Azure Key Vault等工具提供了一个强大的平台,可以帮助管理和保护应用所需的机密信息。它不仅限于密钥管理,还包括证书管理和应用程序的安全性。
Azure Key Vault通过以下方式支持零信任策略:
下图展示了Azure Key Vault在管理机密方面的作用:
零信任策略在保护云端应用和数据方面提供了一个全面的框架,通过持续验证和最小化权限确保数据始终受到保护。通过Azure Key Vault的集成,云环境中的安全性得到了进一步提升。
Azure Key Vault 是一个综合性的密钥管理解决方案,不仅限于秘密管理,还包括密钥管理和证书管理。通过集中存储应用程序的秘密信息,Azure Key Vault 有效地减少了意外泄露的风险,并消除了在应用程序代码中嵌入安全信息的必要性。密钥和秘密可以通过软件或硬件安全模块(HSMs)进行保护,以增强安全性。借助 Azure Active Directory 和 Azure RBAC,Azure Key Vault 提供了正确的身份验证和授权机制,从而确保了安全存储和访问控制。
通过上图可以看出,Azure Key Vault 提供了强大的功能来保护敏感信息的安全,支持零信任安全策略的实施。
Azure Key Vault 不仅自身提供了强大的安全管理功能,还能轻松集成到其他 Azure 服务中,例如 Azure Disk Encryption、SQL Server 和 Azure App Service。这种集成能力使得 Azure Key Vault 成为 Azure 生态系统中不可或缺的一部分,帮助用户实现更高效的资源管理和安全策略。通过与其他服务的无缝集成,Azure Key Vault 可以简化管理流程,提升整体系统的安全性和可用性。
在 Azure Key Vault 的广泛应用中,其核心优势在于能够确保数据的安全加密、便捷的访问控制以及与现有 Azure 服务的深度集成。这些功能不仅满足了企业对于安全管理的高标准要求,还提升了整个云环境的运营效率。
在使用 Azure CLI 创建 Azure Key Vault 资源之前,首先需要创建一个资源组。资源组是 Azure 中管理和组织资源的逻辑容器。通过以下命令,可以在指定区域创建一个名为 myResourceGroup
的资源组:
az group create --name "myResourceGroup" --location "EastUS"
创建资源组后,即可通过 Azure CLI 创建 Key Vault。确保 Key Vault 的名称在 Azure 中是唯一的。以下命令将在 myResourceGroup
中创建一个名为 myKeyVault
的 Key Vault:
az keyvault create --name "myKeyVault" --resource-group "myResourceGroup" --location "EastUS"
Azure Key Vault 提供了安全存储和管理秘密(如密码和连接字符串)的功能。要在 Key Vault 中创建一个秘密,可以使用以下命令,将名称为 ExampleSecret
的秘密设置为 MySecretValue
:
az keyvault secret set --vault-name "myKeyVault" -n ExampleSecret --value MySecretValue
创建秘密后,可以通过以下命令查看其详细信息,以验证秘密是否成功存储:
az keyvault secret show --vault-name "myKeyVault" -n ExampleSecret
利用 Azure Key Vault 的秘密管理功能,可以将应用程序的敏感数据安全地存储在云端,减少因意外泄露而导致的风险。通过合理的访问控制策略,Azure Key Vault 确保只有经过授权的用户和应用程序能够访问这些关键信息。
在本节中,我们将介绍如何在虚拟机中访问 Azure Key Vault 中存储的秘密,并确保操作的安全性和有效性。Azure Key Vault 是一个强大的工具,用于管理和保护应用程序所需的敏感信息,如密码和 API 密钥。
首先,我们需要创建一个虚拟机并为其分配系统身份,以便它能够访问 Azure Key Vault 中的秘密。使用以下命令创建虚拟机,并自动生成 SSH 密钥:
az vm create
--resource-group myResourceGroup
--name myVM
--image UbuntuLTS
--admin-username azureuser
--generate-ssh-keys
创建虚拟机后,我们需要为其分配一个系统分配身份,以便能够获得访问 Key Vault 的权限:
az vm identity assign --name "myVM" --resource-group "myResourceGroup"
接下来,使用以下命令为该身份分配访问 Key Vault 的权限:
az keyvault set-policy --name "myKeyVault" --object-id "" --secret-permissions get list
在虚拟机上,我们将编写一个简单的 Python 应用程序以读取 Key Vault 中的秘密。首先,连接到虚拟机,并安装所需的 Python 库:
sudo apt update && sudo apt upgrade -y
sudo apt install python3-pip
python3 -m pip install --upgrade pip
pip3 install azure-keyvault-secrets
pip3 install azure.identity
然后,创建一个名为 main.py
的 Python 应用程序,该应用程序将使用 Azure Key Vault SDK 来检索秘密:
from azure.keyvault.secrets import SecretClient
from azure.identity import DefaultAzureCredential
key_vault_name = "myKeyVault"
key_vault_uri = f"https://{key_vault_name}.vault.azure.net"
secret_name = "ExampleSecret"
credential = DefaultAzureCredential()
client = SecretClient(vault_url=key_vault_uri, credential=credential)
retrieved_secret = client.get_secret(secret_name)
print(f"The value of secret '{secret_name}' in '{key_vault_name}' is: '{retrieved_secret.value}'")
最后,运行 main.py
。如果一切正常,您将看到存储在 Key Vault 中的秘密值被成功检索并打印出来。
通过这种方式,您可以使用 Azure Key Vault 来安全地在虚拟机中管理和访问敏感信息,从而确保应用程序的安全性和完整性。
在现代云环境中,安全地管理和访问机密信息至关重要。Azure Key Vault 提供了一种集中化的解决方案,能够安全地存储和管理机密。通过 Azure Kubernetes Service (AKS),您可以轻松地在容器化的应用程序中访问这些机密。本文将指导您如何通过 AKS 集群访问 Azure Key Vault 中的机密。
为了在 AKS 中访问 Azure Key Vault 中的机密,首先需要创建一个 AKS 集群,并启用 Secrets Store CSI Driver。这一驱动程序允许 Kubernetes 可以直接从 Azure Key Vault 中提取和管理机密。
首先,使用以下命令创建一个启用了 Azure Key Vault Secrets Provider 插件的 AKS 集群:
az aks create -n myAKSCluster -g myResourceGroup --node-count 1 --enable-addons azure-keyvault-secrets-provider
该命令创建了 AKS 集群,并启用了用于访问 Azure 资源的 azureKeyvaultSecretsProvider 身份。请记录输出中的 clientId,它将在后续步骤中用于访问 Key Vault。
接下来,验证安装是否成功:
kubectl get pods -n kube-system -l 'app in (secrets-store-csi-driver,secrets-store-provider-azure)'
一旦 AKS 集群创建并配置好,下一步是创建 SecretProviderClass,以便将机密作为文件挂载到 Kubernetes Pod 中。
首先,创建一个名为 spc.yaml
的 YAML 文件,内容如下:
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: azure-keyvault-secrets
spec:
provider: azure
parameters:
usePodIdentity: "false"
useVMManagedIdentity: "true"
userAssignedIdentityID:
keyvaultName:
cloudName: ""
objects: |
array:
- |
objectName: ExampleSecret
objectType: secret
objectVersion: ""
tenantId:
确保替换 YOUR-IDENTITY-ID
、YOUR-KEYVAULT-NAME
和 YOUR-TENANT-ID
为您自己的值。然后应用此配置:
kubectl apply -f spc.yaml
接下来,创建一个示例 Pod 来验证 SecretProviderClass 的配置。创建一个名为 pod.yaml
的文件:
kind: Pod
apiVersion: v1
metadata:
name: busybox-secrets-store-inline
spec:
containers:
- name: busybox
image: registry.k8s.io/e2e-test-images/busybox:1.29-1
command:
- "/bin/sleep"
- "10000"
volumeMounts:
- name: secrets-store01-inline
mountPath: "/mnt/secrets-store"
readOnly: true
volumes:
- name: secrets-store01-inline
csi:
driver: secrets-store.csi.k8s.io
readOnly: true
volumeAttributes:
secretProviderClass: "azure-keyvault-secrets"
应用该配置文件:
kubectl apply -f pod.yaml
完成后,您可以验证机密是否成功挂载到 Pod 中:
kubectl exec busybox-secrets-store-inline -- cat /mnt/secrets-store/ExampleSecret
如果一切配置正确,您将看到从 Azure Key Vault 中检索的机密值。这种方法保证了在 Kubernetes 环境中安全地管理和访问 Azure Key Vault 中的机密,符合现代化的安全需求。