获取服务主体的 AZURE_CREDENTIALS

Get the AZURE_CREDENTIALS of a Service Principal

我已经创建了我的服务主体。

使用GitHub我需要完成下面的所有参数。我的问题是我们在哪里以及如何找到每一个?

AZURE_CREDENTIALS :
{
  "clientId": "XXX",
  "clientSecret": "XXX",
  "subscriptionId": "XXX",
  "tenantId": "XXX",
  "activeDirectoryEndpointUrl": "XXX",
  "resourceManagerEndpointUrl": "XXX",
  "activeDirectoryGraphResourceId": "XXX",
  "sqlManagementEndpointUrl": "XXX",
  "galleryEndpointUrl": "XXX",
  "managementEndpointUrl": "XXX"
}

我已经在文档中看到我们可以使用 CLI Azure 为新主体服务生成 JSON 文件:

az ad sp create-for-rbac `
         --name "myApp" --role contributor `
         --scopes /subscriptions/8baa642d-5109-4f1c-b935-401e5b215078/resourceGroups/rg-ai-recommender `
         --sdk-auth

但我想使用现有的服务主体。

服务主体分为三种类型:

  • 申请
  • 托管身份
  • 旧版

You can use the Enterprise applications blade in the Azure portal to list and manage the service principals in a tenant. You can see the service principal's permissions, user consented permissions, which users have done that consent, sign in information, and more.

转到 Azure 门户,打开 Azure Active Directory,然后单击管理下的 Enterprise Applications 菜单项。

在那里,找到服务主体的注册,并找到相应的信息。

要为服务主体创建新的 clientSecret,请在 App Registrations 中找到相应的注册并打开管理下的证书和机密菜单。从那里,您可以创建一个新的秘密。您看不到现有机密的值。

您可以多次运行该命令。

如果您再次 运行,将出现一条消息,内容如下:

az ad sp create-for-rbac --name TestPrincipal --role Contributor --sdk-auth
Found an existing application instance of "[existingId]". We will patch it
Creating 'Contributor' role assignment under scope '/subscriptions/[guid]'
  Role assignment already exists.

The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli
'name' property in the output is deprecated and will be removed in the future. Use 'appId' instead.
{
  "clientId": "[existingId]",
  "clientSecret": "[aNewSecret]",
  "subscriptionId": "[subscriptionid]",
  // all the other properties
}

当然,这会使您在其他存储库中使用的凭据失效,因此您也应该更新这些凭据。

恢复机密是不可能的,因为它是机密。

这样您就可以在多个存储库中使用相同的服务主体。


请记住,为不同 services/deployments 创建新的服务主体可能是一种更安全的策略,因此您可以尽可能精细地分配角色。但这不是你的问题。