0

我正在遵循指南https://docs.microsoft.com/en-us/cli/azure/create-an-azure-service-principal-azure-cli?toc=%2Fazure%2Fazure-resource-manager%2Ftoc。 json&view=azure-cli-latest 创建能够在 shell 脚本中使用的服务主体。

az ad sp create-for-rbac --name ServicePrincipalName --create-cert --cert CertName --keyvault VaultName

使用上述内容,我将创建的证书存储在密钥库中。

但是我不知道如何使用新的 sp..

我从文档中看到的。是 :-

az login --service-principal --username APP_ID --tenant TENANT_ID --password /path/to/cert

但即使我从密钥库下载了证书和私钥,这也不起作用。

如何告诉登录从 keyvault 获取密钥?

澄清(更新):

如果真的没有办法使用 keyvault 进行服务主体登录,那么我真的很想知道该官方文档中的两条语句的意义何在。建议这样

1)

可以添加 --keyvault 参数以使用 Azure Key Vault 中的证书。在这种情况下,--cert 值是证书的名称。

az ad sp create-for-rbac --name ServicePrincipalName --cert CertName --keyvault VaultName 

2)

对于存储在 Key Vault 中的证书,使用 az keyvault secret show 检索证书的私钥。在 Key Vault 中,证书的机密名称与证书名称相同。如果您无法访问证书的私钥,请重置服务主体凭据。

4

1 回答 1

1

如果您使用az login -h,您可以看到使用证书的示例:

az login --service-principal -u http://azure-cli-2016-08-05-14-31-15 -p ~/mycertfile.pem --tenant contoso.onmicrosoft.com

所以你需要:

  • -u服务主体的 id
  • -p证书文件
  • --tenant(或-t)Azure AD 租户 ID

我认为它不能使用 Key Vault 中的证书登录,因为您需要登录才能获取令牌才能调用 Key Vault。有点鸡和蛋的问题:)

于 2020-05-14T17:24:44.680 回答