Как создать управление. azure .acom api и выполнить назначение роли в Azure - PullRequest
0 голосов
/ 10 марта 2020

Как создать приложение для управления. azure .acom api с нуля и назначить роли клиента для доступа к подписке в azure?

Пожалуйста, предоставьте примеры, объясняющие этот сценарий

1 Ответ

0 голосов
/ 11 марта 2020

Вы можете использовать встроенное приложение для получения токена доступа для вызова Azure REST API.

Что вам нужно:

  • Azure учетная запись администратора
  • идентификатор подписки
  • идентификатор арендатора или имя

1. Получить токен для AD Graph REST API

POST  https://login.microsoftonline.com/{your_tenant_id_or_name}/oauth2/token

Headers
Content-Type:application/x-www-form-urlencoded

Body
grant_type=password
&resource=https%3A%2F%2Fgraph.windows.net%2F
&client_id=1950a258-227b-4e31-a9cf-717495945fc2
&username={your_user_name}
&password={your_password}

Тогда вы получите токен доступа в ответ:

enter image description here

2. Получить идентификатор объекта пользователя

Использовать выражение $filter для получения информации о целевом пользователе, например:

GET https://graph.windows.net/{tenant_id}/users?$filter=userPrincipalName%20eq%20'jack%40hanxia.onmicrosoft.com'&api-version=1.6 

Headers
Authorization: Bearer {access_token_you_get_in_step_1}

Затем вы получите идентификатор объекта пользователя в ответ :

enter image description here

3. Получить токен для Azure API управления

POST  https://login.microsoftonline.com/{your_tenant_id_or_name}/oauth2/token

Headers
Content-Type:application/x-www-form-urlencoded

Body
resource=https%3A%2F%2Fmanagement.core.windows.net%2F
&client_id=1950a258-227b-4e31-a9cf-717495945fc2
&grant_type=password
&username={your_user_name}
&password={your_password}
&scope=openid

Тогда вы получите токен доступа в ответ.

4. Получить идентификатор роли

Здесь я попытаюсь получить идентификатор роли Owner, используя выражение $filter:

GET https://management.azure.com/subscriptions/{your_subscription_id}/providers/Microsoft.Authorization/roleDefinitions?$filter=roleName%20eq%20'Owner'&api-version=2018-01-01-preview 

Headers
Authorization: Bearer {access_token_you_get_in_step_3}

Затем вы получите идентификатор роли в ответ:

enter image description here

5. Добавить назначение роли

PUT https://management.azure.com/subscriptions/{your_subscription_id}/providers/Microsoft.Authorization/roleAssignments/{a_new_guid}?api-version=2018-09-01-preview 

Headers
Authorization: Bearer {access_token_you_get_in_step_3}
Content-Type: application/json

Body
{
  "properties": {
    "roleDefinitionId": "/subscriptions/e5b0fcfa-e859-43f3-8d84-5e5fe29f4c68/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
    "principalId": "ab6d4cd6-fc2d-40c7-a676-f8773aebfb5f"
  }
}

roleDefinitionId - это идентификатор роли, который я получаю на шаге 4, principalId - это идентификатор объекта пользователя, который я получаю на шаге 2.


Было бы намного проще использовать Azure PowerShell или Azure CLI для назначения роли:

Connect-AzAccount -Subscription "your_subscription_id"

# to whole subscription
New-AzRoleAssignment -SignInName "user@****.onmicrosoft.com" -RoleDefinitionName "Owner"

# to a specific resource group
New-AzRoleAssignment -SignInName "user@****.onmicrosoft.com" -RoleDefinitionName "Owner" -ResourceGroupName "resource_group_name"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...