API прав на источники данных

Note

Starting in Grafana 13, /api endpoints are being deprecated in favor of the /apis route. Note that while Grafana is working on migrating existing APIs, currently there may not be an exact match to the legacy API you’re using.

This change doesn’t disrupt or break your current setup. Legacy APIs are not being disabled and remain fully accessible and operative, but /api routes will no longer be updated.

To learn more refer to the new API structure in Grafana.

Права на источники данных доступны только в Grafana Enterprise. Подробнее о Grafana Enterprise.

Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей.

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

Права можно задавать для пользователя, команды, сервисной учётной записи или базовой роли (Admin, Editor, Viewer).

Необязательный параметр запроса ds_type

Каждая конечная точка этого API принимает необязательный параметр запроса ds_type. Задайте его как тип плагина источника данных (например, prometheus или loki). Используйте ds_type, когда в организации более одного источника данных имеют одинаковый UID, чтобы Grafana могла определить правильный экземпляр.

Получение прав на источник данных

GET /api/access-control/datasources/:uid

Возвращает все существующие права для источника данных с заданным uid.

Добавляйте ?ds_type=<TYPE>, когда нужно устранить неоднозначность UID; см. Необязательный параметр запроса ds_type.

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
datasources.permissions:read datasources:*
datasources:uid:*
datasources:uid:my_datasource (один источник данных)

Примеры

Пример запроса:

http
GET /api/access-control/datasources/my_datasource HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

Пример запроса (с ds_type, когда UID не уникален):

http
GET /api/access-control/datasources/my_datasource?ds_type=prometheus HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 551

[
    {
        "id": 1,
        "roleName": "fixed:datasources:reader",
        "isManaged": false,
        "isInherited": false,
        "isServiceAccount": false,
        "userId": 1,
        "userLogin": "admin_user",
        "userAvatarUrl": "/avatar/admin_user",
        "actions": [
            "datasources:read",
            "datasources:query",
            "datasources:read",
            "datasources:query",
            "datasources:write",
            "datasources:delete"
        ],
        "permission": "Edit"
    },
    {
        "id": 2,
        "roleName": "managed:teams:1:permissions",
        "isManaged": true,
        "isInherited": false,
        "isServiceAccount": false,
        "team": "A team",
        "teamId": 1,
        "teamAvatarUrl": "/avatar/523d70c8551046f441727d690431858c",
        "actions": [
            "datasources:read",
            "datasources:query"
        ],
        "permission": "Query"
    },
    {
        "id": 3,
        "roleName": "basic:admin",
        "isManaged": false,
        "isInherited": false,
        "isServiceAccount": false,
        "builtInRole": "Admin",
        "actions": [
            "datasources:query",
            "datasources:read",
            "datasources:write",
            "datasources:delete"
        ],
        "permission": "Edit"
    },
]

Коды состояния:

  • 200 — Ok
  • 401 — Не авторизован
  • 403 — Доступ запрещён
  • 500 — Внутренняя ошибка

Предоставление или отзыв доступа к источнику данных для пользователя

POST /api/access-control/datasources/:uid/users/:id

Задаёт права пользователя на источник данных с заданным uid.

Добавляйте ?ds_type=<TYPE>, когда нужно устранить неоднозначность UID; см. Необязательный параметр запроса ds_type.

Чтобы добавить право, задайте поле permission как Query, Edit или Admin. Чтобы удалить право, задайте поле permission как пустую строку.

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
datasources.permissions:write datasources:*
datasources:uid:*
datasources:uid:my_datasource (один источник данных)

Примеры

Пример запроса:

http
POST /api/access-control/datasources/my_datasource/users/1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "permission": "Query",
}

При предоставлении права Query пользователь также получает доступ на чтение к источнику данных.

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 35

{"message": "Permission updated"}

Пример запроса:

http
POST /api/access-control/datasources/my_datasource/users/1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "permission": "",
}

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 35

{"message": "Permission removed"}

Коды состояния:

  • 200 — Ok
  • 400 — Право не может быть добавлено, подробности см. в теле ответа
  • 401 — Не авторизован
  • 403 — Доступ запрещён

Предоставление или отзыв доступа к источнику данных для команды

POST /api/access-control/datasources/:uid/teams/:id

Задаёт права команды на источник данных с заданным uid.

Добавляйте ?ds_type=<TYPE>, когда нужно устранить неоднозначность UID; см. Необязательный параметр запроса ds_type.

Чтобы добавить право, задайте поле permission как Query, Edit или Admin. Чтобы удалить право, задайте поле permission как пустую строку.

При добавлении прав Query, Edit или Admin пользователь неявно получает доступ Read.

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
datasources.permissions:write datasources:*
datasources:uid:*
datasources:uid:my_datasource (один источник данных)

Примеры

Пример запроса:

http
POST /api/access-control/datasources/my_datasource/teams/1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "permission": "Edit",
}

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 35

{"message": "Permission updated"}

Пример запроса:

http
POST /api/access-control/datasources/my_datasource/teams/1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "permission": "",
}

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 35

{"message": "Permission removed"}

Коды состояния:

  • 200 — Ok
  • 400 — Право не может быть добавлено, подробности см. в теле ответа
  • 401 — Не авторизован
  • 403 — Доступ запрещён

Предоставление или отзыв доступа к источнику данных для базовой роли

POST /api/access-control/datasources/:uid/builtInRoles/:builtinRoleName

Задаёт права на источник данных с заданным uid для всех пользователей, имеющих указанную базовую роль.

Добавляйте ?ds_type=<TYPE>, когда нужно устранить неоднозначность UID; см. Необязательный параметр запроса ds_type.

Вы можете задавать права для следующих базовых ролей: Admin, Editor, Viewer.

Чтобы добавить право, задайте поле permission как Query, Edit или Admin. Чтобы удалить право, задайте поле permission как пустую строку.

Требуемые права

Пояснения см. в примечании во введении.

Действие Область
datasources.permissions:write datasources:*
datasources:uid:*
datasources:uid:my_datasource (один источник данных)

Примеры

Пример запроса:

http
POST /api/access-control/datasources/my_datasource/builtInRoles/Admin
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "permission": "Edit",
}

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 35

{"message": "Permission updated"}

Пример запроса:

http
POST /api/access-control/datasources/my_datasource/builtInRoles/Viewer
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>

{
  "permission": "",
}

Пример ответа:

http
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 35

{"message": "Permission removed"}

Коды состояния:

  • 200 — Ok
  • 400 — Право не может быть добавлено, подробности см. в теле ответа
  • 401 — Не авторизован
  • 403 — Доступ запрещён