服务连接不存在、已被禁用或未被授权使用

问题描述 投票:0回答:1

我有一个管道,它执行保存在另一个项目中的 kv_check.yaml 脚本。 kv_check.yaml 脚本有一个 AzureCLI@2 任务,该任务已将服务连接作为输入。当我直接从其项目运行 kv_check.yaml 时,一切工作正常,但是当我可以从不同项目中的管道中将 kv_check.yaml 作为模板调用时,我收到以下错误:

存在资源授权问题:“管道无效。作业KeyVaultCheck:步骤AzureCLI输入connectedServiceNameARM引用找不到服务连接SC1234。服务连接不存在、已被禁用或尚未被授权使用。有关授权详细信息,请参阅https://aka.ms/yamlauthz。”

这是我的 kv_check.yaml 脚本:

- name: WebhookURL
  type: string
- name: KeyVaultsToCheck
  type: string

jobs:
  - job: KeyVaultCheck
    displayName: 'KeyVault Check'
    steps:
      - checkout: self
      - task: AzureCLI@2
        displayName: 'Scanning KeyVaults'
        inputs:
          azureSubscription: '$(GLOBAL_SERVICE_CONNECTION)'
          scriptType: 'pscore'
          scriptLocation: 'scriptPath'
          scriptPath: 'helper_scripts/check_kv.ps1'
          arguments: '-WebhookURL "${{ parameters.WebhookURL }}" -KeyVaultsToCheck "${{ parameters.KeyVaultsToCheck }}"'
        env:
          GLOBAL_SUBSCRIPTION: $(GLOBAL_SUBSCRIPTION) 

这是我调用 kv_check.yaml 作为模板的管道

  branches:
    include:
    - develop
    - qa
    - production
  paths:   
    exclude: 
    - build_template/
    - ./*.md
    - tests/

pool:
  vmImage: 'ubuntu-20.04'

resources:
  repositories:
  - repository: templates
    type: git
    name: PLATFORM/pipeline-templates
    ref: develop

variables:
  - template: /variables/vars-global.yaml@templates
  - ${{ if eq(variables['build.SourceBranchName'], 'develop') }}:
    - template: /build_template/vars-dev.yaml
  - ${{ if eq(variables['build.SourceBranchName'], 'qa') }}:
    - template: /build_template/vars-qas.yaml
  - ${{ if eq(variables['build.SourceBranchName'], 'production') }}:
    - template: /build_template/vars-run.yaml
  - name: VAR_KEYVAULT # optional: add keyvaults here to be scanned (z.B. "kv1,kv2,kv3")
    value: "kv1,kv2"
  - name: VAR_WEBHOOK_URL
    value: "https://logic.azure.com/xxxxxxxxxxx"

schedules:
- cron: "0 0 15 * *"
  displayName: Monthly build
  branches:
    include:
    - develop


stages:
  - stage: CheckKeyVault
    jobs:
      - template: templates/Apps/kv_check.yaml@templates
        parameters:
          WebhookURL: $(VAR_WEBHOOK_URL)
          KeyVaultsToCheck: $(VAR_KEYVAULT)

服务连接值存储在 vars-global.yaml 文件中的 GLOBAL_SERVICE_CONNECTION 变量中,我已经在上面的管道中的变量下调用了该变量。

我确实尝试单击“管道”页面上的“授权资源”按钮,但这不起作用,并且在服务连接的项目设置下,也没有任何可授权的内容。

是否存在我遗漏的服务连接行为或者我做错了什么?

azure-devops yaml azure-pipelines azure-pipelines-yaml serviceconnection
1个回答
0
投票

Azure DevOps 项目中运行的管道只能使用同一项目中的服务连接,不能使用其他项目中的服务连接。

当管道调用另一个项目的模板时,它也无法使用该项目的服务连接。

对于您的情况,您需要确保管道使用的服务连接是在与管道相同的项目中定义和访问的。

© www.soinside.com 2019 - 2024. All rights reserved.