product

Permissions Matrix

Public mapping of the Core Scan Role and optional scoped AWS capabilities in the OpsCurb trust model.

16 min read
Updated 2026-03-14

Permissions Matrix

This page is generated from the shared access manifest that powers the onboarding wizard, backend capability gating, and the published IAM policy definitions.

Access model

  • Core scan is the required minimum role for new accounts.
  • Optional roles unlock only the add-on features they describe.
  • Existing broad-access customers can stay connected as legacy_broad until they reconnect under the tiered model.
  • Observed AWS API actions are recorded per scan and Deep Inspect run so policy changes can be reviewed against real usage.

Capability summary

CapabilityRequiredPurpose
Core scanRequiredDefault minimal access for the first scan and ongoing baseline findings.
Deep InspectOptionalOn-demand evidence gathering for a single finding using CloudWatch metrics and CloudTrail events.
Advanced log diagnosticsOptionalOptional CloudWatch Logs Insights access for Lambda rightsizing, CloudWatch Logs findings, and NAT or VPC endpoint flow-log enrichment.
S3 inventoryOptionalOptional S3 metadata access for lifecycle and multipart-upload findings.
IAM hygieneOptionalOptional IAM listing access for idle-user, role, and access-key hygiene findings.
Tag inventoryOptionalOptional tag inventory and remediation access for cost-allocation and compliance findings.

Permission-to-feature matrix

Core scan

Suggested role: Core scan role

AWS actionWhat OpsCurb uses it forFeatureAccessWhat we keep
ec2:DescribeAddressesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeAvailabilityZonesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeFastSnapshotRestoresList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeImagesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeInstancesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeLaunchTemplatesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeLaunchTemplateVersionsList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeNatGatewaysList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeRegionsList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeRouteTablesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeSnapshotsList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeSubnetsList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeVolumesList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeVpcEndpointsList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
ec2:DescribeVpcsList EC2, EBS, NAT, snapshot, subnet, and VPC metadata for baseline waste detection.Core scanRequiredStores metadata in findings and scan summaries.
autoscaling:DescribeAutoScalingGroupsCheck whether compute assets are still referenced by Auto Scaling before flagging cleanup.Core scanRequiredStores metadata in findings and scan summaries.
autoscaling:DescribeLaunchConfigurationsCheck whether compute assets are still referenced by Auto Scaling before flagging cleanup.Core scanRequiredStores metadata in findings and scan summaries.
elasticloadbalancing:DescribeLoadBalancersReview load balancer and target-group configuration for idle or low-value spend.Core scanRequiredStores metadata in findings and scan summaries.
elasticloadbalancing:DescribeTagsReview load balancer and target-group configuration for idle or low-value spend.Core scanRequiredStores metadata in findings and scan summaries.
elasticloadbalancing:DescribeTargetGroupsReview load balancer and target-group configuration for idle or low-value spend.Core scanRequiredStores metadata in findings and scan summaries.
elasticloadbalancing:DescribeTargetHealthReview load balancer and target-group configuration for idle or low-value spend.Core scanRequiredStores metadata in findings and scan summaries.
rds:DescribeDBInstancesReview RDS instance and snapshot metadata for zombie, snapshot, Multi-AZ, and IOPS findings.Core scanRequiredStores metadata in findings and scan summaries.
rds:DescribeDBSnapshotsReview RDS instance and snapshot metadata for zombie, snapshot, Multi-AZ, and IOPS findings.Core scanRequiredStores metadata in findings and scan summaries.
rds:ListTagsForResourceReview RDS instance and snapshot metadata for zombie, snapshot, Multi-AZ, and IOPS findings.Core scanRequiredStores metadata in findings and scan summaries.
cloudwatch:DescribeAlarmsRead CloudWatch metric aggregates needed for utilization-based findings without reading log contents.Core scanRequiredStores derived findings, not raw metric datapoints.
cloudwatch:GetMetricDataRead CloudWatch metric aggregates needed for utilization-based findings without reading log contents.Core scanRequiredStores derived findings, not raw metric datapoints.
cloudwatch:GetMetricStatisticsRead CloudWatch metric aggregates needed for utilization-based findings without reading log contents.Core scanRequiredStores derived findings, not raw metric datapoints.
cloudwatch:ListMetricsRead CloudWatch metric aggregates needed for utilization-based findings without reading log contents.Core scanRequiredStores derived findings, not raw metric datapoints.
ecr:DescribeImagesReview ECR repository metadata and lifecycle configuration for stale image cleanup.Core scanRequiredStores metadata in findings and scan summaries.
ecr:DescribeRepositoriesReview ECR repository metadata and lifecycle configuration for stale image cleanup.Core scanRequiredStores metadata in findings and scan summaries.
ecr:GetLifecyclePolicyReview ECR repository metadata and lifecycle configuration for stale image cleanup.Core scanRequiredStores metadata in findings and scan summaries.
ecr:ListImagesReview ECR repository metadata and lifecycle configuration for stale image cleanup.Core scanRequiredStores metadata in findings and scan summaries.
ecs:DescribeServicesReview ECS service configuration and task sizing for idle or oversized services.Core scanRequiredStores metadata in findings and scan summaries.
ecs:DescribeTaskDefinitionReview ECS service configuration and task sizing for idle or oversized services.Core scanRequiredStores metadata in findings and scan summaries.
ecs:ListClustersReview ECS service configuration and task sizing for idle or oversized services.Core scanRequiredStores metadata in findings and scan summaries.
ecs:ListServicesReview ECS service configuration and task sizing for idle or oversized services.Core scanRequiredStores metadata in findings and scan summaries.
ce:GetCostAndUsageRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
ce:GetCostForecastRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
ce:GetReservationCoverageRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
ce:GetReservationPurchaseRecommendationRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
ce:GetReservationUtilizationRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
ce:GetSavingsPlansCoverageRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
ce:GetSavingsPlansUtilizationRead cost and commitment data for savings summaries, anomaly context, and forecasting.Core scanRequiredCost summaries are stored in findings, dashboards, and historical rollups.
sts:GetCallerIdentityConfirm the connected role resolves to the expected AWS account.Connection validationRequiredStores the resolved AWS account identity as account metadata.

