@enfo/aws-cdkompliance
Version:
Tagging and compliant resources using the CDK
74 lines • 7.2 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApplicationLoadBalancer = exports.defaultApplicationLoadBalancerProps = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_elasticloadbalancingv2_1 = require("aws-cdk-lib/aws-elasticloadbalancingv2");
/**
* Properties for a new Compliant ALB
*/
exports.defaultApplicationLoadBalancerProps = {
deletionProtection: true
};
/**
* Compliant ALB
*
* See README for usage examples
*/
class ApplicationLoadBalancer extends aws_elasticloadbalancingv2_1.ApplicationLoadBalancer {
constructor(scope, id, props) {
super(scope, id, {
...exports.defaultApplicationLoadBalancerProps,
...props
});
this.internalAttributes = {};
this.calculatedProps = {
...exports.defaultApplicationLoadBalancerProps,
...props
};
this.setAttribute('routing.http.drop_invalid_header_fields.enabled', 'true');
this.node.addValidation({
validate: () => {
return [
...this.checkLogging(),
...this.checkDropInvalidHeaders(),
...this.checkDeletionProtection()
];
}
});
}
/**
* @ignore
*/
setAttribute(key, value) {
if (!this.internalAttributes) {
this.internalAttributes = {};
}
if (value === undefined) {
delete this.internalAttributes[key];
}
else {
this.internalAttributes[key] = value;
}
return super.setAttribute(key, value);
}
checkLogging() {
return this.internalAttributes['access_logs.s3.enabled']
? []
: ['Access logs not enabled'];
}
checkDeletionProtection() {
return this.calculatedProps.deletionProtection
? []
: ['deletionProtection must be enabled'];
}
checkDropInvalidHeaders() {
return this.internalAttributes['routing.http.drop_invalid_header_fields.enabled'] === 'true'
? []
: ['Not configured to drop invalid HTTP headers'];
}
}
exports.ApplicationLoadBalancer = ApplicationLoadBalancer;
_a = JSII_RTTI_SYMBOL_1;
ApplicationLoadBalancer[_a] = { fqn: "@enfo/aws-cdkompliance.ApplicationLoadBalancer", version: "1.1.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImVsYXN0aWNsb2FkYmFsYW5jaW5ndjIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1RkFHK0M7QUFHL0M7O0dBRUc7QUFDVSxRQUFBLG1DQUFtQyxHQUFHO0lBQ2pELGtCQUFrQixFQUFFLElBQUk7Q0FDekIsQ0FBQTtBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLG9EQUF5QjtJQUdwRSxZQUFhLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW1DO1FBQzVFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRywyQ0FBbUM7WUFDdEMsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFBO1FBTE0sdUJBQWtCLEdBQTJCLEVBQUUsQ0FBQTtRQU92RCxJQUFJLENBQUMsZUFBZSxHQUFHO1lBQ3JCLEdBQUcsMkNBQW1DO1lBQ3RDLEdBQUcsS0FBSztTQUNULENBQUE7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLGlEQUFpRCxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBRTVFLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTztvQkFDTCxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUU7b0JBQ3RCLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixFQUFFO29CQUNqQyxHQUFHLElBQUksQ0FBQyx1QkFBdUIsRUFBRTtpQkFDbEMsQ0FBQTtZQUNILENBQUM7U0FDRixDQUFDLENBQUE7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxZQUFZLENBQUUsR0FBVyxFQUFFLEtBQWM7UUFDOUMsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsRUFBRTtZQUM1QixJQUFJLENBQUMsa0JBQWtCLEdBQUcsRUFBRSxDQUFBO1NBQzdCO1FBQ0QsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFBO1NBQ3BDO2FBQU07WUFDTCxJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFBO1NBQ3JDO1FBQ0QsT0FBTyxLQUFLLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0lBRVMsWUFBWTtRQUNwQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBd0IsQ0FBQztZQUN0RCxDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFDLENBQUE7SUFDakMsQ0FBQztJQUVTLHVCQUF1QjtRQUMvQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsa0JBQWtCO1lBQzVDLENBQUMsQ0FBQyxFQUFFO1lBQ0osQ0FBQyxDQUFDLENBQUMsb0NBQW9DLENBQUMsQ0FBQTtJQUM1QyxDQUFDO0lBRVMsdUJBQXVCO1FBQy9CLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlEQUFpRCxDQUFDLEtBQUssTUFBTTtZQUMxRixDQUFDLENBQUMsRUFBRTtZQUNKLENBQUMsQ0FBQyxDQUFDLDZDQUE2QyxDQUFDLENBQUE7SUFDckQsQ0FBQzs7QUF6REgsMERBMERDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgYXMgTEJBcHBsaWNhdGlvbkxvYWRCYWxhbmNlcixcbiAgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wc1xufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2MidcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnXG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgQ29tcGxpYW50IEFMQlxuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMgPSB7XG4gIGRlbGV0aW9uUHJvdGVjdGlvbjogdHJ1ZVxufVxuXG4vKipcbiAqIENvbXBsaWFudCBBTEJcbiAqXG4gKiBTZWUgUkVBRE1FIGZvciB1c2FnZSBleGFtcGxlc1xuICovXG5leHBvcnQgY2xhc3MgQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIgZXh0ZW5kcyBMQkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyIHtcbiAgcHJvdGVjdGVkIGNhbGN1bGF0ZWRQcm9wczogQXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wc1xuICBwcm90ZWN0ZWQgaW50ZXJuYWxBdHRyaWJ1dGVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge31cbiAgY29uc3RydWN0b3IgKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBcHBsaWNhdGlvbkxvYWRCYWxhbmNlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5kZWZhdWx0QXBwbGljYXRpb25Mb2FkQmFsYW5jZXJQcm9wcyxcbiAgICAgIC4uLnByb3BzXG4gICAgfSlcblxuICAgIHRoaXMuY2FsY3VsYXRlZFByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdEFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyUHJvcHMsXG4gICAgICAuLi5wcm9wc1xuICAgIH1cbiAgICB0aGlzLnNldEF0dHJpYnV0ZSgncm91dGluZy5odHRwLmRyb3BfaW52YWxpZF9oZWFkZXJfZmllbGRzLmVuYWJsZWQnLCAndHJ1ZScpXG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnRoaXMuY2hlY2tMb2dnaW5nKCksXG4gICAgICAgICAgLi4udGhpcy5jaGVja0Ryb3BJbnZhbGlkSGVhZGVycygpLFxuICAgICAgICAgIC4uLnRoaXMuY2hlY2tEZWxldGlvblByb3RlY3Rpb24oKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBwdWJsaWMgc2V0QXR0cmlidXRlIChrZXk6IHN0cmluZywgdmFsdWU/OiBzdHJpbmcpIHtcbiAgICBpZiAoIXRoaXMuaW50ZXJuYWxBdHRyaWJ1dGVzKSB7XG4gICAgICB0aGlzLmludGVybmFsQXR0cmlidXRlcyA9IHt9XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZWxldGUgdGhpcy5pbnRlcm5hbEF0dHJpYnV0ZXNba2V5XVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmludGVybmFsQXR0cmlidXRlc1trZXldID0gdmFsdWVcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrTG9nZ2luZyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxBdHRyaWJ1dGVzWydhY2Nlc3NfbG9ncy5zMy5lbmFibGVkJ11cbiAgICAgID8gW11cbiAgICAgIDogWydBY2Nlc3MgbG9ncyBub3QgZW5hYmxlZCddXG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tEZWxldGlvblByb3RlY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZWRQcm9wcy5kZWxldGlvblByb3RlY3Rpb25cbiAgICAgID8gW11cbiAgICAgIDogWydkZWxldGlvblByb3RlY3Rpb24gbXVzdCBiZSBlbmFibGVkJ11cbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja0Ryb3BJbnZhbGlkSGVhZGVycyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW50ZXJuYWxBdHRyaWJ1dGVzWydyb3V0aW5nLmh0dHAuZHJvcF9pbnZhbGlkX2hlYWRlcl9maWVsZHMuZW5hYmxlZCddID09PSAndHJ1ZSdcbiAgICAgID8gW11cbiAgICAgIDogWydOb3QgY29uZmlndXJlZCB0byBkcm9wIGludmFsaWQgSFRUUCBoZWFkZXJzJ11cbiAgfVxufVxuIl19