API управления секретами
Note
Доступно в Grafana 12 и более поздних версиях.
Этот API соответствует новой структуре API Grafana. Дополнительные сведения см. в документации о структуре API в Grafana.
Этот документ может не содержать последнюю версию API. Самый актуальный список доступных конечных точек см. в secret.grafana.app/v1 в Swagger.
API управления секретами Grafana позволяет управлять секретами, которые используются другими сервисами и приложениями в вашем экземпляре Grafana.
Caution
В настоящее время API находится в публичном предварительном просмотре и может быть подвержен изменениям.
Требования
Если вы используете Grafana Enterprise, для некоторых конечных точек потребуются определённые права. Дополнительные сведения см. в разделе Права управления доступом на основе ролей.
Расшифровщики
Поле decrypters — это список разрешённых, который сообщает защищённому значению, какие сервисы и приложения могут расшифровать значение секрета.
Доступные в настоящее время расшифровщики:
k6-cloud(для Grafana Cloud k6)provisioning.grafana.app(для GitSync/провижининга)synthetic-monitoring(для проверок Synthetic Monitoring)
Создание защищённого значения
POST /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues
Создаёт новое защищённое значение.
Параметры URL
namespace: подробнее о том, какое пространство имён использовать, см. в обзоре API.
Тело запроса
metadata.name: уникальный идентификатор Grafana. Если вы не хотите его указывать, задайте вместо негоmetadata.generateNameкак префикс для случайно сгенерированного uid (не может быть пустой строкой).spec.description: краткое описание, объясняющее назначение этого защищённого значения. Обязательно. Длиной до 25 символов.spec.value: значение секрета для хранения. Обязательно. Длиной до 24576 байт.spec.decrypters: список сервисов, которым разрешено расшифровывать это защищённое значение. До 64 элементов; список поддерживаемых значений см. в примечании в разделе расшифровщики.
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса на создание:
POST /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
{
"metadata": {
"name": "api-key"
},
"spec": {
"description": "External API Key",
"value": "secret-api-key-12345",
"decrypters": ["synthetic-monitoring"]
}
}
Пример ответа:
HTTP/1.1 201 Created
Content-Type: application/json; charset=UTF-8
Content-Length: 343
{
"apiVersion": "secret.grafana.app/v1beta1",
"kind": "SecureValue",
"metadata": {
"name": "api-key",
"namespace": "default",
"uid": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"creationTimestamp": "2024-01-15T10:35:00Z"
},
"spec": {
"description": "External API Key",
"decrypters": ["synthetic-monitoring"]
},
"status": {}
}
Коды состояния:
- 201 – Создано
- 400 – Ошибки (некорректный JSON, отсутствующие или недопустимые поля и т. д.)
- 401 – Не авторизован
- 403 – Доступ запрещён
- 409 – Конфликт (защищённое значение с таким же именем уже существует)
Note
Поле
spec.valueникогда не возвращается конечными точками API. Пользователи не могут расшифровать секреты.
Получение списка защищённых значений
GET /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues
Возвращает список всех защищённых значений в пространстве имён.
Параметры URL
namespace: подробнее о том, какое пространство имён использовать, см. в обзоре API.
Параметры запроса
labelSelector: фильтрует защищённые значения по меткам.
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса на получение списка:
GET /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 383
{
"apiVersion": "secret.grafana.app/v1beta1",
"kind": "SecureValueList",
"metadata": {
"resourceVersion": "12345"
},
"items": [
{
"apiVersion": "secret.grafana.app/v1beta1",
"kind": "SecureValue",
"metadata": {
"name": "database-password",
"namespace": "default",
"creationTimestamp": "2024-01-15T10:30:00Z"
},
"spec": {
"description": "Production DB Password",
"decrypters": ["synthetic-monitoring"]
},
"status": {}
}
]
}
Коды состояния:
- 200 – OK
- 401 – Не авторизован
- 403 – Доступ запрещён
Получение защищённого значения
GET /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues/:name
Возвращает сведения о конкретном защищённом значении. Значение секрета при этом не возвращается.
Параметры URL
namespace: подробнее о том, какое пространство имён использовать, см. в обзоре API.name: имя защищённого значения.
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса на получение:
GET /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues/api-key HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 294
{
"apiVersion": "secret.grafana.app/v1beta1",
"kind": "SecureValue",
"metadata": {
"name": "api-key",
"namespace": "default",
"uid": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"creationTimestamp": "2024-01-15T10:35:00Z"
},
"spec": {
"description": "External API Key",
"decrypters": ["synthetic-monitoring"]
},
"status": {}
}
Коды состояния:
- 200 – OK
- 401 – Не авторизован
- 403 – Доступ запрещён
- 404 – Не найдено
Обновление защищённого значения
PUT /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues/:name
Заменяет существующее защищённое значение новой спецификацией.
Параметры URL
namespace: подробнее о том, какое пространство имён использовать, см. в обзоре API.name: имя защищённого значения.
Тело запроса
spec.description: краткое описание, объясняющее назначение этого защищённого значения. Обязательно. Длиной до 25 символов.spec.value: значение секрета для хранения. Обязательно. Длиной до 24576 байт.spec.decrypters: список сервисов, которым разрешено расшифровывать это защищённое значение. До 64 элементов; список поддерживаемых значений см. в примечании в разделе расшифровщики.
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса на обновление:
PUT /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues/api-key HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
{
"metadata": {
"name": "api-key"
},
"spec": {
"description": "External API Key",
"value": "new-value-12345",
"decrypters": ["synthetic-monitoring"]
}
}
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 282
{
"apiVersion": "secret.grafana.app/v1beta1",
"kind": "SecureValue",
"metadata": {
"name": "api-key",
"namespace": "default",
"uid": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"creationTimestamp": "2024-01-15T10:35:00Z"
},
"spec": {
"description": "External API Key",
"decrypters": ["synthetic-monitoring"]
}
}
Коды состояния:
- 200 – OK
- 400 – Ошибки (некорректный JSON, отсутствующие или недопустимые поля и т. д.)
- 401 – Не авторизован
- 403 – Доступ запрещён
- 404 – Не найдено
Удаление защищённого значения
DELETE /apis/secret.grafana.app/v1beta1/namespaces/:namespace/securevalues/:name
Безвозвратно удаляет защищённое значение. Это также удаляет лежащее в основе хранимое значение секрета.
Параметры URL
namespace: подробнее о том, какое пространство имён использовать, см. в обзоре API.name: имя защищённого значения.
Требуемые права
Пояснения см. в примечании во введении.
Пример запроса на удаление:
DELETE /apis/secret.grafana.app/v1beta1/namespaces/default/securevalues/api-key HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer <SERVICE_ACCOUNT_TOKEN>
Пример ответа:
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 65
{
"apiVersion": "v1",
"kind": "Status",
"status": "Success",
"code": 200
}
Коды состояния:
- 200 – OK
- 401 – Не авторизован
- 403 – Доступ запрещён
- 404 – Не найдено