snyk 1.883.0 → 1.884.0
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/dist/cli/450.index.js +61 -0
- package/dist/cli/450.index.js.map +1 -0
- package/dist/cli/459.index.js +1 -0
- package/dist/cli/459.index.js.map +1 -1
- package/dist/cli/917.index.js +27 -8
- package/dist/cli/917.index.js.map +1 -1
- package/dist/cli/commands/report/errors/unsupported-report-command.d.ts +4 -0
- package/dist/cli/commands/report/index.d.ts +3 -0
- package/dist/cli/commands/test/iac-local-execution/share-results.d.ts +8 -1
- package/dist/cli/commands/test/iac-local-execution/types.d.ts +3 -2
- package/dist/cli/index.js +5 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/ecosystems/types.d.ts +1 -0
- package/dist/lib/iac/cli-share-results.d.ts +8 -2
- package/dist/lib/iac/envelope-formatters.d.ts +2 -2
- package/dist/lib/types.d.ts +2 -1
- package/package.json +1 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.id = 450;
|
|
3
|
+
exports.ids = [450];
|
|
4
|
+
exports.modules = {
|
|
5
|
+
|
|
6
|
+
/***/ 16932:
|
|
7
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
11
|
+
exports.UnsupportedReportCommandError = void 0;
|
|
12
|
+
const errors_1 = __webpack_require__(55191);
|
|
13
|
+
const error_utils_1 = __webpack_require__(23872);
|
|
14
|
+
const types_1 = __webpack_require__(42258);
|
|
15
|
+
class UnsupportedReportCommandError extends errors_1.CustomError {
|
|
16
|
+
constructor(message) {
|
|
17
|
+
super(message || 'Command "report" is only supported for IaC');
|
|
18
|
+
this.code = types_1.IaCErrorCodes.UnsupportedReportCommandError;
|
|
19
|
+
this.strCode = error_utils_1.getErrorStringCode(this.code);
|
|
20
|
+
this.userMessage =
|
|
21
|
+
'"report" is not a supported command. Did you mean to use "iac report"?';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.UnsupportedReportCommandError = UnsupportedReportCommandError;
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
/***/ }),
|
|
28
|
+
|
|
29
|
+
/***/ 44450:
|
|
30
|
+
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
34
|
+
const test_1 = __webpack_require__(86917);
|
|
35
|
+
const feature_flags_1 = __webpack_require__(63011);
|
|
36
|
+
const errors_1 = __webpack_require__(55191);
|
|
37
|
+
const process_command_args_1 = __webpack_require__(52369);
|
|
38
|
+
const unsupported_report_command_1 = __webpack_require__(16932);
|
|
39
|
+
async function report(...args) {
|
|
40
|
+
const { paths, options } = process_command_args_1.processCommandArgs(...args);
|
|
41
|
+
if (options.iac != true) {
|
|
42
|
+
throw new unsupported_report_command_1.UnsupportedReportCommandError();
|
|
43
|
+
}
|
|
44
|
+
await assertReportSupported(options);
|
|
45
|
+
options.report = true;
|
|
46
|
+
return await test_1.default(...paths, options);
|
|
47
|
+
}
|
|
48
|
+
exports.default = report;
|
|
49
|
+
async function assertReportSupported(options) {
|
|
50
|
+
const isReportSupported = await feature_flags_1.hasFeatureFlag('iacCliShareResults', options);
|
|
51
|
+
if (!isReportSupported) {
|
|
52
|
+
throw new errors_1.UnsupportedFeatureFlagError('iacCliShareResults');
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
/***/ })
|
|
58
|
+
|
|
59
|
+
};
|
|
60
|
+
;
|
|
61
|
+
//# sourceMappingURL=450.index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"450.index.js","mappings":";;;;;;;;;;;AAAA,4CAAqD;AACrD,iDAAgF;AAChF,2CAAqE;AAErE,MAAa,6BAA8B,SAAQ,oBAAW;IAC5D,YAAY,OAAgB;QAC1B,KAAK,CAAC,OAAO,IAAI,4CAA4C,CAAC,CAAC;QAC/D,IAAI,CAAC,IAAI,GAAG,qBAAa,CAAC,6BAA6B,CAAC;QACxD,IAAI,CAAC,OAAO,GAAG,gCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,WAAW;YACd,wEAAwE,CAAC;IAC7E,CAAC;CACF;AARD,sEAQC;;;;;;;;;;ACTD,0CAA2B;AAC3B,mDAA4D;AAE5D,4CAAkE;AAClE,0DAA6D;AAC7D,gEAAoF;AAErE,KAAK,UAAU,MAAM,CAClC,GAAG,IAAgB;IAEnB,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,yCAAkB,CAAC,GAAG,IAAI,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,EAAE;QACvB,MAAM,IAAI,0DAA6B,EAAE,CAAC;KAC3C;IAED,MAAM,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAErC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAEtB,OAAO,MAAM,cAAI,CAAC,GAAG,KAAK,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC;AAdD,yBAcC;AAED,KAAK,UAAU,qBAAqB,CAAC,OAAqB;IACxD,MAAM,iBAAiB,GAAG,MAAM,8BAAc,CAC5C,oBAAoB,EACpB,OAAkB,CACnB,CAAC;IACF,IAAI,CAAC,iBAAiB,EAAE;QACtB,MAAM,IAAI,oCAA2B,CAAC,oBAAoB,CAAC,CAAC;KAC7D;AACH,CAAC","sources":["webpack://snyk/./src/cli/commands/report/errors/unsupported-report-command.ts","webpack://snyk/./src/cli/commands/report/index.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { getErrorStringCode } from '../../test/iac-local-execution/error-utils';\nimport { IaCErrorCodes } from '../../test/iac-local-execution/types';\n\nexport class UnsupportedReportCommandError extends CustomError {\n constructor(message?: string) {\n super(message || 'Command \"report\" is only supported for IaC');\n this.code = IaCErrorCodes.UnsupportedReportCommandError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n '\"report\" is not a supported command. Did you mean to use \"iac report\"?';\n }\n}\n","import { MethodArgs } from '../../args';\nimport { IaCTestFlags } from '../test/iac-local-execution/types';\nimport { TestCommandResult } from '../types';\nimport test from '../test';\nimport { hasFeatureFlag } from '../../../lib/feature-flags';\nimport { Options } from '../../../lib/types';\nimport { UnsupportedFeatureFlagError } from '../../../lib/errors';\nimport { processCommandArgs } from '../process-command-args';\nimport { UnsupportedReportCommandError } from './errors/unsupported-report-command';\n\nexport default async function report(\n ...args: MethodArgs\n): Promise<TestCommandResult> {\n const { paths, options } = processCommandArgs(...args);\n\n if (options.iac != true) {\n throw new UnsupportedReportCommandError();\n }\n\n await assertReportSupported(options);\n\n options.report = true;\n\n return await test(...paths, options);\n}\n\nasync function assertReportSupported(options: IaCTestFlags) {\n const isReportSupported = await hasFeatureFlag(\n 'iacCliShareResults',\n options as Options,\n );\n if (!isReportSupported) {\n throw new UnsupportedFeatureFlagError('iacCliShareResults');\n }\n}\n"],"names":[],"sourceRoot":""}
|
package/dist/cli/459.index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"459.index.js","mappings":"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","sources":["webpack://snyk/./src/cli/commands/test/iac-local-execution/assert-iac-options-flag.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/error-utils.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/org-settings/get-iac-org-settings.ts","webpack://snyk/./src/lib/errors/describe-exclusive-argument-error.ts","webpack://snyk/./src/lib/errors/describe-required-argument-error.ts","webpack://snyk/./src/lib/iac/drift.ts","webpack://snyk/./src/lib/iac/service-mappings.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { args } from '../../../args';\nimport { getErrorStringCode } from './error-utils';\nimport { IaCErrorCodes, IaCTestFlags, TerraformPlanScanMode } from './types';\n\nconst keys: (keyof IaCTestFlags)[] = [\n 'org',\n 'debug',\n 'insecure',\n 'detectionDepth',\n 'severityThreshold',\n 'rules',\n 'json',\n 'sarif',\n 'json-file-output',\n 'sarif-file-output',\n 'v',\n 'version',\n 'h',\n 'help',\n 'q',\n 'quiet',\n 'scan',\n 'report',\n // Tags and attributes\n 'tags',\n 'project-tags',\n 'project-environment',\n 'project-lifecycle',\n 'project-business-criticality',\n // PolicyOptions\n 'ignore-policy',\n 'policy-path',\n];\nconst allowed = new Set<string>(keys);\n\nfunction camelcaseToDash(key: string) {\n return key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n}\n\nfunction getFlagName(key: string) {\n const dashes = key.length === 1 ? '-' : '--';\n const flag = camelcaseToDash(key);\n return `${dashes}${flag}`;\n}\n\nexport class FlagError extends CustomError {\n constructor(key: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported flag \"${flag}\" provided. Run snyk iac test --help for supported flags`;\n super(msg);\n this.code = IaCErrorCodes.FlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FeatureFlagError extends CustomError {\n constructor(key: string, featureFlag: string, hasSnykPreview?: boolean) {\n const flag = getFlagName(key);\n let msg;\n if (hasSnykPreview) {\n msg = `Flag \"${flag}\" is only supported if feature flag '${featureFlag}' is enabled. The feature flag can be enabled via Snyk Preview if you are on the Enterprise Plan`;\n } else {\n msg = `Flag \"${flag}\" is only supported if feature flag \"${featureFlag}\" is enabled. To enable it, please contact Snyk support.`;\n }\n super(msg);\n this.code = IaCErrorCodes.FeatureFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FlagValueError extends CustomError {\n constructor(key: string, value: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported value \"${value}\" provided to flag \"${flag}\".\\nSupported values are: ${SUPPORTED_TF_PLAN_SCAN_MODES.join(\n ', ',\n )}`;\n super(msg);\n this.code = IaCErrorCodes.FlagValueError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class UnsupportedEntitlementFlagError extends CustomError {\n constructor(key: string, entitlementName: string) {\n const flag = getFlagName(key);\n super(\n `Unsupported flag: ${flag} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Flag \"${flag}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\nexport class UnsupportedEntitlementCommandError extends CustomError {\n constructor(key: string, entitlementName: string) {\n super(\n `Unsupported command: ${key} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Command \"${key}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\n/**\n * Validates the command line flags passed to the snyk iac test\n * command. The current argument parsing is very permissive and\n * allows unknown flags to be provided without valdiation.\n *\n * For snyk iac we need to explictly validate the flags to avoid\n * misconfigurations and typos. For example, if the --experimental\n * flag were to be mis-spelled we would end up sending the client\n * data to our backend rather than running it locally as intended.\n * @param argv command line args passed to the process\n */\nexport function assertIaCOptionsFlags(argv: string[]) {\n // We process the process.argv so we don't get default values.\n const parsed = args(argv);\n for (const key of Object.keys(parsed.options)) {\n // The _ property is a special case that contains non\n // flag strings passed to the command line (usually files)\n // and `iac` is the command provided.\n if (key !== '_' && key !== 'iac' && !allowed.has(key)) {\n throw new FlagError(key);\n }\n }\n\n if (parsed.options.scan) {\n assertTerraformPlanModes(parsed.options.scan as string);\n }\n}\n\nconst SUPPORTED_TF_PLAN_SCAN_MODES = [\n TerraformPlanScanMode.DeltaScan,\n TerraformPlanScanMode.FullScan,\n];\n\nfunction assertTerraformPlanModes(scanModeArgValue: string) {\n if (\n !SUPPORTED_TF_PLAN_SCAN_MODES.includes(\n scanModeArgValue as TerraformPlanScanMode,\n )\n ) {\n throw new FlagValueError('scan', scanModeArgValue);\n }\n}\n\nexport function isIacShareResultsOptions(options) {\n return options.iac && options.report;\n}\n","import { IaCErrorCodes } from './types';\n\nexport function getErrorStringCode(code: number): string {\n const errorName = IaCErrorCodes[code];\n if (!errorName) {\n return 'INVALID_IAC_ERROR';\n }\n let result = errorName.replace(/([A-Z])/g, '_$1');\n if (result.charAt(0) === '_') {\n result = result.substring(1);\n }\n return result.toUpperCase();\n}\n","import { IaCErrorCodes, IacOrgSettings } from '../types';\nimport { Payload } from '../../../../../lib/snyk-test/types';\nimport config from '../../../../../lib/config';\nimport { isCI } from '../../../../../lib/is-ci';\nimport { api } from '../../../../../lib/api-token';\nimport { makeRequest } from '../../../../../lib/request';\nimport { CustomError } from '../../../../../lib/errors';\nimport { getErrorStringCode } from '../error-utils';\n\nexport function getIacOrgSettings(\n publicOrgId?: string,\n): Promise<IacOrgSettings> {\n const payload: Payload = {\n method: 'get',\n url: config.API + '/iac-org-settings',\n json: true,\n qs: { org: publicOrgId },\n headers: {\n 'x-is-ci': isCI(),\n authorization: `token ${api()}`,\n },\n };\n\n return new Promise((resolve, reject) => {\n makeRequest(payload, (error, res) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode < 200 || res.statusCode > 299) {\n return reject(new FailedToGetIacOrgSettingsError());\n }\n resolve(res.body);\n });\n });\n}\n\nexport class FailedToGetIacOrgSettingsError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to fetch IaC organization settings');\n this.code = IaCErrorCodes.FailedToGetIacOrgSettingsError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We failed to fetch your organization settings, including custom severity overrides for infrastructure-as-code policies. Please run the command again with the `-d` flag and contact support@snyk.io with the contents of the output.';\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeExclusiveArgs } from '../iac/drift';\n\nexport class DescribeExclusiveArgumentError extends CustomError {\n constructor() {\n super(\n 'Please use only one of these arguments: ' +\n DescribeExclusiveArgs.join(', '),\n );\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeRequiredArgs } from '../iac/drift';\n\nexport class DescribeRequiredArgumentError extends CustomError {\n constructor() {\n super(\n 'Describe command require one of these arguments: ' +\n DescribeRequiredArgs.join(', '),\n );\n }\n}\n","import * as debugLib from 'debug';\nimport * as child_process from 'child_process';\nimport { StdioOptions } from 'child_process';\nimport * as os from 'os';\nimport envPaths from 'env-paths';\nimport * as fs from 'fs';\nimport { spinner } from '../spinner';\nimport { makeRequest } from '../request';\nimport config from '../../lib/config';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport {\n createIgnorePattern,\n verifyServiceMappingExists,\n} from './service-mappings';\nimport { EXIT_CODES } from '../../cli/exit-codes';\nimport {\n DescribeOptions,\n DriftAnalysis,\n DriftctlExecutionResult,\n DriftCTLOptions,\n FmtOptions,\n GenDriftIgnoreOptions,\n} from './types';\nimport { TimerMetricInstance } from '../metrics';\nimport * as analytics from '../../lib/analytics';\nimport { Policy } from '../policy/find-and-load-policy';\nimport { DescribeExclusiveArgumentError } from '../errors/describe-exclusive-argument-error';\nimport { DescribeRequiredArgumentError } from '../errors/describe-required-argument-error';\n\nconst cachePath = config.CACHE_PATH ?? envPaths('snyk').cache;\nconst debug = debugLib('drift');\n\nexport const DCTL_EXIT_CODES = {\n EXIT_IN_SYNC: 0,\n EXIT_NOT_IN_SYNC: 1,\n EXIT_ERROR: 2,\n};\n\nexport const DescribeExclusiveArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\nexport const DescribeRequiredArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\n// ⚠ Keep in mind to also update driftctl version used to generate docker images\n// You can edit base image used for snyk final image here https://github.com/snyk/snyk-images/blob/master/alpine\nexport const driftctlVersion = 'v0.23.0';\n\nconst driftctlChecksums = {\n 'driftctl_windows_386.exe':\n 'e5befbafe2291674a4d6c8522411a44fea3549057fb46d331402d49b180202fe',\n driftctl_darwin_amd64:\n '9af4e88a8e08e53ac3c373407bdd0b18a91941dc620266349f10600fc7b283d2',\n driftctl_linux_386:\n '6cd2719f81210017e3f67677cb92f4b0060976a3588c220b4af6b2dda174df8f',\n driftctl_linux_amd64:\n 'd714a3d11056169f4c4cc047b48b4d732f5df8cdfbc00e40c3e5f6e6cc5ead3e',\n driftctl_linux_arm64:\n '24812c8b2ec2d8e3d619317e76fbba0d8e7e263fc2c26cba26265a9656e8fe91',\n 'driftctl_windows_arm64.exe':\n 'd84461f0ba63b59aec66393fa67147f4157b5bddc02a19315d737c5f5a46c07b',\n driftctl_darwin_arm64:\n 'b711143d9331a10fc34c202284f67ce5eeb0348baca546b47af139f418f812c1',\n 'driftctl_windows_arm.exe':\n 'b5d24e1407c24ddfff63ffbba85eb1dc13473e2fd36e3e99e5e1762cf615f011',\n driftctl_linux_arm:\n '089665efa8a7c5e95b3cee9ace85fc5b0f2d7f2a29c351f2d3dbef3dae553e2d',\n 'driftctl_windows_amd64.exe':\n 'bf7310277eeccc2679b529c1f1d2ced30e877949a6d7c5606eb2d4c2ec033b66',\n};\n\nconst dctlBaseUrl = 'https://github.com/snyk/driftctl/releases/download/';\nconst driftctlPath = path.join(cachePath, 'driftctl_' + driftctlVersion);\nconst driftctlDefaultOptions = ['--no-version-check'];\nlet isBinaryDownloaded = false;\n\nexport const validateArgs = (options: DriftCTLOptions): void => {\n if (options.kind === 'describe') {\n return validateDescribeArgs(options as DescribeOptions);\n }\n};\n\nconst validateDescribeArgs = (options: DescribeOptions): void => {\n // Check that there is no more than one of the exclusive arguments\n let count = 0;\n for (const describeExclusiveArg of DescribeExclusiveArgs) {\n if (options[describeExclusiveArg]) {\n count++;\n }\n }\n if (count > 1) {\n throw new DescribeExclusiveArgumentError();\n }\n\n // Check we have one of the required arguments\n count = 0;\n for (const describeRequiredArgs of DescribeRequiredArgs) {\n if (options[describeRequiredArgs]) {\n count++;\n }\n }\n if (count === 0) {\n throw new DescribeRequiredArgumentError();\n }\n};\n\nexport const generateArgs = (\n options: DriftCTLOptions,\n driftIgnore?: string[],\n): string[] => {\n if (options.kind === 'describe') {\n return generateScanFlags(options as DescribeOptions, driftIgnore);\n }\n\n if (options.kind === 'gen-driftignore') {\n return generateGenDriftIgnoreFlags(options as GenDriftIgnoreOptions);\n }\n\n if (options.kind === 'fmt') {\n return generateFmtFlags(options as FmtOptions);\n }\n\n throw 'Unsupported command';\n};\n\nexport const generateGenDriftIgnoreFlags = (\n options: GenDriftIgnoreOptions,\n): string[] => {\n const args: string[] = ['gen-driftignore', ...driftctlDefaultOptions];\n\n if (options.input) {\n args.push('--input');\n args.push(options.input);\n }\n\n if (options.output) {\n args.push('--output');\n args.push(options.output);\n }\n\n if (options['exclude-changed']) {\n args.push('--exclude-changed');\n }\n\n if (options['exclude-missing']) {\n args.push('--exclude-missing');\n }\n\n if (options['exclude-unmanaged']) {\n args.push('--exclude-unmanaged');\n }\n\n return args;\n};\n\nconst generateFmtFlags = (options: FmtOptions): string[] => {\n const args: string[] = ['fmt', ...driftctlDefaultOptions];\n\n if (options.json) {\n args.push('--output');\n args.push('json://stdout');\n }\n\n if (options['json-file-output']) {\n args.push('--output');\n args.push('json://' + options['json-file-output']);\n }\n\n if (options.html) {\n args.push('--output');\n args.push('html://stdout');\n }\n\n if (options['html-file-output']) {\n args.push('--output');\n args.push('html://' + options['html-file-output']);\n }\n\n return args;\n};\n\nconst generateScanFlags = (\n options: DescribeOptions,\n driftIgnore?: string[],\n): string[] => {\n const args: string[] = ['scan', ...driftctlDefaultOptions];\n\n if (options.quiet) {\n args.push('--quiet');\n }\n\n if (options.filter) {\n args.push('--filter');\n args.push(options.filter);\n }\n\n args.push('--output');\n args.push('json://stdout');\n\n if (options['fetch-tfstate-headers']) {\n args.push('--headers');\n args.push(options['fetch-tfstate-headers']);\n }\n\n if (options['tfc-token']) {\n args.push('--tfc-token');\n args.push(options['tfc-token']);\n }\n\n if (options['tfc-endpoint']) {\n args.push('--tfc-endpoint');\n args.push(options['tfc-endpoint']);\n }\n\n if (options['tf-provider-version']) {\n args.push('--tf-provider-version');\n args.push(options['tf-provider-version']);\n }\n\n if (options.strict) {\n args.push('--strict');\n }\n\n if (options.deep) {\n args.push('--deep');\n }\n\n if (options['only-managed'] || options.drift) {\n args.push('--only-managed');\n }\n\n if (options['only-unmanaged']) {\n args.push('--only-unmanaged');\n }\n\n if (options.driftignore) {\n args.push('--driftignore');\n args.push(options.driftignore);\n }\n\n if (options['tf-lockfile']) {\n args.push('--tf-lockfile');\n args.push(options['tf-lockfile']);\n }\n\n if (driftIgnore && driftIgnore.length > 0) {\n args.push('--ignore');\n args.push(driftIgnore.join(','));\n }\n\n let configDir = cachePath;\n createIfNotExists(cachePath);\n if (options['config-dir']) {\n configDir = options['config-dir'];\n }\n args.push('--config-dir');\n args.push(configDir);\n\n if (options.from) {\n const froms = options.from.split(',');\n for (const f of froms) {\n args.push('--from');\n args.push(f);\n }\n }\n\n let to = 'aws+tf';\n if (options.to) {\n to = options.to;\n }\n args.push('--to');\n args.push(to);\n\n if (options.service) {\n const services = options.service.split(',');\n verifyServiceMappingExists(services);\n args.push('--ignore');\n args.push(createIgnorePattern(services));\n }\n\n debug(args);\n\n return args;\n};\n\nexport function translateExitCode(exitCode: number | null): number {\n switch (exitCode) {\n case DCTL_EXIT_CODES.EXIT_IN_SYNC:\n return 0;\n case DCTL_EXIT_CODES.EXIT_NOT_IN_SYNC:\n return EXIT_CODES.VULNS_FOUND;\n case DCTL_EXIT_CODES.EXIT_ERROR:\n return EXIT_CODES.ERROR;\n default:\n debug('driftctl returned %d', exitCode);\n return EXIT_CODES.ERROR;\n }\n}\n\nexport const parseDriftAnalysisResults = (input: string): DriftAnalysis => {\n return JSON.parse(input) as DriftAnalysis;\n};\n\nexport const runDriftCTL = async ({\n options,\n driftIgnore,\n input,\n stdio,\n}: {\n options: DriftCTLOptions;\n driftIgnore?: string[];\n input?: string;\n stdio?: StdioOptions;\n}): Promise<DriftctlExecutionResult> => {\n const path = await findOrDownload();\n await validateArgs(options);\n const args = await generateArgs(options, driftIgnore);\n\n if (!stdio) {\n stdio = ['pipe', 'pipe', 'inherit'];\n }\n\n debug('running driftctl %s ', args.join(' '));\n\n const p = child_process.spawn(path, args, {\n stdio,\n env: { ...process.env, DCTL_IS_SNYK: 'true' },\n });\n\n let stdout = '';\n return new Promise<DriftctlExecutionResult>((resolve, reject) => {\n if (input) {\n p.stdin?.write(input);\n p.stdin?.end();\n }\n p.on('error', (error) => {\n reject(error);\n });\n\n p.stdout?.on('data', (data) => {\n stdout += data;\n });\n\n p.on('exit', (code) => {\n resolve({ code: translateExitCode(code), stdout });\n });\n });\n};\n\nasync function findOrDownload(): Promise<string> {\n let dctl = await findDriftCtl();\n if (isBinaryDownloaded) {\n return dctl;\n }\n let downloadDuration = 0;\n let binaryExist = true;\n if (dctl === '') {\n binaryExist = false;\n try {\n createIfNotExists(cachePath);\n dctl = driftctlPath;\n\n const duration = new TimerMetricInstance('driftctl_download');\n duration.start();\n await download(driftctlUrl(), dctl);\n duration.stop();\n\n downloadDuration = Math.round((duration.getValue() as number) / 1000);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n analytics.add('iac-drift-binary-already-exist', binaryExist);\n analytics.add('iac-drift-binary-download-duration-seconds', downloadDuration);\n isBinaryDownloaded = true;\n return dctl;\n}\n\nasync function findDriftCtl(): Promise<string> {\n // lookup in custom path contained in env var DRIFTCTL_PATH\n let dctlPath = config.DRIFTCTL_PATH;\n if (dctlPath != null) {\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in $DRIFTCTL_PATH: %s', dctlPath);\n return dctlPath;\n }\n }\n\n // lookup in app cache\n dctlPath = driftctlPath;\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in cache: %s', dctlPath);\n return dctlPath;\n }\n\n // lookup in /bin\n // when used in a docker context the default binary path should be used\n {\n dctlPath = '/bin/driftctl';\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in %s', dctlPath);\n return dctlPath;\n }\n }\n\n debug('driftctl not found');\n return '';\n}\n\nasync function download(url, destination: string): Promise<boolean> {\n debug('downloading driftctl into %s', destination);\n\n const payload = {\n method: 'GET',\n url: url,\n output: destination,\n follow: 3,\n };\n\n await spinner('Downloading...');\n return new Promise<boolean>((resolve, reject) => {\n makeRequest(payload, function(err, res, body) {\n try {\n if (err) {\n reject(\n new Error('Could not download driftctl from ' + url + ': ' + err),\n );\n return;\n }\n if (res.statusCode !== 200) {\n reject(\n new Error(\n 'Could not download driftctl from ' + url + ': ' + res.statusCode,\n ),\n );\n return;\n }\n\n validateChecksum(body);\n\n fs.writeFileSync(destination, body);\n debug('File saved: ' + destination);\n\n fs.chmodSync(destination, 0o744);\n resolve(true);\n } finally {\n spinner.clearAll();\n }\n });\n });\n}\n\nfunction validateChecksum(body: string) {\n // only validate if we downloaded the official driftctl binary\n if (config.DRIFTCTL_URL || config.DRIFTCTL_PATH) {\n return;\n }\n\n const computedHash = crypto\n .createHash('sha256')\n .update(body)\n .digest('hex');\n const givenHash = driftctlChecksums[driftctlFileName()];\n\n if (computedHash != givenHash) {\n throw new Error('Downloaded file has inconsistent checksum...');\n }\n}\n\nfunction driftctlFileName(): string {\n let platform = 'linux';\n switch (os.platform()) {\n case 'darwin':\n platform = 'darwin';\n break;\n case 'win32':\n platform = 'windows';\n break;\n }\n\n let arch = 'amd64';\n switch (os.arch()) {\n case 'ia32':\n case 'x32':\n arch = '386';\n break;\n case 'arm':\n arch = 'arm';\n break;\n case 'arm64':\n arch = 'arm64';\n break;\n }\n\n let ext = '';\n switch (os.platform()) {\n case 'win32':\n ext = '.exe';\n break;\n }\n\n return `driftctl_${platform}_${arch}${ext}`;\n}\n\nfunction driftctlUrl(): string {\n if (config.DRIFTCTL_URL) {\n return config.DRIFTCTL_URL;\n }\n\n return `${dctlBaseUrl}/${driftctlVersion}/${driftctlFileName()}`;\n}\n\nfunction isExe(dctlPath: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n fs.access(dctlPath, fs.constants.X_OK, (err) => {\n if (err) {\n resolve(false);\n return;\n }\n resolve(true);\n });\n });\n}\n\nfunction createIfNotExists(path: string) {\n if (!fs.existsSync(path)) {\n fs.mkdirSync(path, { recursive: true });\n }\n}\n\nexport function driftignoreFromPolicy(policy: Policy | undefined): string[] {\n const excludeSection = 'iac-drift';\n if (!policy || !policy.exclude || !(excludeSection in policy.exclude)) {\n return [];\n }\n return policy.exclude[excludeSection];\n}\n","import { CustomError } from '../errors';\nimport { IaCErrorCodes } from '../../cli/commands/test/iac-local-execution/types';\nimport { getErrorStringCode } from '../../cli/commands/test/iac-local-execution/error-utils';\n\nexport const services2resources = new Map<string, Array<string>>([\n // Amazon\n [\n 'aws_s3',\n [\n 'aws_s3_bucket',\n 'aws_s3_bucket_analytics_configuration',\n 'aws_s3_bucket_inventory',\n 'aws_s3_bucket_metric',\n 'aws_s3_bucket_notification',\n 'aws_s3_bucket_policy',\n ],\n ],\n [\n 'aws_ec2',\n [\n 'aws_instance',\n 'aws_key_pair',\n 'aws_ami',\n 'aws_ebs_snapshot',\n 'aws_ebs_volume',\n 'aws_eip',\n 'aws_eip_association',\n 'aws_volume_attachment',\n 'aws_launch_configuration',\n 'aws_launch_template',\n ],\n ],\n ['aws_lambda', ['aws_lambda_function', 'aws_lambda_event_source_mapping']],\n [\n 'aws_rds',\n [\n 'aws_db_instance',\n 'aws_db_subnet_group',\n 'aws_rds_cluster',\n 'aws_rds_cluster_endpoint',\n 'aws_rds_cluster_instance',\n ],\n ],\n ['aws_route53', ['aws_route53_record', 'aws_route53_zone']],\n [\n 'aws_iam',\n [\n 'aws_iam_access_key',\n 'aws_iam_policy',\n 'aws_iam_policy_attachment',\n 'aws_iam_role',\n 'aws_iam_role_policy',\n 'aws_iam_role_policy_attachment',\n 'aws_iam_user',\n 'aws_iam_user_policy',\n 'aws_iam_user_policy_attachment',\n ],\n ],\n [\n 'aws_vpc',\n [\n 'aws_security_group',\n 'aws_security_group_rule',\n 'aws_subnet',\n 'aws_default_vpc',\n 'aws_vpc',\n 'aws_default_security_group',\n 'aws_route_table',\n 'aws_default_route_table',\n 'aws_route',\n 'aws_route_table_association',\n 'aws_nat_gateway',\n 'aws_internet_gateway',\n ],\n ],\n [\n 'aws_api_gateway',\n [\n 'aws_api_gateway_resource',\n 'aws_api_gateway_rest_api',\n 'aws_api_gateway_account',\n 'aws_api_gateway_api_key',\n 'aws_api_gateway_authorizer',\n 'aws_api_gateway_base_path_mapping',\n 'aws_api_gateway_domain_name',\n 'aws_api_gateway_gateway_response',\n 'aws_api_gateway_integration',\n 'aws_api_gateway_integration_response',\n 'aws_api_gateway_method',\n 'aws_api_gateway_method_response',\n 'aws_api_gateway_method_settings',\n 'aws_api_gateway_model',\n 'aws_api_gateway_request_validator',\n 'aws_api_gateway_rest_api_policy',\n 'aws_api_gateway_stage',\n 'aws_api_gateway_vpc_link',\n ],\n ],\n [\n 'aws_apigatewayv2',\n [\n 'aws_apigatewayv2_api',\n 'aws_apigatewayv2_api_mapping',\n 'aws_apigatewayv2_authorizer',\n 'aws_apigatewayv2_deployment',\n 'aws_apigatewayv2_domain_name',\n 'aws_apigatewayv2_integration',\n 'aws_apigatewayv2_integration_response',\n 'aws_apigatewayv2_model',\n 'aws_apigatewayv2_route',\n 'aws_apigatewayv2_route_response',\n 'aws_apigatewayv2_stage',\n 'aws_apigatewayv2_vpc_link',\n ],\n ],\n ['aws_sqs', ['aws_sqs_queue', 'aws_sqs_queue_policy']],\n [\n 'aws_sns',\n ['aws_sns_topic', 'aws_sns_topic_policy', 'aws_sns_topic_subscription'],\n ],\n ['aws_ecr', ['aws_ecr_repository']],\n ['aws_cloudfront', ['aws_cloudfront_distribution']],\n ['aws_kms', ['aws_kms_key', 'aws_kms_alias']],\n ['aws_dynamodb', ['aws_dynamodb_table']],\n // Azure\n ['azure_base', ['azurerm_resource_group']],\n ['azure_compute', ['azurerm_image', 'azurerm_ssh_public_key']],\n ['azure_storage', ['azurerm_storage_account', 'azurerm_storage_container']],\n [\n 'azure_network',\n [\n 'azurerm_resource_group',\n 'azurerm_subnet',\n 'azurerm_public_ip',\n 'azurerm_firewall',\n 'azurerm_route',\n 'azurerm_route_table',\n 'azurerm_network_security_group',\n ],\n ],\n ['azure_container', ['azurerm_container_registry']],\n [\n 'azure_database',\n ['azurerm_postgresql_server', 'azurerm_postgresql_database'],\n ],\n ['azure_loadbalancer', ['azurerm_lb', 'azurerm_lb_rule']],\n [\n 'azure_private_dns',\n [\n 'azurerm_private_dns_a_record',\n 'azurerm_private_dns_aaaa_record',\n 'azurerm_private_dns_cname_record',\n 'azurerm_private_dns_mx_record',\n 'azurerm_private_dns_ptr_record',\n 'azurerm_private_dns_srv_record',\n 'azurerm_private_dns_txt_record',\n 'azurerm_private_dns_zone',\n ],\n ],\n\n // Google\n [\n 'google_cloud_platform',\n [\n 'google_project_iam_binding',\n 'google_project_iam_member',\n 'google_project_iam_policy',\n ],\n ],\n [\n 'google_cloud_storage',\n [\n 'google_storage_bucket',\n 'google_storage_bucket_iam_binding',\n 'google_storage_bucket_iam_member',\n 'google_storage_bucket_iam_policy',\n ],\n ],\n [\n 'google_compute_engine',\n [\n 'google_compute_address',\n 'google_compute_disk',\n 'google_compute_global_address',\n 'google_compute_firewall',\n 'google_compute_health_check',\n 'google_compute_image',\n 'google_compute_instance',\n 'google_compute_instance_group',\n 'google_compute_network',\n 'google_compute_node_group',\n 'google_compute_router',\n 'google_compute_subnetwork',\n ],\n ],\n ['google_cloud_dns', ['google_dns_managed_zone']],\n [\n 'google_cloud_bigtable',\n ['google_bigtable_instance', 'google_bigtable_table'],\n ],\n [\n 'google_cloud_bigquery',\n ['google_bigquery_table', 'google_bigquery_dataset'],\n ],\n ['google_cloud_functions', ['google_cloudfunctions_function']],\n ['google_cloud_sql', ['google_sql_database_instance']],\n ['google_cloud_run', ['google_cloud_run_service']],\n]);\n\nexport function verifyServiceMappingExists(services: string[]): void {\n if (services.length == 0) {\n throw new InvalidServiceError('');\n }\n for (const s of services) {\n if (!services2resources.has(s)) {\n throw new InvalidServiceError(\n `We were unable to match service \"${s}\". Please provide a valid service name: ${existingServiceNames()}`,\n );\n }\n }\n}\n\nfunction existingServiceNames(): string {\n let res = '';\n for (const s of services2resources.keys()) {\n res += `${s},`;\n }\n return res.substring(0, res.length - 1);\n}\n\nexport function createIgnorePattern(services: string[]): string {\n return createIgnorePatternWithMap(services, services2resources);\n}\n\nexport function createIgnorePatternWithMap(\n services: string[],\n serviceMap: Map<string, Array<string>>,\n): string {\n let res = '*';\n const seenResources = new Set<string>();\n for (const s of services) {\n const resourcePatterns = serviceMap.get(s);\n for (const rp of resourcePatterns || []) {\n // A resource might belong to multiple services, skip it if already processed\n if (seenResources.has(rp)) {\n continue;\n }\n res += `,!${rp}`;\n seenResources.add(rp);\n }\n }\n return res;\n}\n\nexport class InvalidServiceError extends CustomError {\n constructor(msg: string) {\n super(msg);\n this.code = IaCErrorCodes.InvalidServiceError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n"],"names":[],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"459.index.js","mappings":"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","sources":["webpack://snyk/./src/cli/commands/test/iac-local-execution/assert-iac-options-flag.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/error-utils.ts","webpack://snyk/./src/cli/commands/test/iac-local-execution/org-settings/get-iac-org-settings.ts","webpack://snyk/./src/lib/errors/describe-exclusive-argument-error.ts","webpack://snyk/./src/lib/errors/describe-required-argument-error.ts","webpack://snyk/./src/lib/iac/drift.ts","webpack://snyk/./src/lib/iac/service-mappings.ts"],"sourcesContent":["import { CustomError } from '../../../../lib/errors';\nimport { args } from '../../../args';\nimport { getErrorStringCode } from './error-utils';\nimport { IaCErrorCodes, IaCTestFlags, TerraformPlanScanMode } from './types';\n\nconst keys: (keyof IaCTestFlags)[] = [\n 'org',\n 'debug',\n 'insecure',\n 'detectionDepth',\n 'severityThreshold',\n 'rules',\n 'json',\n 'sarif',\n 'json-file-output',\n 'sarif-file-output',\n 'v',\n 'version',\n 'h',\n 'help',\n 'q',\n 'quiet',\n 'scan',\n 'report',\n // Tags and attributes\n 'tags',\n 'project-tags',\n 'project-environment',\n 'project-lifecycle',\n 'project-business-criticality',\n 'target-reference',\n // PolicyOptions\n 'ignore-policy',\n 'policy-path',\n];\nconst allowed = new Set<string>(keys);\n\nfunction camelcaseToDash(key: string) {\n return key.replace(/[A-Z]/g, (m) => '-' + m.toLowerCase());\n}\n\nfunction getFlagName(key: string) {\n const dashes = key.length === 1 ? '-' : '--';\n const flag = camelcaseToDash(key);\n return `${dashes}${flag}`;\n}\n\nexport class FlagError extends CustomError {\n constructor(key: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported flag \"${flag}\" provided. Run snyk iac test --help for supported flags`;\n super(msg);\n this.code = IaCErrorCodes.FlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FeatureFlagError extends CustomError {\n constructor(key: string, featureFlag: string, hasSnykPreview?: boolean) {\n const flag = getFlagName(key);\n let msg;\n if (hasSnykPreview) {\n msg = `Flag \"${flag}\" is only supported if feature flag '${featureFlag}' is enabled. The feature flag can be enabled via Snyk Preview if you are on the Enterprise Plan`;\n } else {\n msg = `Flag \"${flag}\" is only supported if feature flag \"${featureFlag}\" is enabled. To enable it, please contact Snyk support.`;\n }\n super(msg);\n this.code = IaCErrorCodes.FeatureFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class FlagValueError extends CustomError {\n constructor(key: string, value: string) {\n const flag = getFlagName(key);\n const msg = `Unsupported value \"${value}\" provided to flag \"${flag}\".\\nSupported values are: ${SUPPORTED_TF_PLAN_SCAN_MODES.join(\n ', ',\n )}`;\n super(msg);\n this.code = IaCErrorCodes.FlagValueError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n\nexport class UnsupportedEntitlementFlagError extends CustomError {\n constructor(key: string, entitlementName: string) {\n const flag = getFlagName(key);\n super(\n `Unsupported flag: ${flag} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Flag \"${flag}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\nexport class UnsupportedEntitlementCommandError extends CustomError {\n constructor(key: string, entitlementName: string) {\n super(\n `Unsupported command: ${key} - Missing the ${entitlementName} entitlement`,\n );\n this.code = IaCErrorCodes.UnsupportedEntitlementFlagError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = `Command \"${key}\" is currently not supported for this org. To enable it, please contact snyk support.`;\n }\n}\n\n/**\n * Validates the command line flags passed to the snyk iac test\n * command. The current argument parsing is very permissive and\n * allows unknown flags to be provided without valdiation.\n *\n * For snyk iac we need to explictly validate the flags to avoid\n * misconfigurations and typos. For example, if the --experimental\n * flag were to be mis-spelled we would end up sending the client\n * data to our backend rather than running it locally as intended.\n * @param argv command line args passed to the process\n */\nexport function assertIaCOptionsFlags(argv: string[]) {\n // We process the process.argv so we don't get default values.\n const parsed = args(argv);\n for (const key of Object.keys(parsed.options)) {\n // The _ property is a special case that contains non\n // flag strings passed to the command line (usually files)\n // and `iac` is the command provided.\n if (key !== '_' && key !== 'iac' && !allowed.has(key)) {\n throw new FlagError(key);\n }\n }\n\n if (parsed.options.scan) {\n assertTerraformPlanModes(parsed.options.scan as string);\n }\n}\n\nconst SUPPORTED_TF_PLAN_SCAN_MODES = [\n TerraformPlanScanMode.DeltaScan,\n TerraformPlanScanMode.FullScan,\n];\n\nfunction assertTerraformPlanModes(scanModeArgValue: string) {\n if (\n !SUPPORTED_TF_PLAN_SCAN_MODES.includes(\n scanModeArgValue as TerraformPlanScanMode,\n )\n ) {\n throw new FlagValueError('scan', scanModeArgValue);\n }\n}\n\nexport function isIacShareResultsOptions(options) {\n return options.iac && options.report;\n}\n","import { IaCErrorCodes } from './types';\n\nexport function getErrorStringCode(code: number): string {\n const errorName = IaCErrorCodes[code];\n if (!errorName) {\n return 'INVALID_IAC_ERROR';\n }\n let result = errorName.replace(/([A-Z])/g, '_$1');\n if (result.charAt(0) === '_') {\n result = result.substring(1);\n }\n return result.toUpperCase();\n}\n","import { IaCErrorCodes, IacOrgSettings } from '../types';\nimport { Payload } from '../../../../../lib/snyk-test/types';\nimport config from '../../../../../lib/config';\nimport { isCI } from '../../../../../lib/is-ci';\nimport { api } from '../../../../../lib/api-token';\nimport { makeRequest } from '../../../../../lib/request';\nimport { CustomError } from '../../../../../lib/errors';\nimport { getErrorStringCode } from '../error-utils';\n\nexport function getIacOrgSettings(\n publicOrgId?: string,\n): Promise<IacOrgSettings> {\n const payload: Payload = {\n method: 'get',\n url: config.API + '/iac-org-settings',\n json: true,\n qs: { org: publicOrgId },\n headers: {\n 'x-is-ci': isCI(),\n authorization: `token ${api()}`,\n },\n };\n\n return new Promise((resolve, reject) => {\n makeRequest(payload, (error, res) => {\n if (error) {\n return reject(error);\n }\n if (res.statusCode < 200 || res.statusCode > 299) {\n return reject(new FailedToGetIacOrgSettingsError());\n }\n resolve(res.body);\n });\n });\n}\n\nexport class FailedToGetIacOrgSettingsError extends CustomError {\n constructor(message?: string) {\n super(message || 'Failed to fetch IaC organization settings');\n this.code = IaCErrorCodes.FailedToGetIacOrgSettingsError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage =\n 'We failed to fetch your organization settings, including custom severity overrides for infrastructure-as-code policies. Please run the command again with the `-d` flag and contact support@snyk.io with the contents of the output.';\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeExclusiveArgs } from '../iac/drift';\n\nexport class DescribeExclusiveArgumentError extends CustomError {\n constructor() {\n super(\n 'Please use only one of these arguments: ' +\n DescribeExclusiveArgs.join(', '),\n );\n }\n}\n","import { CustomError } from './custom-error';\nimport { DescribeRequiredArgs } from '../iac/drift';\n\nexport class DescribeRequiredArgumentError extends CustomError {\n constructor() {\n super(\n 'Describe command require one of these arguments: ' +\n DescribeRequiredArgs.join(', '),\n );\n }\n}\n","import * as debugLib from 'debug';\nimport * as child_process from 'child_process';\nimport { StdioOptions } from 'child_process';\nimport * as os from 'os';\nimport envPaths from 'env-paths';\nimport * as fs from 'fs';\nimport { spinner } from '../spinner';\nimport { makeRequest } from '../request';\nimport config from '../../lib/config';\nimport * as path from 'path';\nimport * as crypto from 'crypto';\nimport {\n createIgnorePattern,\n verifyServiceMappingExists,\n} from './service-mappings';\nimport { EXIT_CODES } from '../../cli/exit-codes';\nimport {\n DescribeOptions,\n DriftAnalysis,\n DriftctlExecutionResult,\n DriftCTLOptions,\n FmtOptions,\n GenDriftIgnoreOptions,\n} from './types';\nimport { TimerMetricInstance } from '../metrics';\nimport * as analytics from '../../lib/analytics';\nimport { Policy } from '../policy/find-and-load-policy';\nimport { DescribeExclusiveArgumentError } from '../errors/describe-exclusive-argument-error';\nimport { DescribeRequiredArgumentError } from '../errors/describe-required-argument-error';\n\nconst cachePath = config.CACHE_PATH ?? envPaths('snyk').cache;\nconst debug = debugLib('drift');\n\nexport const DCTL_EXIT_CODES = {\n EXIT_IN_SYNC: 0,\n EXIT_NOT_IN_SYNC: 1,\n EXIT_ERROR: 2,\n};\n\nexport const DescribeExclusiveArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\nexport const DescribeRequiredArgs = [\n 'all',\n 'only-managed',\n 'drift',\n 'only-unmanaged',\n];\n\n// ⚠ Keep in mind to also update driftctl version used to generate docker images\n// You can edit base image used for snyk final image here https://github.com/snyk/snyk-images/blob/master/alpine\nexport const driftctlVersion = 'v0.23.0';\n\nconst driftctlChecksums = {\n 'driftctl_windows_386.exe':\n 'e5befbafe2291674a4d6c8522411a44fea3549057fb46d331402d49b180202fe',\n driftctl_darwin_amd64:\n '9af4e88a8e08e53ac3c373407bdd0b18a91941dc620266349f10600fc7b283d2',\n driftctl_linux_386:\n '6cd2719f81210017e3f67677cb92f4b0060976a3588c220b4af6b2dda174df8f',\n driftctl_linux_amd64:\n 'd714a3d11056169f4c4cc047b48b4d732f5df8cdfbc00e40c3e5f6e6cc5ead3e',\n driftctl_linux_arm64:\n '24812c8b2ec2d8e3d619317e76fbba0d8e7e263fc2c26cba26265a9656e8fe91',\n 'driftctl_windows_arm64.exe':\n 'd84461f0ba63b59aec66393fa67147f4157b5bddc02a19315d737c5f5a46c07b',\n driftctl_darwin_arm64:\n 'b711143d9331a10fc34c202284f67ce5eeb0348baca546b47af139f418f812c1',\n 'driftctl_windows_arm.exe':\n 'b5d24e1407c24ddfff63ffbba85eb1dc13473e2fd36e3e99e5e1762cf615f011',\n driftctl_linux_arm:\n '089665efa8a7c5e95b3cee9ace85fc5b0f2d7f2a29c351f2d3dbef3dae553e2d',\n 'driftctl_windows_amd64.exe':\n 'bf7310277eeccc2679b529c1f1d2ced30e877949a6d7c5606eb2d4c2ec033b66',\n};\n\nconst dctlBaseUrl = 'https://github.com/snyk/driftctl/releases/download/';\nconst driftctlPath = path.join(cachePath, 'driftctl_' + driftctlVersion);\nconst driftctlDefaultOptions = ['--no-version-check'];\nlet isBinaryDownloaded = false;\n\nexport const validateArgs = (options: DriftCTLOptions): void => {\n if (options.kind === 'describe') {\n return validateDescribeArgs(options as DescribeOptions);\n }\n};\n\nconst validateDescribeArgs = (options: DescribeOptions): void => {\n // Check that there is no more than one of the exclusive arguments\n let count = 0;\n for (const describeExclusiveArg of DescribeExclusiveArgs) {\n if (options[describeExclusiveArg]) {\n count++;\n }\n }\n if (count > 1) {\n throw new DescribeExclusiveArgumentError();\n }\n\n // Check we have one of the required arguments\n count = 0;\n for (const describeRequiredArgs of DescribeRequiredArgs) {\n if (options[describeRequiredArgs]) {\n count++;\n }\n }\n if (count === 0) {\n throw new DescribeRequiredArgumentError();\n }\n};\n\nexport const generateArgs = (\n options: DriftCTLOptions,\n driftIgnore?: string[],\n): string[] => {\n if (options.kind === 'describe') {\n return generateScanFlags(options as DescribeOptions, driftIgnore);\n }\n\n if (options.kind === 'gen-driftignore') {\n return generateGenDriftIgnoreFlags(options as GenDriftIgnoreOptions);\n }\n\n if (options.kind === 'fmt') {\n return generateFmtFlags(options as FmtOptions);\n }\n\n throw 'Unsupported command';\n};\n\nexport const generateGenDriftIgnoreFlags = (\n options: GenDriftIgnoreOptions,\n): string[] => {\n const args: string[] = ['gen-driftignore', ...driftctlDefaultOptions];\n\n if (options.input) {\n args.push('--input');\n args.push(options.input);\n }\n\n if (options.output) {\n args.push('--output');\n args.push(options.output);\n }\n\n if (options['exclude-changed']) {\n args.push('--exclude-changed');\n }\n\n if (options['exclude-missing']) {\n args.push('--exclude-missing');\n }\n\n if (options['exclude-unmanaged']) {\n args.push('--exclude-unmanaged');\n }\n\n return args;\n};\n\nconst generateFmtFlags = (options: FmtOptions): string[] => {\n const args: string[] = ['fmt', ...driftctlDefaultOptions];\n\n if (options.json) {\n args.push('--output');\n args.push('json://stdout');\n }\n\n if (options['json-file-output']) {\n args.push('--output');\n args.push('json://' + options['json-file-output']);\n }\n\n if (options.html) {\n args.push('--output');\n args.push('html://stdout');\n }\n\n if (options['html-file-output']) {\n args.push('--output');\n args.push('html://' + options['html-file-output']);\n }\n\n return args;\n};\n\nconst generateScanFlags = (\n options: DescribeOptions,\n driftIgnore?: string[],\n): string[] => {\n const args: string[] = ['scan', ...driftctlDefaultOptions];\n\n if (options.quiet) {\n args.push('--quiet');\n }\n\n if (options.filter) {\n args.push('--filter');\n args.push(options.filter);\n }\n\n args.push('--output');\n args.push('json://stdout');\n\n if (options['fetch-tfstate-headers']) {\n args.push('--headers');\n args.push(options['fetch-tfstate-headers']);\n }\n\n if (options['tfc-token']) {\n args.push('--tfc-token');\n args.push(options['tfc-token']);\n }\n\n if (options['tfc-endpoint']) {\n args.push('--tfc-endpoint');\n args.push(options['tfc-endpoint']);\n }\n\n if (options['tf-provider-version']) {\n args.push('--tf-provider-version');\n args.push(options['tf-provider-version']);\n }\n\n if (options.strict) {\n args.push('--strict');\n }\n\n if (options.deep) {\n args.push('--deep');\n }\n\n if (options['only-managed'] || options.drift) {\n args.push('--only-managed');\n }\n\n if (options['only-unmanaged']) {\n args.push('--only-unmanaged');\n }\n\n if (options.driftignore) {\n args.push('--driftignore');\n args.push(options.driftignore);\n }\n\n if (options['tf-lockfile']) {\n args.push('--tf-lockfile');\n args.push(options['tf-lockfile']);\n }\n\n if (driftIgnore && driftIgnore.length > 0) {\n args.push('--ignore');\n args.push(driftIgnore.join(','));\n }\n\n let configDir = cachePath;\n createIfNotExists(cachePath);\n if (options['config-dir']) {\n configDir = options['config-dir'];\n }\n args.push('--config-dir');\n args.push(configDir);\n\n if (options.from) {\n const froms = options.from.split(',');\n for (const f of froms) {\n args.push('--from');\n args.push(f);\n }\n }\n\n let to = 'aws+tf';\n if (options.to) {\n to = options.to;\n }\n args.push('--to');\n args.push(to);\n\n if (options.service) {\n const services = options.service.split(',');\n verifyServiceMappingExists(services);\n args.push('--ignore');\n args.push(createIgnorePattern(services));\n }\n\n debug(args);\n\n return args;\n};\n\nexport function translateExitCode(exitCode: number | null): number {\n switch (exitCode) {\n case DCTL_EXIT_CODES.EXIT_IN_SYNC:\n return 0;\n case DCTL_EXIT_CODES.EXIT_NOT_IN_SYNC:\n return EXIT_CODES.VULNS_FOUND;\n case DCTL_EXIT_CODES.EXIT_ERROR:\n return EXIT_CODES.ERROR;\n default:\n debug('driftctl returned %d', exitCode);\n return EXIT_CODES.ERROR;\n }\n}\n\nexport const parseDriftAnalysisResults = (input: string): DriftAnalysis => {\n return JSON.parse(input) as DriftAnalysis;\n};\n\nexport const runDriftCTL = async ({\n options,\n driftIgnore,\n input,\n stdio,\n}: {\n options: DriftCTLOptions;\n driftIgnore?: string[];\n input?: string;\n stdio?: StdioOptions;\n}): Promise<DriftctlExecutionResult> => {\n const path = await findOrDownload();\n await validateArgs(options);\n const args = await generateArgs(options, driftIgnore);\n\n if (!stdio) {\n stdio = ['pipe', 'pipe', 'inherit'];\n }\n\n debug('running driftctl %s ', args.join(' '));\n\n const p = child_process.spawn(path, args, {\n stdio,\n env: { ...process.env, DCTL_IS_SNYK: 'true' },\n });\n\n let stdout = '';\n return new Promise<DriftctlExecutionResult>((resolve, reject) => {\n if (input) {\n p.stdin?.write(input);\n p.stdin?.end();\n }\n p.on('error', (error) => {\n reject(error);\n });\n\n p.stdout?.on('data', (data) => {\n stdout += data;\n });\n\n p.on('exit', (code) => {\n resolve({ code: translateExitCode(code), stdout });\n });\n });\n};\n\nasync function findOrDownload(): Promise<string> {\n let dctl = await findDriftCtl();\n if (isBinaryDownloaded) {\n return dctl;\n }\n let downloadDuration = 0;\n let binaryExist = true;\n if (dctl === '') {\n binaryExist = false;\n try {\n createIfNotExists(cachePath);\n dctl = driftctlPath;\n\n const duration = new TimerMetricInstance('driftctl_download');\n duration.start();\n await download(driftctlUrl(), dctl);\n duration.stop();\n\n downloadDuration = Math.round((duration.getValue() as number) / 1000);\n } catch (err) {\n return Promise.reject(err);\n }\n }\n analytics.add('iac-drift-binary-already-exist', binaryExist);\n analytics.add('iac-drift-binary-download-duration-seconds', downloadDuration);\n isBinaryDownloaded = true;\n return dctl;\n}\n\nasync function findDriftCtl(): Promise<string> {\n // lookup in custom path contained in env var DRIFTCTL_PATH\n let dctlPath = config.DRIFTCTL_PATH;\n if (dctlPath != null) {\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in $DRIFTCTL_PATH: %s', dctlPath);\n return dctlPath;\n }\n }\n\n // lookup in app cache\n dctlPath = driftctlPath;\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in cache: %s', dctlPath);\n return dctlPath;\n }\n\n // lookup in /bin\n // when used in a docker context the default binary path should be used\n {\n dctlPath = '/bin/driftctl';\n const exists = await isExe(dctlPath);\n if (exists) {\n debug('Found driftctl in %s', dctlPath);\n return dctlPath;\n }\n }\n\n debug('driftctl not found');\n return '';\n}\n\nasync function download(url, destination: string): Promise<boolean> {\n debug('downloading driftctl into %s', destination);\n\n const payload = {\n method: 'GET',\n url: url,\n output: destination,\n follow: 3,\n };\n\n await spinner('Downloading...');\n return new Promise<boolean>((resolve, reject) => {\n makeRequest(payload, function(err, res, body) {\n try {\n if (err) {\n reject(\n new Error('Could not download driftctl from ' + url + ': ' + err),\n );\n return;\n }\n if (res.statusCode !== 200) {\n reject(\n new Error(\n 'Could not download driftctl from ' + url + ': ' + res.statusCode,\n ),\n );\n return;\n }\n\n validateChecksum(body);\n\n fs.writeFileSync(destination, body);\n debug('File saved: ' + destination);\n\n fs.chmodSync(destination, 0o744);\n resolve(true);\n } finally {\n spinner.clearAll();\n }\n });\n });\n}\n\nfunction validateChecksum(body: string) {\n // only validate if we downloaded the official driftctl binary\n if (config.DRIFTCTL_URL || config.DRIFTCTL_PATH) {\n return;\n }\n\n const computedHash = crypto\n .createHash('sha256')\n .update(body)\n .digest('hex');\n const givenHash = driftctlChecksums[driftctlFileName()];\n\n if (computedHash != givenHash) {\n throw new Error('Downloaded file has inconsistent checksum...');\n }\n}\n\nfunction driftctlFileName(): string {\n let platform = 'linux';\n switch (os.platform()) {\n case 'darwin':\n platform = 'darwin';\n break;\n case 'win32':\n platform = 'windows';\n break;\n }\n\n let arch = 'amd64';\n switch (os.arch()) {\n case 'ia32':\n case 'x32':\n arch = '386';\n break;\n case 'arm':\n arch = 'arm';\n break;\n case 'arm64':\n arch = 'arm64';\n break;\n }\n\n let ext = '';\n switch (os.platform()) {\n case 'win32':\n ext = '.exe';\n break;\n }\n\n return `driftctl_${platform}_${arch}${ext}`;\n}\n\nfunction driftctlUrl(): string {\n if (config.DRIFTCTL_URL) {\n return config.DRIFTCTL_URL;\n }\n\n return `${dctlBaseUrl}/${driftctlVersion}/${driftctlFileName()}`;\n}\n\nfunction isExe(dctlPath: string): Promise<boolean> {\n return new Promise<boolean>((resolve) => {\n fs.access(dctlPath, fs.constants.X_OK, (err) => {\n if (err) {\n resolve(false);\n return;\n }\n resolve(true);\n });\n });\n}\n\nfunction createIfNotExists(path: string) {\n if (!fs.existsSync(path)) {\n fs.mkdirSync(path, { recursive: true });\n }\n}\n\nexport function driftignoreFromPolicy(policy: Policy | undefined): string[] {\n const excludeSection = 'iac-drift';\n if (!policy || !policy.exclude || !(excludeSection in policy.exclude)) {\n return [];\n }\n return policy.exclude[excludeSection];\n}\n","import { CustomError } from '../errors';\nimport { IaCErrorCodes } from '../../cli/commands/test/iac-local-execution/types';\nimport { getErrorStringCode } from '../../cli/commands/test/iac-local-execution/error-utils';\n\nexport const services2resources = new Map<string, Array<string>>([\n // Amazon\n [\n 'aws_s3',\n [\n 'aws_s3_bucket',\n 'aws_s3_bucket_analytics_configuration',\n 'aws_s3_bucket_inventory',\n 'aws_s3_bucket_metric',\n 'aws_s3_bucket_notification',\n 'aws_s3_bucket_policy',\n ],\n ],\n [\n 'aws_ec2',\n [\n 'aws_instance',\n 'aws_key_pair',\n 'aws_ami',\n 'aws_ebs_snapshot',\n 'aws_ebs_volume',\n 'aws_eip',\n 'aws_eip_association',\n 'aws_volume_attachment',\n 'aws_launch_configuration',\n 'aws_launch_template',\n ],\n ],\n ['aws_lambda', ['aws_lambda_function', 'aws_lambda_event_source_mapping']],\n [\n 'aws_rds',\n [\n 'aws_db_instance',\n 'aws_db_subnet_group',\n 'aws_rds_cluster',\n 'aws_rds_cluster_endpoint',\n 'aws_rds_cluster_instance',\n ],\n ],\n ['aws_route53', ['aws_route53_record', 'aws_route53_zone']],\n [\n 'aws_iam',\n [\n 'aws_iam_access_key',\n 'aws_iam_policy',\n 'aws_iam_policy_attachment',\n 'aws_iam_role',\n 'aws_iam_role_policy',\n 'aws_iam_role_policy_attachment',\n 'aws_iam_user',\n 'aws_iam_user_policy',\n 'aws_iam_user_policy_attachment',\n ],\n ],\n [\n 'aws_vpc',\n [\n 'aws_security_group',\n 'aws_security_group_rule',\n 'aws_subnet',\n 'aws_default_vpc',\n 'aws_vpc',\n 'aws_default_security_group',\n 'aws_route_table',\n 'aws_default_route_table',\n 'aws_route',\n 'aws_route_table_association',\n 'aws_nat_gateway',\n 'aws_internet_gateway',\n ],\n ],\n [\n 'aws_api_gateway',\n [\n 'aws_api_gateway_resource',\n 'aws_api_gateway_rest_api',\n 'aws_api_gateway_account',\n 'aws_api_gateway_api_key',\n 'aws_api_gateway_authorizer',\n 'aws_api_gateway_base_path_mapping',\n 'aws_api_gateway_domain_name',\n 'aws_api_gateway_gateway_response',\n 'aws_api_gateway_integration',\n 'aws_api_gateway_integration_response',\n 'aws_api_gateway_method',\n 'aws_api_gateway_method_response',\n 'aws_api_gateway_method_settings',\n 'aws_api_gateway_model',\n 'aws_api_gateway_request_validator',\n 'aws_api_gateway_rest_api_policy',\n 'aws_api_gateway_stage',\n 'aws_api_gateway_vpc_link',\n ],\n ],\n [\n 'aws_apigatewayv2',\n [\n 'aws_apigatewayv2_api',\n 'aws_apigatewayv2_api_mapping',\n 'aws_apigatewayv2_authorizer',\n 'aws_apigatewayv2_deployment',\n 'aws_apigatewayv2_domain_name',\n 'aws_apigatewayv2_integration',\n 'aws_apigatewayv2_integration_response',\n 'aws_apigatewayv2_model',\n 'aws_apigatewayv2_route',\n 'aws_apigatewayv2_route_response',\n 'aws_apigatewayv2_stage',\n 'aws_apigatewayv2_vpc_link',\n ],\n ],\n ['aws_sqs', ['aws_sqs_queue', 'aws_sqs_queue_policy']],\n [\n 'aws_sns',\n ['aws_sns_topic', 'aws_sns_topic_policy', 'aws_sns_topic_subscription'],\n ],\n ['aws_ecr', ['aws_ecr_repository']],\n ['aws_cloudfront', ['aws_cloudfront_distribution']],\n ['aws_kms', ['aws_kms_key', 'aws_kms_alias']],\n ['aws_dynamodb', ['aws_dynamodb_table']],\n // Azure\n ['azure_base', ['azurerm_resource_group']],\n ['azure_compute', ['azurerm_image', 'azurerm_ssh_public_key']],\n ['azure_storage', ['azurerm_storage_account', 'azurerm_storage_container']],\n [\n 'azure_network',\n [\n 'azurerm_resource_group',\n 'azurerm_subnet',\n 'azurerm_public_ip',\n 'azurerm_firewall',\n 'azurerm_route',\n 'azurerm_route_table',\n 'azurerm_network_security_group',\n ],\n ],\n ['azure_container', ['azurerm_container_registry']],\n [\n 'azure_database',\n ['azurerm_postgresql_server', 'azurerm_postgresql_database'],\n ],\n ['azure_loadbalancer', ['azurerm_lb', 'azurerm_lb_rule']],\n [\n 'azure_private_dns',\n [\n 'azurerm_private_dns_a_record',\n 'azurerm_private_dns_aaaa_record',\n 'azurerm_private_dns_cname_record',\n 'azurerm_private_dns_mx_record',\n 'azurerm_private_dns_ptr_record',\n 'azurerm_private_dns_srv_record',\n 'azurerm_private_dns_txt_record',\n 'azurerm_private_dns_zone',\n ],\n ],\n\n // Google\n [\n 'google_cloud_platform',\n [\n 'google_project_iam_binding',\n 'google_project_iam_member',\n 'google_project_iam_policy',\n ],\n ],\n [\n 'google_cloud_storage',\n [\n 'google_storage_bucket',\n 'google_storage_bucket_iam_binding',\n 'google_storage_bucket_iam_member',\n 'google_storage_bucket_iam_policy',\n ],\n ],\n [\n 'google_compute_engine',\n [\n 'google_compute_address',\n 'google_compute_disk',\n 'google_compute_global_address',\n 'google_compute_firewall',\n 'google_compute_health_check',\n 'google_compute_image',\n 'google_compute_instance',\n 'google_compute_instance_group',\n 'google_compute_network',\n 'google_compute_node_group',\n 'google_compute_router',\n 'google_compute_subnetwork',\n ],\n ],\n ['google_cloud_dns', ['google_dns_managed_zone']],\n [\n 'google_cloud_bigtable',\n ['google_bigtable_instance', 'google_bigtable_table'],\n ],\n [\n 'google_cloud_bigquery',\n ['google_bigquery_table', 'google_bigquery_dataset'],\n ],\n ['google_cloud_functions', ['google_cloudfunctions_function']],\n ['google_cloud_sql', ['google_sql_database_instance']],\n ['google_cloud_run', ['google_cloud_run_service']],\n]);\n\nexport function verifyServiceMappingExists(services: string[]): void {\n if (services.length == 0) {\n throw new InvalidServiceError('');\n }\n for (const s of services) {\n if (!services2resources.has(s)) {\n throw new InvalidServiceError(\n `We were unable to match service \"${s}\". Please provide a valid service name: ${existingServiceNames()}`,\n );\n }\n }\n}\n\nfunction existingServiceNames(): string {\n let res = '';\n for (const s of services2resources.keys()) {\n res += `${s},`;\n }\n return res.substring(0, res.length - 1);\n}\n\nexport function createIgnorePattern(services: string[]): string {\n return createIgnorePatternWithMap(services, services2resources);\n}\n\nexport function createIgnorePatternWithMap(\n services: string[],\n serviceMap: Map<string, Array<string>>,\n): string {\n let res = '*';\n const seenResources = new Set<string>();\n for (const s of services) {\n const resourcePatterns = serviceMap.get(s);\n for (const rp of resourcePatterns || []) {\n // A resource might belong to multiple services, skip it if already processed\n if (seenResources.has(rp)) {\n continue;\n }\n res += `,!${rp}`;\n seenResources.add(rp);\n }\n }\n return res;\n}\n\nexport class InvalidServiceError extends CustomError {\n constructor(msg: string) {\n super(msg);\n this.code = IaCErrorCodes.InvalidServiceError;\n this.strCode = getErrorStringCode(this.code);\n this.userMessage = msg;\n }\n}\n"],"names":[],"sourceRoot":""}
|
package/dist/cli/917.index.js
CHANGED
|
@@ -696,7 +696,14 @@ async function test(pathToScan, options) {
|
|
|
696
696
|
const resultsWithCustomSeverities = await measurable_methods_1.applyCustomSeverities(scannedFiles, iacOrgSettings.customPolicies);
|
|
697
697
|
let projectPublicIds = {};
|
|
698
698
|
if (options.report) {
|
|
699
|
-
projectPublicIds = await share_results_1.formatAndShareResults(
|
|
699
|
+
projectPublicIds = await share_results_1.formatAndShareResults({
|
|
700
|
+
results: resultsWithCustomSeverities,
|
|
701
|
+
options,
|
|
702
|
+
orgPublicId,
|
|
703
|
+
policy,
|
|
704
|
+
tags,
|
|
705
|
+
attributes,
|
|
706
|
+
});
|
|
700
707
|
}
|
|
701
708
|
const formattedResults = measurable_methods_1.formatScanResults(resultsWithCustomSeverities, options, iacOrgSettings.meta, projectPublicIds);
|
|
702
709
|
const { filteredIssues, ignoreCount } = policy_1.filterIgnoredIssues(policy, formattedResults);
|
|
@@ -1537,13 +1544,19 @@ const feature_flags_1 = __webpack_require__(63011);
|
|
|
1537
1544
|
const cli_share_results_1 = __webpack_require__(24016);
|
|
1538
1545
|
const assert_iac_options_flag_1 = __webpack_require__(68590);
|
|
1539
1546
|
const share_results_formatter_1 = __webpack_require__(37324);
|
|
1540
|
-
async function formatAndShareResults(results, options, orgPublicId, policy, tags, attributes) {
|
|
1547
|
+
async function formatAndShareResults({ results, options, orgPublicId, policy, tags, attributes, }) {
|
|
1541
1548
|
const isCliReportEnabled = await feature_flags_1.isFeatureFlagSupportedForOrg('iacCliShareResults', orgPublicId);
|
|
1542
1549
|
if (!isCliReportEnabled.ok) {
|
|
1543
1550
|
throw new assert_iac_options_flag_1.FeatureFlagError('report', 'iacCliShareResults');
|
|
1544
1551
|
}
|
|
1545
1552
|
const formattedResults = share_results_formatter_1.formatShareResults(results, options);
|
|
1546
|
-
return await cli_share_results_1.shareResults(
|
|
1553
|
+
return await cli_share_results_1.shareResults({
|
|
1554
|
+
results: formattedResults,
|
|
1555
|
+
policy,
|
|
1556
|
+
tags,
|
|
1557
|
+
attributes,
|
|
1558
|
+
options,
|
|
1559
|
+
});
|
|
1547
1560
|
}
|
|
1548
1561
|
exports.formatAndShareResults = formatAndShareResults;
|
|
1549
1562
|
|
|
@@ -2645,15 +2658,16 @@ const config_1 = __webpack_require__(22541);
|
|
|
2645
2658
|
const request_1 = __webpack_require__(52050);
|
|
2646
2659
|
const api_token_1 = __webpack_require__(95181);
|
|
2647
2660
|
const envelope_formatters_1 = __webpack_require__(88784);
|
|
2648
|
-
const authentication_failed_error_1 = __webpack_require__(23770);
|
|
2649
2661
|
const git_1 = __webpack_require__(24850);
|
|
2650
2662
|
const analytics = __webpack_require__(82744);
|
|
2651
2663
|
const dev_count_analysis_1 = __webpack_require__(73898);
|
|
2652
2664
|
const Debug = __webpack_require__(15158);
|
|
2665
|
+
const errors_1 = __webpack_require__(55191);
|
|
2653
2666
|
const debug = Debug('iac-cli-share-results');
|
|
2654
|
-
async function shareResults(results, policy, tags, attributes) {
|
|
2667
|
+
async function shareResults({ results, policy, tags, attributes, options, }) {
|
|
2668
|
+
var _a, _b;
|
|
2655
2669
|
const gitTarget = (await git_1.getInfo(false));
|
|
2656
|
-
const scanResults = results.map((result) => envelope_formatters_1.convertIacResultToScanResult(result, policy, gitTarget));
|
|
2670
|
+
const scanResults = results.map((result) => envelope_formatters_1.convertIacResultToScanResult(result, policy, gitTarget, options));
|
|
2657
2671
|
let contributors = [];
|
|
2658
2672
|
if (gitTarget.remoteUrl) {
|
|
2659
2673
|
if (analytics.allowAnalytics()) {
|
|
@@ -2669,6 +2683,7 @@ async function shareResults(results, policy, tags, attributes) {
|
|
|
2669
2683
|
method: 'POST',
|
|
2670
2684
|
url: `${config_1.default.API}/iac-cli-share-results`,
|
|
2671
2685
|
json: true,
|
|
2686
|
+
qs: { org: (_a = options === null || options === void 0 ? void 0 : options.org) !== null && _a !== void 0 ? _a : config_1.default.org },
|
|
2672
2687
|
headers: {
|
|
2673
2688
|
authorization: api_token_1.getAuthHeader(),
|
|
2674
2689
|
},
|
|
@@ -2680,7 +2695,10 @@ async function shareResults(results, policy, tags, attributes) {
|
|
|
2680
2695
|
},
|
|
2681
2696
|
});
|
|
2682
2697
|
if (res.statusCode === 401) {
|
|
2683
|
-
throw
|
|
2698
|
+
throw errors_1.AuthFailedError();
|
|
2699
|
+
}
|
|
2700
|
+
if (res.statusCode === 422) {
|
|
2701
|
+
throw new errors_1.ValidationError((_b = res.body.error) !== null && _b !== void 0 ? _b : 'An error occurred, please contact Snyk support');
|
|
2684
2702
|
}
|
|
2685
2703
|
return body;
|
|
2686
2704
|
}
|
|
@@ -2724,7 +2742,7 @@ exports.TEST_SUPPORTED_IAC_PROJECTS = [
|
|
|
2724
2742
|
|
|
2725
2743
|
Object.defineProperty(exports, "__esModule", ({ value: true }));
|
|
2726
2744
|
exports.convertIacResultToScanResult = void 0;
|
|
2727
|
-
function convertIacResultToScanResult(iacResult, policy, gitTarget) {
|
|
2745
|
+
function convertIacResultToScanResult(iacResult, policy, gitTarget, options) {
|
|
2728
2746
|
var _a;
|
|
2729
2747
|
return {
|
|
2730
2748
|
identity: {
|
|
@@ -2743,6 +2761,7 @@ function convertIacResultToScanResult(iacResult, policy, gitTarget) {
|
|
|
2743
2761
|
? { name: iacResult.projectName }
|
|
2744
2762
|
: { remoteUrl: gitTarget.remoteUrl },
|
|
2745
2763
|
policy: (_a = policy === null || policy === void 0 ? void 0 : policy.toString()) !== null && _a !== void 0 ? _a : '',
|
|
2764
|
+
targetReference: options === null || options === void 0 ? void 0 : options['target-reference'],
|
|
2746
2765
|
};
|
|
2747
2766
|
}
|
|
2748
2767
|
exports.convertIacResultToScanResult = convertIacResultToScanResult;
|