【问题标题】:Create Azure Service Principal for Service App using the CLI使用 CLI 为服务应用创建 Azure 服务主体
【发布时间】:2020-01-31 06:36:19
【问题描述】:

我正在尝试创建一个 Azure DevOps 服务端点以连接到 Azure 资源管理器并将我的应用部署到应用服务中。

当我转到 Azure DevOps > 项目属性并使用 UI(自动对话框)创建服务端点时,它工作正常,我的应用程序可以从 yaml 管道部署到应用程序服务,但是,当我尝试通过复制它时Azure CLI 它不起作用(构建失败部署抱怨服务主体)。

这是我的代码:

az_account=$(az account show)
az_subscription_id=$(echo $az_account |jq -r '.id')
az_subscription_name=$(echo $az_account |jq -r '.name')
az_tenant_id=$(echo $az_account |jq -r '.tenantId')
az_service_principal=$(az ad sp create-for-rbac -n "my-app-service-principal")
az_service_principal_password=$(echo $az_service_principal|jq -r '.password')
az_service_principal_id=$(az ad sp list --all | jq -c '.[] | select( .appDisplayName | contains("my-app-service-principal"))'| jq -r '.objectId')
export AZURE_DEVOPS_EXT_AZURE_RM_SERVICE_PRINCIPAL_KEY=$az_service_principal_password
az devops service-endpoint azurerm create --azure-rm-service-principal-id $az_service_principal_id --azure-rm-subscription-id $az_subscription_id --azure-rm-subscription-name $az_subscription_name --azure-rm-tenant-id $az_tenant_id --name my-app-service-endpoint

我应该如何使用 Azure CLI 以编程方式创建此服务端点?

更新了 Azure DevOps 错误:

【问题讨论】:

  • 运行构建时遇到的错误是什么?
  • 添加到操作中

标签: azure azure-devops azure-web-app-service


【解决方案1】:

您的脚本只是创建了服务主体,但它没有向 SP 授予任何权限。 我会添加一些类似这样的行来创建资源组和范围权限

az_service_principal_appid = $(echo $az_service_principal|jq -r '.appId')
az group create --name myrg --location westeurope
az role assignment create --role Contributor --assignee $az_service_principal_appid --resource-group myrg

显然,您需要考虑如何安排资源和 SP:根据您的架构,您可能需要两者中的许多。

【讨论】:

  • 它没有用。如果我转到服务端点和 azure devops 并按“验证连接”,它会说:
  • 使用服务主体客户端 ID 获取 Json Web Token(JWT) 失败。异常消息:AADSTS700016:在目录“0cf92556-5b1c-405b-99cf-XXXXXXXXX”中找不到标识符为“a9fd87a4-c0b5-46f6-b4a1-XXXXXXXXX”的应用程序。如果租户管理员未安装应用程序或未获得租户中任何用户的同意,则可能会发生这种情况。您可能已将身份验证请求发送给错误的租户。跟踪 ID:0abb8f63-8e9c-416c-b084-XXXXXXXXX 相关 ID:b6f0445e-5718-40cb-8594-XXXXXXXXX 时间戳:2019-10-03 08:21:51Z
  • 只是为了让您知道资源组服务应用服务计划等是使用 terraform 部署的。唯一的问题是自动化 azure devops 服务端点创建和/或服务主体。如果我使用 ui 和自动对话框从 azure devops 服务端点页面部署这两个东西,那么其余的都可以正常工作
  • 错误Application with identifier '' was not found in the directory 在我看来你传递了错误的 id(它们都相似,真可惜)我更新了我的答案以防它有助于顺便说一句我经常将 Terraform 与 Pipelines 结合使用, 我建议使用 Azure Portal 作为调试工具来检查 ID 和权限
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多