← Cloudflare One / cloudflare-one / access-controls / service-credentials
Service tokens
Автоматизированным системам можно выдать токены службы для аутентификации в политиках Cloudflare One. Cloudflare Access генерирует токены службы, состоящие из Client ID и Client Secret. Автоматизированные системы или приложения затем используют эти значения, чтобы получить доступ к приложению, защищенному Access.
В этом разделе описано, как создавать, ротировать, обновлять, отключать и отзывать токен сервиса.
Создать токен службы
-
В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > Service Tokens.
-
Выберите Create Service Token.
-
Назовите токен службы. Название позволит легко находить в журналах события, связанные с этим токеном, и отзывать его отдельно.
-
Выберите Service Token Duration. Это устанавливает дату истечения срока действия токена.
-
Выберите Создать токен. Появятся сгенерированные Client ID и Client Secret для токена службы, а также соответствующие заголовки запроса.
-
Скопируйте Client Secret.
-
Сделайте
POSTзапрос к Access Service Tokens конечная точка:
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Access: Service Tokens Write
Создать токен службыcurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "CI/CD token", "duration": "8760h" }' -
Скопируйте
client_idиclient_secretзначения, возвращаемые в ответе.Ответ"result": { "client_id": "88bf3b6d86161464f6509f7219099e57.access", "client_secret": "bdd31cbc4dec990953e39163fbbb194c93313ca9f0a6e420346af9d326b1d2a5", "created_at": "2025-09-25T22:26:26Z", "expires_at": "2026-09-25T22:26:26Z", "id": "3537a672-e4d8-4d89-aab9-26cb622918a1", "name": "CI/CD token", "updated_at": "2025-09-25T22:26:26Z", "duration": "8760h", "client_secret_version": 1 }
-
Добавьте следующее разрешение в свой
cloudflare_api_token↗:Access: Service Tokens Write
-
Настройте
cloudflare_zero_trust_access_service_token↗ ресурс:resource "cloudflare_zero_trust_access_service_token" "example_service_token" { account_id = var.cloudflare_account_id name = "Example service token" duration = "8760h" lifecycle { create_before_destroy = true } } -
Получите Client ID и Client Secret токена службы:
Пример: вывод в CLI
- Выведите Client ID и Client Secret в файл состояния Terraform:
output "example_service_token_client_id" { value = cloudflare_zero_trust_access_service_token.example_service_token.client_id } output "example_service_token_client_secret" { value = cloudflare_zero_trust_access_service_token.example_service_token.client_secret sensitive = true } - Примените конфигурацию:
terraform apply - Считайте Client ID и Client Secret:
terraform output -raw example_service_token_client_idterraform output -raw example_service_token_client_secret
Пример: хранение в HashiCorp Vault
resource "vault_generic_secret" "example_service_token" { path = "kv/cloudflare/example_service_token" data_json = jsonencode({ "CLIENT_ID" = cloudflare_access_service_token.example_service_token.client_id "CLIENT_SECRET" = cloudflare_access_service_token.example_service_token.client_secret }) } - Выведите Client ID и Client Secret в файл состояния Terraform:
Теперь вы можете настроить приложения Access и разрешения на регистрацию устройств чтобы принять этот токен службы. Обязательно установите для политики действие Service Auth; в противном случае Access предложит выполнить вход через поставщика идентификации.
Формат Client Secret
По состоянию на 26 августа 2026 года новые Client Secret для токенов службы используют формат cfast_[40 alphanumeric characters][8-character checksum]. Префикс и контрольная сумма упрощают распознавание секретов для инструментов сканирования учётных данных.
Существующие Client Secret используют 64-символьный шестнадцатеричный формат. Такие секреты продолжают работать и не требуют ротации. Оба формата используют один и тот же Client ID и одинаковые заголовки аутентификации.
Подключите свою службу к Access
Запрос
Чтобы пройти аутентификацию в приложении Access с помощью токена службы, добавьте следующее в заголовки любого HTTP-запроса:
CF-Access-Client-Id: <CLIENT_ID>
CF-Access-Client-Secret: <CLIENT_SECRET>
Например,
curl -H "CF-Access-Client-Id: <CLIENT_ID>" -H "CF-Access-Client-Secret: <CLIENT_SECRET>" https://app.example.comАутентификация с помощью одного заголовка
Вы можете настроить локально размещённое приложение Access для приёма токена службы в одном HTTP-заголовке в качестве альтернативы CF-Access-Client-Id и CF-Access-Client-Secret пары заголовков. Это полезно для аутентификации SaaS-сервисов, которые поддерживают отправку только одного пользовательского заголовка в запросе (например, Authorization заголовок).
Чтобы пройти аутентификацию с помощью одного заголовка:
-
Получите текущую конфигурацию приложения Access:
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Access: Apps and Policies WriteAccess: Apps and Policies Read
Получение приложения Accesscurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps/$APP_ID" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" -
Сделайте
PUTзапрос с именем заголовка, который вы хотите использовать для аутентификации с помощью токена службы. Чтобы избежать перезаписи существующей конфигурации,PUTтело запроса должно содержать все поля, возвращенные предыдущимGETзапрос.
Хотя бы одно из следующих права доступа токена требуется:Необходимые разрешения API-токена
Access: Apps and Policies Write
Обновление приложения Accesscurl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/apps/$APP_ID" \ --request PUT \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "domain": "app.example.com", "type": "self_hosted", "read_service_tokens_from_header": "Authorization" }' -
Добавьте заголовок к любому HTTP-запросу. Например,
curl -H "Authorization: {\"cf-access-client-id\": \"<CLIENT_ID>\", \"cf-access-client-secret\": \"<CLIENT_SECRET>\"}" https://app.example.com
Ротируйте секреты токенов служб
Ротируйте секрет токена службы при подозрении на его раскрытие или в рамках плановой ротации учётных данных. Client ID остаётся прежним, а Access создаёт новый Client Secret.
Можно задать льготный период, в течение которого действуют оба секрета. Используйте это время, чтобы обновить свои сервисы до того, как Access отзовёт предыдущий секрет.
-
В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > Service Tokens.
Перейдите в ↗ -
Найдите токен и выберите три точки > Ротируйте секрет.
-
В Сохранять действительность текущего секрета в течение, выберите, когда Access должен отозвать текущий secret. Доступные льготные периоды варьируются от одного часа до 30 дней. Чтобы отозвать его при ротации, выберите Отозвать немедленно.
-
Выберите Ротировать.
-
Скопируйте новый Client Secret и обновите свои сервисы до окончания льготного периода.
Сделайте POST запрос к Ротируйте токен службы конечная точка. Задайте previous_client_secret_expires_at в значение временной метки RFC 3339, соответствующей моменту, когда должен истечь предыдущий секрет:
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens/$SERVICE_TOKEN_ID/rotate" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"previous_client_secret_expires_at": "2030-01-01T00:00:00Z"
}'Чтобы немедленно отозвать предыдущий секрет, не указывайте previous_client_secret_expires_at из запроса.
Обновите токены службы
Срок действия токенов службы истекает в соответствии с продолжительностью токена, которую вы выбрали при его создании.
- В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > Service Tokens.
- Найдите токен, который хотите продлить.
- Чтобы продлить срок действия токена на один год, выберите Обновить.
- Чтобы продлить срок действия токена более чем на год:
- Выберите Изменить.
- Выберите новый Service Token Duration.
- Выберите Save. Срок действия будет продлён на выбранный промежуток времени.
Чтобы продлить срок действия токена на один год, выполните POST запрос к Обновите токен службы конечная точка:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Access: Service Tokens Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens/$SERVICE_TOKEN_ID/refresh" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Чтобы продлить срок действия токена на произвольный период, выполните PUT запрос к Обновите токен службы конечную точку с новым duration:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Access: Service Tokens Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens/$SERVICE_TOKEN_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"duration": "17520h"
}'Чтобы продлить срок действия токена службы, измените duration атрибут у cloudflare_zero_trust_access_service_token ↗ ресурс и примените изменение. Cloudflare сбрасывает срок действия относительно времени обновления.
resource "cloudflare_zero_trust_access_service_token" "example_service_token" {
account_id = var.cloudflare_account_id
name = "Example service token"
duration = "17520h"
lifecycle {
create_before_destroy = true
}
}Включите или отключите токен службы
Отключите токен службы, чтобы временно запретить ему аутентифицироваться. Access сохраняет токен, чтобы вы могли снова включить его позже.
Turning off a token also stops its previous secret from working during an active rotation grace period.
-
В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > Service Tokens.
Перейдите в ↗ -
Найдите токен и выберите три точки.
-
Чтобы запретить токену выполнять аутентификацию, выберите Отключить токен > Отключить.
-
Чтобы восстановить аутентификацию, выберите Включить токен > Включить.
Сделайте PUT запрос к Обновите токен службы конечная точка. Задайте enabled к false чтобы отключить токен:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Access: Service Tokens Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens/$SERVICE_TOKEN_ID" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"name": "<TOKEN_NAME>",
"enabled": false
}'Чтобы снова включить токен, установите enabled к true.
Отозвать токены службы
Если вам нужно отозвать доступ до истечения срока действия токена, удалите токен. Сервисы, которые полагаются на удалённый токен службы, больше не смогут обращаться к вашему приложению.
- В Панель управления Cloudflare ↗, перейдите в Zero Trust > Контроль доступа > Учетные данные службы > Service Tokens.
- Удалить токен, который нужно отозвать.
Сделайте DELETE запрос к Удалите токен службы конечная точка:
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Access: Service Tokens Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/access/service_tokens/$SERVICE_TOKEN_ID" \
--request DELETE \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Чтобы отозвать токен службы, удалите cloudflare_zero_trust_access_service_token ↗ ресурс из вашей конфигурации и выполните terraform apply, или пометить ресурс для удаления:
terraform destroy -target=cloudflare_zero_trust_access_service_token.example_service_tokenНастройте оповещение об истечении срока действия токена
Можно настроить оповещение, которое уведомит администратора за неделю до истечения срока действия сервисного токена, чтобы он успел обновить токен.
Оповещение об истекающем Access Service Token
Для кого это предназначено?Доступ клиентов, которые хотят получать уведомление о скором истечении срока действия токена службы.
Другие параметры / фильтрыНет.
Входит вПокупка Access
Что делать при получении такого уведомления?Продлите срок действия токена службы. Подробнее см. в Обновите свой токен службы.
Чтобы настроить оповещение об истечении срока действия токена службы:
- В Панель управления Cloudflare ↗, перейдите в Уведомления страницу. Перейдите в Уведомления ↗
- Выберите Add.
- Выберите Истекающий Access Service Token.
- Введите имя оповещения и, при необходимости, описание.
- (Необязательно) Добавьте других получателей письма с уведомлением.
- Выберите Save.
Оповещение настроено и теперь отображается на Уведомления страницу.