Get the Zoom link
Cloud Security Office Hours Banner

Prowler audit + remediation

Run Prowler against your own account, document every finding, and Terraform the fix for each one. Before/after screenshots are gold.

Walkthrough All Portfolio Projects

· · Vendor-neutral · View source on GitHub

Time: ~4 hours  ·  Difficulty: Intermediate  ·  Stack: AWS · Prowler · Terraform

This one assumes you already run AWS. You need an account you control, comfort with the AWS CLI, and enough IAM familiarity to create a role and attach policies to it. If none of that is true yet, start with the home lab setup and come back.

Prowler is the open-source CSPM tool everyone in cloud security has touched at some point. Running it against a real account, walking through every finding, and writing the Terraform that closes each one teaches you what "posture management" actually means in practice - and produces a write-up that demonstrates exactly the work a CSPM analyst does on day one.

📖 On this page

  1. What you'll have at the end
  2. Prerequisites
  3. Step-by-step
  4. What hiring managers look for
  5. Common mistakes
  6. Where to publish
  7. Where next

What you'll have at the end

Prerequisites

Step-by-step

1. Install Prowler

pip install prowler
prowler --version

2. Create read-only credentials for Prowler

Don't run Prowler with admin. Prowler needs two AWS managed policies plus one small custom policy the project maintains, all read-only. Attach them to a dedicated IAM role:

# The two managed policies Prowler documents as its baseline.
aws iam attach-role-policy --role-name prowler-readonly \
  --policy-arn arn:aws:iam::aws:policy/SecurityAudit
aws iam attach-role-policy --role-name prowler-readonly \
  --policy-arn arn:aws:iam::aws:policy/job-function/ViewOnlyAccess

# Plus the project's own additions, which cover services the two above miss.
curl -sO https://raw.githubusercontent.com/prowler-cloud/prowler/master/permissions/prowler-additions-policy.json
aws iam put-role-policy --role-name prowler-readonly \
  --policy-name prowler-additions \
  --policy-document file://prowler-additions-policy.json

SecurityAudit and ViewOnlyAccess are AWS-managed and grant no write actions. The additions policy is worth reading before you apply it: it is short, and knowing why a posture scanner needs each entry is exactly the kind of thing an interviewer asks about. The current requirements are in Prowler's AWS authentication docs.

Now give that role its own CLI profile, so no command in this project can accidentally run as your admin identity:

# In ~/.aws/config
[profile prowler-readonly]
role_arn = arn:aws:iam::<your-account-id>:role/prowler-readonly
source_profile = <your-normal-profile>
region = us-east-1

Confirm it works, and confirm it is the identity you think it is, before scanning:

aws sts get-caller-identity --profile prowler-readonly

3. Run the baseline scan

prowler aws --profile prowler-readonly --output-formats html json-ocsf

This produces a comprehensive scan against ~400 checks. Commit the HTML and JSON outputs to your repo as the before snapshot. Don't worry if the report is alarming on first run - that's the point.

4. Triage the findings

Open the HTML report. Group findings into four buckets:

Document each bucket in your README. The triage is the skill being demonstrated.

5. Remediate the real problems

For each "real problem to fix," write the Terraform (or AWS CLI command) that closes it. Examples:

Apply the Terraform. Document each fix with a code snippet in the write-up.

6. Re-run Prowler

Run Prowler again with the same flags. Save the second HTML/JSON as the after snapshot. Commit a diff or summary of which findings flipped from FAIL to PASS.

7. Write the "what I learned" section

Most valuable section of the write-up. What surprised you? Which checks turned out to be more nuanced than they appeared? Did Prowler find anything you'd missed? Did it flag something that turned out to be a false positive?

8. (Optional) Schedule it

For bonus points: package the Prowler run into a GitHub Actions workflow that scans your account weekly and posts the diff as an issue. This is one of the most-asked interview question patterns: "how would you operate this at scale?"

What hiring managers look for

Common mistakes

Where to publish

The full publishing playbook is on the portfolio hub page. The short version: a public GitHub repo with a thorough README is the strongest single signal; pair it with a LinkedIn post and (optionally) a 5-minute lightning talk at a CSOH Friday Zoom.

Where next