AWS Cybersecurity · WITS

How exposed is your AWS infrastructure?

A system's availability doesn't prove its security. IAM, Access Keys, S3, Security Groups, secrets, CloudTrail: the places where an AWS infrastructure that runs perfectly can have an open door.

Security14 min readBy

Your AWS infrastructure can be running perfectly… and be completely exposed.

AWS gives you extraordinarily powerful infrastructure. But the ultimate security of what runs there doesn't depend only on AWS: it depends on your configuration, your permissions, your identities, your applications, your networks, your secrets, your storage, your monitoring, your code and your operating processes. That's the ground where AWS security is won or lost.

AWS isn't necessarily "hacked". Very often the problem is that someone configured a door that should never have been left open.

An infrastructure can work correctly and be insecure

IT WORKS  ≠  IT'S SECURE

The server responds. The application works. Users log in. The database is available. Files get saved. Everything is green. And yet, in that same account, there may be:

  • An open port nobody remembers why it exists
  • A forgotten Access Key from a developer who's no longer around
  • An S3 bucket with more access than it should have
  • A user with administrator permissions who only needed to read a report
  • A database that accepts connections from the Internet
  • Secrets written directly in the code
  • Zero logs and zero alerts: nobody would know if something already happened
A system's availability doesn't prove its security.

Where can they get in?

A modern AWS architecture isn't a server: it's a set of connected services — IAM, EC2, ECS, Lambda, API Gateway, ALB, CloudFront, S3, RDS, Aurora, DynamoDB, VPC, Secrets Manager, KMS… Every service is also a surface to review. The attacker's final destination is almost always the same: your data.

Internet
IAMS3APIs
EC2RDSLambda
Your data
The vectors don't live only in EC2: each loop of the flow comes in through a different door — identities, storage, APIs.

1. IAM: the first place you should review

One of the biggest risks in an AWS account isn't on a server: it's in who has permission to do what. Users, roles, policies, groups, old accounts, Access Keys, MFA, cross-account access. IAM security in AWS is the master lock for everything else.

Excessive permissions
UserIAM PolicyAdministratorAccessThe entire AWS account
Least privilege
ApplicationIAM RoleMinimum permissionsOnly what's needed
The same system, two worlds: AdministratorAccess reaches everything; least privilege bounces whatever isn't its business.
An identity with excessive permissions can become a master key.

2. Access Keys: a credential can become a way in

Access Keys live longer than they should: in repositories, in .env files, in scripts, on servers, in CI/CD pipelines, on laptops, in logs, in backups. A long-lived credential that leaves your control is a direct way into the AWS API — with whatever permissions that identity has.

Code
  ↓
Exposed credential
  ↓
AWS API
  ↓
IAM
  ↓
AWS resources
The path of a leaked credential

The right direction: temporary credentials, IAM Roles instead of static keys, Secrets Manager, rotation, removal of credentials no longer in use, and monitoring of their activity.

3. S3: who can read your data?

S3 holds documents, backups, customer files, reports, logs and database exports — the company's information core. The risk comes from a public bucket, an overly generous bucket policy, excessive permissions, uncontrolled cross-account access or compromised credentials.

The problem isn't only where your data is. It's who can access it.

4. EC2 and exposed servers

Not everything should be reachable from the Internet. A 0.0.0.0/0 on SSH, on a database, on Redis, on an admin panel or on a management port means: anyone in the world can knock on that door. The right architecture puts layers between the Internet and your application — and keeps internal components on private networks.

Layered architecture
InternetCloudFront / WAFLoad BalancerApplicationPrivate subnetRDS
Direct exposure
InternetEC2RDS
With layers, every hop filters and the route is traced. Without layers, the same packet goes straight to your database.

5. RDS and Aurora: your database shouldn't be exposed

Publicly Accessible, open Security Groups, public subnets: the recipe for an enterprise database to receive direct connections from the Internet. Not every public exposure is automatically a vulnerability — but there must be an architectural justification and matching controls: private network, encryption, credentials in Secrets Manager, rotation and logging.

If an enterprise database can receive connections directly from the Internet, you have to ask why.

6. Security Groups: one rule can open too much

SSH         0.0.0.0/0
PostgreSQL  0.0.0.0/0
MySQL       0.0.0.0/0
Three real rules that show up in audits more often than they should

Every rule should be able to explain why it exists: source, destination, port, service and real need. When the answer is "that's how it worked", the rule was designed by accident.

"It's working" doesn't mean "it's correctly exposed".

7. Secrets inside the code

API_KEY
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
DATABASE_PASSWORD
JWT_SECRET
If this lives in your repository, your repository is now your security perimeter

Git repos, .env files, Docker images, logs, scripts, pipelines: all of them are places where secrets end up living — and multiplying. The right destination is AWS Secrets Manager or Parameter Store, IAM Roles where a credential isn't even needed, secure variables in CI/CD, and rotation.

8. CloudTrail: if you don't know who did what, you're practically blind

Security isn't only about blocking attacks. It's also about being able to reconstruct what happened.

Who modified this resource? When, from where, with which API? Was a user created? Was a policy changed? Was something deleted? If your organization can't answer those questions, it doesn't have visibility — it has faith. AWS CloudTrail, CloudWatch, AWS Config and Detective exist exactly for this.

9. GuardDuty and threat detection

Prevention + Detection + Response

Configuring Security Groups is prevention. But a mature security architecture also detects: GuardDuty analyzes account signals — API activity, network patterns, identity behavior — and raises its hand when something doesn't add up, without you having to build that detection yourself. Security Hub brings the findings together in one place you can prioritize.

10. Your application is also part of the attack surface

AWS can be correctly configured and your application can still be vulnerable.

Laravel, FastAPI, Node.js, your APIs, your dependencies, your containers, your CI/CD, your authentication and authorization, your admin endpoints: AWS protects none of that for you. Real security is the sum — AWS security, infrastructure security and application security. Assessing one without the others leaves gaps exactly where attackers look.

11. Containers and Kubernetes add another surface

Docker, ECR, ECS, EKS, Fargate: a modern cloud architecture also runs packaged software, with its images, its permissions, its secrets and its workloads. An old image with vulnerable dependencies or a task role with too many permissions is as much attack surface as an open port — just less visible.

What happens if someone gets access?

Compromised credentialAccess to the AWS accountResource enumerationExcessive permissionsData accessModification / deletionOperational impact
First loop: the full chain is traced in red. Second: least privilege and detection cut it in half.

Depending on the existing permissions and controls, the impact can range from data theft to modification or deletion of data, service disruption, creation of unauthorized infrastructure, cryptomining and resource abuse — or the compromise of other connected accounts.

Cryptojacking: when someone uses your AWS for their own benefit

With access to an account, an attacker can spin up compute for workloads that aren't yours — mining included. The symptoms: unexpected CPU, new instances nobody asked for, rising consumption and an AWS bill that doesn't match your operation.

Ransomware and data destruction

Ransomware in the cloud isn't just encrypting servers: it's deleting, modifying, encrypting and — the real blow — destroying the backups with the same compromised credentials. The controls that change the outcome: backups with versioning and Object Lock, account separation, least privilege, MFA, logging and monitoring.

A backup that can be deleted with the same credentials that protect production isn't a sufficiently isolated recovery strategy.

AI is changing the speed of attacks

No sensationalism: automation and AI accelerate the analysis of large volumes of information, the identification of weak configurations and the generation of campaigns. What used to take weeks of manual work is automated today. The practical conclusion isn't fear — it's symmetry: defense needs automation too.

Telemetry → Context → Analysis → Detection → Prioritization → Response
Modern security shouldn't depend on checking dashboards by hand

How do you know how exposed your AWS is?

AWS Security Check
IAM
needs attention
S3
reviewed
EC2
critical finding
RDS
needs attention
VPC
reviewed
Secrets
critical finding
CloudTrail
needs attention
GuardDuty
critical finding
Security Hub
needs attention
Application security
needs attention
✓ 2 reviewed⚠ 5 to address✕ 3 critical

Conceptual representation — not a scan of your infrastructure

This is what the result of an assessment looks like: each area with its verdict and its priority.

Identity

  • MFA enabled on all human accounts
  • Old users removed
  • Unnecessary Access Keys removed
  • IAM Roles used properly, with least privilege
  • No unnecessary administrative permissions
  • Controlled cross-account access

Network

  • No administrative ports unnecessarily public
  • Security Groups reviewed rule by rule
  • Databases on private networks where appropriate
  • VPC with proper segmentation

Data

  • S3 reviewed and Block Public Access enabled
  • Encryption at rest
  • Versioning where appropriate
  • Backups in place and protected

Applications

  • Dependencies up to date
  • Secrets out of the code
  • Protected APIs, robust authentication and authorization
  • Containers and images reviewed

Monitoring

  • CloudTrail active with log retention
  • GuardDuty and Security Hub enabled
  • AWS Config and CloudWatch with alerts that someone actually receives

An AWS security audit should answer these questions

  1. 1Who has access to our AWS account, and which users have administrative privileges?
  2. 2Are there old credentials that are still active?
  3. 3Which resources are exposed to the Internet — and which ones shouldn't be?
  4. 4Do we have public databases or S3 buckets with excessive permissions?
  5. 5Where are our secrets stored?
  6. 6Can we tell who modified a resource, when and from where?
  7. 7Do we have working threat detection — or only prevention?
  8. 8Would our backups survive the credentials that protect production?
  9. 9What would happen if a credential were compromised today?
  10. 10Does our application have vulnerabilities the infrastructure can't cover?

It's not only about finding vulnerabilities

Discover → Analyze → Prioritize → Fix → Validate → Monitor

