Azure Devops中的这种“服务连接”问题非常令人困惑。我想创建一个服务连接,以便能够连接到Azure并进行诸如通过管道部署到我的App Service之类的事情。
问题是,我的订阅未在下拉菜单中列出,而且我得到了无用的错误,例如“无法获取Json Web令牌(JWT)”或“无法查询服务连接API ... AuthorizationFailed” 。创建服务连接需要采取哪些步骤?
答案 0 :(得分:2)
一年前我刚接触Azure DevOps时,这确实让我感到困惑,因为缺少有关此方面的良好文档。这些说明基于an article by Roshan Jeewantha,但针对较新的UI进行了更新。
有关资源管理器连接的官方文档是here,但尤其对于Azure新手来说,这很令人困惑。
尽管可以在Azure CLI上完成应用程序注册部分,但入门级gui对于初学者来说更容易。
您首先需要做的是创建应用程序注册。应用注册是您的管道将用于部署的基于角色的身份。
在Azure门户中,转到Azure Active Directory |应用程序注册(在边栏中)|新注册。
为应用程序注册命名。不用担心其他设置;将其保留为默认值。注册。专家提示:使用项目名称(例如<project name>-appregistration
)前缀相关资源和实体将有助于您稍后快速找到它们。
我们需要授予您的应用程序注册权限,以访问和部署到您的App Service或您希望部署到的任何资源。
转到“应用程序服务”页面|访问控制(IAM)| +添加|添加角色分配。填写字段:
Role: Contributor
Assign access to: Azure AD user, group, or service principal
Select: search for and select the app registration you just made
点击保存。您应该会看到该应用程序注册已添加为贡献者。
我们还需要为您的订阅授予读取权限。我不知道为什么它需要对订阅具有读取权限,但是如果您不这样做,则连接会失败。
类似于最后一步,转到您的订阅(您用于应用程序服务的订阅)|访问控制(IAM)| +添加|添加角色分配。
Role: Reader
Assign access to: Azure AD user, group, or service principal
Select: select the app registration, then save.
转到Azure DevOps中的项目,然后在侧边栏中转到“项目设置”。服务联系|新服务连接。连接类型为Azure资源管理器。
这是我迷路的地方,因为此界面未列出我的订阅。但是,我相信,如果对您有用,它将自动为您获取正确的变量。如果它不起作用,请继续阅读。
单击“使用服务连接对话框的完整版本”。这是填写此复杂表格的方法。
Connection name: choose a name (may I suggest <project name>-serviceconnection)
Environment: AzureCloud
Scope level: Subscription
Subscription ID: Get this from your subscription resource (see screenshot)
Subscription name: Get this from your subscription resource
Service principal client ID: App registration's Application (client) ID
Service principal key: In the app registration page, go to Certificates & Secrets.
Create a secret and copy the secret value. Expiration date of Never is fine.
Do not store this string; you can always create a new one.
Tenant ID: App registration's Directory (tenant) ID
Allow all pipelines to use this connection checkbox: Uncheck if this connection is for this project only,
check if this connection is for multiple projects.
点击“验证连接”。它应该以绿色显示“已验证”。如果连接失败,并且您确定已遵循所有步骤,请等待10分钟,然后重试。添加角色后,有时要花很长时间才能传播。验证后,可以单击“确定”。
使用服务连接,请在构建任务的正确字段中引用您之前提供的连接名称。当您首次尝试运行管道时,构建屏幕将显示一条消息,指出该连接未经授权。
只需单击“授权资源”按钮。您可以在服务连接的“安全性”页面中看到授权的管道。通过“队列”按钮手动运行构建。
现在,您可以在管道中使用服务连接。 Here a tutorial on deploying Node.js projects.
如果您想在管道中连接到GitHub,Docker和other services,也可以为它们创建服务连接。创建连接时,只需选择适当的服务连接类型即可。这样,您就不必在构建脚本中写入密码。