我正在遵循指南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密钥中的证书 保险柜。在这种情况下,--cert值是证书的名称。
az ad sp create-for-rbac --name ServicePrincipalName --cert CertName --keyvault VaultName
2)
对于存储在Key Vault中的证书,请检索证书的 带有az keyvault秘密秀的私钥。在Key Vault中,名称为 证书的机密与证书名称相同。如果你 无法访问证书的私钥,请重置服务 主要凭证。
答案 0 :(得分: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。 一点鸡蛋和鸡蛋的问题:)