Sign inGet started
← Documentation

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 SecurityAudit policy 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.

CloudCertaOne named principalNo access keys heldsts:AssumeRole+ your External ID · ≤ 1 hourYOUR AWS ACCOUNTCloudGuardReadOnlyrole you createSecurityAuditread-only, AWS-managed
You create the role; CloudCerta assumes it. Access is read-only, scoped to one principal, gated on your External ID, and expires after an hour. Delete the role and access stops immediately.

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:CreateRole and iam: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.

  1. AWS Console → IAM → Roles → Create role.
  2. 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.
  3. 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.
  4. Name it, for example CloudGuardReadOnly, and create it.
  5. Open the role and set Maximum session duration to one hour or less.
  6. 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 seeCauseFix
Validation fails immediatelyExternal ID mismatchGenerating new details issues a new External ID. Re-copy the current trust policy into the role.
Validation fails after regeneratingThe role still has an older trust policyUpdate 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 usedAttach arn:aws:iam::aws:policy/SecurityAudit exactly, and nothing else.
Worked once, fails laterSession duration raised, or the trust policy editedConfirm max session duration is 1 hour or less and the External ID condition is still present.
Connection details expiredThe generated details have a short lifetimeClick Regenerate connection details and redo the role step with the new values.
Findings show services as not assessedExpected behaviour, not an errorSecurityAudit does not reach everything. Not-assessed is deliberately never counted as compliant.

For your security review

  • Access is read-only via the AWS-managed SecurityAudit policy. No write, modify or delete permission is requested at any point.
  • The trust policy names exactly one CloudCerta principal with a mandatory sts:ExternalId condition. 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.