Skip to Content
GuideSecurityPermissions Required to Use CloudPilot AI

Permissions Required to Use CloudPilot AI

The installation process consists of two phases. In the first phase, only an agent is installed, which collects cluster resource-related data using read-only permissions.

Privileges needed with AWS

In the second phase, CloudPilot AI will request the following privileges:

{ "Statement": [ { "Effect": "Allow", "Action": [ "autoscaling:DescribeAutoScalingGroups", "autoscaling:DescribeAutoScalingInstances", "autoscaling:DescribeLaunchConfigurations", "autoscaling:DescribeScalingActivities", "autoscaling:DescribeTags", "ec2:DescribeImages", "ec2:DescribeInstanceTypes", "ec2:DescribeLaunchTemplateVersions", "ec2:GetInstanceTypesFromInstanceRequirements", "eks:DescribeNodegroup" ], "Resource": ["*"] }, { "Effect": "Allow", "Action": [ "autoscaling:SetDesiredCapacity", "autoscaling:TerminateInstanceInAutoScalingGroup", "autoscaling:UpdateAutoScalingGroup" ], "Resource": ["*"] }, { "Action": [ "ssm:GetParameter", "ec2:DescribeImages", "ec2:RunInstances", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeLaunchTemplates", "ec2:DescribeInstances", "ec2:DescribeInstanceTypes", "ec2:DescribeInstanceTypeOfferings", "ec2:DescribeAvailabilityZones", "ec2:DeleteLaunchTemplate", "ec2:CreateTags", "ec2:CreateLaunchTemplate", "ec2:CreateFleet", "ec2:DescribeSpotPriceHistory", "pricing:GetProducts", "savingsplans:DescribeSavingsPlans", "ec2:DescribeRegions" ], "Effect": "Allow", "Resource": "*", "Sid": "CloudPilot" }, { "Action": "ec2:TerminateInstances", "Condition": { "StringLike": { "ec2:ResourceTag/karpenter.sh/nodepool": "*" } }, "Effect": "Allow", "Resource": "*", "Sid": "ConditionalEC2Termination" }, { "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:${AWS_PARTITION}:iam::${AWS_ACCOUNT_ID}:role/CloudPilotNodeRole-${CLUSTER_NAME}", "Sid": "PassNodeIAMRole" }, { "Effect": "Allow", "Action": "eks:DescribeCluster", "Resource": "arn:${AWS_PARTITION}:eks:${AWS_REGION}:${AWS_ACCOUNT_ID}:cluster/${CLUSTER_NAME}", "Sid": "EKSClusterEndpointLookup" }, { "Sid": "AllowScopedInstanceProfileCreationActions", "Effect": "Allow", "Resource": "*", "Action": [ "iam:CreateInstanceProfile" ], "Condition": { "StringEquals": { "aws:RequestTag/kubernetes.io/cluster/${CLUSTER_NAME}": "owned", "aws:RequestTag/topology.kubernetes.io/region": "${AWS_REGION}" }, "StringLike": { "aws:RequestTag/karpenter.k8s.aws/ec2nodeclass": "*" } } }, { "Sid": "AllowScopedInstanceProfileTagActions", "Effect": "Allow", "Resource": "*", "Action": [ "iam:TagInstanceProfile" ], "Condition": { "StringEquals": { "aws:ResourceTag/kubernetes.io/cluster/${CLUSTER_NAME}": "owned", "aws:ResourceTag/topology.kubernetes.io/region": "${AWS_REGION}", "aws:RequestTag/kubernetes.io/cluster/${CLUSTER_NAME}": "owned", "aws:RequestTag/topology.kubernetes.io/region": "${AWS_REGION}" }, "StringLike": { "aws:ResourceTag/karpenter.k8s.aws/ec2nodeclass": "*", "aws:RequestTag/karpenter.k8s.aws/ec2nodeclass": "*" } } }, { "Sid": "AllowScopedInstanceProfileActions", "Effect": "Allow", "Resource": "*", "Action": [ "iam:AddRoleToInstanceProfile", "iam:RemoveRoleFromInstanceProfile", "iam:DeleteInstanceProfile" ], "Condition": { "StringEquals": { "aws:ResourceTag/kubernetes.io/cluster/${CLUSTER_NAME}": "owned", "aws:ResourceTag/topology.kubernetes.io/region": "${AWS_REGION}" }, "StringLike": { "aws:ResourceTag/karpenter.k8s.aws/ec2nodeclass": "*" } } }, { "Sid": "AllowInstanceProfileReadActions", "Effect": "Allow", "Resource": "*", "Action": "iam:GetInstanceProfile" } ], "Version": "2012-10-17" }

Privileges needed with AlibabaCloud

In the second phase, CloudPilot AI will request the following privileges:

{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "vpc:DescribeVSwitches", "ecs:CreateAutoProvisioningGroup", "ecs:DescribeSecurityGroups", "ecs:DescribeAvailableResource", "ecs:DescribeInstances", "ecs:DescribeImages", "cs:DescribeClusterDetail", "cs:DescribeKubernetesVersionMetadata", "cs:DescribeClusterAttachScripts", "cs:DescribeClusterNodePools", "ess:DescribeScalingGroups", "ecs:AddTags", "ram:CreateServiceLinkedRole" ], "Resource": "*" }, { "Effect": "Allow", "Action": "ecs:DeleteInstance", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag\/cloudpilot.ai\/managed": "true" } } }, { "Effect": "Allow", "Action": "ess:DetachInstances", "Resource": "*", "Condition": { "StringEquals": { "acs:ResourceTag\/ack.aliyun.com": "${INTERNAL_CLUSTER_ID}" } } } ] }

CloudPilot AI requires almost the same privileges as the open-source Karpenter, with the addition of permissions related to:

  • AWS/AutoScalingGroup
  • AlibabaCloud/ScalingGroup

All of these are used to optimize existing nodes. If you have any questions, please feel free to contact us through our Slack channel.

Last updated on