Deep Inspect

Suggested role: Deep Inspect role

AWS actionWhat OpsCurb uses it forFeatureAccessWhat we keep
cloudwatch:GetMetricStatisticsReview recent CloudWatch utilization for a specific finding when an operator requests evidence.Deep InspectOptionalStores derived evidence on the finding, not raw metric payloads.
cloudwatch:ListMetricsReview recent CloudWatch utilization for a specific finding when an operator requests evidence.Deep InspectOptionalStores derived evidence on the finding, not raw metric payloads.
cloudtrail:LookupEventsCheck recent change history and ownership signals for a specific finding.Deep InspectOptionalStores derived evidence on the finding, not raw event payloads.
ec2:DescribeRouteTablesResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.
ecs:DescribeServicesResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.
ecs:DescribeTaskDefinitionResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.
ecs:ListClustersResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.
elasticloadbalancing:DescribeLoadBalancersResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.
elasticloadbalancing:DescribeTargetGroupsResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.
elasticloadbalancing:DescribeTargetHealthResolve current dependencies and routing for the inspected finding.Deep InspectOptionalStores derived evidence on the finding, not raw metadata.

Advanced log diagnostics

Suggested role: Log diagnostics role

AWS actionWhat OpsCurb uses it forFeatureAccessWhat we keep
logs:DescribeLogGroupsQuery CloudWatch Logs for Lambda REPORT lines and existing flow-log evidence.Advanced log diagnosticsOptionalStores only derived findings and summaries.
logs:DescribeLogStreamsQuery CloudWatch Logs for Lambda REPORT lines and existing flow-log evidence.Advanced log diagnosticsOptionalStores only derived findings and summaries.
logs:GetQueryResultsQuery CloudWatch Logs for Lambda REPORT lines and existing flow-log evidence.Advanced log diagnosticsOptionalStores only derived findings and summaries.
logs:StartQueryQuery CloudWatch Logs for Lambda REPORT lines and existing flow-log evidence.Advanced log diagnosticsOptionalStores only derived findings and summaries.
cloudwatch:GetMetricStatisticsRead CloudWatch metric aggregates needed alongside log analysis for Lambda, NAT Gateway, and VPC endpoint diagnostics.Advanced log diagnosticsOptionalStores derived findings, not raw metric payloads.
ec2:DescribeNatGatewaysMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:DescribeRouteTablesMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:DescribeSubnetsMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:DescribeFlowLogsMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:DescribeManagedPrefixListsMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:DescribeVpcEndpointsMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:DescribeVpcsMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
ec2:GetManagedPrefixListEntriesMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
lambda:GetFunctionMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
lambda:GetFunctionConfigurationMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.
lambda:ListFunctionsMap log evidence to NAT paths, gateway-endpoint opportunities, and Lambda functions.Advanced log diagnosticsOptionalStores finding metadata, not raw log-derived payloads.

S3 inventory

Suggested role: S3 inventory role

AWS actionWhat OpsCurb uses it forFeatureAccessWhat we keep
s3:GetBucketLocationReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.
s3:GetBucketTaggingReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.
s3:GetBucketVersioningReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.
s3:GetLifecycleConfigurationReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.
s3:ListAllMyBucketsReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.
s3:ListBucketMultipartUploadsReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.
s3:ListBucketVersionsReview bucket-level metadata for lifecycle and orphaned multipart-upload findings without reading objects.S3 inventoryOptionalStores bucket metadata summaries only; never reads object contents.

IAM hygiene

Suggested role: IAM hygiene role

AWS actionWhat OpsCurb uses it forFeatureAccessWhat we keep
iam:GetAccessKeyLastUsedReview idle IAM users, roles, and access keys as an optional hygiene workflow.IAM hygieneOptionalStores identity metadata summaries only; never reads secrets or credential values.
iam:ListAccessKeysReview idle IAM users, roles, and access keys as an optional hygiene workflow.IAM hygieneOptionalStores identity metadata summaries only; never reads secrets or credential values.
iam:ListRolesReview idle IAM users, roles, and access keys as an optional hygiene workflow.IAM hygieneOptionalStores identity metadata summaries only; never reads secrets or credential values.
iam:ListUsersReview idle IAM users, roles, and access keys as an optional hygiene workflow.IAM hygieneOptionalStores identity metadata summaries only; never reads secrets or credential values.

Tag inventory

Suggested role: Tag inventory role

AWS actionWhat OpsCurb uses it forFeatureAccessWhat we keep
tag:GetResourcesReview tag coverage across resources and apply approved tag remediations when the customer opts into cost-allocation analysis.Tag inventoryOptionalStores tag metadata in findings and the tag dashboard.
tag:GetTagKeysReview tag coverage across resources and apply approved tag remediations when the customer opts into cost-allocation analysis.Tag inventoryOptionalStores tag metadata in findings and the tag dashboard.
tag:GetTagValuesReview tag coverage across resources and apply approved tag remediations when the customer opts into cost-allocation analysis.Tag inventoryOptionalStores tag metadata in findings and the tag dashboard.
tag:TagResourcesReview tag coverage across resources and apply approved tag remediations when the customer opts into cost-allocation analysis.Tag inventoryOptionalStores tag metadata in findings and the tag dashboard.

Legacy broad-access policy

The legacy broad-access policy remains available for migration support only. New accounts should use the tiered core-plus-add-ons model above.

Generated from access manifest version 2026-03-14.