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

chore(cloudfront): prevent WebACL from being created in regions other than us-east-1 #32252

Merged
merged 12 commits into from
Dec 2, 2024

Conversation

ren-yamanashi
Copy link
Contributor

Reason for this change

When attaching a WebACL to CloudFront Distribution, the region must be us-east-1, but no validation was done.

see: https://docs.aws.amazon.com/waf/latest/developerguide/web-acl-creating.html

For Region, if you've chosen a Regional resource type, choose the Region where you want AWS WAF to store the web ACL.

You only need to choose this option for Regional resource types. For CloudFront distributions, the Region is hard-coded to the US East (N. Virginia) Region, us-east-1, for Global (CloudFront) applications.

Description of changes

Add validation to the attachWebAclId method of CloudFront Distribution

Description of how you validated changes

Unit and integ testing

Checklist


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

@github-actions github-actions bot added the repeat-contributor [Pilot] contributed between 3-5 PRs to the CDK label Nov 22, 2024
@aws-cdk-automation aws-cdk-automation requested a review from a team November 22, 2024 15:27
@github-actions github-actions bot added the p2 label Nov 22, 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.

Comment on lines 617 to 622
if (webAclId.startsWith('arn:')) {
const arnParts = Stack.of(this).splitArn(webAclId, ArnFormat.SLASH_RESOURCE_NAME);
if (!Token.isUnresolved(arnParts.region) && arnParts.region !== 'us-east-1') {
throw new Error(`WebACL for CloudFront distributions must be created in the us-east-1 region; received ${arnParts.region}`);
}
}
Copy link
Contributor Author

Choose a reason for hiding this comment

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

If a Web ACL created using AWS WAF Classic is specified, this validation will not be performed because the ACL ID received is not arn.

@ren-yamanashi ren-yamanashi changed the title feat(cloudfront): prevent WebACL from being created in regions other than us-east-1 fix(cloudfront): prevent WebACL from being created in regions other than us-east-1 Nov 22, 2024
Copy link

codecov bot commented Nov 22, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 78.50%. Comparing base (f091714) to head (c94ec02).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #32252      +/-   ##
==========================================
+ Coverage   78.48%   78.50%   +0.01%     
==========================================
  Files         106      106              
  Lines        7201     7201              
  Branches     1321     1321              
==========================================
+ Hits         5652     5653       +1     
+ Misses       1362     1361       -1     
  Partials      187      187              
Flag Coverage Δ
suite.unit 78.50% <ø> (+0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
packages/aws-cdk 78.50% <ø> (+0.01%) ⬆️

@ren-yamanashi
Copy link
Contributor Author

ren-yamanashi commented Nov 22, 2024

Exemption Request

Because this MR does not have any modifications that would change the existing snapshot test,

@aws-cdk-automation aws-cdk-automation added the pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. label Nov 22, 2024
@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 Nov 22, 2024
@ren-yamanashi ren-yamanashi changed the title fix(cloudfront): prevent WebACL from being created in regions other than us-east-1 chore(cloudfront): prevent WebACL from being created in regions other than us-east-1 Nov 24, 2024
@aws-cdk-automation aws-cdk-automation dismissed their stale review November 24, 2024 02:39

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

Copy link
Contributor

@mazyu36 mazyu36 left a comment

Choose a reason for hiding this comment

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

Thank you for the contribution.
Just one question.

* @param webAclId The WAF WebACL to associate with this distribution
*/
public attachWebAclId(webAclId: string) {
if (this.webAclId) {
throw new Error('A WebACL has already been attached to this distribution');
}
if (webAclId.startsWith('arn:')) {
Copy link
Contributor

Choose a reason for hiding this comment

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

Isn't this validation also necessary in the place where the webacl props is being passed?

this.webAclId = props.webAclId;

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@mazyu36

Thank you very much. As you pointed out, validation was needed, so we have modified it!

(I have modified the policy to provide a validation method in the private method.)

4a02e21

Copy link
Contributor

@mazyu36 mazyu36 left a comment

Choose a reason for hiding this comment

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

Thanks! LGTM

@aws-cdk-automation aws-cdk-automation added pr/needs-maintainer-review This PR needs a review from a Core Team Member and removed pr/needs-community-review This PR needs a review from a Trusted Community Member or Core Team Member. labels Nov 27, 2024
gracelu0
gracelu0 previously approved these changes Nov 29, 2024
Copy link
Contributor

mergify bot commented Nov 29, 2024

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@aws-cdk-automation aws-cdk-automation removed the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Nov 29, 2024
@mergify mergify bot dismissed gracelu0’s stale review November 30, 2024 01:41

Pull request has been modified.

@aws-cdk-automation aws-cdk-automation added the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Nov 30, 2024
@ren-yamanashi
Copy link
Contributor Author

ren-yamanashi commented Nov 30, 2024

@mazyu36 @gracelu0

I updated the branch because CI failed.(The cause is unknown...)

Could you please approve it again?

The modifications are as follows.
Merge branch 'main' into this branch

@mazyu36
Copy link
Contributor

mazyu36 commented Nov 30, 2024

Thank you. Please wait as approval from a maintainer is needed (I'm just a community reviewer, not a maintainer).​​​​​​​​​​​​​​​​

gracelu0
gracelu0 previously approved these changes Dec 2, 2024
Copy link
Contributor

mergify bot commented Dec 2, 2024

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@mergify mergify bot dismissed gracelu0’s stale review December 2, 2024 18:13

Pull request has been modified.

@aws-cdk-automation
Copy link
Collaborator

AWS CodeBuild CI Report

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

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

Copy link
Contributor

mergify bot commented Dec 2, 2024

Thank you for contributing! Your pull request will be updated from main and then merged automatically (do not update manually, and be sure to allow changes to be pushed to your fork).

@mergify mergify bot merged commit 64a0e2c into aws:main Dec 2, 2024
19 checks passed
Copy link

github-actions bot commented Dec 2, 2024

Comments on closed issues and PRs are hard for our team to see.
If you need help, please open a new issue that references this one.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 2, 2024
@aws-cdk-automation aws-cdk-automation removed the pr/needs-maintainer-review This PR needs a review from a Core Team Member label Dec 2, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
p2 pr-linter/exemption-requested The contributor has requested an exemption to the PR Linter feedback. repeat-contributor [Pilot] contributed between 3-5 PRs to the CDK
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants