如何从现有的 Azure 服务主体获取客户端机密

How to get client secret from existing Azure service principal

我在 Azure 中创建了启用 RBAC 的 service principal 以使用环境变量在我的 OS 中配置 Key Vault 访问。创建服务主体时,Azure CLI 会响应服务主体详细信息,其中包含 clientSecret 值。创建命令:

az ad sp create-for-rbac -n <http://my-name> --sdk-auth

我想知道以后是否可以以及如何请求 clientSecret。当我使用

az ad sp show --id <my-service-principal-uuid>

az ad sp credential list --id <my-service-principal-uuid>

clientSecret不在响应信息中。

除了创建时,还有什么方法可以检索 clientSecret 吗?

你可以像下面这样获得

创建服务主体

SPA_SP_APP_ID=$(az ad sp create-for-rbac --name $AKS_SP_NAME --skip-assignment --query appId)

检索服务主体 APPID 和客户端密钥

 SPA_SP_SECRET=$(az ad sp credential reset --name $SPA_SP_APP_ID --query "password")

编辑

正如上面提到的 Moss,一旦创建就无法检索。

创建后无法检索。你能做的最好的事情就是重置它,此时你将看到新值:

PS C:\> az ad sp credential reset --name foo
{
  "appId": "...",
  "name": "foo",
  "password": "...",
  "tenant": "..."
}

这意味着您需要在任何地方手动更新凭据,例如在 Azure DevOps 中,如果您创建了与该特定服务主体的 Azure RM 服务连接。