← back to blog
Cloud · Topic 2

Client Sign-Off Isn't Enough: Cloud Pentest Rules for AWS, Azure and GCP

Cloud pentest rules of engagement for AWS, Azure and Google Cloud

A signed scope from your client lets you test their cloud resources. It doesn't let you test AWS, Microsoft or Google themselves, and it never covers the other customers sharing the same hardware.

Each provider has its own rules, and they bind you directly, whoever's paying. Keep this cheat sheet open while you scope: what needs no notice, what needs a form and how early, what's banned, who you report to, and the 3 commands that tie your scope to real account IDs. If the service names don't line up yet, start with the cloud name map.

Cloud pentest rules of engagement: client sign-off covers the client's own resources, but never the provider's infrastructure, other tenants or DoS
What your client can authorise, and what only the provider decides.

Cloud pentest rules at a glance

Here's the short version for all 3 providers, checked against their own policy pages on 1 Nov 2026.

Cloud pentest rules by provider
Microsoft (Azure)AWSGoogle Cloud
Tell the provider first?No, but follow the Rules of EngagementNo, for services on its permitted listNo, for your own projects
Client resourcesOnly what's owned or authorisedOnly authorised resources on permitted servicesTests must only affect your projects
The provider itselfNo post-exploitation past a PoCNot allowedNot covered by your project rights
DoS / DDoSBanned, DDoS under all circumstancesBanned, real or simulatedFollow the AUP, get sign-off first
Red team and C2Your own assets onlyC2 needs approval; covert work needs a form 2 weeks aheadInside authorised projects only
Report provider bugs toMSRCAWS Security, within 24 hoursVulnerability Reward Program
Policies change. Re-check the live pages on the day you scope.

Microsoft rules of engagement for Azure, M365 and AI

No advance notice, but you must follow the Microsoft Security Testing Rules of Engagement. They cover every product, service and piece of infrastructure Microsoft owns or manages (LinkedIn, GitHub and Activision Blizzard have their own processes), and they apply to consultancies exactly as they do to the resource owner.

You can: scan and fuzz the client's own Azure VMs, build trial tenants for cross-tenant tests (with MSOBB in the name where you can), test the tenant's monitoring, and probe AI boundaries and prompt restrictions, much like system prompt leaking. All of it inside assets you're cleared for.

You can't: run DoS or traffic-heavy fuzzing, touch another customer's data or storage, use credentials that aren't yours (leaked ones included), phish Microsoft staff, or pull out model weights or training data. And once you've proven a bug in a Microsoft service, stop: no secret dumping, lateral movement or pivoting past that first proof of concept. Hit data you shouldn't see? Stop, tell MSRC and delete it.

AWS penetration testing policy: permitted services and banned attacks

AWS lets you test these services without approval. Anything else, ask AWS Support or the account rep first. You can't test AWS's own infrastructure or the services themselves.

Compute

EC2, Lambda, Lambda@Edge, Lightsail, Elastic Beanstalk, ECS, Fargate

Network and edge

ELB, NAT Gateways, WAF, CloudFront, Transit Gateway, Global Accelerator

Data

RDS, Aurora, OpenSearch Service, FSx

APIs and AI

API Gateway, AppSync, Bedrock AgentCore

Everything on AWS's permitted list: 16 entries, with EC2, WAF, NAT Gateways and ELB sharing one. The highlighted group has an outbound catch.

Watch the direction: API Gateway and Bedrock AgentCore are also on AWS's list of services you can't use for outbound testing. Test them, but don't launch testing from them.

Banned: DoS and DDoS, real or simulated (DDoS simulations have their own policy); port, protocol and request flooding; Route 53 zone walking, hijacking and pharming; S3 bucket takeover; and subdomain takeover.

Needs approval first: anything with command and control (C2). Covert red, blue or purple team work, simulated phishing, malware and iPerf testing need a Simulated Events form at least 2 weeks before you start.

Allowed: banner grabbing to compare a version against known DoS-vulnerable ones, and crashing a process your exploit needs to crash, as long as nothing floods. After testing: issues caused directly by AWS services go to AWS Security within 24 hours, and the client carries any damage to AWS or other customers, so write that into the contract.

Google Cloud: no notice, but only your projects

You don't need to contact Google first. You do need to follow its Acceptable Use Policy and Terms of Service, and your tests must only affect the projects you're cleared for: IAM, service accounts, firewall rules, open ports, VM config and storage inside them. For C2, DoS simulation, phishing or anything that could knock over a shared service, check the terms and get written sign-off. Bugs in Google's own services go to its Vulnerability Reward Program.

Record the cloud scope before you send a packet

When you juggle several clients' credentials, it's easy to test from the wrong account. Run one command per provider with the credentials you'll test with, and compare the IDs with the signed scope.

