Skip to content

AWS IAM permissions

The deploying credentials are the AWS identity that runs terraform apply for qumulo_filesystem_aws. This page lists what that identity, and the roles and keys around it, must be allowed to do.

Service access

Service What the provider manages When it is needed
IAM Roles and instance profiles for the cluster nodes and the provisioner Every cluster. Not needed for a role supplied through cluster_iam_role_arn or provisioner_iam_role_arn.
EC2 Instances, EBS volumes, and security groups Every cluster. Security groups are not created when cluster_security_group_id and provisioner_security_group_id are set.
S3 The cluster's persistent storage buckets Every cluster

Specific actions

Action When it is needed
ec2:ModifyInstanceAttribute Every cluster, to lift deletion protection from an instance before terminating it
s3:GetBucketPolicy Every cluster, to lift deletion protection from a bucket before deleting it
s3:PutBucketPolicy Every cluster
tag:GetResources Every cluster, to find its S3 buckets by their Qumulo-Cluster tag on destroy, on update, and on refresh with deletion_protection
ssm:GetParameter on /qumulo/<deployment_unique_name>/bucket-names, and kms:Decrypt on the account's aws/ssm key Every cluster. Every bucket lookup reads the bucket list that clusters built with aws-terraform-cnq keep in that SecureString parameter. For a cluster the provider created, the read returns "not found"
ec2:DescribeSubnets Every cluster, to derive each subnet's availability zone
ec2:DescribeInstanceAttribute When deletion_protection is set
logs:DescribeLogGroups, logs:CreateLogGroup, logs:TagResource When audit_logging = true
iam:PassRole on the supplied role When cluster_iam_role_arn or provisioner_iam_role_arn is set

logs:DeleteLogGroup is not required.

Warning

Without tag:GetResources, terraform destroy terminates the instances and then fails, leaving every <random>-<deployment_name>-qps-<N> bucket behind. Running terraform destroy again does not retry the bucket cleanup.

Customer-managed KMS key

Principal Actions on the key When it is needed
The IAM roles the provider creates kms:Encrypt, kms:Decrypt, kms:GenerateDataKey, kms:DescribeKey When kms_key_id is set

The key must be in the same region as the cluster, or be a multi-region replica in that region.

Cross-account AMIs

Grant Granted by When it is needed
Launch permission on the AMI The AMI owner's account When ami_id or provisioner_ami_id names an AMI owned by another account
kms:Decrypt, kms:DescribeKey, kms:CreateGrant on the snapshot's key The key policy in the AMI owner's account When that AMI's backing snapshot is encrypted

Permissions boundaries

When permissions_boundary_arn is set, the provider attaches the same boundary to the cluster node role and the provisioner role. The boundary must allow the S3, EC2, KMS, Secrets Manager, and CloudWatch Logs permissions those roles use, or role creation fails with an IAM error.

Bring-your-own roles

A role supplied through cluster_iam_role_arn or provisioner_iam_role_arn must belong to exactly one instance profile. The cluster role's S3 policy must use the wildcard bucket pattern in AWS Bring Your Own IAM Roles.

Import

Importing an existing cluster needs further permissions, listed in the import reference.