Hidden AWS settings competitions actually score

Hidden AWS settings competitions actually score

A full-system task names the big boxes (VPC, EKS, pipeline, RDS). Scoring also checks settings that are one toggle deep. Turn these on while you build, not in the last ten minutes.

Related: security patterns · roles map


Account and identity

SettingConsole pathWhy
IAM Identity Center, not long-lived IAM usersIAM Identity CenterAdmins get SSO. Access keys are for broken designs
Account alias and password policyIAM -> Account settingsMinimum length, symbols
Access AnalyzerIAM -> Access AnalyzerExternal access findings on S3 and roles
Permission boundary on CI rolesIAM role -> Permissions boundaryPipeline cannot create admin users
CloudTrail all Regions, log file validation, SSE-KMSCloudTrailOne trail in one Region fails the audit question
AWS Config recorder on, include global resourcesConfigEvidence that encryption and public access stay correct
GuardDuty enabledGuardDutyDetective control. Delegated admin if multi-account
Budget alarmBilling -> BudgetsCost guide
Default EBS encryptionEC2 -> Settings -> EBS encryptionNew volumes encrypt even if the wizard is skipped
S3 Block Public Access at account levelS3 -> Block Public Access settings for this accountBucket-level is not enough if someone creates a new bucket

Network

SettingWhereMissed effect
DNS hostnames and DNS resolutionVPC -> ActionsPeering DNS and private hosted zones fail
Private DNS on interface endpointsVPC endpoint -> ModifySDK still goes to the public API and through NAT
Gateway endpoint for S3 on private route tablesEndpoint associationsRepos and artifacts still use NAT
Flow logs, REJECT or ALL, to S3 with a short retentionVPC -> Flow logsNo forensic answer during the review
NACLs not left at deny-by-accidentSubnet NACL“SG is open” but traffic still dies
ALB security policy TLS 1.2Listener -> Security policyOld TLS 1.0 policy left from a sample
Deletion protection on ALB and NAT if it is productionLoad balancer attributesOne click removes ingress
VPC Lattice auth policyService networkInternal API is anonymous

Compute

SettingWhere
IMDSv2 required (HttpTokens=required)EC2 launch or template. Hop limit 1. Use 2 only if containers on the instance must reach IMDS
EBS encrypted, gp3 not gp2 by habitVolume
Termination protectionInstance attributes
SSM Session Manager, no SSH from 0.0.0.0/0No port 22 in the SG. Instance profile has AmazonSSMManagedInstanceCore
Detailed monitoring only where alarms need 1 minuteEC2 monitoring
Auto Scaling health check type ELB not just EC2ASG
Target group health check path is the app /health, matcher 200Target group. A 302 to a login page marks targets unhealthy
ECS: circuit breaker and rollbackService deployment configuration
EKS: control plane logs (api, audit, authenticator)Cluster -> Logging. Off by default
EKS: secrets encryption with a CMKCluster encryption. Cannot be added casually later on old clusters
Fargate platform version currentService

Data and storage

SettingWhere
RDS: not public, deletion protection, encryption, automated backups, Multi-AZCreate database. Backup retention 0 disables point in time restore
RDS: IAM DB auth if the app is LambdaDatabase authentication
Performance InsightsOptional but often on the rubric for “see slow queries”
DynamoDB: PITR, deletion protection, CMK if requiredTable -> Backups. On-demand versus provisioned is a cost choice, not a security choice
S3: block public access, versioning, SSE-KMS, bucket key, object ownership bucket owner enforcedBucket permissions and properties
S3: lifecycle abort incomplete multipartManagement
ECR: scan on push, immutable tags, lifecycleECR console guide
EFS: encryption at rest and in transitFile system and the ECS/EKS mount

Application integration

SettingWhere
SQS: SSE-KMS, DLQ, redrive max receive count, visibility timeout longer than Lambda timeoutQueue. A visibility timeout of 30 seconds with a 60 second function causes double processing
SNS: encryption plus the key policy allows sns.amazonaws.comMessaging guide
Lambda: reserved concurrency on the public function so a spike cannot consume the accountFunction configuration
Lambda: DLQ or on-failure destinationAsynchronous invokes fail silently without this
Lambda: environment variables encrypted with a CMK if they hold config that is sensitiveUse Secrets Manager instead of env vars for passwords
API Gateway: throttling, access logs, execution logs at ERROR not INFO in prod (INFO leaks data), WAF associatedStage settings
API Gateway: payload and timeout aligned with Lambda29 second integration timeout on REST
EventBridge: retry policy and DLQ on the targetRule target
Step Functions: if you use it, logging level and X-RayState machine
CloudWatch log groups: retention not “never expire”Log group

CI/CD and migration

SettingWhere
Pipeline artifact bucket encrypted, not publicS3
Manual approval before productionCodePipeline stage
CodeBuild privileged only if Docker build needs itProject environment
MGN test launch before cutoverMigration guide
DMS CloudWatch logs and validation onTask
DataSync verify onTask options

AI without training a model

Use the managed API. Do not stand up SageMaker training unless the task says “train”.

NeedService
Invoices, formsTextract
Sentiment, PII detectionComprehend
Image labels, moderationRekognition
Chat or RAG on BedrockNova, AgentCore

Console path and IAM: Managed AI services.

Hidden: the runtime role needs the AI action and s3:GetObject on the input bucket and kms:Decrypt if the object is SSE-KMS. The demo role in the console wizard is often account-admin. Replace it.


Ten minute sweep before you submit

  1. Public access: S3 account block, RDS public flag, security groups with 0.0.0.0/0 on admin ports.
  2. Encryption: EBS default, RDS, S3, SQS, EBS volumes already created.
  3. Protection flags: deletion protection on RDS, ALB, DynamoDB. Termination protection on the bastion if one exists. Prefer no bastion.
  4. Logging: CloudTrail, VPC flow logs, ALB access logs, RDS error logs if asked.
  5. Alarms: ALB 5xx, RDS CPU and free storage, DLQ depth, budget.
  6. Names and tags: Environment, Application on every resource you created.
  7. Secrets: nothing in task definition environment plaintext. Secrets Manager or SSM.
  8. Routes: private subnets default route is NAT or no route, not an internet gateway.

<- Roles map