A list of 200 alerts without context protects nothing. The value lies in classifying each finding — critical, high, medium, low — by real impact, likelihood, exposure, ease of exploitation and business impact, and in tackling first what actually reduces risk.

What do we review in an AWS security assessment?

AreaWhat gets reviewed
01 · AWS accountIAM, MFA, Organizations, accounts, roles, policies and access
02 · InfrastructureEC2, VPC, Security Groups, load balancers, RDS/Aurora, ECS/EKS, Lambda
03 · DataS3, backups, encryption, KMS and secrets management
04 · ApplicationsAPIs, code, dependencies, authentication, authorization and Docker
05 · MonitoringCloudTrail, GuardDuty, Security Hub, Config and CloudWatch
06 · ResponseAlerts, incident response, recovery and continuity

A secure architecture isn't the same for every company

There's no universal checklist. The right architecture depends on the type of company, its data, its regulation, the criticality of the operation, the users, the traffic, the budget and the tolerance for risk. That's why the assessment matters more than the recipe.

Security doesn't mean closing everything. It means allowing exactly what's needed and controlling the rest.

A conceptual case

A company — fictional, but the pattern repeats — had AWS working, the application working, the database working and backups running. During an assessment the following turned up: excessive IAM permissions, unnecessarily open Security Groups, old credentials still active, secrets stored where they shouldn't be, incomplete monitoring and resources without controls.

No incident had happened. That was precisely the best moment to fix it.

AWS can't protect what you configured incorrectly

The AWS shared responsibility model is simple to state and easy to forget: AWS secures the infrastructure of the cloud; you secure what you put in it. The exact boundaries depend on the service (Lambda isn't the same as EC2), but identities, permissions, data, configuration and applications are always on your side.

Who protects this?
AWS protects
Physical infrastructureHardwareRegions and zonesThe cloud services
You protect
Identities and permissionsDataConfigurationApplicationsOperating systemsYour workloads
Shared responsibility: each piece falls on one side of the model — and half of it is always yours.

Is your AWS really protected?

You don't need to wait for an intrusion to discover your infrastructure had an open door. A security assessment lets you know what's exposed, which permissions are excessive, which controls are missing and what should be fixed first — with priorities, not an endless list.

Security isn't about waiting to detect an attack. It's about reducing the opportunities for one to happen.

WITS — Software · AI · Automation · Cybersecurity · AWS

Frequently asked questions

What you're also wondering

What is an AWS security audit?

It's a structured review of your account and your architecture: identities and permissions (IAM), network (VPC, Security Groups), data (S3, encryption, backups), applications and monitoring. The result isn't a list of alerts: it's a prioritized map of what's exposed, which controls are missing and what to fix first based on business impact.

How can I tell if my AWS account is secure?

You can't tell just by seeing that everything works. You have to review six fronts: identity, network, data, applications, configuration and monitoring. If you can't answer who has access, what's exposed to the Internet and who modified which resource, the honest answer is: you don't know yet.

Which AWS services should be reviewed in an audit?

At a minimum: IAM, EC2, S3, RDS/Aurora, VPC and Security Groups, Lambda, ECS/EKS if there are containers, KMS, and the visibility layer: CloudTrail, GuardDuty, Security Hub and AWS Config. The exact scope depends on your architecture.

Can an AWS account be vulnerable even if the application works correctly?

Yes. Availability doesn't prove security: a bucket with too many permissions, a forgotten Access Key or an open Security Group doesn't break anything visible — until someone uses them.

Is it dangerous to have a Security Group open to the Internet?

It depends on the service and the purpose: a public port 443 on a load balancer is normal; SSH or a database on 0.0.0.0/0 rarely is. Any unnecessary exposure increases the attack surface and must be justifiable.

How do I protect an RDS database?

Private network and strict Security Groups first; then encryption at rest and in transit, credentials in Secrets Manager with rotation, protected backups, and logging so you can reconstruct what happened. IAM authentication when the case allows it.

How do I protect S3?

Block Public Access enabled at the account level, bucket policies with least privilege, encryption, versioning where appropriate and access monitoring. And review who — human or application — can read each bucket, not just whether it's "public".

What's the difference between AWS security and application security?

AWS protects the underlying infrastructure within the shared responsibility model. Your organization remains responsible for identities, permissions, data, configuration and the code it deploys. A vulnerable application on a perfectly configured account is still a door.

What happens if an Access Key is stolen?

The impact depends on that identity's permissions: from almost nothing to control of the account. It's limited with least privilege, temporary credentials and roles instead of static keys, rotation, and monitoring that detects anomalous use in time.

Can WITS fix the vulnerabilities it finds?

Yes. The service can cover the full cycle: diagnosis, prioritization by real risk, remediation of configurations and architecture, and validation that each fix is closed — plus the monitoring to keep it that way.

Not sure how exposed your account is?

Schedule an audit and within days you have the full map: what's open, what's urgent and what it costs to fix.