UNPKG

@renovosolutions/cdk-library-crowdstrike-ingestion

Version:

A CDK library to ease repetetive construct creation for CrowdStrike data ingestion

62 lines 8.41 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.CrowdStrikeLogSubscription = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const constructs_1 = require("constructs"); ; /** * A construct that creates an CloudWatch log group filter subscription * for CrowdStrike data ingestion, along with an IAM role for access. */ class CrowdStrikeLogSubscription extends constructs_1.Construct { /** * Constructs a new CrowdStrikeLogSubscription. * * @param scope The scope in which this construct is defined. * @param id The scoped construct ID. * @param props The properties for the subscription. */ constructor(scope, id, props) { super(scope, id); this.logGroup = props.logGroup; // If a role is provided, use it; otherwise, create a new role. if (props.role) { this.role = props.role; } else { this.role = new aws_cdk_lib_1.aws_iam.Role(this, 'Role', { assumedBy: new aws_cdk_lib_1.aws_iam.ServicePrincipal(`logs.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`), inlinePolicies: { CrossAccountPolicy: new aws_cdk_lib_1.aws_iam.PolicyDocument({ statements: [ new aws_cdk_lib_1.aws_iam.PolicyStatement({ effect: aws_cdk_lib_1.aws_iam.Effect.ALLOW, actions: [ 'logs:PutSubscriptionFilter', 'logs:DescribeSubscriptionFilters', ], resources: [props.logDestinationArn], }), ], }), }, }); } /** * Create the subscription filter for the log group. * The default filter will match all log events. */ this.subscriptionFilter = new aws_cdk_lib_1.aws_logs.CfnSubscriptionFilter(this, 'SubscriptionFilter', { logGroupName: this.logGroup.logGroupName, filterPattern: props.filterPattern || '%.%', destinationArn: props.logDestinationArn, roleArn: this.role.roleArn, }); } } exports.CrowdStrikeLogSubscription = CrowdStrikeLogSubscription; _a = JSII_RTTI_SYMBOL_1; CrowdStrikeLogSubscription[_a] = { fqn: "@renovosolutions/cdk-library-crowdstrike-ingestion.CrowdStrikeLogSubscription", version: "0.0.3" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nc3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ3N1YnNjcmlwdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUlxQjtBQUNyQiwyQ0FBdUM7QUEyQnRDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFhLDBCQUEyQixTQUFRLHNCQUFTO0lBY3ZEOzs7Ozs7T0FNRztJQUNILFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0M7UUFDOUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUM7UUFFL0IsK0RBQStEO1FBQy9ELElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2YsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1FBQ3pCLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLHFCQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUU7Z0JBQ3JDLFNBQVMsRUFBRSxJQUFJLHFCQUFHLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLGdCQUFnQixDQUFDO2dCQUNsRixjQUFjLEVBQUU7b0JBQ2Qsa0JBQWtCLEVBQUUsSUFBSSxxQkFBRyxDQUFDLGNBQWMsQ0FBQzt3QkFDekMsVUFBVSxFQUFFOzRCQUNWLElBQUkscUJBQUcsQ0FBQyxlQUFlLENBQUM7Z0NBQ3RCLE1BQU0sRUFBRSxxQkFBRyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dDQUN4QixPQUFPLEVBQUU7b0NBQ1AsNEJBQTRCO29DQUM1QixrQ0FBa0M7aUNBQ25DO2dDQUNELFNBQVMsRUFBRSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQzs2QkFDckMsQ0FBQzt5QkFDSDtxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVEOzs7V0FHRztRQUNILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLHNCQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ25GLFlBQVksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFlBQVk7WUFDeEMsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSztZQUMzQyxjQUFjLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUN2QyxPQUFPLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1NBQzNCLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBM0RILGdFQTREQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIFN0YWNrLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2xvZ3MgYXMgbG9ncyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgdGhlIENyb3dkU3RyaWtlTG9nU3Vic2NyaXB0aW9uIGNvbnN0cnVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDcm93ZFN0cmlrZUxvZ1N1YnNjcmlwdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsb2cgZ3JvdXAgdG8gY3JlYXRlIHRoZSBzdWJzY3JpcHRpb24gZmlsdGVyIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cDtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGxvZyBkZXN0aW5hdGlvbiBsb2dpY2FsIHJlc291cmNlLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9nRGVzdGluYXRpb25Bcm46IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBmaWx0ZXIgcGF0dGVybiBmb3IgdGhlIHN1YnNjcmlwdGlvbiBmaWx0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJyUuJScgKG1hdGNoZXMgYWxsIGxvZyBldmVudHMpLlxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyUGF0dGVybj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IENsb3VkV2F0Y2ggTG9ncyB3aWxsIGFzc3VtZSB0byBjcmVhdGUgdGhlIHN1YnNjcmlwdGlvbi5cbiAgICogSWYgbm90IHByb3ZpZGVkLCBhIG5ldyByb2xlIHdpbGwgYmUgY3JlYXRlZCB3aXRoIHRoZSBuZWNlc3NhcnkgcGVybWlzc2lvbnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBuZXcgcm9sZSB3aWxsIGJlIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufTtcblxuLyoqXG4gKiBBIGNvbnN0cnVjdCB0aGF0IGNyZWF0ZXMgYW4gQ2xvdWRXYXRjaCBsb2cgZ3JvdXAgZmlsdGVyIHN1YnNjcmlwdGlvblxuICogZm9yIENyb3dkU3RyaWtlIGRhdGEgaW5nZXN0aW9uLCBhbG9uZyB3aXRoIGFuIElBTSByb2xlIGZvciBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBDcm93ZFN0cmlrZUxvZ1N1YnNjcmlwdGlvbiBleHRlbmRzIENvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBUaGUgbG9nIGdyb3VwIGZvciB3aGljaCB0aGUgc3Vic2NyaXB0aW9uIGZpbHRlciBpcyBjcmVhdGVkLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGxvZ0dyb3VwOiBsb2dzLklMb2dHcm91cDtcbiAgLyoqXG4gICAqIFRoZSBzdWJzY3JpcHRpb24gZmlsdGVyIGZvciB0aGUgbG9nIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1YnNjcmlwdGlvbkZpbHRlcjogbG9ncy5DZm5TdWJzY3JpcHRpb25GaWx0ZXI7XG4gIC8qKlxuICAgKiBUaGUgSUFNIHJvbGUgdGhhdCBDbG91ZFdhdGNoIExvZ3Mgd2lsbCBhc3N1bWUgdG8gY3JlYXRlIHRoZSBzdWJzY3JpcHRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RzIGEgbmV3IENyb3dkU3RyaWtlTG9nU3Vic2NyaXB0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIGluIHdoaWNoIHRoaXMgY29uc3RydWN0IGlzIGRlZmluZWQuXG4gICAqIEBwYXJhbSBpZCBUaGUgc2NvcGVkIGNvbnN0cnVjdCBJRC5cbiAgICogQHBhcmFtIHByb3BzIFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgc3Vic2NyaXB0aW9uLlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENyb3dkU3RyaWtlTG9nU3Vic2NyaXB0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5sb2dHcm91cCA9IHByb3BzLmxvZ0dyb3VwO1xuXG4gICAgLy8gSWYgYSByb2xlIGlzIHByb3ZpZGVkLCB1c2UgaXQ7IG90aGVyd2lzZSwgY3JlYXRlIGEgbmV3IHJvbGUuXG4gICAgaWYgKHByb3BzLnJvbGUpIHtcbiAgICAgIHRoaXMucm9sZSA9IHByb3BzLnJvbGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnUm9sZScsIHtcbiAgICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoYGxvZ3MuJHtTdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gKSxcbiAgICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgICBDcm9zc0FjY291bnRQb2xpY3k6IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQoe1xuICAgICAgICAgICAgc3RhdGVtZW50czogW1xuICAgICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBpYW0uRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICdsb2dzOlB1dFN1YnNjcmlwdGlvbkZpbHRlcicsXG4gICAgICAgICAgICAgICAgICAnbG9nczpEZXNjcmliZVN1YnNjcmlwdGlvbkZpbHRlcnMnLFxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbcHJvcHMubG9nRGVzdGluYXRpb25Bcm5dLFxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgdGhlIHN1YnNjcmlwdGlvbiBmaWx0ZXIgZm9yIHRoZSBsb2cgZ3JvdXAuXG4gICAgICogVGhlIGRlZmF1bHQgZmlsdGVyIHdpbGwgbWF0Y2ggYWxsIGxvZyBldmVudHMuXG4gICAgICovXG4gICAgdGhpcy5zdWJzY3JpcHRpb25GaWx0ZXIgPSBuZXcgbG9ncy5DZm5TdWJzY3JpcHRpb25GaWx0ZXIodGhpcywgJ1N1YnNjcmlwdGlvbkZpbHRlcicsIHtcbiAgICAgIGxvZ0dyb3VwTmFtZTogdGhpcy5sb2dHcm91cC5sb2dHcm91cE5hbWUsXG4gICAgICBmaWx0ZXJQYXR0ZXJuOiBwcm9wcy5maWx0ZXJQYXR0ZXJuIHx8ICclLiUnLFxuICAgICAgZGVzdGluYXRpb25Bcm46IHByb3BzLmxvZ0Rlc3RpbmF0aW9uQXJuLFxuICAgICAgcm9sZUFybjogdGhpcy5yb2xlLnJvbGVBcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==