在 Azure Key Vault 中维护机密,以便我们可以限制个人访问

问题描述 投票:0回答:1

我正在尝试了解在密钥库中维护机密的最佳实践:

  • 问题 1:我们是否应该授予基础结构对 Azure Key Vault 的访问权限并让团队成员访问以维护机密?

  • 问题 2:第二个选项是使用一个脚本来读取 ADO 变量组中的值,然后该脚本会将它们添加/更新到密钥保管库中。

我试图实现第二个选项,以便我们可以从一个地方管理所有秘密,这就是发生的事情。

计划是让那些应该位于 KeyVault 中的变量以静态字符串

KeyVault_
开头,然后使用
az pipeline variable group show -- group-id $GROUP_ID
读取这些变量,但正如预期的那样,秘密值的值为空。

如何实现类似的方法并从 ADO 机密更新密钥保管库机密。

$variable_group.variables.GetEnumerator() | ForEach-Object { 
    if ($_.Key.StartsWith("KeyVault_")) {
        $SecretName = $_.Key -replace "KeyVault_", ""
        $SecretValue = $_.Value.value

        if ($SecretValue) {
            Write-Output "Creating secret for $SecretName."
            az keyvault secret set --vault-name $KeyVaultName --name $SecretName --value $SecretValue --output none
            Write-Output "Added secret '$SecretName' to Key Vault '$KeyVaultName'."
        } else {
            Write-Warning "No value found for variable '$($_.Key)'."
        }
    }
}

我怎样才能正确分配

$SecretValue
的值,我已经尝试过
$($_.Key)
但没有运气!

azure azure-devops azure-pipelines azure-keyvault
1个回答
0
投票

最好将 Azure DevOps 变量组链接到 Key Vault,详细信息请参见 https://learn.microsoft.com/azure/devops/pipelines/library/link-variable-groups-to-key-vaults?view=azure -devops。您还应该为不同的项目创建单独的保管库,因为它们相对便宜 - 实际上根据使用情况是免费的,DevOps 不太可能超越这一点。

是的,您应该根据需要授予可信成员更新机密的权限,但最好使用 RBAC 而不是旧访问策略来管理分配给角色的这些成员:https://learn.microsoft.com/azure/key-vault /general/rbac-guide?tabs=azure-cli。这使他们能够更新或以其他方式旋转秘密。

这实际上只是通过让人们访问 DevOps 变量组来在 Key Vault 中设置这些变量来转移问题。在某些时候,必须信任一组个人才能设置甚至查看资源。但 Key Vault 为您提供比 DevOps 变量组更好的保护和审核。

注意:如果您使用机密来保护 Azure 中服务之间的访问,实际上最好尽可能使用 托管身份

© www.soinside.com 2019 - 2024. All rights reserved.