Миграция ключей API на токены сервисных учётных записей
Note
Ключи API устарели. Теперь сервисные учётные записи заменяют ключи API для аутентификации с помощью HTTP API и взаимодействия с Grafana.
Ключи API задают роль — Admin, Editor или Viewer, — которая определяет разрешения, связанные с взаимодействием с Grafana.
По сравнению с ключами API сервисные учётные записи имеют ограниченные области действия, что обеспечивает большую безопасность. Дополнительные сведения о преимуществах сервисных учётных записей см. в разделе service account benefits.
При миграции ключа API на сервисную учётную запись создаётся сервисная учётная запись с токеном сервисной учётной записи. Ваш существующий ключ API — теперь перенесённый на токен сервисной учётной записи — продолжит работать как прежде.
Чтобы найти перенесённые ключи API, нажмите Administration в меню слева, затем Users and access -> Service Accounts, выберите сервисную учётную запись и найдите Token.
Миграция ключей API с помощью пользовательского интерфейса Grafana
В этом разделе показано, как перенести ключи API на сервисные учётные записи Grafana с помощью пользовательского интерфейса Grafana. Вы можете перенести один ключ API или все ключи API. При миграции всех ключей API вы больше не сможете создавать ключи API и должны будете использовать сервисные учётные записи.
Прежде чем начать
Чтобы выполнить эти инструкции, вам нужно как минимум одно из следующего:
- права администратора
- права редактора
- роль writer сервисных учётных записей
Дополнительные сведения о разрешениях см. в разделе Roles and permissions.
Шаги
Чтобы перенести все ключи API на сервисные учётные записи, выполните следующие шаги:
- Войдите в Grafana, наведите указатель на Administration, Users and access и нажмите API Keys.
- В верхней части страницы найдите раздел Switch from API keys to service accounts
- Нажмите Migrate to service accounts now.
- Появится окно подтверждения с запросом на подтверждение миграции. Нажмите Yes, migrate now, если хотите продолжить.
- После успешной миграции вы можете скрыть страницу ключей API навсегда. Нажмите Hide API keys page forever, если хотите это сделать.
Чтобы перенести один ключ API на сервисную учётную запись, выполните следующие шаги:
- Войдите в Grafana.
- Нажмите Administration в меню слева, затем Users and access и выберите API Keys.
- Найдите ключ API, который хотите перенести.
- Нажмите Migrate to service account.
Миграция ключей API с помощью HTTP API
В этом разделе показано, как программно перенести ключи API на сервисные учётные записи Grafana с помощью HTTP API. Дополнительные сведения об API см. в разделе Service account HTTP APIs.
Прежде чем начать
Чтобы выполнить эти инструкции, вам нужно одно из следующего:
- права администратора
- права редактора
- роль writer сервисных учётных записей
Шаги
Выполните следующие шаги, чтобы перенести ключи API на сервисные учётные записи для API:
-
Вызовите конечную точку
POST /api/serviceaccountsи конечную точкуPOST /api/serviceaccounts/<id>/tokens.Это действие генерирует токен сервисной учётной записи.
-
Сохраните ID и секрет, которые вернёт вам система.
-
Передайте токен в заголовке
Authorizationс префиксомBearer.Это действие аутентифицирует запросы к API.
-
Используйте SAT для аутентификации
-
Удалите код, который обрабатывает старую конечную точку
/api/auth/keys. -
Отследите используемые ключи API и перенесите их на SAT.
Пример
Ваша текущая конфигурация
curl -X POST -H "Content-Type: application/json" -d '{"name": "my-api-key", "role": "Viewer"}' http://admin:admin@localhost:3000/api/auth/keys
# response from the api
{"id":2,"name":"my-api-key","key":"eyJrIjoiTFRSN1RBOVc3SGhjblc0bWZodXZ3MnNDcU92Um5VZUIiLKJuIjoibXktYXBpLWtleSIsImlkIjoxfQ=="}%
Новая конфигурация
# create a service account
curl -X POST -H "Content-Type: application/json" -d '{"name": "my-service-account", "role": "Viewer"}' http://admin:admin@localhost:3000/api/serviceaccounts
# response with the created service account id,name, login
{"id":1,"name":"my-service-account","login":"sa-my-service-account","orgId":1,"isDisabled":false,"role":"Viewer","tokens":0,"avatarUrl":""}%
# create the service account token with the service account id 1 - /serviceaccounts/{id} returned from the previous step
curl -X POST -H "Content-Type: application/json" -d '{"name": "my-service-account-token"}' http://admin:admin@localhost:3000/api/serviceaccounts/1/tokens
# response with the created SAT id,name and key.
{"id":2,"name":"my-service-account-token","key":"glsa_iNValIdinValiDinvalidinvalidinva_5b582697"}%
# now you can authenticate the same way as you did with the API key
curl --request GET --url http://localhost:3000/api/folders --header 'Authorization: Bearer glsa_iNValIdinValiDinvalidinvalidinva_5b582697'
# response
[{"id":1,"uid":"a5261a84-eebc-4733-83a9-61f4713561d1","title":"gdev dashboards"}]%
Миграция ключей API с помощью Terraform
Note
Ресурс terraform
api_keyудалён из Grafana Terraform Provider в версии v3.0.0. Прежде чем переносить и прекращать использование этого ресурса, следует закрепить версию terraform на версии меньше или равной v2.19.0. Дополнительные сведения см. в примечаниях к выпуску Grafana Terraform Provider.
Чтобы закрепить Grafana Terraform Provider на v2.19.0:
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
version = "2.19.0"
}
}
}
В этом разделе показано, как перенести вашу конфигурацию Terraform для ключей API на сервисные учётные записи Grafana. Дополнительные сведения см. в разделе Grafana Service Accounts in Terraform.
Шаги
Выполните следующие шаги, чтобы перенести ключи API на сервисные учётные записи с помощью Terraform:
- Создайте ресурсы
grafana_service_accountиgrafana_service_account_token. - Укажите нужные области действия и дату истечения срока действия при создании сервисной учётной записи.
- Используйте токен, возвращённый
grafana_service_account_token, для аутентификации запросов к API. - Удалите конфигурацию terraform для создания ресурсов
grafana_api_key.
Пример: ваша текущая конфигурация Terraform
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
}
}
}
# configure the provider with basic auth
provider "grafana" {
url = "http://localhost:3000"
auth = "admin:admin"
}
resource "grafana_api_key" "foo" {
name = "key_foo"
role = "Viewer"
}
resource "grafana_api_key" "bar" {
name = "key_bar"
role = "Admin"
seconds_to_live = 30
}
Ваша новая конфигурация Terraform
Примечание: можно создать несколько токенов с помощью одной сервисной учётной записи.
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
}
}
}
# configure the provider with basic auth
provider "grafana" {
url = "http://localhost:3000"
auth = "admin:admin"
}
# Creating a service account in Grafana instance to be used as auth and attach tokens
# notice we can attach multiple tokens to one service account
resource "grafana_service_account" "sa-admin" {
name = "sa-admin"
role = "Admin"
}
# Creating a service account token in Grafana instance to be used for creating resources in Grafana instance
resource "grafana_service_account_token" "sat-bar" {
name = "sat-bar"
service_account_id = grafana_service_account.sa-admin.id
}
# Creating a service account token in Grafana instance to be used for creating resources in Grafana instance
resource "grafana_service_account_token" "sat-foo" {
name = "sat-foo"
service_account_id = grafana_service_account.sa-admin.id
seconds_to_live = 30
}
Миграция ключей API Cloud Stack с помощью Terraform
В этом разделе показано, как перенести вашу конфигурацию Terraform для ключей API Grafana cloud stack на сервисные учётные записи Grafana cloud stack.
Для миграции ключей API вашего cloud stack используйте ресурсы grafana_cloud_stack_service_account и gafana_cloud_stack_service_account_token. Дополнительные сведения см. в разделе Grafana Cloud Stack Service Accounts in Terraform.
Note
Это относится только к ключам API Grafana Cloud Stack
grafana_cloud_stack_api_key. Ресурс ключей API Grafana Cloudgrafana_cloud_api_keyне устарел и должен использоваться для аутентификации при управлении вашим Grafana cloud.
Шаги
Выполните следующие шаги, чтобы перенести ключи API cloud stack на сервисные учётные записи cloud stack с помощью Terraform:
- Создайте ресурсы
grafana_cloud_stack_service_accountиgrafana_cloud_stack_service_account_token. - Укажите нужные области действия и дату истечения срока действия при создании сервисной учётной записи.
- Используйте токен, возвращённый
grafana_cloud_stack_service_account_token, для аутентификации запросов к API. - Удалите конфигурацию Terraform для создания ресурсов
grafana_cloud_stack_api_key.
Пример: ваша текущая конфигурация Terraform
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
}
}
}
# Declaring the first provider to be only used for creating the cloud-stack
provider "grafana" {
alias = "cloud"
cloud_api_key = "<API-Key>"
}
resource "grafana_cloud_stack" "my_stack" {
provider = grafana.cloud
name = "my_stack"
slug = "my_stack"
region_slug = "eu" # Example “us”,”eu” etc
}
# Creating a Grafana API key to be used as auth
resource "grafana_cloud_stack_api_key" "management" {
provider = grafana.cloud
stack_slug = grafana_cloud_stack.my_stack.slug
name = "management-key"
role = "Admin"
}
Ваша новая конфигурация Terraform
terraform {
required_providers {
grafana = {
source = "grafana/grafana"
}
}
}
# Declaring the first provider to be only used for creating the cloud-stack
provider "grafana" {
alias = "cloud"
cloud_api_key = "<API-Key>"
}
resource "grafana_cloud_stack" "my_stack" {
provider = grafana.cloud
name = "my_stack"
slug = "my_stack"
region_slug = "eu" # Example “us”,”eu” etc
}
# Creating a grafana cloud stack service account
resource "grafana_cloud_stack_service_account" "mystack_cloud-stack_service_account" {
provider = grafana.cloud
stack_slug = grafana_cloud_stack.my_stack.slug
name = "mystack-cloud-stack-sa"
role = "Admin"
}
# Creating a grafana cloud stack service account token
resource "grafana_cloud_stack_service_account_token" "mystack_cloud-stack_service-account_token" {
provider = grafana.cloud
stack_slug = grafana_cloud_stack.my_stack.slug
name = "mystack-cloud-stack-sa-token"
service_account_id = grafana_cloud_stack_service_account.mystack_cloud-stack_service_account.id
}