我正在尝试按照 GitHub 存储库中提供的安装说明,使用 Azure Cloud Shell 安装 Azure Marketplace SaaS Accelerator。
但是,我在运行安装脚本时遇到错误。具体错误与 Key Vault 上的未经授权的操作有关。以下是我收到的错误消息:脚本在
Deploy.ps1 文件中的这些点失败:
调用者(Azure CLI 用户)似乎没有在配置了 RBAC 的 Key Vault 中设置机密所需的权限。我已采取的步骤:
az account show --query user.name -o tsv
az ad user list --filter "userPrincipalName eq '[email protected]'" --query "[].{id:objectId}" -o tsv
az account show
附件:
如何在 Azure Cloud Shell 中正确检索登录用户的对象 ID?您可以使用以下 CLI 命令在 Azure Cloud Shell 中检索登录用户的对象 ID:
az ad signed-in-user show --query id -o tsv
回复:
如何确保我的用户拥有在 Key Vault 中设置机密的必要权限?请注意,运行以下命令将创建密钥保管库,默认情况下访问配置设置为 RBAC 访问:
az keyvault create --name kvname --resource-group rgname
在这种情况下,所有者或贡献者等通用角色将无法在密钥保管库中设置机密,并会抛出如下错误:
az keyvault secret set --vault-name kvname --name secretname --value="secretvalue"
回复:
要解决此错误,登录用户必须具有“Key Vault 管理员” 或 “Key Vault 机密官员” 角色才能设置机密。
您可以使用此命令将所需的 RBAC 角色分配给登录用户:
az role assignment create --assignee "userObjID" --role "Key Vault Administrator" --scope "/subscriptions/subId/resourceGroups/rgName/providers/Microsoft.KeyVault/vaults/kvname"
回复:
当我在将角色分配给登录用户后再次运行命令时,成功创建的机密如下:
az keyvault secret set --vault-name kvname --name secretname --value="secretvalue"
回复:
有没有办法直接在部署脚本中处理此 RBAC 问题?或者,您可以通过禁用使用
Vault 访问权限创建 Azure 密钥保管库的 RBAC 访问权限来修改此命令:
az keyvault create --name kvname --resource-group rgname --enable-rbac-authorization false
将此第 360 行替换为以下修改后的命令,该命令可解决所有提到的 3 个与密钥保管库相关的部署错误。
az keyvault create --name $KeyVault --resource-group $ResourceGroupForDeployment --enable-rbac-authorization false --output $azCliOutput