Balis 情報マガジン

service accountjson

📅 October 29, 2026📖 Verified Publication
```html Service Account JSON: The Complete Guide to Cloud Authentication Keys | Sapiens AI

Service Account JSON: The Complete Guide to Cloud Authentication Keys

Last updated July 2026 · 14-minute read

Key Takeaways

  • A service account JSON file is a private-key credential that grants programmatic access to cloud services — primarily Google Cloud Platform, but also GitHub, Azure, and other platforms.
  • Every JSON key is a one-time download; once saved, the portal will never display the private key again. Loss means recreation and rotation.
  • Service account JSON keys represent the highest-risk credential type in cloud IAM because they bypass MFA and delegate privileges silently.
  • Compare to Workload Identity (GCP-native) or OIDC federated tokens: JSON keys are universally compatible but carry far greater exposure surface.
  • Best practice: restrict with least-privilege IAM roles, enable key rotation every 90 days, store in secret managers, and audit with Cloud Audit Logs.

What Is a Service Account JSON File?

A service account JSON file is a structured, machine-readable credential containing a cryptographic key pair and metadata that authenticates a non-human identity to cloud APIs. For Google Cloud Platform (GCP), the file follows a well-defined schema published by Google and typically includes the following fields:

{
  "type": "service_account",
  "project_id": "my-gcp-project",
  "private_key_id": "a1b2c3d4e5f6...",
  "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC...",
  "client_email": "my-sa@my-project.iam.gserviceaccount.com",
  "client_id": "112233445566778899",
  "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/..."
}

The private_key is an RSA 2048-bit (or EC P-256) key generated at creation time. The corresponding public key is uploaded to Google's identity servers. When your application signs a JWT with the private key, Google validates the signature using the stored public key — no password exchange occurs.

While the term originated in GCP, service account JSON has become a generic industry reference for any platform that issues a JSON-encoded service-credential bundle (GitHub Actions, Twilio, MongoDB Atlas, and others all use similar constructs).

How Service Account JSON Authentication Works

Step 1 — Key Generation

The cloud platform generates an asymmetric key pair. The private key is embedded in the JSON and encrypted-at-rest; the public key is stored server-side and rotated only when the private key is compromised or explicitly rotated.

Step 2 — JWT Signing

The client library (e.g., Google's google-auth-library) constructs a JWT header and payload, signs it with the private key, and encodes it as a compact, three-part Base64URL string.

Step 3 — Token Exchange

The signed JWT is POSTed to the platform's token endpoint (token_uri from the JSON). The platform verifies the signature against the stored public key and returns an access token (typically a short-lived OAuth 2.0 bearer token, valid for ~1 hour).

Step 4 — API Request

The application attaches the access token to subsequent API calls via the Authorization: Bearer <token> header. Each token request refreshes the credential chain without re-exposing the private key.

Why this matters: The private key never traverses the network. Only the signed JWT does. This design prevents credential interception attacks that plague password-based flows.

Service Account JSON vs. Alternative Authentication Methods

The table below compares five common cloud authentication approaches across security, convenience, and operational cost dimensions.

© 2026 Balis 情報マガジン. All rights reserved.

Auth Method Key Exposure Risk MFA Support Human-Readable? Rotation Complexity Typical Use Case GCP Native?
Service Account JSON High — private key stored on disk No Yes — raw JSON Manual or scripted Cross-cloud, on-prem, CI/CD pipelines Yes
Workload Identity (GKE/EKS) Low — token injected at runtime N/A (no key on host) No Auto by platform Workloads running inside GCP / Kubernetes Yes
Application Default Credentials (ADC) Low — uses GCE metadata or Workload Identity N/A No Auto Code targeting GCP without hardcoding keys Yes
OAuth 2.0 Client Secrets Medium — single shared secret Partial (via consent flow) Yes — short string Medium User-facing apps, third-party integrations Partial
API Keys Low-Medium — no private key, but no signing No Yes — plain string Simple rotate Low-privilege, read-only service calls Yes