Разрешения Azure через microsoft.aadiam / диагностические настройки / запись - PullRequest
0 голосов
/ 07 декабря 2018

Я пытаюсь позвонить вышеупомянутому провайдеру API через REST со следующим URL: https://management.azure.com/providers/microsoft.aadiam/diagnosticSettings с api-version=2017-04-01-preview

Однако, даже несмотря на то, что используемый мной сервисный участник является членомРоль «Глобальный администратор» в моем клиенте AAD Я получаю ошибку does not have authorization to perform action.

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

Спасибо, Дэвид

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018

Я тестирую его с глобальным администратором, у меня он работает правильно.

Ниже приведены подробные шаги:

  1. Создание нативной Azure AD.приложение и разрешение на него.

enter image description here

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

enter image description here

Примечание: формат пользователя должен быть xxxx@xxx.onmicrosoft.com,или вы не можете использовать пароль, чтобы получить токен на основе моего теста

3. Присвойте роль владельца подписке

enter image description here

4. Затем мы могли бы использовать следующий способ для получения токена доступа

Post  https://login.windows.net/<tenant-id>/oauth2/token
Content-Type: application/x-www-form-urlencoded
grant_type=password
&resource={resource}
&username={username}
&password={password}
&client_id={client-id}

enter image description here

4. Попробуйте использовать Настройки диагностики

put https://management.azure.com/providers/microsoft.aadiam/diagnosticSettings/{name}?api-version=2017-04-01-preview

{"properties":{"logs":[{"category":"AuditLogs","enabled":true,"retentionPolicy":{"days":0,"enabled":false}},{"category":"SignInLogs","enabled":false,"retentionPolicy":{"days":0,"enabled":false}}],"metrics":[],"storageAccountId":"/subscriptions/{subscriptionId}/resourceGroups/{groupname}/providers/Microsoft.Storage/storageAccounts/{accountName}"}}

enter image description here

0 голосов
/ 07 декабря 2018

Попробуйте добавить пользовательскую роль с помощью действия microsoft.aadiam/diagnosticsettings/write в приложении AD.

В соответствии с doc , вы можете использовать пользовательскую роль для выполнения операции.

В этой статье перечислены операции, доступные для каждого поставщика ресурсов Azure Resource Manager.Эти операции можно использовать в пользовательских ролях для предоставления детального управления доступом на основе ролей (RBAC) к ресурсам в Azure.

Подробнее о создании настраиваемой роли см. По этой ссылке .

Пример:

{
  "Name":  "Test Operator",
  "Id":  "88888888-8888-8888-8888-888888888888",
  "IsCustom":  true,
  "Description":  "xxxxxx",
  "Actions":  [
                  microsoft.aadiam/diagnosticsettings/write,
                  microsoft.aadiam/diagnosticsettings/read
  ],
  "NotActions":  [

                 ],
  "DataActions":  [

                  ],
  "NotDataActions":  [

                     ],
  "AssignableScopes":  [
                           "/subscriptions/{subscriptionId1}",
                           "/subscriptions/{subscriptionId2}",
                           "/subscriptions/{subscriptionId3}"
                       ]
}

Обновление:

Вы можете использовать a user account with global admin role, см. Приведенные ниже шаги.

1.Наведите на Azure Active Directory -> Diagnostic settings -> Add diagnostic setting -> установитесвойства и откройте Developer Tools(F12) -> Save.

2. В запросе мы скопировали Bearer token.

enter image description here

3. Затем мы можем проверить API в почтальоне.

URL запроса:

Put https://management.azure.com/providers/microsoft.aadiam/diagnosticSettings/{name}?api-version=2017-04-01-preview

Заголовок запроса:

enter image description here

Тело запроса:

{
  "properties": {
    "logs": [
      {
        "category": "AuditLogs",
        "enabled": true,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      },
      {
        "category": "SignInLogs",
        "enabled": true,
        "retentionPolicy": {
          "days": 0,
          "enabled": false
        }
      }
    ],
    "metrics": [],
    "storageAccountId": "/subscriptions/xxxx/resourceGroups/xxx/providers/Microsoft.Storage/storageAccounts/xxx"
  }
}

Это работает на моей стороне.

enter image description here

...