AWS IAM - permisos minimos por servicio
Este documento consolida los permisos IAM minimos para las integraciones AWS usadas por KuaDashboard.
Notas importantes
- Varias acciones de tipo List/Describe no soportan resource-level y requieren
"Resource": "*". - Donde se indica un patron ARN con
*, se recomienda restringirlo a recursos concretos por entorno. - Si usas claves KMS customer-managed (por ejemplo en Secrets Manager), agrega permisos KMS explicitos.
Base comun (recomendada)
Acciones:
sts:GetCallerIdentitycloudwatch:GetMetricStatisticscloudwatch:GetMetricDatalogs:DescribeLogGroupslogs:FilterLogEvents
Recurso:
*
EC2 + VPC
ARN recomendados:
arn:aws:ec2:REGION:ACCOUNT:instance/*arn:aws:ec2:REGION:ACCOUNT:vpc/*arn:aws:ec2:REGION:ACCOUNT:subnet/*arn:aws:ec2:REGION:ACCOUNT:security-group/*arn:aws:ec2:REGION:ACCOUNT:route-table/*arn:aws:ec2:REGION:ACCOUNT:internet-gateway/*arn:aws:ec2:REGION:ACCOUNT:natgateway/*
Lectura:
ec2:DescribeRegionsec2:DescribeInstancesec2:DescribeInstanceStatusec2:DescribeVolumesec2:DescribeSecurityGroupsec2:DescribeVpcsec2:DescribeSubnetsec2:DescribeRouteTablesec2:DescribeInternetGatewaysec2:DescribeNatGatewaysec2:DescribeTags
Mutacion opcional:
ec2:StartInstancesec2:StopInstancesec2:CreateTagsec2:DeleteTags
ECS
ARN recomendados:
arn:aws:ecs:REGION:ACCOUNT:cluster/*arn:aws:ecs:REGION:ACCOUNT:service/*/*arn:aws:ecs:REGION:ACCOUNT:task-definition/*
Lectura:
ecs:ListClustersecs:ListServicesecs:DescribeServicesecs:DescribeTaskDefinitionecs:ListTagsForResource
Mutacion opcional:
ecs:UpdateServiceecs:RegisterTaskDefinition(si habilitas logging de ECS)ecs:TagResourceecs:UntagResource
EKS
ARN recomendados:
arn:aws:eks:REGION:ACCOUNT:cluster/*
Lectura:
eks:ListClusterseks:DescribeClustereks:ListNodegroupseks:ListTagsForResource
Mutacion opcional:
eks:TagResourceeks:UntagResource
Nota:
- Para operar dentro del cluster con kubectl tambien necesitas permisos/RBAC de Kubernetes.
Lambda
ARN recomendados:
arn:aws:lambda:REGION:ACCOUNT:function:*
Lectura:
lambda:ListFunctionslambda:GetFunctionlambda:GetFunctionConfigurationlambda:ListAliaseslambda:ListVersionsByFunctionlambda:GetPolicylambda:GetFunctionConcurrencylambda:ListTags
Mutacion opcional:
lambda:InvokeFunctionlambda:UpdateFunctionConfigurationlambda:TagResourcelambda:UntagResource
API Gateway (REST + HTTP/WebSocket)
Recurso recomendado:
*(management API suele requerir granularidad amplia)
Lectura:
apigateway:GET
S3
ARN recomendados:
arn:aws:s3:::BUCKETarn:aws:s3:::BUCKET/*
Lectura:
s3:ListAllMyBucketss3:GetBucketLocations3:HeadBuckets3:ListBuckets3:GetObjects3:HeadObjects3:GetBucketTaggings3:GetBucketVersionings3:GetBucketEncryptions3:GetBucketAcls3:GetBucketPolicyStatus
Mutacion opcional:
s3:CreateBuckets3:PutPublicAccessBlocks3:PutBucketTaggings3:DeleteBucketTagging
ECR
ARN recomendados:
arn:aws:ecr:REGION:ACCOUNT:repository/*
Lectura:
ecr:DescribeRepositoriesecr:ListImagesecr:DescribeImagesecr:GetLifecyclePolicyecr:ListTagsForResource
Mutacion opcional:
ecr:TagResourceecr:UntagResource
EventBridge
ARN recomendados:
arn:aws:events:REGION:ACCOUNT:event-bus/*arn:aws:events:REGION:ACCOUNT:rule/*/*
Lectura:
events:ListEventBusesevents:ListRulesevents:DescribeRuleevents:ListTargetsByRuleevents:ListTagsForResource
Mutacion opcional:
events:TagResourceevents:UntagResource
Step Functions
ARN recomendados:
arn:aws:states:REGION:ACCOUNT:stateMachine:*
Lectura:
states:ListStateMachinesstates:DescribeStateMachinestates:ListExecutionsstates:ListTagsForResource
Mutacion opcional:
states:TagResourcestates:UntagResource
Glue
ARN recomendados:
arn:aws:glue:REGION:ACCOUNT:job/*arn:aws:glue:REGION:ACCOUNT:database/*arn:aws:glue:REGION:ACCOUNT:table/*/*arn:aws:glue:REGION:ACCOUNT:catalogarn:aws:glue:REGION:ACCOUNT:connection/*
Lectura:
glue:GetJobsglue:GetJobglue:GetJobRunsglue:GetDatabasesglue:GetTablesglue:GetConnections
Mutacion opcional:
glue:StartJobRun
DocumentDB
ARN recomendados:
arn:aws:rds:REGION:ACCOUNT:cluster:*arn:aws:rds:REGION:ACCOUNT:db:*
Lectura:
docdb:DescribeDBClustersdocdb:DescribeDBInstances
Mutacion opcional:
docdb:ModifyDBClusterdocdb:CreateDBClusterdocdb:CreateDBInstance
RDS
ARN recomendados:
arn:aws:rds:REGION:ACCOUNT:db:*arn:aws:rds:REGION:ACCOUNT:cluster:*(si usas Aurora)
Lectura:
rds:DescribeDBInstancesrds:DescribeDBClusters(si usas Aurora)rds:ListTagsForResource
Mutacion opcional:
rds:StartDBInstancerds:StopDBInstancerds:RebootDBInstancerds:ModifyDBInstancerds:AddTagsToResourcerds:RemoveTagsFromResource
DynamoDB
ARN recomendados:
arn:aws:dynamodb:REGION:ACCOUNT:table/*
Lectura:
dynamodb:ListTablesdynamodb:DescribeTabledynamodb:Scandynamodb:Query
Mutacion opcional:
dynamodb:CreateTable
Athena
ARN recomendados:
arn:aws:athena:REGION:ACCOUNT:workgroup/**(catalogos y metadatos suelen requerir wildcard)
Lectura:
athena:ListWorkGroupsathena:GetWorkGroupathena:ListDataCatalogsathena:GetDataCatalogathena:ListDatabasesathena:ListTableMetadataathena:ListQueryExecutionsathena:GetQueryExecutionathena:GetQueryResults
Mutacion opcional:
athena:StartQueryExecution
Extra requerido frecuente:
- Permisos S3 sobre bucket de resultados de Athena (
s3:PutObject,s3:GetObject,s3:ListBucket).
CloudFront
ARN recomendados:
arn:aws:cloudfront::ACCOUNT:distribution/*
Lectura:
cloudfront:ListDistributionscloudfront:GetDistribution
Mutacion opcional:
cloudfront:CreateInvalidationcloudfront:CreateDistribution
Nota:
- CloudFront es global y normalmente se gestiona en us-east-1 para API de control.
Route 53
ARN recomendados:
arn:aws:route53:::hostedzone/*
Lectura:
route53:ListHostedZonesroute53:ListResourceRecordSets
Cognito (User Pools)
ARN recomendados:
arn:aws:cognito-idp:REGION:ACCOUNT:userpool/*
Lectura:
cognito-idp:ListUserPoolscognito-idp:DescribeUserPoolcognito-idp:ListUserscognito-idp:AdminGetUsercognito-idp:ListUserPoolClientscognito-idp:DescribeUserPoolClientcognito-idp:ListIdentityProviderscognito-idp:DescribeIdentityProvidercognito-idp:ListGroups
Mutacion opcional:
cognito-idp:AdminCreateUsercognito-idp:AdminResetUserPasswordcognito-idp:AdminSetUserPasswordcognito-idp:AdminEnableUsercognito-idp:AdminDisableUsercognito-idp:AdminDeleteUser
Secrets Manager
ARN recomendados:
arn:aws:secretsmanager:REGION:ACCOUNT:secret:*
Lectura:
secretsmanager:ListSecretssecretsmanager:DescribeSecretsecretsmanager:GetSecretValue
Extra opcional/requerido segun clave:
kms:Decryptsobre la CMK del secreto si no usa clave administrada por AWS.
Data Pipeline
ARN recomendados:
arn:aws:datapipeline:REGION:ACCOUNT:pipeline/*
Lectura:
datapipeline:ListPipelinesdatapipeline:DescribePipelines
Mutacion opcional:
datapipeline:ActivatePipelinedatapipeline:DeactivatePipeline
Bedrock
Recurso recomendado:
*
Lectura:
bedrock:ListFoundationModels
Lex V2 (Models + Runtime)
ARN recomendados:
arn:aws:lex:REGION:ACCOUNT:bot/*arn:aws:lex:REGION:ACCOUNT:bot-alias/*arn:aws:lex:REGION:ACCOUNT:bot/*/botversion/*/botlocale/*
Lectura:
lex:ListBotslex:ListBotLocaleslex:ListIntentslex:ListSlotslex:ListTestSetslex:ListBotAliaseslex:DescribeBotAliaslex:DescribeBotlex:ListSlotTypeslex:DescribeSlotTypelex:DescribeBotLocale
Mutacion opcional:
lex:CreateBotAliaslex:BuildBotLocale
Runtime opcional:
lex:RecognizeText
CloudFormation
Recurso recomendado:
*
Lectura:
cloudformation:ListStacks
Recomendacion de implementacion
- Crea una politica base de solo lectura con todos los bloques de lectura.
- Crea una segunda politica operativa con solo las acciones de mutacion necesarias.
- Asigna la politica operativa solo a roles de operacion y en cuentas/entornos acotados.
- Usa condiciones IAM (
aws:RequestedRegion,aws:ResourceTag,aws:PrincipalTag) cuando aplique.
