@mavogel/cdk-vscode-server 0.0.97 → 0.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +5331 -271
- package/API.md +6 -6
- package/CLAUDE.md +1 -1
- package/docs/plans/2026-08-09-cdk-nag-v3-migration.md +14 -10
- package/lib/idle-monitor/idle-monitor-function.js +36 -3
- package/lib/idle-monitor/idle-monitor.d.ts +4 -4
- package/lib/idle-monitor/idle-monitor.js +57 -23
- package/lib/idle-monitor-enabler/idle-monitor-enabler-function.js +36 -3
- package/lib/idle-monitor-enabler/idle-monitor-enabler.js +19 -22
- package/lib/idle-monitor-enabler/idle-monitor-enabler.lambda.js +1 -1
- package/lib/installer/installer-function.js +36 -3
- package/lib/installer/installer.js +67 -34
- package/lib/prefixlist-retriever/prefixlist-retriever.js +6 -8
- package/lib/secret-retriever/secret-retriever-function.js +36 -3
- package/lib/secret-retriever/secret-retriever.js +35 -26
- package/lib/suppress-nags.d.ts +2 -0
- package/lib/suppress-nags.js +26 -8
- package/lib/vscode-server.js +158 -99
- package/package.json +16 -17
- package/renovate.json5 +1 -0
|
@@ -6,11 +6,11 @@ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
|
6
6
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
7
|
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
8
8
|
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
9
|
-
const cdk_nag_1 = require("cdk-nag");
|
|
10
9
|
const constructs_1 = require("constructs");
|
|
11
10
|
// copied with grace from here until cdk supports it
|
|
12
11
|
// https://github.com/aws/aws-cdk/issues/15115#issuecomment-1665104687
|
|
13
12
|
class AwsManagedPrefixList extends constructs_1.Construct {
|
|
13
|
+
prefixList;
|
|
14
14
|
constructor(scope, id, { name }) {
|
|
15
15
|
super(scope, id);
|
|
16
16
|
const cr = new custom_resources_1.AwsCustomResource(this, 'GetPrefixListId', {
|
|
@@ -43,15 +43,13 @@ class AwsManagedPrefixList extends constructs_1.Construct {
|
|
|
43
43
|
}),
|
|
44
44
|
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
45
45
|
});
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
},
|
|
51
|
-
], true);
|
|
46
|
+
aws_cdk_lib_1.Validations.of(cr).acknowledge({
|
|
47
|
+
id: 'AwsSolutions-IAM5[Resource::*]',
|
|
48
|
+
reason: 'For this provider wildcards are fine',
|
|
49
|
+
});
|
|
52
50
|
const prefixListId = cr.getResponseField('PrefixLists.0.PrefixListId');
|
|
53
51
|
this.prefixList = aws_ec2_1.PrefixList.fromPrefixListId(this, 'PrefixList', prefixListId);
|
|
54
52
|
}
|
|
55
53
|
}
|
|
56
54
|
exports.AwsManagedPrefixList = AwsManagedPrefixList;
|
|
57
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZml4bGlzdC1yZXRyaWV2ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcHJlZml4bGlzdC1yZXRyaWV2ZXIvcHJlZml4bGlzdC1yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQXlEO0FBQ3pELGlEQUE4RDtBQUM5RCxpREFLNkI7QUFDN0IsbURBQWdEO0FBQ2hELG1FQUlzQztBQUN0QywyQ0FBdUM7QUFhdkMsb0RBQW9EO0FBQ3BELHNFQUFzRTtBQUN0RSxNQUFhLG9CQUFxQixTQUFRLHNCQUFTO0lBQ2pDLFVBQVUsQ0FBYztJQUV4QyxZQUNFLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixFQUFFLElBQUksRUFBNkI7UUFFbkMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLEVBQUUsR0FBRyxJQUFJLG9DQUFpQixDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN4RCxRQUFRLEVBQUUsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRTtnQkFDdEQsYUFBYSxFQUFFLDJCQUFhLENBQUMsT0FBTztnQkFDcEMsU0FBUyxFQUFFLENBQUM7YUFDYixDQUFDO1lBQ0YsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLE1BQU0sRUFBRSxtQ0FBbUM7Z0JBQzNDLFVBQVUsRUFBRTtvQkFDVixPQUFPLEVBQUU7d0JBQ1A7NEJBQ0UsSUFBSSxFQUFFLGtCQUFrQjs0QkFDeEIsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDO3lCQUNmO3FCQUNGO2lCQUNGO2dCQUNELGtCQUFrQixFQUFFLHFDQUFrQixDQUFDLEVBQUUsQ0FDdkMsR0FBRyxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUN2QzthQUNGO1lBQ0QsTUFBTSxFQUFFLDBDQUF1QixDQUFDLGNBQWMsQ0FBQztnQkFDN0MsSUFBSSx5QkFBZSxDQUFDO29CQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO29CQUNwQixPQUFPLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztvQkFDM0MsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2lCQUNqQixDQUFDO2FBQ0gsQ0FBQztZQUNGLElBQUksRUFBRSxJQUFJLGNBQUksQ0FBQyxJQUFJLEVBQUUscUJBQXFCLEVBQUU7Z0JBQzFDLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLHNCQUFzQixDQUFDO2FBQ3hELENBQUM7WUFDRixhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1NBQ3JDLENBQUMsQ0FBQztRQUNILHlCQUFXLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUM3QixFQUFFLEVBQUUsZ0NBQWdDO1lBQ3BDLE1BQU0sRUFBRSxzQ0FBc0M7U0FDL0MsQ0FBQyxDQUFDO1FBRUgsTUFBTSxZQUFZLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFFdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLGdCQUFnQixDQUMzQyxJQUFJLEVBQ0osWUFBWSxFQUNaLFlBQVksQ0FDYixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBdkRELG9EQXVEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3ksIFZhbGlkYXRpb25zIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVByZWZpeExpc3QsIFByZWZpeExpc3QgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7XG4gIEVmZmVjdCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IExvZ0dyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtcbiAgQXdzQ3VzdG9tUmVzb3VyY2UsXG4gIEF3c0N1c3RvbVJlc291cmNlUG9saWN5LFxuICBQaHlzaWNhbFJlc291cmNlSWQsXG59IGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXdzTWFuYWdlZFByZWZpeExpc3RQcm9wcyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBhd3MgbWFuYWdlZCBwcmVmaXggbGlzdC5cbiAgICogU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvd29ya2luZy13aXRoLWF3cy1tYW5hZ2VkLXByZWZpeC1saXN0cy5odG1sI2F2YWlsYWJsZS1hd3MtbWFuYWdlZC1wcmVmaXgtbGlzdHNcbiAgICogZWcuIGNvbS5hbWF6b25hd3MuZ2xvYmFsLmNsb3VkZnJvbnQub3JpZ2luLWZhY2luZ1xuICAgKlxuICAgKiBzZWUgYWxsIHZpYSBhd3MgZWMyIGRlc2NyaWJlLW1hbmFnZWQtcHJlZml4LWxpc3RzICAtLXJlZ2lvbiA8UkVHSU9OPiB8IGpxIC1yICcuUHJlZml4TGlzdHNbXSB8IHNlbGVjdCAoLlByZWZpeExpc3ROYW1lID09IFwiY29tLmFtYXpvbmF3cy5nbG9iYWwuY2xvdWRmcm9udC5vcmlnaW4tZmFjaW5nXCIpIHwgLlByZWZpeExpc3RJZCdcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbn1cblxuLy8gY29waWVkIHdpdGggZ3JhY2UgZnJvbSBoZXJlIHVudGlsIGNkayBzdXBwb3J0cyBpdFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xNTExNSNpc3N1ZWNvbW1lbnQtMTY2NTEwNDY4N1xuZXhwb3J0IGNsYXNzIEF3c01hbmFnZWRQcmVmaXhMaXN0IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHByZWZpeExpc3Q6IElQcmVmaXhMaXN0O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICB7IG5hbWUgfTogQXdzTWFuYWdlZFByZWZpeExpc3RQcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGNyID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsICdHZXRQcmVmaXhMaXN0SWQnLCB7XG4gICAgICBsb2dHcm91cDogbmV3IExvZ0dyb3VwKHRoaXMsICdHZXRQcmVmaXhMaXN0SWRMb2dHcm91cCcsIHtcbiAgICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5ERVNUUk9ZLFxuICAgICAgICByZXRlbnRpb246IDEsXG4gICAgICB9KSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6ICdAYXdzLXNkay9jbGllbnQtZWMyJyxcbiAgICAgICAgYWN0aW9uOiAnRGVzY3JpYmVNYW5hZ2VkUHJlZml4TGlzdHNDb21tYW5kJyxcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIEZpbHRlcnM6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgTmFtZTogJ3ByZWZpeC1saXN0LW5hbWUnLFxuICAgICAgICAgICAgICBWYWx1ZXM6IFtuYW1lXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSxcbiAgICAgICAgcGh5c2ljYWxSZXNvdXJjZUlkOiBQaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYCR7aWR9LSR7dGhpcy5ub2RlLmFkZHIuc2xpY2UoMCwgMTYpfWAsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgcG9saWN5OiBBd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgIGFjdGlvbnM6IFsnZWMyOkRlc2NyaWJlTWFuYWdlZFByZWZpeExpc3RzJ10sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgfSksXG4gICAgICBdKSxcbiAgICAgIHJvbGU6IG5ldyBSb2xlKHRoaXMsICdHZXRQcmVmaXhMaXN0SWRSb2xlJywge1xuICAgICAgICBhc3N1bWVkQnk6IG5ldyBTZXJ2aWNlUHJpbmNpcGFsKCdsYW1iZGEuYW1hem9uYXdzLmNvbScpLFxuICAgICAgfSksXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1ksXG4gICAgfSk7XG4gICAgVmFsaWRhdGlvbnMub2YoY3IpLmFja25vd2xlZGdlKHtcbiAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTVbUmVzb3VyY2U6OipdJyxcbiAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgfSk7XG5cbiAgICBjb25zdCBwcmVmaXhMaXN0SWQgPSBjci5nZXRSZXNwb25zZUZpZWxkKCdQcmVmaXhMaXN0cy4wLlByZWZpeExpc3RJZCcpO1xuXG4gICAgdGhpcy5wcmVmaXhMaXN0ID0gUHJlZml4TGlzdC5mcm9tUHJlZml4TGlzdElkKFxuICAgICAgdGhpcyxcbiAgICAgICdQcmVmaXhMaXN0JyxcbiAgICAgIHByZWZpeExpc3RJZCxcbiAgICApO1xuICB9XG59XG4iXX0=
|
|
@@ -1,9 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.SecretRetrieverFunction = void 0;
|
|
4
37
|
// ~~ Generated by projen. To modify, edit .projenrc.ts and run "npx projen".
|
|
5
|
-
const path = require("path");
|
|
6
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const lambda = __importStar(require("aws-cdk-lib/aws-lambda"));
|
|
7
40
|
/**
|
|
8
41
|
* An AWS Lambda function which executes src/secret-retriever/secret-retriever.
|
|
9
42
|
*/
|
|
@@ -19,4 +52,4 @@ class SecretRetrieverFunction extends lambda.Function {
|
|
|
19
52
|
}
|
|
20
53
|
}
|
|
21
54
|
exports.SecretRetrieverFunction = SecretRetrieverFunction;
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci1mdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXItZnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkVBQTZFO0FBQzdFLDJDQUE2QjtBQUM3QiwrREFBaUQ7QUFTakQ7O0dBRUc7QUFDSCxNQUFhLHVCQUF3QixTQUFRLE1BQU0sQ0FBQyxRQUFRO0lBQzFELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0M7UUFDNUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsaURBQWlEO1lBQzlELEdBQUcsS0FBSztZQUNSLE9BQU8sRUFBRSxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDO1lBQ3RFLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSx1REFBdUQsQ0FBQyxDQUFDO1NBQzNHLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELDBEQVVDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gfn4gR2VuZXJhdGVkIGJ5IHByb2plbi4gVG8gbW9kaWZ5LCBlZGl0IC5wcm9qZW5yYy50cyBhbmQgcnVuIFwibnB4IHByb2plblwiLlxuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BzIGZvciBTZWNyZXRSZXRyaWV2ZXJGdW5jdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldFJldHJpZXZlckZ1bmN0aW9uUHJvcHMgZXh0ZW5kcyBsYW1iZGEuRnVuY3Rpb25PcHRpb25zIHtcbn1cblxuLyoqXG4gKiBBbiBBV1MgTGFtYmRhIGZ1bmN0aW9uIHdoaWNoIGV4ZWN1dGVzIHNyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIuXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNyZXRSZXRyaWV2ZXJGdW5jdGlvbiBleHRlbmRzIGxhbWJkYS5GdW5jdGlvbiB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogU2VjcmV0UmV0cmlldmVyRnVuY3Rpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgZGVzY3JpcHRpb246ICdzcmMvc2VjcmV0LXJldHJpZXZlci9zZWNyZXQtcmV0cmlldmVyLmxhbWJkYS50cycsXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHJ1bnRpbWU6IG5ldyBsYW1iZGEuUnVudGltZSgnbm9kZWpzMjQueCcsIGxhbWJkYS5SdW50aW1lRmFtaWx5Lk5PREVKUyksXG4gICAgICBoYW5kbGVyOiAnaW5kZXguaGFuZGxlcicsXG4gICAgICBjb2RlOiBsYW1iZGEuQ29kZS5mcm9tQXNzZXQocGF0aC5qb2luKF9fZGlybmFtZSwgJy4uLy4uL2Fzc2V0cy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIubGFtYmRhJykpLFxuICAgIH0pO1xuICB9XG59Il19
|
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SecretRetriever = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
5
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
5
6
|
const core_1 = require("aws-cdk-lib/core");
|
|
6
7
|
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
7
|
-
const cdk_nag_1 = require("cdk-nag");
|
|
8
8
|
const secret_retriever_function_1 = require("./secret-retriever-function");
|
|
9
|
+
const suppress_nags_1 = require("../suppress-nags");
|
|
10
|
+
// The AWSLambdaBasicExecutionRole ARN pattern is the same for every Lambda
|
|
11
|
+
// function using the default execution role, regardless of the consumer's
|
|
12
|
+
// own construct IDs -- safe to acknowledge literally.
|
|
13
|
+
const AWS_LAMBDA_BASIC_EXECUTION_ROLE_IAM4 = 'AwsSolutions-IAM4[Policy::arn:<AWS::Partition>:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole]';
|
|
9
14
|
class SecretRetriever {
|
|
10
15
|
static new(options) {
|
|
11
16
|
return new (class extends SecretRetriever {
|
|
@@ -17,6 +22,17 @@ class SecretRetriever {
|
|
|
17
22
|
}
|
|
18
23
|
})();
|
|
19
24
|
}
|
|
25
|
+
secretArn;
|
|
26
|
+
/**
|
|
27
|
+
* The ARN of the secretRetriever in SSM.
|
|
28
|
+
*/
|
|
29
|
+
secretRetrieverArn;
|
|
30
|
+
/**
|
|
31
|
+
* The plaintext secret
|
|
32
|
+
*/
|
|
33
|
+
secretPlaintext;
|
|
34
|
+
secretPasswordPlaintext;
|
|
35
|
+
customResource;
|
|
20
36
|
/**
|
|
21
37
|
* @internal
|
|
22
38
|
*/
|
|
@@ -31,16 +47,11 @@ class CustomResourceSecretRetriever extends SecretRetriever {
|
|
|
31
47
|
timeout: core_1.Duration.seconds(10),
|
|
32
48
|
memorySize: 128,
|
|
33
49
|
});
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
{
|
|
40
|
-
id: 'AwsSolutions-L1',
|
|
41
|
-
reason: 'For this lambda the latest runtime is not needed',
|
|
42
|
-
},
|
|
43
|
-
], true);
|
|
50
|
+
(0, suppress_nags_1.acknowledgeGranularFinding)(onEvent, AWS_LAMBDA_BASIC_EXECUTION_ROLE_IAM4, 'For this event handler we do not need to restrict managed policies');
|
|
51
|
+
aws_cdk_lib_1.Validations.of(onEvent).acknowledge({
|
|
52
|
+
id: 'AwsSolutions-L1',
|
|
53
|
+
reason: 'For this lambda the latest runtime is not needed',
|
|
54
|
+
});
|
|
44
55
|
onEvent.addToRolePolicy(new aws_iam_1.PolicyStatement({
|
|
45
56
|
actions: ['secretsmanager:GetSecretValue'],
|
|
46
57
|
resources: [this.secretArn],
|
|
@@ -48,20 +59,18 @@ class CustomResourceSecretRetriever extends SecretRetriever {
|
|
|
48
59
|
const provider = new custom_resources_1.Provider(scope, 'SecretRetrieveProvider', {
|
|
49
60
|
onEventHandler: onEvent,
|
|
50
61
|
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
},
|
|
64
|
-
], true);
|
|
62
|
+
(0, suppress_nags_1.acknowledgeGranularFinding)(provider, AWS_LAMBDA_BASIC_EXECUTION_ROLE_IAM4, 'For this provider we do not need to restrict managed policies');
|
|
63
|
+
// cdk-nag v3 requires the exact granular finding id (no prefix/bulk
|
|
64
|
+
// suppression) -- resolve onEvent's CloudFormation logical id at
|
|
65
|
+
// synth time instead of hardcoding it.
|
|
66
|
+
const onEventLogicalId = aws_cdk_lib_1.Stack.of(onEvent).getLogicalId(onEvent.node.defaultChild);
|
|
67
|
+
aws_cdk_lib_1.Validations.of(provider).acknowledge({
|
|
68
|
+
id: `AwsSolutions-IAM5[Resource::<${onEventLogicalId}.Arn>:*]`,
|
|
69
|
+
reason: 'For this provider wildcards are fine',
|
|
70
|
+
}, {
|
|
71
|
+
id: 'AwsSolutions-L1',
|
|
72
|
+
reason: 'For this provider the latest runtime is not needed',
|
|
73
|
+
});
|
|
65
74
|
const resource = new core_1.CustomResource(scope, 'SecretRetrieverCustomResource', {
|
|
66
75
|
serviceToken: provider.serviceToken,
|
|
67
76
|
properties: {
|
|
@@ -75,4 +84,4 @@ class CustomResourceSecretRetriever extends SecretRetriever {
|
|
|
75
84
|
}
|
|
76
85
|
_bind() { }
|
|
77
86
|
}
|
|
78
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
87
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LXJldHJpZXZlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZWNyZXQtcmV0cmlldmVyL3NlY3JldC1yZXRyaWV2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWlEO0FBQ2pELGlEQUFzRDtBQUV0RCwyQ0FBdUU7QUFDdkUsbUVBQXdEO0FBRXhELDJFQUFzRTtBQUN0RSxvREFBOEQ7QUFFOUQsMkVBQTJFO0FBQzNFLDBFQUEwRTtBQUMxRSxzREFBc0Q7QUFDdEQsTUFBTSxvQ0FBb0MsR0FDeEMsMEdBQTBHLENBQUM7QUFhN0csTUFBc0IsZUFBZTtJQUM1QixNQUFNLENBQUMsR0FBRyxDQUFDLE9BQStCO1FBQy9DLE9BQU8sSUFBSSxDQUFDLEtBQU0sU0FBUSxlQUFlO1lBQ2hDLEtBQUssQ0FBQyxLQUFnQjtnQkFDM0IsTUFBTSxlQUFlLEdBQUcsSUFBSSw2QkFBNkIsQ0FBQyxLQUFLLEVBQUU7b0JBQy9ELFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztpQkFDN0IsQ0FBQyxDQUFDO2dCQUVILE9BQU8sZUFBZSxDQUFDO1lBQ3pCLENBQUM7U0FDRixDQUFDLEVBQUUsQ0FBQztJQUNQLENBQUM7SUFFTSxTQUFTLENBQVU7SUFFMUI7O09BRUc7SUFDSSxrQkFBa0IsQ0FBVTtJQUVuQzs7T0FFRztJQUNJLGVBQWUsQ0FBVTtJQUN6Qix1QkFBdUIsQ0FBVTtJQUNqQyxjQUFjLENBQWE7SUFFbEM7O09BRUc7SUFDSCxnQkFBeUIsQ0FBQztDQU0zQjtBQXBDRCwwQ0FvQ0M7QUFJRCxNQUFNLDZCQUE4QixTQUFRLGVBQWU7SUFDekQsWUFBWSxLQUFnQixFQUFFLE9BQTZDO1FBQ3pFLEtBQUssRUFBRSxDQUFDO1FBRVIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBRW5DLE1BQU0sT0FBTyxHQUFhLElBQUksbURBQXVCLENBQ25ELEtBQUssRUFDTCwrQkFBK0IsRUFDL0I7WUFDRSxPQUFPLEVBQUUsZUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDN0IsVUFBVSxFQUFFLEdBQUc7U0FDaEIsQ0FDRixDQUFDO1FBQ0YsSUFBQSwwQ0FBMEIsRUFDeEIsT0FBTyxFQUNQLG9DQUFvQyxFQUNwQyxvRUFBb0UsQ0FDckUsQ0FBQztRQUNGLHlCQUFXLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNsQyxFQUFFLEVBQUUsaUJBQWlCO1lBQ3JCLE1BQU0sRUFBRSxrREFBa0Q7U0FDM0QsQ0FBQyxDQUFDO1FBRUgsT0FBTyxDQUFDLGVBQWUsQ0FDckIsSUFBSSx5QkFBZSxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxDQUFDLCtCQUErQixDQUFDO1lBQzFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7U0FDNUIsQ0FBQyxDQUNILENBQUM7UUFFRixNQUFNLFFBQVEsR0FBRyxJQUFJLDJCQUFRLENBQUMsS0FBSyxFQUFFLHdCQUF3QixFQUFFO1lBQzdELGNBQWMsRUFBRSxPQUFPO1NBQ3hCLENBQUMsQ0FBQztRQUNILElBQUEsMENBQTBCLEVBQ3hCLFFBQVEsRUFDUixvQ0FBb0MsRUFDcEMsK0RBQStELENBQ2hFLENBQUM7UUFDRixvRUFBb0U7UUFDcEUsaUVBQWlFO1FBQ2pFLHVDQUF1QztRQUN2QyxNQUFNLGdCQUFnQixHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksQ0FDckQsT0FBTyxDQUFDLElBQUksQ0FBQyxZQUEyQixDQUN6QyxDQUFDO1FBQ0YseUJBQVcsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxDQUNsQztZQUNFLEVBQUUsRUFBRSxnQ0FBZ0MsZ0JBQWdCLFVBQVU7WUFDOUQsTUFBTSxFQUFFLHNDQUFzQztTQUMvQyxFQUNEO1lBQ0UsRUFBRSxFQUFFLGlCQUFpQjtZQUNyQixNQUFNLEVBQUUsb0RBQW9EO1NBQzdELENBQ0YsQ0FBQztRQUVGLE1BQU0sUUFBUSxHQUFHLElBQUkscUJBQWMsQ0FDakMsS0FBSyxFQUNMLCtCQUErQixFQUMvQjtZQUNFLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsU0FBUyxFQUFFLE9BQU8sQ0FBQyxTQUFTO2dCQUM1QixjQUFjLEVBQUUsR0FBRzthQUNwQjtTQUNGLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxlQUFlLEdBQUcsUUFBUSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLEVBQVksQ0FBQztRQUN6RSxJQUFJLENBQUMsdUJBQXVCLEdBQUcsUUFBUSxDQUFDLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1FBQzVFLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxDQUFDO0lBQ2pDLENBQUM7SUFFTSxLQUFLLEtBQUksQ0FBQztDQUNsQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBWYWxpZGF0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuaW1wb3J0IHsgQ2ZuRnVuY3Rpb24sIEZ1bmN0aW9uIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQgeyBDdXN0b21SZXNvdXJjZSwgRHVyYXRpb24sIElSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgUHJvdmlkZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgU2VjcmV0UmV0cmlldmVyRnVuY3Rpb24gfSBmcm9tICcuL3NlY3JldC1yZXRyaWV2ZXItZnVuY3Rpb24nO1xuaW1wb3J0IHsgYWNrbm93bGVkZ2VHcmFudWxhckZpbmRpbmcgfSBmcm9tICcuLi9zdXBwcmVzcy1uYWdzJztcblxuLy8gVGhlIEFXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZSBBUk4gcGF0dGVybiBpcyB0aGUgc2FtZSBmb3IgZXZlcnkgTGFtYmRhXG4vLyBmdW5jdGlvbiB1c2luZyB0aGUgZGVmYXVsdCBleGVjdXRpb24gcm9sZSwgcmVnYXJkbGVzcyBvZiB0aGUgY29uc3VtZXInc1xuLy8gb3duIGNvbnN0cnVjdCBJRHMgLS0gc2FmZSB0byBhY2tub3dsZWRnZSBsaXRlcmFsbHkuXG5jb25zdCBBV1NfTEFNQkRBX0JBU0lDX0VYRUNVVElPTl9ST0xFX0lBTTQgPVxuICAnQXdzU29sdXRpb25zLUlBTTRbUG9saWN5Ojphcm46PEFXUzo6UGFydGl0aW9uPjppYW06OmF3czpwb2xpY3kvc2VydmljZS1yb2xlL0FXU0xhbWJkYUJhc2ljRXhlY3V0aW9uUm9sZV0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3JldCB7XG4gIHVzZXJuYW1lOiBzdHJpbmc7XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjcmV0UmV0cmlldmVyT3B0aW9uc0Jhc2Uge1xuICByZWFkb25seSBzZWNyZXRBcm46IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZWNyZXRSZXRyaWV2ZXJPcHRpb25zIGV4dGVuZHMgU2VjcmV0UmV0cmlldmVyT3B0aW9uc0Jhc2Uge31cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFNlY3JldFJldHJpZXZlciB7XG4gIHB1YmxpYyBzdGF0aWMgbmV3KG9wdGlvbnM6IFNlY3JldFJldHJpZXZlck9wdGlvbnMpOiBTZWNyZXRSZXRyaWV2ZXIge1xuICAgIHJldHVybiBuZXcgKGNsYXNzIGV4dGVuZHMgU2VjcmV0UmV0cmlldmVyIHtcbiAgICAgIHB1YmxpYyBfYmluZChzY29wZTogQ29uc3RydWN0KTogU2VjcmV0UmV0cmlldmVyIHtcbiAgICAgICAgY29uc3Qgc2VjcmV0UmV0cmlldmVyID0gbmV3IEN1c3RvbVJlc291cmNlU2VjcmV0UmV0cmlldmVyKHNjb3BlLCB7XG4gICAgICAgICAgc2VjcmV0QXJuOiBvcHRpb25zLnNlY3JldEFybixcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHNlY3JldFJldHJpZXZlcjtcbiAgICAgIH1cbiAgICB9KSgpO1xuICB9XG5cbiAgcHVibGljIHNlY3JldEFybiE6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgc2VjcmV0UmV0cmlldmVyIGluIFNTTS5cbiAgICovXG4gIHB1YmxpYyBzZWNyZXRSZXRyaWV2ZXJBcm4hOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwbGFpbnRleHQgc2VjcmV0XG4gICAqL1xuICBwdWJsaWMgc2VjcmV0UGxhaW50ZXh0ITogU2VjcmV0O1xuICBwdWJsaWMgc2VjcmV0UGFzc3dvcmRQbGFpbnRleHQhOiBzdHJpbmc7XG4gIHB1YmxpYyBjdXN0b21SZXNvdXJjZSE6IElSZXNvdXJjZTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBfYmluZChzY29wZTogQ29uc3RydWN0KTogYW55O1xufVxuXG5pbnRlcmZhY2UgQ3VzdG9tUmVzb3VyY2VTZWNyZXRSZXRyaWV2ZXJPcHRpb25zIGV4dGVuZHMgU2VjcmV0UmV0cmlldmVyT3B0aW9ucyB7fVxuXG5jbGFzcyBDdXN0b21SZXNvdXJjZVNlY3JldFJldHJpZXZlciBleHRlbmRzIFNlY3JldFJldHJpZXZlciB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG9wdGlvbnM6IEN1c3RvbVJlc291cmNlU2VjcmV0UmV0cmlldmVyT3B0aW9ucykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLnNlY3JldEFybiA9IG9wdGlvbnMuc2VjcmV0QXJuO1xuXG4gICAgY29uc3Qgb25FdmVudDogRnVuY3Rpb24gPSBuZXcgU2VjcmV0UmV0cmlldmVyRnVuY3Rpb24oXG4gICAgICBzY29wZSxcbiAgICAgICdTZWNyZXRSZXRyaWV2ZXJPbkV2ZW50SGFuZGxlcicsXG4gICAgICB7XG4gICAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMTApLFxuICAgICAgICBtZW1vcnlTaXplOiAxMjgsXG4gICAgICB9LFxuICAgICk7XG4gICAgYWNrbm93bGVkZ2VHcmFudWxhckZpbmRpbmcoXG4gICAgICBvbkV2ZW50LFxuICAgICAgQVdTX0xBTUJEQV9CQVNJQ19FWEVDVVRJT05fUk9MRV9JQU00LFxuICAgICAgJ0ZvciB0aGlzIGV2ZW50IGhhbmRsZXIgd2UgZG8gbm90IG5lZWQgdG8gcmVzdHJpY3QgbWFuYWdlZCBwb2xpY2llcycsXG4gICAgKTtcbiAgICBWYWxpZGF0aW9ucy5vZihvbkV2ZW50KS5hY2tub3dsZWRnZSh7XG4gICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICByZWFzb246ICdGb3IgdGhpcyBsYW1iZGEgdGhlIGxhdGVzdCBydW50aW1lIGlzIG5vdCBuZWVkZWQnLFxuICAgIH0pO1xuXG4gICAgb25FdmVudC5hZGRUb1JvbGVQb2xpY3koXG4gICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLnNlY3JldEFybl0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgcHJvdmlkZXIgPSBuZXcgUHJvdmlkZXIoc2NvcGUsICdTZWNyZXRSZXRyaWV2ZVByb3ZpZGVyJywge1xuICAgICAgb25FdmVudEhhbmRsZXI6IG9uRXZlbnQsXG4gICAgfSk7XG4gICAgYWNrbm93bGVkZ2VHcmFudWxhckZpbmRpbmcoXG4gICAgICBwcm92aWRlcixcbiAgICAgIEFXU19MQU1CREFfQkFTSUNfRVhFQ1VUSU9OX1JPTEVfSUFNNCxcbiAgICAgICdGb3IgdGhpcyBwcm92aWRlciB3ZSBkbyBub3QgbmVlZCB0byByZXN0cmljdCBtYW5hZ2VkIHBvbGljaWVzJyxcbiAgICApO1xuICAgIC8vIGNkay1uYWcgdjMgcmVxdWlyZXMgdGhlIGV4YWN0IGdyYW51bGFyIGZpbmRpbmcgaWQgKG5vIHByZWZpeC9idWxrXG4gICAgLy8gc3VwcHJlc3Npb24pIC0tIHJlc29sdmUgb25FdmVudCdzIENsb3VkRm9ybWF0aW9uIGxvZ2ljYWwgaWQgYXRcbiAgICAvLyBzeW50aCB0aW1lIGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdC5cbiAgICBjb25zdCBvbkV2ZW50TG9naWNhbElkID0gU3RhY2sub2Yob25FdmVudCkuZ2V0TG9naWNhbElkKFxuICAgICAgb25FdmVudC5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5GdW5jdGlvbixcbiAgICApO1xuICAgIFZhbGlkYXRpb25zLm9mKHByb3ZpZGVyKS5hY2tub3dsZWRnZShcbiAgICAgIHtcbiAgICAgICAgaWQ6IGBBd3NTb2x1dGlvbnMtSUFNNVtSZXNvdXJjZTo6PCR7b25FdmVudExvZ2ljYWxJZH0uQXJuPjoqXWAsXG4gICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHdpbGRjYXJkcyBhcmUgZmluZScsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgICAgIHJlYXNvbjogJ0ZvciB0aGlzIHByb3ZpZGVyIHRoZSBsYXRlc3QgcnVudGltZSBpcyBub3QgbmVlZGVkJyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IEN1c3RvbVJlc291cmNlKFxuICAgICAgc2NvcGUsXG4gICAgICAnU2VjcmV0UmV0cmlldmVyQ3VzdG9tUmVzb3VyY2UnLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlVG9rZW46IHByb3ZpZGVyLnNlcnZpY2VUb2tlbixcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIFNlY3JldEFybjogb3B0aW9ucy5zZWNyZXRBcm4sXG4gICAgICAgICAgU2VydmljZVRpbWVvdXQ6IDMwNSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuc2VjcmV0UGxhaW50ZXh0ID0gcmVzb3VyY2UuZ2V0QXR0KCdzZWNyZXRWYWx1ZScpLnRvSlNPTigpIGFzIFNlY3JldDtcbiAgICB0aGlzLnNlY3JldFBhc3N3b3JkUGxhaW50ZXh0ID0gcmVzb3VyY2UuZ2V0QXR0U3RyaW5nKCdzZWNyZXRQYXNzd29yZFZhbHVlJyk7XG4gICAgdGhpcy5jdXN0b21SZXNvdXJjZSA9IHJlc291cmNlO1xuICB9XG5cbiAgcHVibGljIF9iaW5kKCkge31cbn1cbiJdfQ==
|
package/lib/suppress-nags.d.ts
CHANGED
package/lib/suppress-nags.js
CHANGED
|
@@ -1,17 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.suppressCommonNags = suppressCommonNags;
|
|
4
|
-
|
|
4
|
+
exports.acknowledgeGranularFinding = acknowledgeGranularFinding;
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
6
|
// Here we store the nags which we can only directly
|
|
6
7
|
// address to resource and not with the common pattern.
|
|
7
8
|
// This mostly happens with custom resources, with a lot
|
|
8
9
|
// of generated code under the hood.
|
|
9
10
|
function suppressCommonNags(stack) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
11
|
+
const path = `${stack.stackName}/AWS679f53fac002430cb0da5b7982bd2287/Resource`;
|
|
12
|
+
const construct = stack.node.findAll().find((c) => c.node.path === path);
|
|
13
|
+
if (!construct) {
|
|
14
|
+
// Deliberately fail-fast rather than fall back to a report-derived path or
|
|
15
|
+
// the nearest ancestor construct: acknowledging the wrong resource would
|
|
16
|
+
// silently suppress a real finding elsewhere. If this CDK-owned singleton
|
|
17
|
+
// logical id (AWS679f53fac002430cb0da5b7982bd2287) ever shifts, re-resolve
|
|
18
|
+
// it from policy-validation-report.json's AwsSolutions-L1 entry by hand.
|
|
19
|
+
throw new Error(`suppressCommonNags: no construct found at path '${path}'`);
|
|
20
|
+
}
|
|
21
|
+
aws_cdk_lib_1.Validations.of(construct).acknowledge({
|
|
22
|
+
id: 'AwsSolutions-L1',
|
|
23
|
+
reason: 'We manage runtime for AwsSdkCall Custom Resource and will update when necessary',
|
|
24
|
+
});
|
|
16
25
|
}
|
|
17
|
-
|
|
26
|
+
// cdk-nag v3's granular finding ids embed an ARN, which contains its own
|
|
27
|
+
// "::" sequences (e.g. 'arn:<AWS::Partition>:iam::aws:policy/...'). Validations.of().acknowledge()
|
|
28
|
+
// rejects any id with more than one "::" delimiter (see aws-cdk-lib's
|
|
29
|
+
// Validations.qualifyId), so it can never acknowledge these ARN-based findings.
|
|
30
|
+
// Write the same metadata entry it writes internally, using the public
|
|
31
|
+
// ACKNOWLEDGED_RULES_METADATA_KEY, bypassing only the over-strict id validation.
|
|
32
|
+
function acknowledgeGranularFinding(construct, id, reason) {
|
|
33
|
+
construct.node.addMetadata(aws_cdk_lib_1.Validations.ACKNOWLEDGED_RULES_METADATA_KEY, { [id]: reason });
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VwcHJlc3MtbmFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zdXBwcmVzcy1uYWdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBT0EsZ0RBZ0JDO0FBUUQsZ0VBRUM7QUFqQ0QsNkNBQWlEO0FBR2pELG9EQUFvRDtBQUNwRCx1REFBdUQ7QUFDdkQsd0RBQXdEO0FBQ3hELG9DQUFvQztBQUNwQyxTQUFnQixrQkFBa0IsQ0FBQyxLQUFZO0lBQzdDLE1BQU0sSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsK0NBQStDLENBQUM7SUFDL0UsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxDQUFDO0lBQ3pFLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNmLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsMEVBQTBFO1FBQzFFLDJFQUEyRTtRQUMzRSx5RUFBeUU7UUFDekUsTUFBTSxJQUFJLEtBQUssQ0FBQyxtREFBbUQsSUFBSSxHQUFHLENBQUMsQ0FBQztJQUM5RSxDQUFDO0lBQ0QseUJBQVcsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3BDLEVBQUUsRUFBRSxpQkFBaUI7UUFDckIsTUFBTSxFQUNKLGlGQUFpRjtLQUNwRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQseUVBQXlFO0FBQ3pFLG1HQUFtRztBQUNuRyxzRUFBc0U7QUFDdEUsZ0ZBQWdGO0FBQ2hGLHVFQUF1RTtBQUN2RSxpRkFBaUY7QUFDakYsU0FBZ0IsMEJBQTBCLENBQUMsU0FBb0IsRUFBRSxFQUFVLEVBQUUsTUFBYztJQUN6RixTQUFTLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyx5QkFBVyxDQUFDLCtCQUErQixFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQzVGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjaywgVmFsaWRhdGlvbnMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLy8gSGVyZSB3ZSBzdG9yZSB0aGUgbmFncyB3aGljaCB3ZSBjYW4gb25seSBkaXJlY3RseVxuLy8gYWRkcmVzcyB0byByZXNvdXJjZSBhbmQgbm90IHdpdGggdGhlIGNvbW1vbiBwYXR0ZXJuLlxuLy8gVGhpcyBtb3N0bHkgaGFwcGVucyB3aXRoIGN1c3RvbSByZXNvdXJjZXMsIHdpdGggYSBsb3Rcbi8vIG9mIGdlbmVyYXRlZCBjb2RlIHVuZGVyIHRoZSBob29kLlxuZXhwb3J0IGZ1bmN0aW9uIHN1cHByZXNzQ29tbW9uTmFncyhzdGFjazogU3RhY2spIHtcbiAgY29uc3QgcGF0aCA9IGAke3N0YWNrLnN0YWNrTmFtZX0vQVdTNjc5ZjUzZmFjMDAyNDMwY2IwZGE1Yjc5ODJiZDIyODcvUmVzb3VyY2VgO1xuICBjb25zdCBjb25zdHJ1Y3QgPSBzdGFjay5ub2RlLmZpbmRBbGwoKS5maW5kKChjKSA9PiBjLm5vZGUucGF0aCA9PT0gcGF0aCk7XG4gIGlmICghY29uc3RydWN0KSB7XG4gICAgLy8gRGVsaWJlcmF0ZWx5IGZhaWwtZmFzdCByYXRoZXIgdGhhbiBmYWxsIGJhY2sgdG8gYSByZXBvcnQtZGVyaXZlZCBwYXRoIG9yXG4gICAgLy8gdGhlIG5lYXJlc3QgYW5jZXN0b3IgY29uc3RydWN0OiBhY2tub3dsZWRnaW5nIHRoZSB3cm9uZyByZXNvdXJjZSB3b3VsZFxuICAgIC8vIHNpbGVudGx5IHN1cHByZXNzIGEgcmVhbCBmaW5kaW5nIGVsc2V3aGVyZS4gSWYgdGhpcyBDREstb3duZWQgc2luZ2xldG9uXG4gICAgLy8gbG9naWNhbCBpZCAoQVdTNjc5ZjUzZmFjMDAyNDMwY2IwZGE1Yjc5ODJiZDIyODcpIGV2ZXIgc2hpZnRzLCByZS1yZXNvbHZlXG4gICAgLy8gaXQgZnJvbSBwb2xpY3ktdmFsaWRhdGlvbi1yZXBvcnQuanNvbidzIEF3c1NvbHV0aW9ucy1MMSBlbnRyeSBieSBoYW5kLlxuICAgIHRocm93IG5ldyBFcnJvcihgc3VwcHJlc3NDb21tb25OYWdzOiBubyBjb25zdHJ1Y3QgZm91bmQgYXQgcGF0aCAnJHtwYXRofSdgKTtcbiAgfVxuICBWYWxpZGF0aW9ucy5vZihjb25zdHJ1Y3QpLmFja25vd2xlZGdlKHtcbiAgICBpZDogJ0F3c1NvbHV0aW9ucy1MMScsXG4gICAgcmVhc29uOlxuICAgICAgJ1dlIG1hbmFnZSBydW50aW1lIGZvciBBd3NTZGtDYWxsIEN1c3RvbSBSZXNvdXJjZSBhbmQgd2lsbCB1cGRhdGUgd2hlbiBuZWNlc3NhcnknLFxuICB9KTtcbn1cblxuLy8gY2RrLW5hZyB2MydzIGdyYW51bGFyIGZpbmRpbmcgaWRzIGVtYmVkIGFuIEFSTiwgd2hpY2ggY29udGFpbnMgaXRzIG93blxuLy8gXCI6OlwiIHNlcXVlbmNlcyAoZS5nLiAnYXJuOjxBV1M6OlBhcnRpdGlvbj46aWFtOjphd3M6cG9saWN5Ly4uLicpLiBWYWxpZGF0aW9ucy5vZigpLmFja25vd2xlZGdlKClcbi8vIHJlamVjdHMgYW55IGlkIHdpdGggbW9yZSB0aGFuIG9uZSBcIjo6XCIgZGVsaW1pdGVyIChzZWUgYXdzLWNkay1saWInc1xuLy8gVmFsaWRhdGlvbnMucXVhbGlmeUlkKSwgc28gaXQgY2FuIG5ldmVyIGFja25vd2xlZGdlIHRoZXNlIEFSTi1iYXNlZCBmaW5kaW5ncy5cbi8vIFdyaXRlIHRoZSBzYW1lIG1ldGFkYXRhIGVudHJ5IGl0IHdyaXRlcyBpbnRlcm5hbGx5LCB1c2luZyB0aGUgcHVibGljXG4vLyBBQ0tOT1dMRURHRURfUlVMRVNfTUVUQURBVEFfS0VZLCBieXBhc3Npbmcgb25seSB0aGUgb3Zlci1zdHJpY3QgaWQgdmFsaWRhdGlvbi5cbmV4cG9ydCBmdW5jdGlvbiBhY2tub3dsZWRnZUdyYW51bGFyRmluZGluZyhjb25zdHJ1Y3Q6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcmVhc29uOiBzdHJpbmcpOiB2b2lkIHtcbiAgY29uc3RydWN0Lm5vZGUuYWRkTWV0YWRhdGEoVmFsaWRhdGlvbnMuQUNLTk9XTEVER0VEX1JVTEVTX01FVEFEQVRBX0tFWSwgeyBbaWRdOiByZWFzb24gfSk7XG59XG4iXX0=
|