UNPKG

@enfo/aws-cdkompliance

Version:

Tagging and compliant resources using the CDK

61 lines 5.54 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.Bucket = exports.defaultBucketProps = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_s3_1 = require("aws-cdk-lib/aws-s3"); /** * Compliant BucketProps. Can be manually spread into a Bucket constructor. * * See README for usage examples */ exports.defaultBucketProps = { enforceSSL: true, blockPublicAccess: aws_s3_1.BlockPublicAccess.BLOCK_ALL, encryption: aws_s3_1.BucketEncryption.S3_MANAGED }; /** * Compliant S3 Bucket. * * See README for usage examples */ class Bucket extends aws_s3_1.Bucket { constructor(scope, id, props) { super(scope, id, { ...exports.defaultBucketProps, ...props }); this.calculatedProps = { ...exports.defaultBucketProps, ...props }; this.node.addValidation({ validate: () => { return [ ...this.checkSsl(), ...this.checkPublicAccess(), ...this.checkEncryption() ]; } }); } checkSsl() { return this.calculatedProps.enforceSSL ? [] : ['enforceSSL must be true']; } checkPublicAccess() { return this.calculatedProps.blockPublicAccess !== aws_s3_1.BlockPublicAccess.BLOCK_ALL ? ['blockPublicAccess must be BLOCK_ALL'] : []; } checkEncryption() { return (!this.calculatedProps.encryption || this.calculatedProps.encryption === aws_s3_1.BucketEncryption.UNENCRYPTED) ? ['bucket must be encrypted'] : []; } } exports.Bucket = Bucket; _a = JSII_RTTI_SYMBOL_1; Bucket[_a] = { fqn: "@enfo/aws-cdkompliance.Bucket", version: "1.1.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtDQUsyQjtBQUczQjs7OztHQUlHO0FBQ1UsUUFBQSxrQkFBa0IsR0FBZ0I7SUFDN0MsVUFBVSxFQUFFLElBQUk7SUFDaEIsaUJBQWlCLEVBQUUsMEJBQWlCLENBQUMsU0FBUztJQUM5QyxVQUFVLEVBQUUseUJBQWdCLENBQUMsVUFBVTtDQUN4QyxDQUFBO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsTUFBTyxTQUFRLGVBQVE7SUFFbEMsWUFBYSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsMEJBQWtCO1lBQ3JCLEdBQUcsS0FBSztTQUNULENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxlQUFlLEdBQUc7WUFDckIsR0FBRywwQkFBa0I7WUFDckIsR0FBRyxLQUFLO1NBQ1QsQ0FBQTtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQ3RCLFFBQVEsRUFBRSxHQUFHLEVBQUU7Z0JBQ2IsT0FBTztvQkFDTCxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUU7b0JBQ2xCLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFO29CQUMzQixHQUFHLElBQUksQ0FBQyxlQUFlLEVBQUU7aUJBQzFCLENBQUE7WUFDSCxDQUFDO1NBQ0YsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUVTLFFBQVE7UUFDaEIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVU7WUFDcEMsQ0FBQyxDQUFDLEVBQUU7WUFDSixDQUFDLENBQUMsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO0lBQ2pDLENBQUM7SUFFUyxpQkFBaUI7UUFDekIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixLQUFLLDBCQUFpQixDQUFDLFNBQVM7WUFDM0UsQ0FBQyxDQUFDLENBQUMscUNBQXFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLEVBQUUsQ0FBQTtJQUNSLENBQUM7SUFFUyxlQUFlO1FBQ3ZCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxLQUFLLHlCQUFnQixDQUFDLFdBQVcsQ0FBQztZQUMzRyxDQUFDLENBQUMsQ0FBQywwQkFBMEIsQ0FBQztZQUM5QixDQUFDLENBQUMsRUFBRSxDQUFBO0lBQ1IsQ0FBQzs7QUF2Q0gsd0JBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmxvY2tQdWJsaWNBY2Nlc3MsXG4gIEJ1Y2tldEVuY3J5cHRpb24sXG4gIEJ1Y2tldFByb3BzLFxuICBCdWNrZXQgYXMgUzNCdWNrZXRcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJ1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cydcblxuLyoqXG4gKiBDb21wbGlhbnQgQnVja2V0UHJvcHMuIENhbiBiZSBtYW51YWxseSBzcHJlYWQgaW50byBhIEJ1Y2tldCBjb25zdHJ1Y3Rvci5cbiAqXG4gKiBTZWUgUkVBRE1FIGZvciB1c2FnZSBleGFtcGxlc1xuICovXG5leHBvcnQgY29uc3QgZGVmYXVsdEJ1Y2tldFByb3BzOiBCdWNrZXRQcm9wcyA9IHtcbiAgZW5mb3JjZVNTTDogdHJ1ZSxcbiAgYmxvY2tQdWJsaWNBY2Nlc3M6IEJsb2NrUHVibGljQWNjZXNzLkJMT0NLX0FMTCxcbiAgZW5jcnlwdGlvbjogQnVja2V0RW5jcnlwdGlvbi5TM19NQU5BR0VEXG59XG5cbi8qKlxuICogQ29tcGxpYW50IFMzIEJ1Y2tldC5cbiAqXG4gKiBTZWUgUkVBRE1FIGZvciB1c2FnZSBleGFtcGxlc1xuICovXG5leHBvcnQgY2xhc3MgQnVja2V0IGV4dGVuZHMgUzNCdWNrZXQge1xuICBwcm90ZWN0ZWQgY2FsY3VsYXRlZFByb3BzOiBCdWNrZXRQcm9wc1xuICBjb25zdHJ1Y3RvciAoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBCdWNrZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4uZGVmYXVsdEJ1Y2tldFByb3BzLFxuICAgICAgLi4ucHJvcHNcbiAgICB9KVxuICAgIHRoaXMuY2FsY3VsYXRlZFByb3BzID0ge1xuICAgICAgLi4uZGVmYXVsdEJ1Y2tldFByb3BzLFxuICAgICAgLi4ucHJvcHNcbiAgICB9XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4ge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgIC4uLnRoaXMuY2hlY2tTc2woKSxcbiAgICAgICAgICAuLi50aGlzLmNoZWNrUHVibGljQWNjZXNzKCksXG4gICAgICAgICAgLi4udGhpcy5jaGVja0VuY3J5cHRpb24oKVxuICAgICAgICBdXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHByb3RlY3RlZCBjaGVja1NzbCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FsY3VsYXRlZFByb3BzLmVuZm9yY2VTU0xcbiAgICAgID8gW11cbiAgICAgIDogWydlbmZvcmNlU1NMIG11c3QgYmUgdHJ1ZSddXG4gIH1cblxuICBwcm90ZWN0ZWQgY2hlY2tQdWJsaWNBY2Nlc3MgKCkge1xuICAgIHJldHVybiB0aGlzLmNhbGN1bGF0ZWRQcm9wcy5ibG9ja1B1YmxpY0FjY2VzcyAhPT0gQmxvY2tQdWJsaWNBY2Nlc3MuQkxPQ0tfQUxMXG4gICAgICA/IFsnYmxvY2tQdWJsaWNBY2Nlc3MgbXVzdCBiZSBCTE9DS19BTEwnXVxuICAgICAgOiBbXVxuICB9XG5cbiAgcHJvdGVjdGVkIGNoZWNrRW5jcnlwdGlvbiAoKSB7XG4gICAgcmV0dXJuICghdGhpcy5jYWxjdWxhdGVkUHJvcHMuZW5jcnlwdGlvbiB8fCB0aGlzLmNhbGN1bGF0ZWRQcm9wcy5lbmNyeXB0aW9uID09PSBCdWNrZXRFbmNyeXB0aW9uLlVORU5DUllQVEVEKVxuICAgICAgPyBbJ2J1Y2tldCBtdXN0IGJlIGVuY3J5cHRlZCddXG4gICAgICA6IFtdXG4gIH1cbn1cbiJdfQ==