ServicePrincipalNotFound в клиенте Active Directory *** - Передача безопасных переменных в Powershell из DevOps Azure - PullRequest
0 голосов
/ 27 октября 2019

Я выполняю шаблон ARM, который создает службу Azure Kubernetes и другие ресурсы из задачи развертывания группы ресурсов Azure.

Мой шаблон ARM имеет в качестве параметров servicePrincipalClientId и servicePrincipalClientSecret конфиденциальные данные, которыеиспользуются для создания кластера Azure Kubernetes, просто прямо здесь . (Эта ссылка - мой полный шаблон ARM)

Итак, я делаю следующее:

  • Я создал servicePrincipalClientId и servicePrincipalClientSecret в качестве переменных конвейера

enter image description here

  • Я ранее создал субъект службы и его servicePrincipalClientId и servicePrincipalClientSecret данные, я использую их для созданияподключение к сервису для подключения к облаку Azure следующим образом:

enter image description here

  • У меня есть задача PowerShell для преобразования servicePrincipalClientId и servicePrincipalClientSecret значения переменных в качестве безопасных строк следующим образом:
$env:secretServicePrincipalClientId = ConvertTo-SecureString '$($env:servicePrincipalClientId)' -AsPlainText -Force

$env:secretServicePrincipalClientSecret = ConvertTo-SecureString '$($env:servicePrincipalClientSecret)' -AsPlainText -Force
  • Чтобы развернуть ресурсы, определенные в шаблоне ARM, я создал группу ресурсов AzureЗадача развертывания со следующими параметрами:

  • Я использую служебное соединение, созданное для взаимодействия с моей подпиской.

  • Действие, которое необходимо выполнить : Создать или обновить группу ресурсов
  • Шаблон , путь к шаблону ARM, указанный выше.

  • Переопределить параметры шаблона Я включил сюда все значения параметров шаблона ARM и хочу подчеркнуть здесь, как я ссылаюсь на значения переменных servicePrincipalClientId и servicePrincipalClientSecret:

Я ссылаюсь здесь на переменные secretServicePrincipalClientId и secretServicePrincipalClientSecret, которые я использовал для преобразования значений переменных servicePrincipalClientId и servicePrincipalClientSecret в безопасные строки выше в моих первых лазурных разработкахзадача

-servicePrincipalClientId $($secretServicePrincipalClientId) 
-servicePrincipalClientSecret $($secretServicePrincipalClientSecret) 
   .
   .
-serviceCidr "100.0.0.0/16" 
-dnsServiceIP "100.0.0.10" 
-dockerBridgeCidr "172.17.0.1/16" 
   .
   .

Итак, когда я выполняю конвейер выпуска, я получаю эту ошибку в задаче развертывания группы ресурсов Azure

2019-10-26T20:05:13.3246017Z The detected encoding for file 'd:\a\r1\a\Project\Deployments\ARMTemplates\Infrastructure\AzResourceGroupDeploymentApproach\testing.json' is 'utf-8'
2019-10-26T20:05:13.3410693Z Starting Deployment.
2019-10-26T20:05:13.3412081Z Deployment name is AzureDevOpsDeployment


2019-10-26T20:05:18.1729784Z There were errors in your deployment. Error code: InvalidTemplateDeployment.
2019-10-26T20:05:18.1730624Z ##[error]The template deployment 'AzureDevOpsDeployment' is not valid according to the validation procedure. The tracking id is 'xxxxxxx'. See inner errors for details.
2019-10-26T20:05:18.1731223Z ##[error]Details:


2019-10-26T20:05:18.1732062Z ##[error]ServicePrincipalNotFound: Provisioning of resource(s) for container service KubernetesCluster-aks in resource group testing failed. Message: {
  "code": "ServicePrincipalNotFound",
  "message": "Service principal clientID: $($secretServicePrincipalClientId) not found in Active Directory tenant ***, Please see https://aka.ms/aks-sp-help for more details."
 }. Details: 

2019-10-26T20:05:18.1733305Z ##[error]Task failed while creating or updating the template deployment.
2019-10-26T20:05:18.1765718Z ##[section]Finishing: Azure Deployment:Create Or Update Resource Group action on testing

Похоже на участника службы, который я использую для подключенияв Azure облако не существует, но это не так. Этот принципал службы существует.

Если я включу в текст в текстовом виде значения servicePrincipalClientId и servicePrincipalClientSecret

-servicePrincipalClientId <servicePrincipalClientId-value> 
-servicePrincipalClientSecret <servicePrincipalClientSecret-value> 

Задача группы ресурсов Azure работает, а ресурсы вШаблон ARM развертываются в облаке Azure из DevOps Azure.

  • В чем проблема?

