В экосистеме Google Cloud Platform (GCP) под «credentials.json» обычно понимают JSON-файл с ключом сервисного аккаунта (service account key) или пользовательские учётные данные OAuth. Для инженеров, девопсов и команд, которые развёртывают блокчейн-нод или сервисы крипто-проектов в облаке, этот файл — одна из самых чувствительных артефактов: в нём лежит приватный ключ и доступ к ресурсам проекта. Одна утечка — и тот же приватный ключ может быть использован для управления инфраструктурой, доступа к данным и даже к интеграциям, управляющим финансами проекта.
В этой статье я подробно опишу:
Типичный JSON-ключ сервисного аккаунта содержит набор полей. Пример структуры (сокращённый):
{ "type": "service_account", "project_id": "my-project-123", "private_key_id": "abcd1234efgh5678...", "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANB ... \n-----END PRIVATE KEY-----\n", "client_email": "sa-name@my-project-123.iam.gserviceaccount.com", "client_id": "123456789012345678901", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/..." }
Ключевые поля:
Есть и другой тип credentials.json — "authorized_user" (OAuth2 user credentials) с refresh_token. Он используется реже для серверных сервисов.
Факт: один сервисный аккаунт может иметь до 10 активных ключей (ограничение GCP). Это важно при управлении ротацией и учётом ключей.
Google использует механизм Application Default Credentials (ADC). Последовательность поиска учётных данных обычно такая: 1. Переменная окружения GOOGLE_APPLICATION_CREDENTIALS — если задана, SDK загружает файл по этому пути. 2. Локальные креды gcloud (при запуске gcloud auth application-default login). 3. Среда выполнения GCP (Compute Engine, GKE, Cloud Run и т. п.) — где доступна встроенная service account аутентификация через метаданные.
Команды и примеры:
В коде (Python): from google.oauth2 import service_account creds = service_account.Credentials.from_service_account_file('key.json')
В CI/CD часто монтируют файл в контейнер и указывают ENV: export GOOGLE_APPLICATION_CREDENTIALS="/secrets/key.json"
Утечка credentials.json даёт злоумышленнику уровень доступа, привязанный к ролям сервисного аккаунта. Последствия зависят от прав:
Цифры и факты:
1. Избегайте долгоживущих ключей. Лучше не создавать ключи вовсе для сервисных аккаунтов, используемых в GCP — пользуйтесь встроенными/корневым сервисным