Azure AD добавляет ключи через Azure CLI

Я пытаюсь добавить ключ в приложение Azure AD с помощью интерфейса командной строки Azure. Но, глядя через API Azure CLI, кажется, что такой команды не существует.

Например:

Я пытаюсь автоматизировать задачу по ссылке ниже через интерфейс командной строки Azure: http://blog.davidebbo.com/2014/12/azure-service-principal.html

Я могу создать приложение AD, принципал службы, но не могу найти способ добавить ключ для вновь создаваемого приложения AD.

Буду признателен за любые идеи и направления:)

Заранее спасибо!

2 ответа

Для нового приложения AD вы можете указать ключ с -p при создании. Например,

azure ad app create -n <your application name> --home-page <the homepage of you application> -i <the identifier URI of you application> -p <your key>

Для существующего приложения AD, конечно, Graph API может обновить учетные данные приложения AD. Прочитайте эту ссылку API, и вы увидите, что учетные данные для пароля могут использовать "POST, GET, PATCH". Однако использовать Graph API слишком сложно. Я должен проверить Azure CLI. Эта функциональность еще не реализована, и источник для меня нечитабелен. Затем я взглянул на Azure SDK для Python, потому что я знаком с python и обнаружил, что они уже внедрили его в 2.0.0rc2. Посмотреть репо GitHub

Я написал скрипт на Python. Но чтобы использовать мой скрипт, вам нужно установить не только azure2.0.0rc2, но также msrest и msrestazure.

from azure.common.credentials import UserPassCredentials
from azure.graphrbac import GraphRbacManagementClient, GraphRbacManagementClientConfiguration
from azure.graphrbac.models import ApplicationCreateParameters, PasswordCredential

credentials = UserPassCredentials("<your Azure Account>", "<your password>")

subscription_id = "<your subscription id>"

tenant_id = "<your tenant id>"

graphrbac_client = GraphRbacManagementClient(
    GraphRbacManagementClientConfiguration(
        credentials,
        subscription_id,
        tenant_id
    )
)

application = graphrbac_client.application.get('<your application object id>')

passwordCredential = PasswordCredential(start_date="2016-04-13T06:08:04.0863895Z", 
                                        end_date="2018-04-13T06:08:04.0863895Z",
                                        value="<your new key>")

parameters = ApplicationCreateParameters(application.available_to_other_tenants,
                                     application.display_name,
                                     "<the homepage of your AD application>",
                                     application.identifier_uris,
                                     reply_urls=application.reply_urls,
                                     password_credentials = [passwordCredential])

application = graphrbac_client.application.update('<your application object id>', parameters)

Единственная проблема с этим сценарием в том, что вы можете переопределить только все существующие ключи вашего приложения AD. Вы не можете добавить новый ключ. Это проблема API Graph. Graph API не позволяет пользователям читать существующий ключ. Одним из возможных решений будет хранение ваших существующих ключей в другом месте. Но это принесет дополнительную угрозу безопасности.

У меня нет опыта автоматизации добавления ключа, я не уверен, что даже можно быть честным. Однако взгляните на документацию ApplicationEntity в Graph API, это может быть возможно при использовании запроса POST к веб-службе.

Другие вопросы по тегам