Разрешение подключения AzureDevops для секрета основной службы велоспорта - PullRequest
0 голосов
/ 10 января 2020

Я пытаюсь создать выпуск в AzureDevops, который проверяет срок действия секретов SP, а затем обновляет их при необходимости. У меня есть часть, которая выполняет проверку:

 param (
    [string]$SpId  
)
$SpSecret 
$SpEndDate = az ad sp credential list --id $SpId --query "[].{Key:endDate}" -o tsv

((Get-Date $SpEndDate).AddDays(-30) -lt (Get-Date)) {
    #Set a new secret value if it is about to expire
    $SpSecret = az ad sp credential reset --name $SpId --query password -o tsv   
}

Write-Host "##vso[task.setvariable variable=var01;Secret=true]$SpSecret"

Write-Host $env:Secret

Проблема теперь заключается в том, что подключение к службе не имеет разрешений для запуска «сброса учетных данных z ad sp». Я посмотрел на соединение и не вижу разрешения, которое будет работать. Есть предложения?

1 Ответ

1 голос
/ 10 января 2020

Когда вы создаете соединение службы Azure Resource Manager для использования AzureCLI, система автоматически создаст для вас приложение AD, проверьте эту ссылку . Если вы используете это служебное соединение с AzureCLI, оно будет использовать учетные данные участника службы приложения AD в вашем клиенте. Концепцию субъекта службы и приложения AD см. По этой ссылке .

Чтобы устранить проблему, перейдите на Azure Active Directory на портале -> App registrations -> All applications -> найдите приложение, соответствующее соединению службы, его имя должно быть похоже на organizationname-projectname-513f22f1-befd-xxxxxxcfe90f1. Затем щелкните его -> добавьте разрешение, как на снимках экрана ( Примечание : вашей учетной записи пользователя нужна роль администратора, чтобы нажать кнопку Grant admin consent, например, Global admin).

enter image description here

enter image description here

После предоставления разрешения, подождите некоторое время, субъект службы подключения к услуге будет в состоянии создать приложение AD, задача CLI Azure должна работать нормально.


Разрешение Application.ReadWrite.All позволит субъекту службы создавать, читать, обновлять и удалять все приложения и службы. директора школы. Если вы хотите избежать проблем с безопасностью, вы также можете использовать PowerShell для добавления субъекта-службы соединения службы в качестве Owner к субъекту службы, для которого вы хотите сбросить учетные данные. Тогда просто нужно добавить разрешение Application.ReadWrite.OwnedBy на скриншоте выше.

Перейдите к приложению organizationname-projectname-513f22f1-befd-xxxxxxcfe90f1 на портале -> щелкните Managed application in local directory, как показано ниже.

enter image description here

Затем скопируйте Object ID на скриншоте.

enter image description here

Затем используйте приведенный ниже PowerShell (как минимум вам нужно быть Owner целевого приложения для запуска команды).

Add-AzureADApplicationOwner -ObjectId <ObjectId of the app which corresponding to the service principal> -RefObjectId <ObjectId of the service connection corresponding service principal>

Кроме того : Сначала, я полагаю, достаточно Add-AzureADServicePrincipalOwner, но в моем тесте , не работает, выглядит может быть Application.ReadWrite.OwnedBy не позволяет работать на субъекте службы, соответствующем приложению AD.

...