UNPKG

image-scanner-with-trivy

Version:

Scan container images with Trivy in CDK deployment

97 lines 12.2 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.ScanLogsOutput = exports.SbomFormat = exports.ScanLogsOutputType = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); /** * Enum for ScanLogsOutputType */ var ScanLogsOutputType; (function (ScanLogsOutputType) { /** * Output scan logs to CloudWatch Logs. */ ScanLogsOutputType["CLOUDWATCH_LOGS"] = "cloudWatchLogs"; /** * Output scan logs to S3 bucket. */ ScanLogsOutputType["S3"] = "s3"; })(ScanLogsOutputType || (exports.ScanLogsOutputType = ScanLogsOutputType = {})); /** * SBOM (Software Bill of Materials) output format for Trivy scans. */ var SbomFormat; (function (SbomFormat) { /** * CycloneDX JSON format. */ SbomFormat["CYCLONEDX"] = "cyclonedx"; /** * SPDX JSON format. */ SbomFormat["SPDX_JSON"] = "spdx-json"; /** * SPDX Tag-Value format (human-readable). */ SbomFormat["SPDX"] = "spdx"; })(SbomFormat || (exports.SbomFormat = SbomFormat = {})); /** * Represents the output of the scan logs. */ class ScanLogsOutput { /** * Scan logs output to CloudWatch Logs log group. * * **Note on Large Scan Results**: CloudWatch Logs has a limit of 1 MB per log event. * If Trivy scan results exceed this limit, they will be automatically * split into multiple log events. Each chunk will be prefixed with `[part X/Y]` to * indicate the sequence, ensuring no data loss while staying within CloudWatch Logs quotas. * **For large scan results, we recommend using S3 output instead** to avoid fragmentation * and make it easier to view complete results. */ static cloudWatchLogs(options) { return new CloudWatchLogsOutput(options); } /** * Scan logs output to S3 bucket. */ static s3(options) { return new S3Output(options); } } exports.ScanLogsOutput = ScanLogsOutput; _a = JSII_RTTI_SYMBOL_1; ScanLogsOutput[_a] = { fqn: "image-scanner-with-trivy.ScanLogsOutput", version: "2.4.3" }; class CloudWatchLogsOutput extends ScanLogsOutput { constructor(options) { super(); this.logGroup = options.logGroup; } bind(grantee) { // Most Lambdas are granted AWSLambdaBasicExecutionRole and can write to any CloudWatch Logs. // However, just in case AWSLambdaBasicExecutionRole is not granted, allow writing to CloudWatch Logs. this.logGroup.grantWrite(grantee); return { type: ScanLogsOutputType.CLOUDWATCH_LOGS, logGroupName: this.logGroup.logGroupName, }; } } class S3Output extends ScanLogsOutput { constructor(options) { super(); this.bucket = options.bucket; this.prefix = options.prefix; this.sbomFormat = options.sbomFormat; } bind(grantee) { this.bucket.grantWrite(grantee); return { type: ScanLogsOutputType.S3, bucketName: this.bucket.bucketName, prefix: this.prefix, sbomFormat: this.sbomFormat, }; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi1sb2dzLW91dHB1dC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zY2FuLWxvZ3Mtb3V0cHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBSUE7O0dBRUc7QUFDSCxJQUFZLGtCQVNYO0FBVEQsV0FBWSxrQkFBa0I7SUFDNUI7O09BRUc7SUFDSCx3REFBa0MsQ0FBQTtJQUNsQzs7T0FFRztJQUNILCtCQUFTLENBQUE7QUFDWCxDQUFDLEVBVFcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFTN0I7QUFFRDs7R0FFRztBQUNILElBQVksVUFhWDtBQWJELFdBQVksVUFBVTtJQUNwQjs7T0FFRztJQUNILHFDQUF1QixDQUFBO0lBQ3ZCOztPQUVHO0lBQ0gscUNBQXVCLENBQUE7SUFDdkI7O09BRUc7SUFDSCwyQkFBYSxDQUFBO0FBQ2YsQ0FBQyxFQWJXLFVBQVUsMEJBQVYsVUFBVSxRQWFyQjtBQStFRDs7R0FFRztBQUNILE1BQXNCLGNBQWM7SUFDbEM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLGNBQWMsQ0FBQyxPQUFrQztRQUM3RCxPQUFPLElBQUksb0JBQW9CLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxPQUFzQjtRQUNyQyxPQUFPLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7O0FBcEJILHdDQTBCQzs7O0FBRUQsTUFBTSxvQkFBcUIsU0FBUSxjQUFjO0lBTS9DLFlBQVksT0FBa0M7UUFDNUMsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7SUFDbkMsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUFtQjtRQUM3Qiw2RkFBNkY7UUFDN0Ysc0dBQXNHO1FBQ3RHLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxDLE9BQU87WUFDTCxJQUFJLEVBQUUsa0JBQWtCLENBQUMsZUFBZTtZQUN4QyxZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO1NBQ3pDLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFNLFFBQVMsU0FBUSxjQUFjO0lBY25DLFlBQVksT0FBc0I7UUFDaEMsS0FBSyxFQUFFLENBQUM7UUFFUixJQUFJLENBQUMsTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sSUFBSSxDQUFDLE9BQW1CO1FBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWhDLE9BQU87WUFDTCxJQUFJLEVBQUUsa0JBQWtCLENBQUMsRUFBRTtZQUMzQixVQUFVLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ2xDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7U0FDNUIsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElHcmFudGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuXG4vKipcbiAqIEVudW0gZm9yIFNjYW5Mb2dzT3V0cHV0VHlwZVxuICovXG5leHBvcnQgZW51bSBTY2FuTG9nc091dHB1dFR5cGUge1xuICAvKipcbiAgICogT3V0cHV0IHNjYW4gbG9ncyB0byBDbG91ZFdhdGNoIExvZ3MuXG4gICAqL1xuICBDTE9VRFdBVENIX0xPR1MgPSAnY2xvdWRXYXRjaExvZ3MnLFxuICAvKipcbiAgICogT3V0cHV0IHNjYW4gbG9ncyB0byBTMyBidWNrZXQuXG4gICAqL1xuICBTMyA9ICdzMycsXG59XG5cbi8qKlxuICogU0JPTSAoU29mdHdhcmUgQmlsbCBvZiBNYXRlcmlhbHMpIG91dHB1dCBmb3JtYXQgZm9yIFRyaXZ5IHNjYW5zLlxuICovXG5leHBvcnQgZW51bSBTYm9tRm9ybWF0IHtcbiAgLyoqXG4gICAqIEN5Y2xvbmVEWCBKU09OIGZvcm1hdC5cbiAgICovXG4gIENZQ0xPTkVEWCA9ICdjeWNsb25lZHgnLFxuICAvKipcbiAgICogU1BEWCBKU09OIGZvcm1hdC5cbiAgICovXG4gIFNQRFhfSlNPTiA9ICdzcGR4LWpzb24nLFxuICAvKipcbiAgICogU1BEWCBUYWctVmFsdWUgZm9ybWF0IChodW1hbi1yZWFkYWJsZSkuXG4gICAqL1xuICBTUERYID0gJ3NwZHgnLFxufVxuXG4vKipcbiAqIE91dHB1dCBjb25maWd1cmF0aW9ucyBmb3Igc2NhbiBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNjYW5Mb2dzT3V0cHV0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzY2FuIGxvZ3Mgb3V0cHV0LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogU2NhbkxvZ3NPdXRwdXRUeXBlO1xufVxuXG4vKipcbiAqIE91dHB1dCBjb25maWd1cmF0aW9uIGZvciBzY2FuIGxvZ3MgdG8gQ2xvdWRXYXRjaCBMb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsb3VkV2F0Y2hMb2dzT3V0cHV0T3B0aW9ucyBleHRlbmRzIFNjYW5Mb2dzT3V0cHV0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgQ2xvdWRXYXRjaCBMb2dzIGxvZyBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZm9yIHNjYW4gbG9ncyBvdXRwdXQgdG8gQ2xvdWRXYXRjaCBMb2dzIGxvZyBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbG91ZFdhdGNoTG9nc091dHB1dFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gb3V0cHV0IHNjYW4gbG9ncy5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBJTG9nR3JvdXA7XG59XG5cbi8qKlxuICogT3V0cHV0IGNvbmZpZ3VyYXRpb24gZm9yIHNjYW4gbG9ncyB0byBTMyBidWNrZXQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUzNPdXRwdXRPcHRpb25zIGV4dGVuZHMgU2NhbkxvZ3NPdXRwdXRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBTMyBidWNrZXQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcmVmaXggZm9yIFMzIG9iamVjdHMuXG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBTQk9NIGZvcm1hdCB0byBvdXRwdXQgaW4gYWRkaXRpb24gdG8gc2NhbiBsb2dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIFNCT00gb3V0cHV0XG4gICAqL1xuICByZWFkb25seSBzYm9tRm9ybWF0PzogU2JvbUZvcm1hdDtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBzY2FuIGxvZ3Mgb3V0cHV0IHRvIFMzIGJ1Y2tldC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM091dHB1dFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgdG8gb3V0cHV0IHNjYW4gbG9ncy5cbiAgICovXG4gIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldDtcbiAgLyoqXG4gICAqIE9wdGlvbmFsIHByZWZpeCBmb3IgUzMgb2JqZWN0cy5cbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIFNCT00gZm9ybWF0IHRvIG91dHB1dCBpbiBhZGRpdGlvbiB0byBzY2FuIGxvZ3MuXG4gICAqIFdoZW4gc3BlY2lmaWVkLCBTQk9NIHdpbGwgYmUgZ2VuZXJhdGVkIGFuZCB1cGxvYWRlZCB0byBTMy5cbiAgICpcbiAgICogKipOb3RlKio6IFNCT00gZ2VuZXJhdGlvbiBpcyBub3QgYSB2dWxuZXJhYmlsaXR5IHNjYW4uIFdoZW4gdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkOlxuICAgKiAtIFRyaXZ5IGdlbmVyYXRlcyBhIFNvZnR3YXJlIEJpbGwgb2YgTWF0ZXJpYWxzIChTQk9NKSBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgYSB2dWxuZXJhYmlsaXR5IHNjYW5cbiAgICogLSBUaGUgc2NhbiB3aWxsIG5vdCBmYWlsIHJlZ2FyZGxlc3Mgb2YgdGhlIGBmYWlsT25WdWxuZXJhYmlsaXR5YCBzZXR0aW5nXG4gICAqIC0gU05TIG5vdGlmaWNhdGlvbnMgKGB2dWxuc05vdGlmaWNhdGlvblRvcGljYCkgd2lsbCBub3QgYmUgc2VudCBzaW5jZSBubyB2dWxuZXJhYmlsaXRpZXMgYXJlIGRldGVjdGVkXG4gICAqIC0gVGhlIFNCT00gZmlsZSBhbmQgc3RkZXJyIGxvZ3Mgd2lsbCBiZSB1cGxvYWRlZCB0byBTM1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIFNCT00gb3V0cHV0XG4gICAqL1xuICByZWFkb25seSBzYm9tRm9ybWF0PzogU2JvbUZvcm1hdDtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBvdXRwdXQgb2YgdGhlIHNjYW4gbG9ncy5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNjYW5Mb2dzT3V0cHV0IHtcbiAgLyoqXG4gICAqIFNjYW4gbG9ncyBvdXRwdXQgdG8gQ2xvdWRXYXRjaCBMb2dzIGxvZyBncm91cC5cbiAgICpcbiAgICogKipOb3RlIG9uIExhcmdlIFNjYW4gUmVzdWx0cyoqOiBDbG91ZFdhdGNoIExvZ3MgaGFzIGEgbGltaXQgb2YgMSBNQiBwZXIgbG9nIGV2ZW50LlxuICAgKiBJZiBUcml2eSBzY2FuIHJlc3VsdHMgZXhjZWVkIHRoaXMgbGltaXQsIHRoZXkgd2lsbCBiZSBhdXRvbWF0aWNhbGx5XG4gICAqIHNwbGl0IGludG8gbXVsdGlwbGUgbG9nIGV2ZW50cy4gRWFjaCBjaHVuayB3aWxsIGJlIHByZWZpeGVkIHdpdGggYFtwYXJ0IFgvWV1gIHRvXG4gICAqIGluZGljYXRlIHRoZSBzZXF1ZW5jZSwgZW5zdXJpbmcgbm8gZGF0YSBsb3NzIHdoaWxlIHN0YXlpbmcgd2l0aGluIENsb3VkV2F0Y2ggTG9ncyBxdW90YXMuXG4gICAqICoqRm9yIGxhcmdlIHNjYW4gcmVzdWx0cywgd2UgcmVjb21tZW5kIHVzaW5nIFMzIG91dHB1dCBpbnN0ZWFkKiogdG8gYXZvaWQgZnJhZ21lbnRhdGlvblxuICAgKiBhbmQgbWFrZSBpdCBlYXNpZXIgdG8gdmlldyBjb21wbGV0ZSByZXN1bHRzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjbG91ZFdhdGNoTG9ncyhvcHRpb25zOiBDbG91ZFdhdGNoTG9nc091dHB1dFByb3BzKTogU2NhbkxvZ3NPdXRwdXQge1xuICAgIHJldHVybiBuZXcgQ2xvdWRXYXRjaExvZ3NPdXRwdXQob3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogU2NhbiBsb2dzIG91dHB1dCB0byBTMyBidWNrZXQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHMzKG9wdGlvbnM6IFMzT3V0cHV0UHJvcHMpOiBTY2FuTG9nc091dHB1dCB7XG4gICAgcmV0dXJuIG5ldyBTM091dHB1dChvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBvdXRwdXQgY29uZmlndXJhdGlvbiBmb3Igc2NhbiBsb2dzLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJpbmQoZ3JhbnRlZTogSUdyYW50YWJsZSk6IFNjYW5Mb2dzT3V0cHV0T3B0aW9ucztcbn1cblxuY2xhc3MgQ2xvdWRXYXRjaExvZ3NPdXRwdXQgZXh0ZW5kcyBTY2FuTG9nc091dHB1dCB7XG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIHRvIG91dHB1dCBzY2FuIGxvZ3MuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGxvZ0dyb3VwOiBJTG9nR3JvdXA7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQ2xvdWRXYXRjaExvZ3NPdXRwdXRQcm9wcykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmxvZ0dyb3VwID0gb3B0aW9ucy5sb2dHcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKGdyYW50ZWU6IElHcmFudGFibGUpOiBDbG91ZFdhdGNoTG9nc091dHB1dE9wdGlvbnMge1xuICAgIC8vIE1vc3QgTGFtYmRhcyBhcmUgZ3JhbnRlZCBBV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUgYW5kIGNhbiB3cml0ZSB0byBhbnkgQ2xvdWRXYXRjaCBMb2dzLlxuICAgIC8vIEhvd2V2ZXIsIGp1c3QgaW4gY2FzZSBBV1NMYW1iZGFCYXNpY0V4ZWN1dGlvblJvbGUgaXMgbm90IGdyYW50ZWQsIGFsbG93IHdyaXRpbmcgdG8gQ2xvdWRXYXRjaCBMb2dzLlxuICAgIHRoaXMubG9nR3JvdXAuZ3JhbnRXcml0ZShncmFudGVlKTtcblxuICAgIHJldHVybiB7XG4gICAgICB0eXBlOiBTY2FuTG9nc091dHB1dFR5cGUuQ0xPVURXQVRDSF9MT0dTLFxuICAgICAgbG9nR3JvdXBOYW1lOiB0aGlzLmxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSxcbiAgICB9O1xuICB9XG59XG5cbmNsYXNzIFMzT3V0cHV0IGV4dGVuZHMgU2NhbkxvZ3NPdXRwdXQge1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB0byBvdXRwdXQgc2NhbiBsb2dzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBwcmVmaXggZm9yIFMzIG9iamVjdHMuXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbiAgLyoqXG4gICAqIE9wdGlvbmFsIFNCT00gZm9ybWF0LlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBzYm9tRm9ybWF0PzogU2JvbUZvcm1hdDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTM091dHB1dFByb3BzKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuYnVja2V0ID0gb3B0aW9ucy5idWNrZXQ7XG4gICAgdGhpcy5wcmVmaXggPSBvcHRpb25zLnByZWZpeDtcbiAgICB0aGlzLnNib21Gb3JtYXQgPSBvcHRpb25zLnNib21Gb3JtYXQ7XG4gIH1cblxuICBwdWJsaWMgYmluZChncmFudGVlOiBJR3JhbnRhYmxlKTogUzNPdXRwdXRPcHRpb25zIHtcbiAgICB0aGlzLmJ1Y2tldC5ncmFudFdyaXRlKGdyYW50ZWUpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFNjYW5Mb2dzT3V0cHV0VHlwZS5TMyxcbiAgICAgIGJ1Y2tldE5hbWU6IHRoaXMuYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICBwcmVmaXg6IHRoaXMucHJlZml4LFxuICAgICAgc2JvbUZvcm1hdDogdGhpcy5zYm9tRm9ybWF0LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==