Agent IAM Policies in AWS
When you run rpk cloud byoc aws apply to create a BYOC cluster, you grant IAM permissions to the Redpanda Cloud agent. The agent uses these permissions to call the AWS API to create and manage cluster resources on your behalf. The permissions follow the principle of least privilege. Where possible, they are scoped to the resources Redpanda provisions for your cluster; some statements grant actions with an account-wide (*) resource scope, as noted in each section. These permissions are not required by Redpanda Cloud end users, and they do not grant human access to your cluster.
|
This page lists the permissions Redpanda needs to create and manage BYOC clusters. It does not apply to BYOVPC clusters. |
How to read this page
The agent’s IAM policy is a set of scoped statements. Statements are organized into functional groups (compute, networking, storage, identity, secrets, monitoring, and coordination state). Each statement lists the actions it allows and why they are needed, the resource scope that constrains them, and the exact Terraform in a collapsible block.
| Access level | Meaning |
|---|---|
Read |
Describe, Get, or List actions. Cannot modify or delete resources. |
Write |
Creates or modifies resources. |
Delete |
Removes resources. |
Full |
Service-wide ( |
Service-wide actions
A few statements use a service-wide action (*) rather than listing individual actions. In every case the action is constrained by the statement’s resource scope, so the grant is not account-wide:
| Action | Constrained to |
|---|---|
|
A single EKS cluster and its add-ons and node groups: |
|
The cluster management bucket only. |
|
Auto Scaling groups named |
Compute and Kubernetes
Provisions and operates the EKS cluster, EC2 nodes, launch templates, and Auto Scaling groups that run the Redpanda data plane. The service-wide actions here (eks:*, autoscaling:*) are each scoped to your cluster’s resources.
Manage the EKS cluster
Scope: Restricted to your cluster’s EKS resources: arn:aws:eks:*:${local.aws_account_id}:cluster/redpanda-${var.redpanda_id}, its add-ons, and its node groups.
| Permission | Access | Why it is needed |
|---|---|---|
|
Full |
Required to manage the full lifecycle of the EKS cluster that hosts your Redpanda data plane, including cluster creation, upgrades, node group management, and decommissioning. Required to configure EKS add-ons, access entries, and identity mappings that Redpanda Cloud needs to operate the managed service. |
Terraform
statement {
sid = "RedpandaAgentEKSCluster"
effect = "Allow"
actions = [
"eks:*",
]
resources = [
"arn:aws:eks:*:${local.aws_account_id}:cluster/redpanda-${var.redpanda_id}",
"arn:aws:eks:*:${local.aws_account_id}:addon/redpanda-${var.redpanda_id}/*",
"arn:aws:eks:*:${local.aws_account_id}:nodegroup/redpanda-${var.redpanda_id}/*",
]
}
Read the EKS node group service-linked role
Scope: Restricted to the AWS-managed service-linked role for EKS node groups: arn:aws:iam::${local.aws_account_id}:role/aws-service-role/eks-nodegroup.amazonaws.com/AWSServiceRoleForAmazonEKSNodegroup.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to read the AWS service-linked role that EKS uses to create managed node groups. Without it, node group creation fails with a permission error. |
Terraform
statement {
sid = "RedpandaAgentEKSNodegroupRoleCreation"
effect = "Allow"
actions = [
"iam:GetRole",
]
resources = [
"arn:aws:iam::${local.aws_account_id}:role/aws-service-role/eks-nodegroup.amazonaws.com/AWSServiceRoleForAmazonEKSNodegroup",
]
}
Manage Auto Scaling groups
Scope: Restricted to Auto Scaling groups named for your cluster: arn:aws:autoscaling:*:${local.aws_account_id}:autoScalingGroup:*:autoScalingGroupName/redpanda-${var.redpanda_id}* and .../redpanda-agent-${var.redpanda_id}*.
| Permission | Access | Why it is needed |
|---|---|---|
|
Full |
Required to manage the full lifecycle of the Auto Scaling groups that provide compute capacity for your Redpanda cluster, including creating, scaling, updating, refreshing, and tearing down node groups. |
Terraform
statement {
sid = "RedpandaAgentAutoscaling"
effect = "Allow"
actions = [
"autoscaling:*",
]
resources = [
"arn:aws:autoscaling:*:${local.aws_account_id}:autoScalingGroup:*:autoScalingGroupName/redpanda-${var.redpanda_id}*",
"arn:aws:autoscaling:*:${local.aws_account_id}:autoScalingGroup:*:autoScalingGroupName/redpanda-agent-${var.redpanda_id}*"
]
}
Read and tag Auto Scaling resources
Scope: Account-wide (*). These describe and tag actions are granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to monitor scaling activity for the Auto Scaling groups that back your Redpanda cluster’s node groups. |
|
Read |
Required to read the Auto Scaling groups that manage your Redpanda cluster’s compute nodes. |
|
Read |
Required to read tags on the Auto Scaling groups managing your Redpanda cluster’s nodes. |
|
Write |
Required to apply Redpanda-managed tags used to identify, reconcile, and clean up the Auto Scaling groups that belong to your cluster. |
|
Delete |
Required to remove obsolete Redpanda-managed tags when your cluster’s Auto Scaling groups are updated or removed. |
|
Read |
Required to configure appropriate node termination policies for your Redpanda cluster’s Auto Scaling groups. |
|
Read |
Required to monitor instance refresh operations during upgrades and rolling updates of your Redpanda cluster nodes. |
|
Read |
Required to read the launch configurations associated with your Redpanda cluster’s Auto Scaling groups. |
Terraform
statement {
sid = "RedpandaAgentAutoScaling"
effect = "Allow"
actions = [
"autoscaling:DescribeScalingActivities",
"autoscaling:DescribeAutoScalingGroups",
"autoscaling:DescribeTags",
"autoscaling:CreateOrUpdateTags",
"autoscaling:DeleteTags",
"autoscaling:DescribeTerminationPolicyTypes",
"autoscaling:DescribeInstanceRefreshes",
"autoscaling:DescribeLaunchConfigurations",
]
resources = [
"*",
]
}
Launch EC2 instances
Scope: Restricted to EC2 instance, network interface, volume, security group, subnet, launch template, and image resources in your account.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to provision the EC2 instances that run your Redpanda broker and worker nodes. |
Terraform
statement {
sid = "RedpandaAgentEC2RunInstances"
effect = "Allow"
actions = [
"ec2:RunInstances",
]
resources = [
"arn:aws:ec2:*:${local.aws_account_id}:instance/*",
"arn:aws:ec2:*:${local.aws_account_id}:network-interface/*",
"arn:aws:ec2:*:${local.aws_account_id}:volume/*",
"arn:aws:ec2:*:${local.aws_account_id}:security-group/*",
"arn:aws:ec2:*:${local.aws_account_id}:subnet/*",
"arn:aws:ec2:*:${local.aws_account_id}:launch-template/*",
"arn:aws:ec2:*::image/*",
]
}
Manage launch templates
Scope: Restricted to launch templates in your account: arn:aws:ec2:*:${local.aws_account_id}:launch-template/*, further restricted by a condition on the redpanda-id resource tag.
| Permission | Access | Why it is needed |
|---|---|---|
|
Delete |
Required to clean up launch templates when you decommission your Redpanda cluster. |
|
Write |
Required to update launch template settings, such as the default version, when cluster nodes are upgraded or reconfigured. |
Terraform
statement {
sid = "RedpandaAgentLaunchTemplateDeletion"
effect = "Allow"
actions = [
"ec2:DeleteLaunchTemplate",
"ec2:ModifyLaunchTemplate",
]
resources = [
"arn:aws:ec2:*:${local.aws_account_id}:launch-template/*",
]
condition {
test = "StringEquals"
variable = "ec2:ResourceTag/redpanda-id"
values = [
var.redpanda_id,
]
}
}
Terminate EC2 instances
Scope: Account-wide (*), restricted by a condition on the redpanda-id resource tag so only instances belonging to your Redpanda cluster can be terminated.
| Permission | Access | Why it is needed |
|---|---|---|
|
Delete |
Required to remove unhealthy, replaced, or scaled-down cluster nodes and to clean up nodes when the cluster is decommissioned. |
Terraform
statement {
sid = "RedpandaAgentTerminateInstances"
effect = "Allow"
actions = [
"ec2:TerminateInstances",
]
condition {
test = "StringEquals"
variable = "ec2:ResourceTag/redpanda-id"
values = [
var.redpanda_id,
]
}
resources = [
"*",
]
}
Reboot EC2 instances
Scope: Account-wide (*), restricted by a condition on the redpanda-id resource tag so only instances belonging to your Redpanda cluster can be rebooted.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to restart a cluster node during recovery or maintenance. |
Terraform
statement {
sid = "RedpandaAgentRebootInstances"
effect = "Allow"
actions = [
"ec2:RebootInstances",
]
condition {
test = "StringEquals"
variable = "ec2:ResourceTag/redpanda-id"
values = [
var.redpanda_id,
]
}
resources = [
"*",
]
}
Read-only, tagging, and provisioning actions (wildcard resources)
Scope: Account-wide (*). These are read-only describe calls, tag operations, launch-template creation, and service-linked role and placement-group actions, granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to tag AWS resources Redpanda Cloud provisions on your behalf so they are clearly identifiable as belonging to your Redpanda cluster. |
|
Delete |
Required to remove obsolete Redpanda-managed tags from resources that belong to your cluster. |
|
Read |
Required to inspect resource tags so Redpanda Cloud can identify cluster resources and reconcile their ownership and lifecycle. |
|
Read |
Required to validate your AWS account supports the configuration needed to run your Redpanda cluster. |
|
Read |
Required to look up the approved machine images used for Redpanda broker and worker nodes. |
|
Read |
Required to monitor the EC2 instances that run your Redpanda cluster and reconcile their state during operations. |
|
Read |
Required to validate that the requested instance types are available in your region before provisioning your Redpanda cluster. |
|
Read |
Required to inspect the EBS volumes attached to cluster nodes when reconciling storage configuration. |
|
Read |
Required to inspect the network interfaces attached to cluster nodes and endpoints when reconciling network configuration. |
|
Write |
Required to manage the launch templates that define how compute nodes for your Redpanda cluster are provisioned. |
|
Write |
Required to update launch template versions when your Redpanda cluster is upgraded or reconfigured. |
|
Read |
Required to read launch template versions when reconciling or updating your Redpanda cluster’s compute configuration. |
|
Read |
Required to read the launch templates associated with your Redpanda cluster’s compute nodes. |
|
Read |
Required to discover existing IAM policies when provisioning or reconciling your Redpanda cluster’s IAM configuration. |
|
Read |
Required to discover existing IAM roles when provisioning or reconciling your Redpanda cluster’s IAM configuration. |
|
Read |
Required to inspect existing IAM roles before Redpanda Cloud creates or updates the roles used by your cluster. |
|
Read |
Required to read the OIDC provider used to federate Redpanda workloads (such as EKS service accounts) with AWS IAM. |
|
Delete |
Required to clean up the OIDC provider when you decommission your Redpanda cluster. |
|
Write |
Required to create the AWS service-linked roles needed by services (such as EKS and Auto Scaling) that run your Redpanda cluster. |
|
Write |
Required to manage placement groups that optimize network performance and availability for your Redpanda broker nodes. |
|
Delete |
Required to clean up placement groups when you decommission your Redpanda cluster. |
|
Read |
Required to read placement groups used by your Redpanda cluster’s compute nodes. |
|
Read |
Required to read the EKS node groups that host your Redpanda cluster’s workloads. |
|
Delete |
Required to remove EKS node groups when scaling down or decommissioning your Redpanda cluster. |
Terraform
statement {
sid = "RedpandaAgentActionsOnlyAllowedWithWildcardResources"
effect = "Allow"
actions = [
"ec2:CreateTags",
"ec2:DeleteTags",
"ec2:DescribeTags",
"ec2:DescribeAccountAttributes",
"ec2:DescribeImages",
"ec2:DescribeInstances",
"ec2:DescribeInstanceTypes",
"ec2:DescribeVolumes",
"ec2:DescribeNetworkInterfaces",
"ec2:CreateLaunchTemplate",
"ec2:CreateLaunchTemplateVersion",
"ec2:DescribeLaunchTemplateVersions",
"ec2:DescribeLaunchTemplates",
"iam:ListPolicies",
"iam:ListRoles",
"iam:GetRole",
"iam:GetOpenIDConnectProvider",
"iam:DeleteOpenIDConnectProvider",
"iam:CreateServiceLinkedRole",
"ec2:CreatePlacementGroup",
"ec2:DeletePlacementGroup",
"ec2:DescribePlacementGroups",
"eks:DescribeNodegroup",
"eks:DeleteNodegroup"
]
resources = [
"*",
]
}
Networking and connectivity
Creates and manages the VPC, subnets, routes, gateways, security groups, VPC endpoints and endpoint services, load balancers, VPC peering, and Route 53 DNS that isolate cluster traffic and provide connectivity.
Manage the VPC
Scope: Account-wide (*). These VPC networking actions are granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to read the VPC that hosts your Redpanda cluster and validate its configuration. |
|
Read |
Required to read VPC attributes (such as DNS settings) needed to run your Redpanda cluster. |
|
Read |
Required to read the security groups protecting your Redpanda cluster’s network traffic. |
|
Read |
Required to inspect individual security group rules and reconcile them with the network access configured for your cluster. |
|
Write |
Required to provision the internet gateway used for public connectivity to your Redpanda cluster when applicable. |
|
Delete |
Required to remove the internet gateway when you decommission your Redpanda cluster. |
|
Write |
Required to attach the internet gateway to your Redpanda cluster’s VPC. |
|
Read |
Required to read the internet gateways associated with your Redpanda cluster’s VPC. |
|
Write |
Required to provision NAT gateways so private subnets in your Redpanda cluster’s VPC can reach AWS APIs and other required services. |
|
Delete |
Required to remove NAT gateways when you decommission your Redpanda cluster. |
|
Read |
Required to read NAT gateways used by your Redpanda cluster’s VPC. |
|
Write |
Required to manage the network routes that direct traffic within and out of your Redpanda cluster’s VPC. |
|
Delete |
Required to remove routes when reconfiguring or decommissioning your Redpanda cluster’s network. |
|
Write |
Required to manage the route tables that control traffic flow in your Redpanda cluster’s VPC. |
|
Delete |
Required to remove route tables when you decommission your Redpanda cluster. |
|
Read |
Required to read the route tables in your Redpanda cluster’s VPC. |
|
Write |
Required to associate route tables with subnets in your Redpanda cluster’s VPC. |
|
Write |
Required to provision the subnets that host your Redpanda cluster’s nodes across availability zones. |
|
Delete |
Required to remove subnets when you decommission your Redpanda cluster. |
|
Read |
Required to read the subnets that host your Redpanda cluster. |
|
Read |
Required to read VPC peering connections between your network and your Redpanda cluster’s VPC. |
|
Write |
Required to configure DNS resolution and other options on VPC peering connections that link your network to your Redpanda cluster. |
|
Read |
Required to read the network ACLs in your Redpanda cluster’s VPC. |
|
Read |
Required to read the network interfaces used by your Redpanda cluster’s nodes and endpoints. |
|
Write |
Required to attach network interfaces to your Redpanda cluster’s compute nodes. |
|
Write |
Required to detach network interfaces during reconfiguration or decommissioning of your Redpanda cluster. |
|
Read |
Required to determine which availability zones are available for placing your Redpanda cluster’s nodes. |
Terraform
statement {
sid = "RedpandaAgentVPCManagement"
effect = "Allow"
actions = [
"ec2:DescribeVpcs",
"ec2:DescribeVpcAttribute",
"ec2:DescribeSecurityGroups",
"ec2:DescribeSecurityGroupRules",
"ec2:CreateInternetGateway",
"ec2:DeleteInternetGateway",
"ec2:AttachInternetGateway",
"ec2:DescribeInternetGateways",
"ec2:CreateNatGateway",
"ec2:DeleteNatGateway",
"ec2:DescribeNatGateways",
"ec2:CreateRoute",
"ec2:DeleteRoute",
"ec2:CreateRouteTable",
"ec2:DeleteRouteTable",
"ec2:DescribeRouteTables",
"ec2:AssociateRouteTable",
"ec2:CreateSubnet",
"ec2:DeleteSubnet",
"ec2:DescribeSubnets",
"ec2:DescribeVpcPeeringConnections",
"ec2:ModifyVpcPeeringConnectionOptions",
"ec2:DescribeNetworkAcls",
"ec2:DescribeNetworkInterfaces",
"ec2:AttachNetworkInterface",
"ec2:DetachNetworkInterface",
"ec2:DescribeAvailabilityZones",
]
resources = [
"*",
]
}
Manage VPC endpoints, endpoint services, and load balancers
Scope: Account-wide (*). These VPC endpoint, endpoint service, and Elastic Load Balancing actions are granted with an account-wide resource scope. They support private connectivity (such as PrivateLink) to your Redpanda cluster.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to provision VPC endpoints (such as PrivateLink) so clients can connect privately to your Redpanda cluster and so your cluster can reach AWS services privately. |
|
Write |
Required to update VPC endpoint configuration as your Redpanda cluster’s private connectivity requirements evolve. |
|
Delete |
Required to remove VPC endpoints when you decommission your Redpanda cluster or disable private connectivity. |
|
Read |
Required to read the VPC endpoints associated with your Redpanda cluster. |
|
Read |
Required to discover VPC endpoint services when configuring private connectivity for your Redpanda cluster. |
|
Write |
Required to approve authorized interface endpoint connection requests when the cluster’s PrivateLink service requires acceptance. |
|
Write |
Required to configure notifications for endpoint connection events so Redpanda Cloud can detect and reconcile private connectivity changes. |
|
Write |
Required to create the PrivateLink endpoint service that exposes your cluster’s endpoints for private connections. |
|
Read |
Required to inspect the state and configuration of the PrivateLink endpoint service that exposes your cluster. |
|
Write |
Required to update the cluster’s PrivateLink endpoint service as its load balancers, availability, or private connectivity settings change. |
|
Delete |
Required to remove the cluster’s PrivateLink endpoint service when private connectivity is disabled or the cluster is decommissioned. |
|
Delete |
Required to remove endpoint connection notification configurations during reconfiguration or cleanup. |
|
Read |
Required to inspect the notification configurations used to track endpoint connection events. |
|
Read |
Required to inspect endpoint connection requests and their current states when reconciling private connectivity. |
|
Read |
Required to inspect which AWS principals are allowed to request connections to the cluster’s PrivateLink endpoint service. |
|
Write |
Required to update which endpoint connection events generate notifications and where those notifications are sent. |
|
Write |
Required to manage the payer responsibility setting on the cluster’s PrivateLink endpoint service. |
|
Write |
Required to add or remove the AWS principals allowed to request connections to the cluster’s PrivateLink endpoint service. |
|
Write |
Required to reject unauthorized or obsolete endpoint connection requests to the cluster’s PrivateLink service. |
|
Write |
Required to verify ownership of the private DNS name before clients use it to access the cluster’s PrivateLink endpoint service. |
|
Write |
Required when cross-Region PrivateLink connectivity is enabled for the cluster’s endpoint service. |
|
Read |
Required to inspect the load balancers that receive traffic for your cluster’s endpoints. |
|
Write |
Required to create listeners that accept client connections and forward them to the appropriate cluster target groups. |
|
Delete |
Required to remove obsolete listeners during endpoint reconfiguration or cleanup. |
|
Read |
Required to inspect listener ports, protocols, and routing configuration for your cluster’s load balancers. |
|
Read |
Required to inspect listener settings when reconciling your cluster’s endpoint configuration. |
|
Write |
Required to create target groups containing the cluster services that receive traffic from a load balancer. |
|
Delete |
Required to remove target groups when endpoints are reconfigured or the cluster is decommissioned. |
|
Read |
Required to inspect target group configuration when reconciling your cluster’s endpoints. |
|
Write |
Required to register cluster service endpoints with the target groups that receive client traffic. |
|
Read |
Required to inspect tags used to identify load-balancing resources that belong to your cluster. |
|
Read |
Required to inspect load balancer settings when reconciling your cluster’s endpoints. |
|
Write |
Required to apply Redpanda-managed tags that identify load-balancing resources belonging to your cluster. |
|
Delete |
Required to remove obsolete Redpanda-managed tags from your cluster’s load-balancing resources. |
|
Read |
Required to inspect target group settings when reconciling traffic routing to your cluster. |
|
Write |
Required to update target group settings as your cluster’s endpoint requirements change. |
Terraform
statement {
sid = "RedpandaAgentVPCEndpointService"
effect = "Allow"
actions = [
"ec2:CreateVpcEndpoint",
"ec2:ModifyVpcEndpoint",
"ec2:DeleteVpcEndpoints",
"ec2:DescribeVpcEndpoints",
"ec2:DescribeVpcEndpointServices",
"ec2:AcceptVpcEndpointConnections",
"ec2:CreateVpcEndpointConnectionNotification",
"ec2:CreateVpcEndpointServiceConfiguration",
"ec2:DescribeVpcEndpointServiceConfigurations",
"ec2:ModifyVpcEndpointServiceConfiguration",
"ec2:DeleteVpcEndpointServiceConfigurations",
"ec2:DeleteVpcEndpointConnectionNotifications",
"ec2:DescribeVpcEndpointConnectionNotifications",
"ec2:DescribeVpcEndpointConnections",
"ec2:DescribeVpcEndpointServicePermissions",
"ec2:ModifyVpcEndpointConnectionNotification",
"ec2:ModifyVpcEndpointServiceConfiguration",
"ec2:ModifyVpcEndpointServicePayerResponsibility",
"ec2:ModifyVpcEndpointServicePermissions",
"ec2:RejectVpcEndpointConnections",
"ec2:StartVpcEndpointServicePrivateDnsVerification",
"vpce:AllowMultiRegion",
"elasticloadbalancing:DescribeLoadBalancers",
"elasticloadbalancing:CreateListener",
"elasticloadbalancing:DeleteListener",
"elasticloadbalancing:DescribeListeners",
"elasticloadbalancing:DescribeListenerAttributes",
"elasticloadbalancing:CreateTargetGroup",
"elasticloadbalancing:DeleteTargetGroup",
"elasticloadbalancing:DescribeTargetGroups",
"elasticloadbalancing:RegisterTargets",
"elasticloadbalancing:DescribeTags",
"elasticloadbalancing:DescribeLoadBalancerAttributes",
"elasticloadbalancing:AddTags",
"elasticloadbalancing:RemoveTags",
"elasticloadbalancing:DescribeTargetGroupAttributes",
"elasticloadbalancing:ModifyTargetGroupAttributes",
]
resources = [
"*",
]
}
Manage security groups
Scope: Restricted to security groups in your account and your cluster’s VPC: arn:aws:ec2:*:${local.aws_account_id}:security-group/* and arn:aws:ec2:*:${local.aws_account_id}:vpc/${local.network_config.vpc_id}.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to manage the network security rules that control outbound traffic from your Redpanda cluster. |
|
Write |
Required to manage the network security rules that control inbound traffic to your Redpanda cluster (such as Kafka client connections). |
|
Write |
Required to create the security groups that isolate and protect your Redpanda cluster’s network traffic. |
|
Delete |
Required to remove security groups when you decommission your Redpanda cluster. |
|
Delete |
Required to remove outbound network rules when reconfiguring or decommissioning your Redpanda cluster. |
|
Delete |
Required to remove inbound network rules when reconfiguring or decommissioning your Redpanda cluster. |
|
Write |
Required to keep inbound security group rule descriptions accurate as your Redpanda cluster’s network configuration evolves. |
|
Write |
Required to keep outbound security group rule descriptions accurate as your Redpanda cluster’s network configuration evolves. |
|
Write |
Required to update security group rules as your Redpanda cluster’s network access requirements change. |
Terraform
statement {
sid = "RedpandaAgentSecurityGroups"
effect = "Allow"
actions = [
"ec2:AuthorizeSecurityGroupEgress",
"ec2:AuthorizeSecurityGroupIngress",
"ec2:CreateSecurityGroup",
"ec2:DeleteSecurityGroup",
"ec2:RevokeSecurityGroupEgress",
"ec2:RevokeSecurityGroupIngress",
"ec2:UpdateSecurityGroupRuleDescriptionsIngress",
"ec2:UpdateSecurityGroupRuleDescriptionsEgress",
"ec2:ModifySecurityGroupRules",
]
resources = [
"arn:aws:ec2:*:${local.aws_account_id}:security-group/*",
"arn:aws:ec2:*:${local.aws_account_id}:vpc/${local.network_config.vpc_id}",
]
}
Create VPC peering
Scope: Restricted to your cluster’s VPC: arn:aws:ec2:*:${local.aws_account_id}:vpc/${local.network_config.vpc_id}.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to establish VPC peering between your network and your Redpanda cluster’s VPC for private connectivity. |
Terraform
statement {
sid = "RedpandaAgentVPCPeeringsCreate"
effect = "Allow"
actions = [
"ec2:CreateVpcPeeringConnection",
]
resources = [
"arn:aws:ec2:*:${local.aws_account_id}:vpc/${local.network_config.vpc_id}",
]
}
Delete VPC peering
Scope: Restricted to VPC peering connections in your account: arn:aws:ec2:*:${local.aws_account_id}:vpc-peering-connection/*, further restricted by a condition on the redpanda-id resource tag.
| Permission | Access | Why it is needed |
|---|---|---|
|
Delete |
Required to tear down VPC peering when you disable private connectivity or decommission your Redpanda cluster. |
|
Write |
Required to configure DNS resolution and other options on VPC peering connections that link your network to your Redpanda cluster. |
Terraform
statement {
sid = "RedpandaAgentVPCPeeringsDelete"
effect = "Allow"
actions = [
"ec2:DeleteVpcPeeringConnection",
"ec2:ModifyVpcPeeringConnectionOptions",
]
resources = [
"arn:aws:ec2:*:${local.aws_account_id}:vpc-peering-connection/*",
]
condition {
test = "StringEquals"
variable = "ec2:ResourceTag/redpanda-id"
values = [
var.redpanda_id,
]
}
}
Delete network interfaces
Scope: Restricted to network interfaces in your account: arn:aws:ec2:*:${local.aws_account_id}:network-interface/*.
| Permission | Access | Why it is needed |
|---|---|---|
|
Delete |
Required to remove network interfaces when reconfiguring or decommissioning your Redpanda cluster. |
Terraform
statement {
sid = "RedpandaAgentNetworkInterfaceDelete"
effect = "Allow"
actions = [
"ec2:DeleteNetworkInterface",
]
resources = [
"arn:aws:ec2:*:${local.aws_account_id}:network-interface/*",
]
}
Manage Route 53 DNS
Scope: Account-wide (*). These Route 53 actions are granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to create the DNS hosted zone used for your Redpanda cluster’s endpoints. |
|
Read |
Required to track the status of DNS record changes made for your Redpanda cluster. |
|
Write |
Required to tag Route 53 resources so they are clearly identifiable as belonging to your Redpanda cluster. |
|
Read |
Required to read the DNS hosted zone associated with your Redpanda cluster. |
|
Read |
Required to read tags on Route 53 resources during reconciliation of your Redpanda cluster’s DNS configuration. |
|
Read |
Required to read the DNS records that resolve your Redpanda cluster’s endpoints. |
|
Write |
Required to manage the DNS records that resolve your Redpanda cluster’s Kafka, HTTP, and admin endpoints. |
|
Read |
Required to read DNSSEC configuration on the hosted zone used by your Redpanda cluster. |
|
Delete |
Required to remove the DNS hosted zone when you decommission your Redpanda cluster. |
Terraform
statement {
sid = "RedpandaAgentRoute53Management"
effect = "Allow"
actions = [
"route53:CreateHostedZone",
"route53:GetChange",
"route53:ChangeTagsForResource",
"route53:GetHostedZone",
"route53:ListTagsForResource",
"route53:ListResourceRecordSets",
"route53:ChangeResourceRecordSets",
"route53:GetDNSSEC",
"route53:DeleteHostedZone",
]
resources = [
"*",
]
}
Storage
Manages the S3 buckets backing Tiered Storage and the cluster management bucket. The s3:* action is scoped to the specific management bucket.
Manage the S3 management bucket
Scope: Restricted to the cluster management bucket: data.aws_s3_bucket.management.arn and its objects.
| Permission | Access | Why it is needed |
|---|---|---|
|
Full |
Required to manage the S3 bucket that backs your Redpanda cluster’s management data, including full lifecycle (create, configure, read, write, delete). |
Terraform
statement {
sid = "RedpandaAgentS3ManagementBucket"
effect = "Allow"
actions = [
"s3:*",
]
resources = [
data.aws_s3_bucket.management.arn,
"${data.aws_s3_bucket.management.arn}/*",
]
}
Manage the S3 Tiered Storage bucket
Scope: Restricted to the cluster’s cloud storage bucket: local.redpanda_cloud_storage_bucket_arn and its objects.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to apply the bucket policies that restrict access to your Redpanda cluster’s Tiered Storage bucket. |
|
Delete |
Required to remove bucket policies during reconfiguration or cleanup of your Redpanda cluster’s storage. |
|
Read |
Required to list objects used by your Redpanda cluster for Tiered Storage and backups. |
|
Read |
Required to read bucket configuration and objects used by your Redpanda cluster for Tiered Storage and backups. |
|
Write |
Required to create the S3 bucket that backs your Redpanda cluster’s Tiered Storage and backups. |
|
Delete |
Required to remove the S3 bucket when you decommission your Redpanda cluster. |
Terraform
statement {
sid = "RedpandaAgentS3CloudStorageBucket"
effect = "Allow"
actions = [
"s3:PutBucketPolicy",
"s3:DeleteBucketPolicy",
"s3:List*",
"s3:Get*",
"s3:CreateBucket",
"s3:DeleteBucket"
]
resources = [
local.redpanda_cloud_storage_bucket_arn,
"${local.redpanda_cloud_storage_bucket_arn}/*",
]
}
Identity and access
Creates the least-privilege roles, policies, instance profiles, and OIDC federation the cluster components need. Every statement here is scoped to resources named for your cluster.
Manage IAM roles
Scope: Restricted to IAM roles named for your cluster (storage manager, agent, connectors, and console roles).
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to create the IAM roles used by your Redpanda cluster’s control plane, data plane, and workload components. |
|
Delete |
Required to remove IAM roles when you decommission your Redpanda cluster. |
|
Write |
Required to attach the necessary IAM policies to your Redpanda cluster’s roles. |
|
Delete |
Required to detach IAM policies from roles during reconfiguration or cleanup. |
|
Write |
Required to tag IAM roles so they are clearly identifiable as belonging to your Redpanda cluster. |
|
Delete |
Required to remove obsolete Redpanda-managed tags from IAM roles that belong to your cluster. |
|
Read |
Required to read IAM roles while reconciling your Redpanda cluster’s IAM configuration. |
|
Read |
Required to inspect inline policies on your cluster’s IAM roles when reconciling their permissions. |
|
Write |
Required so Redpanda Cloud can pass cluster-specific IAM roles to AWS services such as EC2 and EKS when creating resources for your cluster. |
|
Write |
Required to update trust policies on Redpanda-managed workload roles as cluster identities or federation settings change. |
|
Read |
Required to read the policies attached to your Redpanda cluster’s IAM roles during reconciliation. |
|
Read |
Required to read the instance profiles associated with your Redpanda cluster’s IAM roles during reconciliation. |
|
Read |
Required to read the inline policies attached to your Redpanda cluster’s IAM roles during reconciliation. |
Terraform
statement {
sid = "RedpandaAgentIAMRoleManagement"
effect = "Allow"
actions = [
"iam:CreateRole",
"iam:DeleteRole",
"iam:AttachRolePolicy",
"iam:DetachRolePolicy",
"iam:TagRole",
"iam:UntagRole",
"iam:GetRole",
"iam:GetRolePolicy",
"iam:PassRole",
"iam:UpdateAssumeRolePolicy",
"iam:ListAttachedRolePolicies",
"iam:ListInstanceProfilesForRole",
"iam:ListRolePolicies",
]
resources = [
"arn:aws:iam::${local.aws_account_id}:role/redpanda-cloud-storage-manager-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:role/redpanda-agent-${var.redpanda_id}*",
"arn:aws:iam::${local.aws_account_id}:role/redpanda-${var.redpanda_id}*",
"arn:aws:iam::${local.aws_account_id}:role/redpanda-connectors-secrets-manager-${var.redpanda_id}*",
"arn:aws:iam::${local.aws_account_id}:role/redpanda-console-secrets-manager-${var.redpanda_id}*",
]
}
Manage IAM policies
Scope: Restricted to IAM policies named for your cluster (agent, autoscaler, storage manager, glue manager, secrets managers, and add-on policies).
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to create the IAM policies that grant your Redpanda cluster the minimum AWS permissions it needs to operate. |
|
Write |
Required to publish updated permissions for a cluster-managed IAM policy without replacing its policy ARN. |
|
Delete |
Required to remove IAM policies when you decommission your Redpanda cluster. |
|
Delete |
Required to remove obsolete, nondefault versions of cluster-managed IAM policies after an update. |
|
Read |
Required to read IAM policies while reconciling your Redpanda cluster’s IAM configuration. |
|
Read |
Required to read specific versions of IAM policies while reconciling your Redpanda cluster’s IAM configuration. |
|
Read |
Required to list IAM policy versions while reconciling and updating your Redpanda cluster’s IAM configuration. |
|
Write |
Required to tag IAM policies so they are clearly identifiable as belonging to your Redpanda cluster. |
|
Delete |
Required to remove obsolete Redpanda-managed tags from IAM policies that belong to your cluster. |
Terraform
statement {
sid = "RedpandaAgentIAMPolicies"
effect = "Allow"
actions = [
"iam:CreatePolicy",
"iam:CreatePolicyVersion",
"iam:DeletePolicy",
"iam:DeletePolicyVersion",
"iam:GetPolicy",
"iam:GetPolicyVersion",
"iam:ListPolicyVersions",
"iam:TagPolicy",
"iam:UntagPolicy"
]
resources = [
"arn:aws:iam::${local.aws_account_id}:policy/aws_ebs_csi_driver-redpanda-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/cert_manager_policy-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/external_dns_policy-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/load_balancer_controller-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-agent-${var.redpanda_id}*",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-${var.redpanda_id}*",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-${var.redpanda_id}-autoscaler",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-cloud-storage-manager-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-glue-manager-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/secrets_manager_policy-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-connectors-secrets-manager-${var.redpanda_id}",
"arn:aws:iam::${local.aws_account_id}:policy/redpanda-console-secrets-manager-${var.redpanda_id}",
]
}
Manage instance profiles
Scope: Restricted to instance profiles named for your cluster: redpanda-${var.redpanda_id}* and redpanda-agent-${var.redpanda_id}*.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to attach IAM roles to instance profiles so your Redpanda cluster nodes have the AWS permissions they need to run. |
|
Delete |
Required to detach IAM roles from instance profiles when reconfiguring or decommissioning your Redpanda cluster. |
|
Write |
Required to create the instance profiles used by your Redpanda cluster’s compute nodes. |
|
Delete |
Required to clean up instance profiles when you decommission your Redpanda cluster. |
|
Read |
Required to read the instance profiles associated with your Redpanda cluster. |
|
Write |
Required to tag instance profiles so they are clearly identifiable as belonging to your Redpanda cluster. |
|
Delete |
Required to remove obsolete Redpanda-managed tags from instance profiles that belong to your cluster. |
Terraform
statement {
sid = "RedpandaAgentInstanceProfile"
effect = "Allow"
actions = [
"iam:AddRoleToInstanceProfile",
"iam:RemoveRoleFromInstanceProfile",
"iam:CreateInstanceProfile",
"iam:DeleteInstanceProfile",
"iam:GetInstanceProfile",
"iam:TagInstanceProfile",
"iam:UntagInstanceProfile",
]
resources = [
"arn:aws:iam::${local.aws_account_id}:instance-profile/redpanda-${var.redpanda_id}*",
"arn:aws:iam::${local.aws_account_id}:instance-profile/redpanda-agent-${var.redpanda_id}*",
]
}
Create EKS OIDC providers
Scope: Restricted to EKS OIDC providers: arn:aws:iam::${local.aws_account_id}:oidc-provider/oidc.eks.*.amazonaws.com and their IDs.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to establish the OIDC federation that allows workloads in your Redpanda cluster (such as EKS service accounts) to assume AWS IAM roles. |
|
Write |
Required to tag the OIDC provider so it is clearly identifiable as belonging to your Redpanda cluster. |
|
Delete |
Required to remove tags from the OIDC provider during reconfiguration or cleanup. |
Terraform
statement {
sid = "RedpandaAgentEKSOIDCProvider"
effect = "Allow"
actions = [
"iam:CreateOpenIDConnectProvider",
"iam:TagOpenIDConnectProvider",
"iam:UntagOpenIDConnectProvider",
]
resources = [
"arn:aws:iam::${local.aws_account_id}:oidc-provider/oidc.eks.*.amazonaws.com",
"arn:aws:iam::${local.aws_account_id}:oidc-provider/oidc.eks.*.amazonaws.com/id/*",
]
}
Rotate EKS OIDC provider thumbprint
Scope: Restricted to EKS OIDC providers, further restricted by a condition on the redpanda-id resource tag.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to rotate the OIDC provider thumbprint to keep federation with AWS IAM secure and current. |
Terraform
statement {
sid = "RedpandaAgentEKSOIDCProviderCACertThumbprintUpdate"
effect = "Allow"
actions = [
"iam:UpdateOpenIDConnectProviderThumbprint",
]
resources = [
"arn:aws:iam::${local.aws_account_id}:oidc-provider/oidc.eks.*.amazonaws.com",
"arn:aws:iam::${local.aws_account_id}:oidc-provider/oidc.eks.*.amazonaws.com/id/*",
]
condition {
test = "StringEquals"
variable = "aws:ResourceTag/redpanda-id"
values = [
var.redpanda_id,
]
}
}
Secrets management
Cleans up the AWS Secrets Manager secrets Redpanda creates for your cluster when the cluster is destroyed.
Delete cluster secrets
Scope: Restricted to secrets under arn:aws:secretsmanager:${var.region}:*:secret:redpanda/${var.redpanda_id}/*, further restricted by a condition on the owner resource tag (console).
| Permission | Access | Why it is needed |
|---|---|---|
|
Delete |
Required to delete the secrets Redpanda creates for your cluster when the cluster is destroyed. |
Terraform
statement {
effect = "Allow"
actions = [
"secretsmanager:DeleteSecret"
]
resources = [
"arn:aws:secretsmanager:${var.region}:*:secret:redpanda/${var.redpanda_id}/*"
]
condition {
test = "StringEquals"
values = ["console"]
variable = "aws:ResourceTag/owner"
}
}
List secrets
Scope: Account-wide (*). This list action is granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to find the secrets to delete when your Redpanda cluster is destroyed. |
Terraform
statement {
effect = "Allow"
actions = [
"secretsmanager:ListSecrets",
]
resources = [
"*"
]
}
Monitoring
Read CloudWatch metrics
Scope: Account-wide (*). This metrics action is granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to read infrastructure metric time series used to monitor and reconcile the AWS resources supporting your cluster. |
Terraform
statement {
sid = "RedpandaAgentCloudWatch"
effect = "Allow"
actions = [
"cloudwatch:GetMetricData",
]
resources = [
"*",
]
}
Coordination state
Reads and writes the small amount of state Redpanda uses to serialize Terraform operations safely, and reads the caller identity.
Manage the DynamoDB Terraform backend
Scope: Restricted to the cluster’s Terraform state table: arn:aws:dynamodb:*:${local.aws_account_id}:table/rp-${local.aws_account_id}*.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to read state that Redpanda Cloud stores in DynamoDB to coordinate operations against your cluster. |
|
Write |
Required to write coordination state that Redpanda Cloud uses to safely manage operations against your cluster. |
|
Delete |
Required to clean up coordination state stored in DynamoDB during cluster operations and decommissioning. |
Terraform
statement {
sid = "RedpandaAgentTFBackend"
effect = "Allow"
actions = [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
]
resources = [
"arn:aws:dynamodb:*:${local.aws_account_id}:table/rp-${local.aws_account_id}*",
]
}
Read the caller identity
Scope: Account-wide (*).
| Permission | Access | Why it is needed |
|---|---|---|
|
N/A |
Used to identify the assumed role and AWS account Redpanda is operating as. AWS does not require an IAM grant for this operation, so the statement is retained as a no-op to avoid AWS policy-detachment conflicts. |
Terraform
statement {
sid = "RedpandaAgentNoopPolicy"
effect = "Allow"
actions = [
"sts:GetCallerIdentity"
]
resources = [
"*"
]
}
Optional feature permissions
|
The following permissions support optional features: AI Gateway and Redpanda SQL. They are scoped by resource name to those features' resources ( |
Manage ElastiCache for the AI Gateway
Scope: Restricted to ElastiCache resources named ai-gateway-${var.redpanda_id}*.
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to create the ElastiCache user that AI Gateway uses to authenticate to its serverless cache. |
|
Write |
Required to tag AI Gateway ElastiCache resources for identification, reconciliation, and lifecycle management. |
|
Read |
Required to inspect AI Gateway cache users and reconcile their authentication configuration. |
|
Read |
Required to inspect tags on AI Gateway ElastiCache resources during reconciliation. |
|
Delete |
Required to remove an AI Gateway cache user when the cache configuration is replaced or the feature is decommissioned. |
|
Write |
Required to create the ElastiCache user group that controls which users can access the AI Gateway cache. |
|
Read |
Required to inspect the user group associated with the AI Gateway cache and reconcile its membership. |
|
Delete |
Required to remove the AI Gateway cache user group during reconfiguration or decommissioning. |
|
Write |
Required to provision the serverless ElastiCache resource used by AI Gateway. |
|
Delete |
Required to remove the AI Gateway serverless cache when the feature or cluster is decommissioned. |
|
Read |
Required to inspect the state and configuration of the serverless cache used by AI Gateway. |
Terraform
statement {
sid = "RedpandaElastiCache"
effect = "Allow"
actions = [
"elasticache:CreateUser",
"elasticache:AddTagsToResource",
"elasticache:DescribeUsers",
"elasticache:ListTagsForResource",
"elasticache:DeleteUser",
"elasticache:CreateUserGroup",
"elasticache:DescribeUserGroups",
"elasticache:DeleteUserGroup",
"elasticache:CreateServerlessCache",
"elasticache:DeleteServerlessCache",
"elasticache:DescribeServerlessCaches",
]
resources = [
"arn:aws:elasticache:*:*:*:ai-gateway-${var.redpanda_id}*",
]
}
Manage RDS Aurora for the AI Gateway
Scope: Restricted to RDS resources named ai-gateway-${var.redpanda_id}* (clusters, instances, subnet groups, and parameter groups).
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to create the Aurora DB cluster used by AI Gateway. |
|
Delete |
Required to remove the AI Gateway Aurora DB cluster when the feature or cluster is decommissioned. |
|
Read |
Required to inspect the state and configuration of the Aurora DB cluster used by AI Gateway. |
|
Write |
Required to update the AI Gateway Aurora DB cluster as its configuration changes. |
|
Write |
Required to create the database instances that provide compute capacity for the AI Gateway Aurora cluster. |
|
Delete |
Required to remove AI Gateway Aurora database instances during replacement, scaling, or decommissioning. |
|
Read |
Required to inspect the state and configuration of the database instances in the AI Gateway Aurora cluster. |
|
Write |
Required to update the database instances in the AI Gateway Aurora cluster. |
|
Write |
Required to create the subnet group that places the AI Gateway Aurora database in the appropriate cluster subnets. |
|
Delete |
Required to remove the AI Gateway database subnet group during cleanup. |
|
Read |
Required to inspect the subnet group used by the AI Gateway Aurora database. |
|
Write |
Required to create the parameter group that configures the AI Gateway Aurora DB cluster. |
|
Delete |
Required to remove the AI Gateway database parameter group during cleanup. |
|
Read |
Required to inspect the parameter group associated with the AI Gateway Aurora DB cluster. |
|
Read |
Required to inspect the database parameters applied to the AI Gateway Aurora DB cluster. |
|
Write |
Required to update database parameters for the AI Gateway Aurora DB cluster. |
|
Write |
Required to tag AI Gateway RDS resources for identification, reconciliation, and lifecycle management. |
|
Read |
Required to inspect tags on AI Gateway RDS resources during reconciliation. |
|
Delete |
Required to remove obsolete Redpanda-managed tags from AI Gateway RDS resources. |
|
Read |
Required to identify supported Aurora engine versions before creating or upgrading the AI Gateway database. |
Terraform
statement {
sid = "RedpandaRDSAurora"
effect = "Allow"
actions = [
"rds:CreateDBCluster",
"rds:DeleteDBCluster",
"rds:DescribeDBClusters",
"rds:ModifyDBCluster",
"rds:CreateDBInstance",
"rds:DeleteDBInstance",
"rds:DescribeDBInstances",
"rds:ModifyDBInstance",
"rds:CreateDBSubnetGroup",
"rds:DeleteDBSubnetGroup",
"rds:DescribeDBSubnetGroups",
"rds:CreateDBClusterParameterGroup",
"rds:DeleteDBClusterParameterGroup",
"rds:DescribeDBClusterParameterGroups",
"rds:DescribeDBClusterParameters",
"rds:ModifyDBClusterParameterGroup",
"rds:AddTagsToResource",
"rds:ListTagsForResource",
"rds:RemoveTagsFromResource",
"rds:DescribeDBEngineVersions",
]
resources = [
"arn:aws:rds:*:*:cluster:ai-gateway-${var.redpanda_id}*",
"arn:aws:rds:*:*:db:ai-gateway-${var.redpanda_id}*",
"arn:aws:rds:*:*:subgrp:ai-gateway-${var.redpanda_id}*",
"arn:aws:rds:*:*:cluster-pg:ai-gateway-${var.redpanda_id}*",
]
}
Describe RDS Aurora resources
Scope: Account-wide (*). These describe actions are granted with an account-wide resource scope.
| Permission | Access | Why it is needed |
|---|---|---|
|
Read |
Required to discover and inspect Aurora DB clusters when reconciling the AI Gateway database. |
|
Read |
Required to discover and inspect database instances when reconciling the AI Gateway Aurora cluster. |
|
Read |
Required to discover and inspect subnet groups available to the AI Gateway Aurora database. |
|
Read |
Required to discover and inspect parameter groups used by the AI Gateway Aurora cluster. |
|
Read |
Required to inspect the parameters defined in AI Gateway Aurora cluster parameter groups. |
|
Read |
Required to discover Aurora engine versions supported in the AWS account and Region. |
|
Read |
Required to inspect Aurora global database configuration when AI Gateway uses a multi-Region database topology. |
Terraform
statement {
sid = "RedpandaRDSAuroraDescribe"
effect = "Allow"
actions = [
"rds:DescribeDBClusters",
"rds:DescribeDBInstances",
"rds:DescribeDBSubnetGroups",
"rds:DescribeDBClusterParameterGroups",
"rds:DescribeDBClusterParameters",
"rds:DescribeDBEngineVersions",
"rds:DescribeGlobalClusters",
]
resources = [
"*",
]
}
Manage Redpanda SQL storage buckets
Scope: Restricted to S3 buckets named oxla-* (the internal resource name for Redpanda SQL).
| Permission | Access | Why it is needed |
|---|---|---|
|
Write |
Required to apply the bucket policy that restricts access to the S3 buckets used by Redpanda SQL. |
|
Delete |
Required to remove or replace a Redpanda SQL bucket policy during reconfiguration or cleanup. |
|
Read |
Required to inspect Redpanda SQL bucket contents and configuration during reconciliation and cleanup. |
|
Read |
Required to read configuration and objects from the S3 buckets used by Redpanda SQL. |
|
Write |
Required to create the S3 buckets used by Redpanda SQL. |
|
Delete |
Required to remove Redpanda SQL buckets when the feature or cluster is decommissioned. |
|
Write |
Required to tag Redpanda SQL buckets for identification, reconciliation, and lifecycle management. |
|
Write |
Required to block public access to the S3 buckets used by Redpanda SQL. |
|
Write |
Required to configure encryption at rest for the S3 buckets used by Redpanda SQL. |
|
Write |
Required to enforce bucket-owner control of objects stored in Redpanda SQL buckets. |
|
Delete |
Required to remove Redpanda SQL objects during cleanup or when the feature is decommissioned. |
|
Delete |
Required to remove versioned Redpanda SQL objects during bucket cleanup. |
Terraform
statement {
sid = "RedpandaAgentOxlaCreateBucket"
effect = "Allow"
actions = [
"s3:PutBucketPolicy",
"s3:DeleteBucketPolicy",
"s3:List*",
"s3:Get*",
"s3:CreateBucket",
"s3:DeleteBucket",
"s3:PutBucketTagging",
"s3:PutBucketPublicAccessBlock",
"s3:PutEncryptionConfiguration",
"s3:PutBucketOwnershipControls",
"s3:DeleteObject",
"s3:DeleteObjectVersion"
]
resources = ["arn:aws:s3:::oxla-*", "arn:aws:s3:::oxla-*/*"]
}