Согласно этой ссылке AKS нужен субъект службы длябыть создан.

  • Также при создании службы Azure Kubernetes с использованием az cli участник службы создается автоматически.

  • То же самое происходит при созданииСлужба Azure Kubernetes из портала Azure.

Итак, я создаю Службу Azure Kubernetes из Devure Devops, выполняя шаблон ARM через задачу развертывания группы ресурсов с использованием существующих учетных данных участника службы в задаче ив сервисном соединении.

  • Почему мой сервисный участник не распознается?

Я пытаюсь этот параметр устранить неполадки и решить проблему , но ябоюсь, что проблема не в самом субъекте службы, а в этом, я думаю, мне нужно было бы ссылаться на - servicePrincipalClientId $($secretServicePrincipalClientId) и
-servicePrincipalClientSecret $($secretServicePrincipalClientSecret) особым образом.

Как я могу это сделать?

Если кто-то может указать мне правильное направление, я был бы признателен

1 Ответ

0 голосов
/ 27 октября 2019

Я решил упростить выполнение шаблона ARM, удалив безопасную задачу, в которой я конвертировал значения в безопасные строки.

Итак, в конце у меня есть переменные конвейера, определенные обычным способом, в которых administratorLogin есть незашифрованная переменная:

enter image description here

И в задании Azure Resource Group , которое я выполняю:

  • Шаблон : я выбираю свой шаблон ARM

  • Режим развертывания : Завершено

    Режим завершения удаляет ресурсы, которых нет в вашем шаблоне. [Предупреждение] Это действие удалит все существующие ресурсы в группе ресурсов, которые не указаны в шаблоне.

Я выбрал этот режим, чтобы иметь представление овсе ресурсы, созданные в платформе, взяты из шаблона ARM, чтобы получить журнал ресурсов или изменений, внесенных в инфраструктуру из шаблона ARM. Пытаясь применить инфраструктуру как кодовый подход

  • Переопределить параметры Я решил включить все значения параметров, которые я получил из шаблона ARM, включая переменные servicePrincipalClientId и servicePrincipalClientSecretтаким образом:
-administratorLogin "my-username" 
-administratorLoginPassword $(administratorLoginPassword)  
-environmentName "dev" 
-location "West Europe" 
-servicePrincipalClientId $(servicePrincipalClientId) 
-servicePrincipalClientSecret $(servicePrincipalClientSecret) 
         .
         .    
-serviceCidr "100.0.0.0/16" 
-dnsServiceIP "100.0.0.10" 
-dockerBridgeCidr "172.17.0.1/16" 
         .
         .

И конечный результат выполнения был:

enter image description here

2019-10-27T15:58:18.3523334Z ##[section]Starting: Azure Deployment:Create Or Update Resource Group action on sentia-assessment-testing
2019-10-27T15:58:18.3886841Z ==============================================================================
2019-10-27T15:58:18.3887055Z Task         : Azure resource group deployment
2019-10-27T15:58:18.3887210Z Description  : Deploy an Azure Resource Manager (ARM) template to a resource group and manage virtual machines
2019-10-27T15:58:18.3887334Z Version      : 2.157.4
2019-10-27T15:58:18.3887438Z Author       : Microsoft Corporation
2019-10-27T15:58:18.3887559Z Help         : https://docs.microsoft.com/azure/devops/pipelines/tasks/deploy/azure-resource-group-deployment
2019-10-27T15:58:18.3887710Z ==============================================================================


### WE CAN SEE HERE THAT AZ RESOURCE GROUP TASK CREATE THE RESOURCE GROUP
### IF IT DOES NOT EXIST. 

2019-10-27T15:58:19.3677672Z Checking if the following resource group exists: resource-group.
2019-10-27T15:58:19.6898000Z Resource group exists: false.
2019-10-27T15:58:19.6900439Z Creating resource Group: resource-group
2019-10-27T15:58:20.1586233Z Resource Group created successfully.
2019-10-27T15:58:20.1589727Z Creating deployment parameters.

############### THIS IS THE ARM TEMPLATE EXECUTED ##################

2019-10-27T15:58:20.1681560Z The detected encoding for file 'd:\a\r1\a\Github\Deployments\ARMTemplates\Infrastructure\AzResourceGroupDeploymentApproach\testing.json' is 'utf-8'

############### THIS IS THE ARM TEMPLATE EXECUTED END ##################

2019-10-27T15:58:20.1864884Z Starting Deployment.
2019-10-27T15:58:20.1866605Z Deployment name is AzureDevOpsDeployment_91
2019-10-27T16:13:20.7707558Z Successfully deployed the template.
2019-10-27T16:13:20.7834983Z ##[section]Finishing: Azure Deployment:Create Or Update Resource Group action on resource-group

Этохороший и более простой подход, но, возможно, идеальным сценарием может быть преобразование упомянутых выше переменных в качестве безопасных строк и совместное использование их значений для различных задач в конвейере выпуска.

...