Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(s3-notifications): fixing circular dependency when Bucket and SQS are encrypted by same KMS is used for s3 notification #31155

Open
wants to merge 3 commits into
base: main
Choose a base branch
from

Conversation

stm29
Copy link
Contributor

@stm29 stm29 commented Aug 19, 2024

Issue #3067

Closes #3067

If you are reading this from discussion redirection (or landed here from searching in issue) run cdk synth in your app and look for warning displayed and look for @aws-cdk/aws-s3-notifications. You will find out the solution.

Reason for this change

  • we can't cdk deploy, when we use same same KMS for S3 and SQS.
  • This was partially addressed on fix(s3-notifications): notifications allowed with imported kms keys #18989 , rather than fixing, this PR adds a warning when policy is unable to add to KMS.
    • But issue arises when the policy is added. It creates Circular dependency.
    • When, we didn't add this permission, then we can't send message event to SQS.

So, we need to draw a fair line on how to handle this. approaches considered,

  1. Issue arises, when we are constraining the polices in KMS. so what happens is, KMS depends on Bucket, Bucket depends on KMS, exactly explained by Circular dependency on s3 notification to a destination when both destination and s3 are encrypted by same CMK #3067 (comment)
  • We can just expand the scope of Policy to Service level (s3.amazonaws.com), rather than constraining with Resource level (BucketName), this may not be security wise advised, but this better than allowing user to deploy than just showing circular dependency.
  1. We can optionally, ask use wether to add this relaxed permission added. If doesn't wish to add this, he can opt out and add his constrained policy.
  2. In both the cases we will show FAIR warning on how this will result in Security / Runtime Exception (Circular Dependency).

Description of changes

  • Added optional parameter shouldAddGlobalS3PermissionToKMSandSQS , defaulted to true, as it will be backward compatible
  • Based on this Flag, we are showing warning during cdk synth
    • Circular Dependency Violation when false is provided, as they will try to add imported Bucket Value to add permission
    • Security Warning - as Service Level permission is granted

Description of how you validated changes

  • Unit Tests
  • Integration Tests

Checklist


By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

…d SQS are encrypted by same KMS is used for s3 notification
@github-actions github-actions bot added bug This issue is a bug. effort/small Small work item – less than a day of effort p2 labels Aug 19, 2024
@aws-cdk-automation aws-cdk-automation requested a review from a team August 19, 2024 22:26
@github-actions github-actions bot added the beginning-contributor [Pilot] contributed between 0-2 PRs to the CDK label Aug 19, 2024
Copy link
Collaborator

@aws-cdk-automation aws-cdk-automation left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The pull request linter has failed. See the aws-cdk-automation comment below for failure reasons. If you believe this pull request should receive an exemption, please comment and provide a justification.

A comment requesting an exemption should contain the text Exemption Request. Additionally, if clarification is needed add Clarification Request to a comment.

@stm29 stm29 changed the title fix(aws-s3-notifications) : fixing circular dependency when Bucket and SQS are encrypted by same KMS is used for s3 notification fix(aws-s3-notifications): fixing circular dependency when Bucket and SQS are encrypted by same KMS is used for s3 notification Aug 19, 2024
@stm29 stm29 changed the title fix(aws-s3-notifications): fixing circular dependency when Bucket and SQS are encrypted by same KMS is used for s3 notification fix(s3-notifications): fixing circular dependency when Bucket and SQS are encrypted by same KMS is used for s3 notification Aug 19, 2024
@aws-cdk-automation aws-cdk-automation dismissed their stale review August 19, 2024 22:33

✅ Updated pull request passes all PRLinter validations. Dismissing previous PRLinter review.

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

  • CodeBuild project: AutoBuildv2Project1C6BFA3F-wQm2hXv2jqQv
  • Commit ID: 4ca7bf1
  • Result: SUCCEEDED
  • Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

@aws-cdk-automation aws-cdk-automation added the pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. label Aug 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
beginning-contributor [Pilot] contributed between 0-2 PRs to the CDK bug This issue is a bug. effort/small Small work item – less than a day of effort p2 pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Circular dependency on s3 notification to a destination when both destination and s3 are encrypted by same CMK
2 participants