Connect your AWS account
From signing in to your first completed scan. Around fifteen minutes, most of it spent in the AWS Console creating a single IAM role.
Step 5 needs someone who can create an IAM role in your AWS account. If that is not you, that section stands on its own and can be forwarded to whoever administers the account.
CloudCerta never modifies your AWS account
It reads configuration and assesses it. There is no code path that creates, changes or deletes a resource in your account. Read this table before granting anything — it is the entire basis of the access you are about to give.
- How access works
- A cross-account IAM role that you create, which CloudCerta assumes
- What it can do
- Exactly what the AWS-managed
SecurityAuditpolicy allows — read-only - Who can assume it
- One named CloudCerta principal. Not a wildcard, not root
- Extra lock
- A unique External ID known only to your account and CloudCerta
- Session length
- One hour maximum, then re-assumed
- Access keys
- Never requested, never used, never stored
- Stored credentials
- None. Session credentials live in memory for the job and are destroyed when it ends
If anyone asks you for an AWS access key to connect CloudCerta, it is not CloudCerta. The only value you will ever paste into the product is a role ARN, which is not a secret.
Before you begin
- A CloudCerta login — either you created the organisation, or a colleague invited you.
- Permission to create an IAM role in the target AWS account (
iam:CreateRoleandiam:AttachRolePolicy). - A standard-partition AWS account. GovCloud and China partitions are not supported in this release.
01Sign in
Go to app.cloudcerta.com. You will be sent to the CloudCerta sign-in page, which supports Google or an email and password.
No invitation yet? Ask whoever set up your organisation to send one from Team → Invite.
02Set up your organisation
The first time you sign in, CloudCerta asks for your organisation details. This names your tenant and appears on reports. You will only see it once; afterwards you land on the dashboard.
03Add your AWS account as a target
A target is something CloudCerta assesses. For Cloud Posture, that is one AWS account.
Open Targets and add one. Give it a name you will recognise — Production beats an account number, because the name is what appears on the dashboard and in reports.
The target starts disconnected. Nothing has touched AWS yet.
04Generate your connection details
Open the target, start the connect wizard, and on Step 1 — Connect AWS click Generate connection details. CloudCerta produces four things:
- External ID — a unique secret tying this role to your tenant. Treat it as sensitive.
- CloudGuard account ID — the AWS account that will assume your role.
- Trust policy (JSON) — who may assume the role, and under what condition.
- Managed policy to attach — the permissions the role gets.
SecurityAudit, nothing else.
Nothing in your AWS account changes at this point. These are instructions for you to apply, not actions CloudCerta takes.
Note the expiry shown under the instructions. If you do not finish in time, click Regenerate connection details and use the new values — the old External ID stops working.
05Create the read-only role in AWS
The only part that happens in the AWS Console. This section is self-contained if you need to hand it to someone else.
- AWS Console → IAM → Roles → Create role.
- For Trusted entity type choose Custom trust policy, and paste the trust policy from step 4. It already names the CloudCerta principal and requires your External ID, so you do not enter those separately.
- On Add permissions, attach the AWS-managed policy
SecurityAudit. Do not add any other policy — CloudCerta does not need more and will not use more. - Name it, for example
CloudGuardReadOnly, and create it. - Open the role and set Maximum session duration to one hour or less.
- Copy the role ARN.
Two things are worth checking in the trust policy before you save, because they are what make this safe: the Principal is a single ARN — never *, never an account root — and the sts:ExternalId condition is present.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": { "AWS": "<CloudCerta principal, shown in the wizard>" },
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": { "sts:ExternalId": "<your unique External ID>" }
}
}
]
}If you enabled Cost Explorer
Cost Explorer is opt-in and off by default. If your organisation turned it on, the wizard shows an extra inline policy — attach it in addition to SecurityAudit, granting ce:GetCostAndUsage and ce:GetDimensionValues. It is additive and read-only: it does not replace SecurityAudit and grants no write access.
06Validate the connection
Back in CloudCerta, go to Step 2 — Validate connection, paste the role ARN, and click Validate connection.
CloudCerta assumes the role once and checks it can read what it needs. On success the target shows Verified. If it fails, the message is specific — see troubleshooting.
07Run your first scan
From the dashboard or the target page, click Run scan. A first scan on a populated account takes a few minutes, and the button shows live progress. When it finishes you get a score, a grade, and findings grouped by severity.
About your first score. Anything CloudCerta could not read is reported as not assessed— never as passing. If a service was unreachable or outside SecurityAudit’s reach, you will see it called out rather than quietly counted as compliant. A lower score with honest gaps is the intended behaviour.
Troubleshooting
| What you see | Cause | Fix |
|---|---|---|
| Validation fails immediately | External ID mismatch | Generating new details issues a new External ID. Re-copy the current trust policy into the role. |
| Validation fails after regenerating | The role still has an older trust policy | Update the role's trust policy to the one now shown in the wizard. |
| “Role can be assumed but is missing read-only permissions” | SecurityAudit not attached, or a different policy used | Attach arn:aws:iam::aws:policy/SecurityAudit exactly, and nothing else. |
| Worked once, fails later | Session duration raised, or the trust policy edited | Confirm max session duration is 1 hour or less and the External ID condition is still present. |
| Connection details expired | The generated details have a short lifetime | Click Regenerate connection details and redo the role step with the new values. |
| Findings show services as not assessed | Expected behaviour, not an error | SecurityAudit does not reach everything. Not-assessed is deliberately never counted as compliant. |
For your security review
- Access is read-only via the AWS-managed
SecurityAuditpolicy. No write, modify or delete permission is requested at any point. - The trust policy names exactly one CloudCerta principal with a mandatory
sts:ExternalIdcondition. No wildcard principal, no account-root principal. - Sessions last one hour at most.
- No customer AWS access keys are ever requested or stored. Session credentials exist in memory for the duration of a job and are destroyed when it ends.
- You can revoke access at any time by deleting the role. CloudCerta loses access immediately and no coordination with us is required.
Need something above evidenced for an audit? Email support@cloudcerta.com.