Detailed breakdown of every AWS IAM permission required by Qovery and why it’s needed
This page explains every AWS IAM permission that Qovery requires to create and manage your EKS clusters, and what each permission is used for in our infrastructure engine.
Qovery follows the principle of least privilege where possible. S3 and SQS permissions are scoped to qovery* resources only. Some services require broad permissions because Qovery fully manages the lifecycle of those resources on your behalf.
Statement 1 — Permissions on all resources ("Resource": "*") for services where AWS does not support resource-level restrictions, or where Qovery needs to create new resources.
Statement 2 — Permissions scoped to qovery* resources only (S3 buckets and SQS queues).
AWS requires a service role for EKS to manage Kubernetes components
Creates IAM roles and instance profiles for worker nodes
EC2 instances need roles to pull container images (ECR) and join the EKS cluster
Creates IAM roles for Karpenter (node provisioner)
Karpenter needs permissions to launch/terminate EC2 instances and manage fleet requests
Creates IAM roles for the AWS Load Balancer Controller
The ALB controller needs permissions to create and configure load balancers on your behalf
Creates IAM roles for the Cluster Autoscaler
Autoscaler needs permissions to read and modify Auto Scaling groups
Creates IAM roles for the CloudWatch exporter
Exporter needs read access to CloudWatch metrics for monitoring
Creates IAM roles for Loki (log aggregation)
Loki stores logs in S3 and needs a dedicated role with scoped bucket access
Creates IAM roles for External Secrets Operator
ESO needs permissions to read from AWS Secrets Manager and Parameter Store
Manages OIDC providers for IRSA
IAM Roles for Service Accounts (IRSA) enables fine-grained pod-level permissions without sharing node credentials
All IAM roles created by Qovery follow the IRSA pattern (IAM Roles for Service Accounts), meaning each Kubernetes workload gets its own scoped role rather than sharing a single broad role.
Cluster Autoscaler scales nodes up/down based on pod scheduling pressure
Qovery primarily uses Karpenter for node provisioning, which manages EC2 instances directly. Auto Scaling permissions are retained for the initial managed node group and as a fallback.
These permissions are restricted to resources whose names start with qovery. Qovery cannot access any S3 buckets or SQS queues that you created outside of Qovery.
Stores infrastructure state files needed to manage your cluster
Creates S3 buckets for VPC flow logs
Stores network traffic logs for security auditing (encrypted, with lifecycle policies)
Creates S3 buckets for Loki log storage
Stores application and infrastructure logs with configurable retention
Manages bucket encryption and access policies
Ensures all buckets have server-side encryption and public access blocking enabled
The s3:ListAllMyBuckets permission in Statement 1 is required to verify bucket existence before creation. It is read-only and does not grant access to bucket contents.
Some permissions can be scoped more narrowly for advanced use cases. Contact Qovery support for a minimal policy template tailored to your specific configuration (e.g., if you don’t use managed databases, RDS and ElastiCache permissions can be removed).
Why use STS Assume Role instead of static credentials?
STS Assume Role provides temporary credentials that automatically rotate. Qovery never stores long-lived access keys, and you can revoke access instantly by deleting the CloudFormation stack. See the AWS installation guide for setup instructions.
Does Qovery access my existing AWS resources?
No. S3 and SQS permissions are scoped to qovery* resources only. Other services (EC2, EKS, RDS, etc.) create new resources dedicated to your Qovery cluster. Qovery does not read or modify resources created outside of Qovery.
How can I audit what Qovery does with these permissions?
Enable AWS CloudTrail in your account to get a full audit log of every API call made by the Qovery IAM role. You can also review Qovery’s audit logs for a high-level view of operations.