Skip to content

fix(permissions): add missing sesv2 permissions for SES checks#10925

Open
mohamedsolaiman wants to merge 1 commit intoprowler-cloud:masterfrom
mohamedsolaiman:fix/missing-sesv2-permissions
Open

fix(permissions): add missing sesv2 permissions for SES checks#10925
mohamedsolaiman wants to merge 1 commit intoprowler-cloud:masterfrom
mohamedsolaiman:fix/missing-sesv2-permissions

Conversation

@mohamedsolaiman
Copy link
Copy Markdown

Summary

This PR adds missing sesv2 permissions to the Prowler additions policy and CloudFormation scan role template.

Problem

The SES service in Prowler uses the SESv2 API (not the v1 SES API) to list and retrieve email identity details. The AWS managed SecurityAudit policy only includes ses:Get* and ses:List* permissions for the v1 API, but does not cover sesv2 API calls.

Without these permissions, the SES checks fail with AccessDenied errors when using the Prowler scan role:

  • ses_identity_not_publicly_accessible - checks SES identity resource policies
  • ses_identity_dkim_enabled (new) - checks DKIM signing status

Changes

Added to both permissions/prowler-additions-policy.json and permissions/templates/cloudformation/prowler-scan-role.yml:

  • sesv2:GetEmailIdentity - required to retrieve email identity details including DKIM status and policies
  • sesv2:ListEmailIdentities - required to list all email identities in the account

Testing

These permissions are the minimum required for the existing SES service code which calls:

  • regional_client.list_email_identities() → requires sesv2:ListEmailIdentities
  • regional_client.get_email_identity() → requires sesv2:GetEmailIdentity

Add sesv2:GetEmailIdentity and sesv2:ListEmailIdentities permissions
to the Prowler additions policy and CloudFormation scan role template.

The SES service in Prowler uses the SESv2 API (not the v1 SES API)
to list and retrieve email identity details. These API calls require
sesv2-specific permissions that are not covered by the AWS managed
SecurityAudit policy, which only includes ses:Get* and ses:List*
permissions for the v1 API.

Without these permissions, the SES checks (including the DKIM check
and the public access check) fail with AccessDenied errors when using
the Prowler scan role, preventing proper security assessment of SES
identities.

Changes:
- Added sesv2:GetEmailIdentity to prowler-additions-policy.json
- Added sesv2:ListEmailIdentities to prowler-additions-policy.json
- Added matching permissions to CloudFormation template
@mohamedsolaiman mohamedsolaiman requested a review from a team as a code owner April 28, 2026 17:20
@github-actions
Copy link
Copy Markdown
Contributor

Conflict Markers Resolved

All conflict markers have been successfully resolved in this pull request.

@github-actions github-actions Bot added the community Opened by the Community label Apr 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

community Opened by the Community

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant