AWS
Jetscale connects through a cross-account IAM role rather than a shared access key. You create the role in your own account, and Jetscale assumes it temporarily using sts:AssumeRole, secured with a unique External ID that prevents any other party from assuming the same role (the "confused deputy" protection AWS recommends for third-party access). The attached policy is limited entirely to read operations: Cost Explorer, Cost Optimization Hub, Compute Optimizer, EC2, RDS, Redshift, DynamoDB, S3, ElastiCache, CloudWatch, ECS, EKS, and related services, built from Describe*, Get*, List*, and Export* actions only. No Put, Create, Delete, or Modify permission is ever requested.
Azure
Jetscale authenticates through a dedicated App Registration (service principal) that you create and control, using either a certificate or a client secret. Access is granted through built-in Azure roles: Reader, Cost Management Reader, and Monitoring Reader, scoped to the subscription level, or through an optional custom role for teams that want even tighter control. That custom role explicitly excludes sensitive actions such as listing or regenerating storage account keys, so even a compromised credential can't reach into your data plane.
GCP
Google Cloud connections follow the same pattern: a dedicated read-only identity, scoped to the cost, billing, and resource-inventory data Jetscale needs, with no permissions to modify or delete infrastructure.