aws sts get-caller-identity
az account show --query "{tenant:tenantId, subscription:id, name:name}" -o table
gcloud config list --format="value(core.account,core.project)"
expected output
$ aws sts get-caller-identity "Account": "123456789012", "Arn": "arn:aws:iam::123456789012:user/pentest" $ az account show --query ... -o table Tenant xxxxxxxx-... Subscription yyyyyyyy-... Name client-prod $ gcloud config list --format=... pentest@client.example client-project-01
Expected output, with placeholder IDs. Every value must match an ID written in the scope.

If an account, subscription or project ID isn't in the signed scope, stop and fix your credentials before anything else. Write the IDs and regions into your notes so your report and the client's logs can be matched later.

Cloud pentest pre-engagement checklist

Authorisation and scope

Written authorisation and RoE agreed. Account, tenant and project IDs recorded. In-scope and out-of-scope assets listed. Third-party and shared services identified.

Testing limits

Provider policies checked on the day. AWS Simulated Events form sent 2+ weeks ahead. DoS, C2, phishing, malware and social engineering limits confirmed. Allowed exploitation and post-exploitation agreed.

Safety

Dates, time zone and traffic limits agreed. Test accounts ready. Emergency contact and stop procedure confirmed. Monitoring team told where appropriate.

Evidence and reporting

Data handling and minimisation rules set. Escalation routes confirmed: MSRC, AWS Security 24-hour rule, Google VRP. Cleanup and retest plans agreed.

Tick every box before the first scan.

Common mistakes

Reading "no notice" as "no rules". None of the 3 asks for a heads-up on normal testing, but DoS, other tenants and provider infrastructure stay off-limits whatever the client signs.

Forgetting the 2-week clock. Phishing, malware, covert red teaming or iPerf on AWS means a Simulated Events form 2 weeks before day one. Spot it at scoping.

Testing a hostname you don't control. A client domain can point at a CDN, a SaaS app or someone else's bucket. Check who owns each target first. Subdomain takeover is banned on AWS even if the client asks.

Pushing past the proof of concept. On a Microsoft service, one working PoC is the finish line.

Prove you stayed in scope

If something breaks during your window, you'll want proof of what you did. Log your source IPs and times, test from named identities (an MSOBB tenant on Microsoft, a dedicated IAM user on AWS), and ask the client to keep CloudTrail, the Azure Activity Log or Cloud Audit Logs for the test window. Those logs show which identity did what, and let the client tell you apart from a real attacker. The cloud pentest notes have the scoping checks as a tickable list.

Quick recap

  • Client sign-off covers the client's resources. The provider's rules bind you too.
  • AWS: the 16 entries on its permitted list need no approval, C2 does, covert work needs a form 2 weeks ahead, and provider bugs go to AWS Security within 24 hours.
  • Microsoft and Google: no notice, but no DoS, no other tenants, and on Microsoft nothing past your first PoC.
  • Match aws sts get-caller-identity, az account show and gcloud config list output to the scope before testing.

Go deeper

These policies change, and a cheat sheet can't keep up with every edit. Before each cloud job, read the 3 primary pages in the references: the AWS Penetration Testing policy (watch the permitted list), the Microsoft Security Testing Rules of Engagement (including its AI section) and the Google Cloud Security FAQ. Your contract leans on whatever they say on the day you scope.

If you scope cloud tests and have handled a provider approval differently, I'd like to hear how it went. Come and compare notes on LinkedIn.

References

FAQ

Do I need to tell AWS before a penetration test?

Not for the 16 entries on AWS's permitted list, such as EC2, RDS, Lambda and CloudFront. Anything outside that list goes through AWS Support or your account rep. Command and control needs prior approval, and covert red team work, phishing, malware and iPerf testing need a Simulated Events form at least 2 weeks ahead.

Do I need to notify Microsoft before testing Azure?

No. Microsoft doesn't ask for advance notice, but everyone testing its services, including consultancies working for the resource owner, must follow the Microsoft Security Testing Rules of Engagement. They ban DoS, touching other customers' data, and any action beyond your first proof of concept on a Microsoft service.

Can I run DoS tests in AWS, Azure or Google Cloud?

Not under the normal pentest rules. AWS bans real and simulated DoS and DDoS, plus port, protocol and request flooding, and handles DDoS simulations under a separate policy. Microsoft bans DoS and says DDoS is prohibited under all circumstances. Google expects you to follow its Acceptable Use Policy, so get explicit sign-off first.

What do I do if I find a bug in the cloud provider's own service?

Report it to the provider. AWS wants issues caused directly by its tools or services sent to AWS Security within 24 hours of finishing your testing. Microsoft wants findings reported through MSRC, and Google asks you to report through its Vulnerability Reward Program. Stop at the proof of concept.