Результаты Azure create servicePrincipal в одном или нескольких свойствах содержат недопустимые значения

#azure #azure-devops #azure-active-directory #azure-cli

#azure #azure-devops #azure-active-directory #azure-cli

Вопрос:

Я получал токен (он мне нужен для моей Gitlab для переменной среды для моего runner), например, через Azure cli на моем компьютере:

 C:Usersmyuser>az ad sp create-for-rbac --name http://gitlab-runner-acr-service-principal --scopes /subscriptions/xxxxxxx-xxxxx-xxxx-xxxx-xxxxxx/resourceGroups/MyRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/MyDockerImageRegistry --role acrpush --query password --output tsv
  

Все работало отлично все это время (более года).
Полученный результат будет примерно таким:

«Найден существующий экземпляр приложения «xxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx». Мы исправим это, создав назначение роли в рамках «/subscriptions/xxxxxxx-xxxxx-xxxx-xxxx-xxxxxx/resourceGroups/MyRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/MyDockerImageRegistry»

Назначение ролей уже существует.

b3253fac-267e-284f-9642-d4267a2620f8 «

Мне нужен такой токен из вывода. Но несколько недель назад эта команда перестала получать токены. Теперь я получаю следующее сообщение: «Одно или несколько свойств содержат недопустимые значения».Команда точно такая же (как и все это время). Я не понимаю, почему это происходит, и почему я больше не могу получать токены.

Я ничего не изменил в azure-cli (я использую ту же версию), и я ничего не делал через портал Azure, поэтому я не понимаю, почему он перестал работать. Я погуглил и увидел несколько примеров и советов, как решать подобные проблемы (не совсем так) с помощью Microsoft Graph API. Но я не знаком непосредственно с Microsoft Graph API, поэтому, пожалуйста, помогите мне, как заставить его работать через Azure CLI.

Мой вопрос в том, как заставить azure-cli получать токены с помощью той же команды? Что я должен сделать, чтобы это снова заработало?

Редактировать: я добавил флаг —debug, и последняя часть такова:

 ...
adal-python : 91386626-a42a-4d22-ba63-d22961220cec - CacheDriver:Returning token from cache lookup, AccessTokenId: b'OKDsXwBiy7YUjkUuLqUbDVL mTGi19P9914i8J3knnQ=', RefreshTokenId: b'PSu7XWGVFXFQLMQ3GBtTxj5DsNQt8ZhkjjFKegqQXZQ='
msrest.http_logger : Request URL: 'https://graph.windows.net/478d151e-37db-4a62-833b-4b989ce41c1c/applications?api-version=1.6'
msrest.http_logger : Request method: 'POST'
msrest.http_logger : Request headers:
msrest.http_logger :     'Accept': 'application/json'
msrest.http_logger :     'Content-Type': 'application/json; charset=utf-8'
msrest.http_logger :     'accept-language': 'en-US'
msrest.http_logger :     'Content-Length': '461'
msrest.http_logger :     'User-Agent': 'python/3.6.6 (Windows-10-10.0.19041-SP0) msrest/0.6.11 msrest_azure/0.6.3 azure-graphrbac/0.60.0 Azure-SDK-For-Python AZURECLI/2.3.1 (MSI)'
msrest.http_logger : Request body:
msrest.http_logger : {"availableToOtherTenants": false, "homepage": "https://gitlab-runner-acr-service-principal", "passwordCredentials": [{"startDate": "2020-09-28T12:15:30.026043Z", "endDate": "2021-09-28T12:15:30.026043Z", "keyId": "yyyyyyyy-yyyyyy-yyyyy-yyyyyyyyyyyyy", "value": "a9827bf6-a5a9-4922-bcbb-a28b2da7e04a", "customKeyIdentifier": "//5yAGIAYQBjAA=="}], "displayName": "gitlab-runner-acr-service-principal", "identifierUris": ["0884ae2d-515f-4efd-a069-595a63f1efee"]}
msrest.universal_http : Configuring redirects: allow=True, max=30
msrest.universal_http : Configuring request: timeout=100, verify=True, cert=None
msrest.universal_http : Configuring proxies: ''
msrest.universal_http : Evaluate proxies against ENV settings: True
urllib3.connectionpool : Starting new HTTPS connection (1): graph.windows.net:443
urllib3.connectionpool : Starting new HTTPS connection (1): graph.windows.net:443
urllib3.connectionpool : https://graph.windows.net:443 "POST /478d151e-37db-4a62-833b-4b989ce41c1c/applications?api-version=1.6 HTTP/1.1" 400 207
msrest.http_logger : Response status: 400
msrest.http_logger : Response headers:
msrest.http_logger :     'Cache-Control': 'no-cache'
msrest.http_logger :     'Pragma': 'no-cache'
msrest.http_logger :     'Content-Type': 'application/json; odata=minimalmetadata; streaming=true; charset=utf-8'
msrest.http_logger :     'Expires': '-1'
msrest.http_logger :     'ocp-aad-diagnostics-server-name': '9G9RnY9XiO FpbH/eqhH2G8NOqXAfe/lEzfJH1kKGEc='
msrest.http_logger :     'request-id': '52133c1e-9e42-469b-8c84-4515b617e940'
msrest.http_logger :     'client-request-id': '4c129b1e-0184-11eb-afc2-6c0b84e25a98'
msrest.http_logger :     'x-ms-dirapi-data-contract-version': '1.6'
msrest.http_logger :     'ocp-aad-session-key': 'jR7Y9XU-WaZ2W5zpUmKDjXHgDJVYFGevEDu2emGYhyAezbIgh6y-7mPn_sxsfC5cymSICphmRbGOSdfu8X6gkKEXEFWdmBJeEoF6K0Pg4jaueLN1YMv9vIp1bRpIZOBbYVZOY-WKV-iebCkrTkC9xHYpXpZFML197SdsPJezGAWKEeFcwiwm4eESzkYPSjhLR1pmKMIme0EfM0CaVC58PA.IbhRdEvnM_6KoyQFkZu5OKeMILXYKaK6j7XdpDbfKlE'
msrest.http_logger :     'Duration': '3577050'
msrest.http_logger :     'x-ms-resource-unit': '1'
msrest.http_logger :     'DataServiceVersion': '3.0;'
msrest.http_logger :     'X-AspNet-Version': '4.0.30319'
msrest.http_logger :     'X-Powered-By': 'ASP.NET'
msrest.http_logger :     'Strict-Transport-Security': 'max-age=31536000; includeSubDomains'
msrest.http_logger :     'Access-Control-Allow-Origin': '*'
msrest.http_logger :     'Date': 'Mon, 28 Sep 2020 12:15:30 GMT'
msrest.http_logger :     'Content-Length': '207'
msrest.http_logger : Response content:
msrest.http_logger : {"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"One or more properties contains invalid values."},"requestId":"52133c1e-9e42-469b-8c84-4515b617e940","date":"2020-09-28T12:15:30"}}
msrest.exceptions : One or more properties contains invalid values.
cli.azure.cli.core.util : One or more properties contains invalid values.
One or more properties contains invalid values.
  

Комментарии:

1. Вы все еще ищете помощь по этому вопросу?

Ответ №1:

Для меня это было потому, что имя уже существует. В вашем случае --name http://gitlab-runner-acr-service-principal .

Возможно, CLI использовался для возврата существующего, если он уже существовал, и теперь выдает ошибку.

В любом случае, я исправил ошибку, проверив, существует ли SP уже перед его созданием.

Редактировать

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

Стив