Check provider logo

DynamoDB table resource-based policy does not allow cross-account access

dynamodb_table_cross_account_access

Severitymedium
Servicedynamodb
by Prowler

DynamoDB tables are evaluated for resource-based policies that permit cross-account or public principals.

Tables without a resource policy, or with policies restricted to the same account, are identified as isolated configurations.

Risk

Allowing other accounts to access a table affects:

  • Confidentiality: unauthorized reads/data exfiltration
  • Integrity: writes or deletes by external principals
  • Availability: capacity exhaustion and throttling
  • Cost: owner pays for external requests

If public principals are allowed, exposure can be unrestricted.

Run this check with Prowler CLI

prowler aws --checks dynamodb_table_cross_account_access

Recommendation

Apply least privilege:

  • Avoid cross-account data access; if required, allow only named principals
  • Constrain with aws:PrincipalOrgID, aws:SourceVpc, aws:PrincipalArn; add Deny guardrails
  • Enable Block Public Access and monitor with IAM Access Analyzer

Remediation

CLI

aws dynamodb delete-resource-policy --resource-arn <resource-arn>

Other
  1. Open the AWS Console and go to DynamoDB > Tables
  2. Select <example_resource_name> and open the Permissions tab
  3. In Resource-based policy, click Delete policy and confirm
  4. Save changes to remove any cross-account access

Source Code

Resource Type

AwsDynamoDbTable

References