[Документация Yandex Cloud](../../index.md) > [Monium](../index.md) > [Управление доступом](index.md) > Ключи приложений

# Ключи приложений

_Ключ приложения_ (Application Key) позволяет приложениям и агентам записывать метрики, логи и трейсы в Monium.

Ключ приложения рекомендуется для записи телеметрии в один проект. [API-ключ](../../iam/concepts/authorization/api-key.md) подойдет, если интеграция уже использует сервисный аккаунт или требует управления доступом через роли IAM. Его права доступа определяются ролями сервисного аккаунта и областью действия ключа.

Ограничения ключа приложения:

* Разрешает только запись телеметрии. С его помощью нельзя читать данные или управлять настройками проекта.
* Привязан к одному [проекту](../collector/project.md). Отправить данные в другой проект по этому ключу нельзя.
* Область действия определяет доступные для записи типы телеметрии и не меняется после создания ключа. Чтобы изменить набор типов, создайте новый ключ.

Эти ограничения уменьшают возможный ущерб при утечке ключа. Для API-ключа также назначайте минимально необходимые роли сервисному аккаунту и ограничивайте область действия ключа.

Кластер и сервис указываются при отправке данных, а не в настройках ключа. На автоматическое создание шардов и запись данных распространяются общие [квоты и лимиты](../concepts/limits.md).

Ключи приложений можно использовать в клиентском коде веб-приложений и мобильных приложений. Храните ключи в хранилище секретов, например [Yandex Lockbox](../../lockbox/index.md), или в переменных сборки и регулярно [ротируйте](#rotation).

## Создать ключ {#create}

Для создания и удаления ключей нужны права администратора проекта.

{% list tabs group=instructions %}

- Интерфейс Monium {#console}

  1. На главной странице [Monium](https://kz.monium.yandex.cloud) слева выберите ![alt](../../_assets/console-icons/sliders.svg) **Настройки** → ![alt](../../_assets/console-icons/key.svg) **Ключи приложений**.
  1. Слева вверху выберите нужный проект.
  1. Нажмите **Создать ключ**.
  1. В открывшемся окне задайте параметры:

     * **Название** — произвольное имя ключа.
     * **Область действия** — типы телеметрии, которые приложение будет записывать: **Метрики**, **Логи**, **Трейсы**.

  1. Нажмите **Создать**.
  1. В окне с созданным ключом нажмите **Скопировать** и сохраните ключ. Пример значения: `MONIUM_Fc6m****`.

{% endlist %}

Полное значение ключа показывается только один раз. После закрытия окна посмотреть его нельзя: Monium хранит только хеш ключа.

В списке ключей отображаются название, идентификатор вида `MONIUM**xxxxxxxx`, область действия и дата создания. По умолчанию в проекте может быть до 1 000 активных ключей. Удаленные ключи не учитываются.

## Отправить телеметрию {#send}

Передавайте ключ в заголовке `Authorization` с каждым запросом HTTP или gRPC:

```text
Authorization: Application-Key MONIUM_Fc6m****
```

В запросе укажите идентификатор проекта, в котором создан ключ. Для проектов каталогов и облаков используйте `folder__<идентификатор_каталога>` и `cloud__<идентификатор_облака>`, для самостоятельно созданных проектов — их собственные идентификаторы.

Для отправки по протоколу OTLP используйте [эндпоинты](../collector/otlp-protocol.md#endpoints) Monium. Передайте идентификатор проекта в заголовке `x-monium-project`. Чтобы явно выбрать кластер и сервис, задайте заголовки `x-monium-cluster` и `x-monium-service`.

Чтобы отправить тестовую метрику по HTTP в формате Push JSON, используйте ключ с областью действия **Метрики** и выполните запрос:

```bash
MONIUM_APPLICATION_KEY="<ключ_приложения>"
MONIUM_PROJECT_ID="<идентификатор_проекта>"

curl -sS -i -X POST \
  "https://ingest.monium.yacloudkz.tech/api/v2/metrics?project=${MONIUM_PROJECT_ID}&cluster=test&service=test" \
  -H "Authorization: Application-Key ${MONIUM_APPLICATION_KEY}" \
  -H 'Content-Type: application/json' \
  -d '{"sensors":[{"labels":{"sensor":"app_key_smoke_test"},"value":1}]}'
```

В примере метрика `app_key_smoke_test` отправляется в кластер `test` и сервис `test` указанного проекта.

## Ротировать ключ {#rotation}

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

Для ротации или изменения области действия замените ключ новым:

{% list tabs group=instructions %}

- Интерфейс Monium {#console}

  1. [Создайте новый ключ](#create) с нужной областью действия.
  1. Замените ключ в настройках приложения и убедитесь, что телеметрия поступает в Monium.
  1. На главной странице [Monium](https://kz.monium.yandex.cloud) слева выберите ![alt](../../_assets/console-icons/sliders.svg) **Настройки** → ![alt](../../_assets/console-icons/key.svg) **Ключи приложений**.
  1. Слева вверху выберите нужный проект.
  1. Чтобы удалить старый ключ, в его строке нажмите ![image](../../_assets/console-icons/trash-bin.svg).

{% endlist %}

## Проверить использование ключа {#usage}

Статистика проверок авторизации доступна в [метриках](../metrics/metric-explorer.md) сервиса `__monitoring__` в проекте, в котором создан ключ:

* `auth.authorize.completed_ok` — успешные проверки;
* `auth.authorize.completed_error` — проверки, завершившиеся ошибкой.

Для отбора метрик ключей приложений задайте метку `type=application_key`. Чтобы выбрать конкретный ключ и область действия, используйте метки `visible_id` и `scope`. В значении `visible_id` символы `*` из идентификатора в списке ключей заменены на `_`.

## Типовые ошибки {#errors}

#|
|| **HTTP-код** | **Причина** | **Что делать** ||
|| `401` | Ключ недействителен или удален. | Проверьте значение заголовка `Authorization`. При необходимости создайте новый ключ. ||
|| `403` | Тип телеметрии не входит в область действия ключа, проект в запросе не совпадает с проектом ключа или ключ отозван. | Проверьте область действия ключа и идентификатор проекта. Если ключ отозван, используйте новый. ||
|| `429` | Сработало ограничение сервиса. | Уточните причину в сообщении об ошибке и проверьте [квоты и лимиты](../concepts/limits.md). ||
|#