Я создал принципала службы для доступа к ресурсам в CI перед использованием команды az ad sp create-for-rbac
:
az ad sp create-for-rbac --name "my-ci-sp" --role contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/<group-name> \
--json-auth
Эта команда возвращает объект JSON с секретом, несколькими идентификаторами и несколькими URL-адресами конечной точки.
Теперь срок действия этого секрета истекает. Я знаю, что могу обновить секрет, используя az ad app reset credential --id <my-sp-id>. Однако эта команда выводит другую схему JSON.
Как мне получить замену для сгенерированного --json-auth
токена az ad sp create-for-rbac
?
Первоначально я запустил ту же команду CLI в своей среде и получил ответ JSON ниже:
az ad sp create-for-rbac --name "my-ci-sp" --role contributor \
--scopes /subscriptions/subID/resourceGroups/rgName \
--json-auth
Ответ:
Когда вы сбрасываете секрет клиента с помощью приведенной ниже команды CLI, вы получите в ответ только несколько значений, а остальные останутся прежними:
az ad app credential reset --id <my_sp_id>
Обратите внимание, что не существует прямой команды CLI для получения аналогичного ответа JSON при сбросе секретного секрета клиента. Альтернативно вы можете использовать приведенный ниже скрипт, который в ответ добавляет оставшиеся значения вручную:
SUBSCRIPTION_ID = "sub_id"
SP_ID = "sp_id"
JSON_OUTPUT=$(az ad app credential reset --id $SP_ID --query "{
clientId: appId,
clientSecret: password,
tenantId: tenant,
subscriptionId: '$SUBSCRIPTION_ID',
activeDirectoryEndpointUrl: 'https://login.microsoftonline.com',
resourceManagerEndpointUrl: 'https://management.azure.com/',
activeDirectoryGraphResourceId: 'https://graph.windows.net/',
sqlManagementEndpointUrl: 'https://management.core.windows.net:8443/',
galleryEndpointUrl: 'https://gallery.azure.com/',
managementEndpointUrl: 'https://management.core.windows.net/'
}" --output json)
echo $JSON_OUTPUT | jq .
Ответ:
Каковы ваши точные требования? Не могли бы вы рассказать об этом подробнее? Если вы ищете эквивалентную команду для получения аналогичного ответа JSON при сбросе секрета, это невозможно.