{"_id":"monocdk-nag","_rev":"364-17b1104a3f2b6c4321a70f10df4ed9ff","name":"monocdk-nag","dist-tags":{"latest":"1.4.41","latest-1":"1.14.19"},"versions":{"0.0.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.23","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.26.1","@typescript-eslint/parser":"^4.26.1","eslint":"^7.28.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.4","jest-junit":"^12","jsii":"^1.30.0","jsii-diff":"^1.30.0","jsii-docgen":"^1.8.90","jsii-pacmak":"^1.30.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.1","standard-version":"^9","ts-jest":"^27.0.3","typescript":"^4.3.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.0","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-AgPpbFJFY80CjAQ4HX93rYr2N8rfuahaV2HJJG5ZbjZS7REQlQfKbzE0y9V6eZxXzda+Yq48Odp7o/VAn9l1xw==","shasum":"ca3279eedc6ce72d399eaa96fcff1b7e9f2418ee","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.0.tgz","fileCount":252,"unpackedSize":2284103,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg91b2CRA9TVsSAnZWagAAs4cP/ivEnXwy5e9tu+aYxbCA\nDtmBuCXLGmKE6dMFwrK8DtgKuxld0sHxr6xpXixawC136uUFntnDo2vRN9rJ\nolZn39mL4HZQtmpJzxPIgXJ3QfQYOvHG1TUR7fRga6dYEJSSe/LTx4y6KEF3\nGduAVvQtz6a9Mq2KYgYEl/8ZoD8wKRbFSsfSlusBvCZRWQfwjt6eEW9Bc+eH\nrvgRc/tCmSKe7AJHRZ7seTrVRR0SBN/Hk4sQIJRIOVD83kBzMpW0ffuhjWvs\n3efEFIipmHJTezpxpPODYR5dkPsqgI2HibQ0WGGnKdN7+mufqx/QYwhpe7vO\nfkDVa6flrXTjuI8eVsF93f1y1oB2KI+qPWSHhoe/cSSbV19IKAUabpz8EBIs\n1wDk2yRYmCUeI8okcloKXlmjNYxIM46Rt/UGLsthjauet9N5nH5KOTIXqeL1\n86ebSk1p8tIe4PLKnwqh6R+WzYKgxQS/U7hSO9XZ+M7RP18O9rEpQMTasO2i\n5gP3YugU33c6rBC67I2UND/wIU9D2QW/FrLVs9NgECK8CskstIYDsdjyTAeO\nMqUt5mHuLoY31+xYsR9u6qu8mi92X2pq/mFz2O7wBcb+eZB+5lbxrPzBAGcM\n1zHDB2p6ctSRoyjGcE7asvmQOpNaOZxECvwteJoXH0KI6xlsp5Prajn1qbu1\ni4OD\r\n=dSK5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCHa++uMaqESoXGiFYHTMyY5oK7EiSvP4AD/TEFaZ9iDQIhAJH+5g9BUGiH61GdTd+OqxteiJF/7VxiA/IRfSBvE7y7"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.0_1626822390339_0.7407547917071455"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.31.0","jsii-diff":"^1.31.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.31.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.3","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.1.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.1","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-LTJLinDf416rnvphr3EVWhNWg6q8QquzxXL+1trUGxcwMuydEJHIWtYv/8Q0DLsFw9REXTdn6ZmWzDF+N+9GdQ==","shasum":"b41a83a1b0414c4c2bde29036a78b3882981eb4f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.1.tgz","fileCount":252,"unpackedSize":2284909,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg93o2CRA9TVsSAnZWagAASZIP/3estKAEkrUzIhM6hOOX\nGIvkkVN0uyYKlvFWObxcwKyMQ4exnx4i51elWO+BWHn7AJgeJAoz9WQphMyz\n9ZbfepupZyywpNbjWEHGSqmxCiHpSO0ZPKK4hYkn+oWnnZ22ITXRmAVTwUXp\n1YhNCTpnHNiSB3jmzpNRJfHoV7Td+H5t5kpoOo5tfy1bwGjdpzxVlk6mdx5a\nSvCoX6oSy/Ef+DSKIXq2e6xqk+JVyHJ06iw/7btKfqvbPWbuIniF/oAhMSTK\n3DM4jCJVY8WVjyQHgW2Kqdcvfer1uMZfxODdNuT9W5Hu0mGtTNppIaYubKeo\nnJYADmIYm5o9hWD7Zg8yj3OOeiwOgk6aWKJaIvhRauJssSWKMDKyRwp7cjou\nYU1UfBRaduAUveTI2Fv5RZ7PVwbaUNjtvoguX7GfcmnQ/0n/7obIE6Z/iyLi\nGbWAaxgNvM69kgksRDkqbi3DtAgl7oRwoJeJVpp8XZ3RkovCHsMbKQyW/Jv8\nsd1Yznm0PYaWhcyhan+bZF2+De7RNbwUCk9TD7jCI4j1OYegyXSQt+mU62Ax\nEd7u+WDIRcdZzjhsjEG2aOmP4ePlJ48HU09VBlOsGWtAPawcr3XDmJaGhuCJ\n5XaYBZuvwDvNoGAimtx0eYw6cwOJfoOb+voFnaXzcPzGgAAdewWnu1uzUAt7\nMKHu\r\n=X4bQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICtKXhQZTqeEIuvFopCyrdZlV1iHH6oiXpZVzAoM4FlIAiBBio3bOSnz5r8G2xFGvOlnePlgZmlEcWQ1wJ0ePcTywQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.1_1626831414761_0.5656285129594061"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.31.0","jsii-diff":"^1.31.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.31.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.3","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.2.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.2","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-wNckweaMiXh6YoBXA5imU8giRmfrHiNwnaTQHdJMi5vP0dv2JZOfyodNY28MTmsXNEUPTEYlpYaYVr7m85QGAw==","shasum":"7e938d509909d25967e9af16125929ed6bb56719","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.2.tgz","fileCount":264,"unpackedSize":2333256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+IrCCRA9TVsSAnZWagAAtXwP/jg1f2dT4a7QNiL+GQqf\nIpk6EX2Twezmg+1hRucisrJAwZLnKR/ya8R7Ff87wRgnc2RKBFzLBgsJ2RwZ\ngXxci+KrXu8Wgdw3A0pSmk8a5e2KpD0kHFYY6HXV1KuAwa31CLxBlDtIpoc1\nYdfb2/reweVRSK5dutVsZkh2h5BksdfU32oG5HiG0tt2pYgtw9XtmehInpxW\nmPalTpi4dfgEW8Za7w+e9+lK56bH/kGsfX5iVywEEDMvrRsFTkyhwjo8fLpW\nawE6V15YtxewAcK8ZIzSGO0qv02BznsxTcdp9kJ2GcycwJVqugk2395YpGpm\nEp2LTji2pxRZqzTXwbfZ2v5nlnpFQbUV+oyTLy+97dhHj3+iy0LyetNGh9x2\n0+bkptwLtcTpfr477VFA6L1pK8xA4GedSpwnBfk3evpFT/XkUJNPBZEdeaKa\n1G63+WDbQmcng00QNP5/aLoHtNnAwDi3+7BxY8kSknlyTdZq1xXap5kgk0gv\nXoVcpsS87+clqfelKSCUmNAY1fD+yQBJYDBuP1sYxbgqSthqiHiFPqZAzm8h\na2zh+iJgB3VNLGmA5WJCbs1KZeuLK8ZgYvdfz6ddikUFg36cMwR8565s2cxQ\nrJJJuMGGBCjqnq57ih036mBB7L6H3M5RCO3cK0hLaMa42Pk5qJMh+IhaPbR0\nJQxz\r\n=wU2P\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICnxHF6jVDiFvf3aM0Wuv7rZQ66dhzxQCrmST/36mm11AiEAqVnLMmOvxgLCV3OVZSijfrbx1A1o36SZYkfzXGYsx7Q="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.2_1626901186007_0.6860748288979936"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.31.0","jsii-diff":"^1.31.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.31.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.3.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.3","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-C12h7LdSjmRyDMsyAS8ifqj5G6G34locx3R6jE5TGFl0YQvZZfLAIeh9Ym1A/QOyjdWn5d0oOfzhTbiA6vnOfA==","shasum":"648a19676f3d0569b93a8bed26538d35630f514b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.3.tgz","fileCount":264,"unpackedSize":2333256,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+OEbCRA9TVsSAnZWagAAUAUP/iMQdkF+2ABYq7iuBCzk\nFDcdAz4Z2/hx9kwMoy+N2+CtHe4zHn0bmgWKGt4Ut9G9xA2yYtcCVagFpPrh\nAYpDBMaxKt3N8QqzxWpo+TQ3DKrP1n8FexktsjItrutCzP37wKARgcTpPFvC\n/6+i9aY/1vtQes6hbPf1BlQgzDG0NGoTcr+XR8wlWsCPY7p8AW8pcGvHixSf\n9ooFYYH0fJvUZBuyXMIJpFmtc59muUeciyGsXQMeJN53upfxNPyhGc70Ebnf\n+bSc7JdkZLOKO0O5zv7n2rzAYuuzpLNAuq6hUZo7u5dc8wa7qwcxLWF69JMn\nLiRSXNcr75y2Ax8h7QrgHxc1CiiUp072GrsR0Xs0vIHw7+yr/x+5JWGjFq9L\nle+UV3oELrN9Rsv15KbJKOP6KNaJ6k5yQAVuilKG2uPWV+OSrkTWCbpEWEIT\n0bpkPcRPPY5e10t9BaIwVXkKPpEg21BNHqGAH6QMQhbzlQfoH16V1QxcIH6U\nn6/RsxjxIruOXB+rO+l/ugG2B96eiLnkc3U0+M+zRbB0zM0uy0SWXkSYY6u+\nZnZbGww0UgFGM4fb1UtDQy+thHoVDuvgp9Cl4dSwRmRQpfIRzhI+OiOjbXtj\n5BW+ZtcylnBN5vKnZRmnJIcobfM9IetWGtU4fGZ3KWjpV8fBFE22CzKRuDLj\nYk3l\r\n=eg69\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCX32CgputuQZ6bhFZat1KAYoVrVzzLSZFqxdISFQ80OgIgTj5FGzzta3gnPOqEdfs7RxbsMxzHqnkQ3P8UM4dQfgE="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.3_1626923291432_0.4542471770195071"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.31.0","jsii-diff":"^1.31.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.31.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.4.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.4","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-fXLqqvoMQVnN3feaUA1sBiHuNMs8MkIy3J70CKAOP5EA/6DPfpq/3mhg+UmuKlSAeMzXFI0sNWi+3Dm7KmSesA==","shasum":"033c611706ba188c7f321f7e5520f96f74cf2de4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.4.tgz","fileCount":274,"unpackedSize":2363630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+czZCRA9TVsSAnZWagAA790P/3Tk9dVhs8fkBl7THWSw\nww9RLhVYoksvpGMbwEBD+VnKfNkR0E8ZkGteC0/t+VHWFLZ3OtVP2+mhOKcU\nQJPH1gtpHxcUV6IuPz0FO65JKbL0QOxSVBcEXH9YsCQhi0DDywzapDhRDUeV\nA5jW/7Jyl6DQFJ7hYZmYolIWWZMDcXMW7Jj1e25ZT+4lj8LUUBVFGT8xs/FT\nqNO3Pe0wzQeSJFp9rn8s8CUllh9In/Iw7vpAuTqthGlurs3kLOknGXhJikbc\nHU59WzQiZnerqbc/9lhMJiM74WF4OtnLW3LAj1zsnyl7mt9Fz2RstrXEQSTY\niY59DpjVHD/g2v/0SCRVn3IWgY+/+aNr3j8Ooox9pVBA1IgUMGa/3WtZ64zm\n7Mcp7JxcbwzEuf3NzG61y/vBSP/eQhaEY10cMVPOeMAuKj+1S1vmUWJO/pae\nYXdyJHWBqgWeuazODK58U8O5lM6af1IvkpI8exsxz5dHuQ9My5zKgorD26Lt\nyIQOAJPxeVGFLS3S9pmOiMW6VE5C9Tqrhs0YfoUCVjgw1XDRX1aRS7e0Krme\nB51eRSFLwC3BojHTUQq5Ej8gt25+505V8kArFdL2lqcwlbsGZh5doujIZ2xR\nx4cdMxQnaSjmzAFv12/FejhBZYlCcAcu/Vixc3D7vhPUs7OVQcddBUXDKPuF\n+mN5\r\n=R8Ts\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDH/NUz2QgJzIhXzjQNnhHjRIFg4klzyX2VU9IiYDfOqgIhAKytVTv18PebBXn+c4mUHzmLbgAEFutSR4/FHhIlSOmm"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.4_1626983641591_0.9366836209466449"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.5.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.5","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-uymKBnmN89ml+25XijvbAMkV3LqZskwdfe4tKHNLA0gAnshuXu+t7SIiPvKoM9hDVE1gfw8sNPAGhoNyFs+9UQ==","shasum":"7586801539724a023efe835f4768c0678178bd5e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.5.tgz","fileCount":274,"unpackedSize":2363630,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+gy3CRA9TVsSAnZWagAAS4IP+gN8vk1yFxAlNuaHzuP+\ngulV7EOAmAz29VTAIExFzpxEfbuPKt3WdzwHJCV2DDdGCzojRJbCNsXP0SQY\naVTQBruAY1IHS/N1d+klBSWs2oRkBSg2mHcMVoJWgIPXfNL1GMVz/wm4A/i2\nKGLA2IWFOgRUUCsH0E+nCce3UvFr+JFKtsNstK3fFI/MnPtlx34Yq95bqyzv\nseaYbOms1eZ4VYSEY4AgX6+TJyxXXhjTfnxVscyftmuGvwqJ71b+JXaoYYuN\nomuTjaO1aTQmRdZnazqKykSGJ0/YKb9z4E70Oa7coWTrIxQ4CBICRJTtZk8q\nyz9coin89MNMiJoEmLuOh8T1f+haT9KHB8p2g13r+KR1gTtRJsq3wEvW0Dmu\nTxMPF+7JgB3EzX1qz3mXDSIasjFNBfuX95/MM9mecv18X2uMXq4hEUsHeBcX\nYYqNbkJDLfUUkFRx3wTaRuQ4eNZ0uQ8JcuR78JGJOuxWFBevRD71phTKv2Br\nWctvlb6TFIGDGK5oyXfRJOl36Rz/n7rGPm4mJ2HZ07BoMrLHLeWLz/oFDZNh\nzb/mb8FZgNlja7fSTPkVw05v45vXpuuYSPqcrtft621hV/pdzR9l3ohNIuSR\n5Wl4JgQQN1rSBDh/o5fr6Zn1uFL+jabUGYUohntRdBV5KN/LP71FXAFQgA89\nsM4P\r\n=rcf0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDag43xbw68mNenEfilpTWSSCnCKcYMYyUApTs6YpWrjAiEAgrJKGXn9DoPfRG5uANaaVfTETvfdZhRM00/c+hYV/KA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.5_1626999991605_0.18088186598074318"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.3","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.6.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.6","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-hA70e/k1dey7BcTUbYfoVV5FtOgTnkPfSRezClL+XE0HJU1oZF/m/DV8hd9aMUKZxC6c10q5ttJihrwLu5ieEg==","shasum":"a465709137962f32d27d4ae0ddb60618b00da8cc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.6.tgz","fileCount":278,"unpackedSize":2370799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+yOrCRA9TVsSAnZWagAAoCEQAJsmdHnyl0Z99vmV8H79\nZiYJmA9/RhUeWD6kq5IVjkmQIHNP5kYo4XOCj+ZuG6EKdr7DTmLZVddkFVMZ\nrxVHP8oP5aoitqOvOgstYwUxrpfJLi2iOvKG+QNOY98p8uEgGn9ImNYeOquM\nFLIqSRHuFUr520zyDzudSg6yb+1u2M3Ee0ti5yY1G1SNUZ6LK1imUL+JpWch\nKf81UbyzlbvujJw3aovLoa+DdLcHOc8Xd7yXni18RSSCA32PPLqlI4bsRZPY\n+jKXYwACOB5qHdLn84e8cbSrVVXTzL1VRlolAlNZyi7ossWMGopHfgK9mxfE\ncrcF6LTMm30KfzFTNXELBmfiSjWUdsto+tEpV+wLsz/zAvRENeLeORVIOXt4\nATSnTUHqySqYN9e4vCSPf+FgN/MtqQd/bu59M8FgmiHw4gvzHRqDhn0XFWy+\niKtIcFQ2DA4Fuym4/zwq0n8GZ1DUOH43Z3maXuEK/za57TfwKM34Y4Zfn2mE\n2Gwm0Sc3WKT3gG5lB5hnpsYXvhmoznbjpXxPcyuvcQ65IAYh278Hkz6kWoZ1\nbzxJFmEOpmoRwbfa3HEXOJxj2Vg3OtpaRPxEr47e209arWib/2fmkyJ8tPNs\nGXl/zmPujkRHOMbMfLfXW3inNSRbhaphyoGe2/oZVdIJhzsHfCdRZssx/fHw\nMI2b\r\n=YNQ3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICPyB0PoN9+il3Tf4JTxz/ke0KsbcOWoNAJYUOnA6bHkAiEA3MzewHRLQb4fbD11Z/URcA6UD5aUPwIv6dghjqzTzkk="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.6_1627071403269_0.6386223455504838"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.7.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.7","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-KZ37kLHUirqps/ZfqXCvbJPd1WkOAHjMF3QoxkL+xB2XlC+MVBlCED5SyPH2vnJEG4vAHiS71SPRx6XaMgB32Q==","shasum":"2f313c477d4f23f71154a3dffb51961660ea4237","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.7.tgz","fileCount":278,"unpackedSize":2370799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg+14bCRA9TVsSAnZWagAAG2YP/A9v22j0c4tVOth0gvvx\nqFOm6lw55/tllehjRQZyECTN2kuu1EE+lSxY6QcuHOntkRUi/tmKqn56VOBh\nR7MHi/4popmabh4nGALVIjpodK/CrLH61iCjveR8cq4i/c10my+Nc6/2ZSGf\nOYUExLQH9E2h8JV99+db4SC83A04HKu/7J2r1RPCdkPDivlc6l+uopw53rqv\nryeCNB+IHysixWxmwwl6ONR1x9Ujlb+lS1IQgZYU9S9ZaR+KgU+vErMTGKMP\nkiC1rAbEh3gDvAjTHT5EBCx6MBY9Riq1w+gZ4yZriymWWxspj2kqa0u3Zo9A\ntrNwIfdu88ZV8MXMlT3z0QBVYyS0x9tUN4BjM2UMp0BGWDv/+Cu0PuVuY5DL\n9xSJ//lhc4kI4dJqHfzTwdHBTiSIO/h5ja4Lfs7iLiR04NaxMgVPHJGJEyo9\n/u4xwED5Yj6qH4fxjDrndRQIHYHq23rjYinYgfknkWIDPeFKuEknDeIkbds/\nNOl0FdkNMgx++DSxaOK8Y3pZmF8DKIuARA4PULVWXgi1IfV4KPkWuv3hRaBS\nJ5NoHkkXeyz50lLI+PwsYmFRCWnaYHuXNFCTIy0OJjFYQLE7vBzJuq86F8pw\nFzkh4peCsYlqmstsvJlL8cS0d2KQQVyp5BdQbTVzFC0hqZEwomU8zogA6pE+\nAK4k\r\n=WgF2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCnxLM+sh1Uxag+Qy6Ag8wmmJkDAwCHUHyz1N00R+4QlgIgAlLxrT1csPnkux1ksgbxZaO45c3P9CEEd0gfkmz1FAo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.7_1627086363011_0.983695629759761"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.6","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.8.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.8","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-5A51DtwuqXG4z/SJxZjljbBQnOoZR4UTwN6hVpC+FlOmaXnibBLfURb6L5wSi42UKYyiMUlnsiSP3wT2OfnUrA==","shasum":"8cd4b465beb47af6015f459dc4dd8847623b54cc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.8.tgz","fileCount":278,"unpackedSize":2370799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/K+LCRA9TVsSAnZWagAAd3MP/1OxAqa6jc+wh44qA2uB\ntrm4SqZBS5LTvZ6+Xo/p2lcEl4OnJWhqutnJ6wEJxGzM3SjAE8VuK7SG252q\nAAew7C8jtOZbKBBj4YoLYTwTSdbmY2Pliba1dSMFXYho3TbqochOmtrEnCCp\nozn+M0y155SkqkdtH+pSjLkX3ly1ji9B8pkAwgHLfWIbVx1D/ZdIMEqL3KME\nYjq1W+cZ96ksBb15y/Otw51nVoe/crft6Z/YhqNReouBqzRHQ0HVaR7oYbJ4\n7j8dh93vjMU0my53gH8IqLPH6X3HNG9oEPJIPyYjlUBa+Qsa5zA3cELmtP5e\nOqxU5zoM5FvHz+gLTlRDFpBdolFN9l26I8ROOrG8PzqUA3smLMMcDwmr+BeP\nBUOmFCGnbCDxH6pt8nWjQ9+raItEI+dTYPA1BHbV4cXBiehHwiMPqV/oJ52S\nsAE519UpYue7lRqlGkyMqAt4OG6eAx36Qdu0ho8qTHwx/VO2gqziMSk3fkXQ\n5nFTrZXDUyaN6MUmT7giTLaqxI2DD3QRH+cpLqxAKXOrnSg5n3ECNEb/MUMd\np7dok822siXRmuHupT7oie4mSml94IQy0t3HtpIL7rxUkZw2yv6k7YXjx9BG\nJnV1IOLAryXYEjOBYoSgkbL+pSyAq913+rWaXBM6hbm+PYnBroJ4TK1TtaoO\nmYg0\r\n=p0yc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDveT2+BMYvtPBhEahqFSQgFJcAktQAUN8X6YaJvpZEiQIgZWP99YtJakS7zRBVi6YAkC3GK4c/cM56zBO0+9Dz3vU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.8_1627172747821_0.28664892997089564"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.9":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.4","@typescript-eslint/parser":"^4.28.4","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.7","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.9","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.9.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.9","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-XBBMbxXoVv1iySuQbEYIfnRzpcBBS1sQkUv0mtdsUMV6KpRnKwCIA6E1HtehTZ9TdPZTHc3tHArkW/Dbzd/0dw==","shasum":"caba16f325b78acec3e603e9acd85ec8e9f8f9d1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.9.tgz","fileCount":278,"unpackedSize":2370799,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/gFjCRA9TVsSAnZWagAAuNgQAKNIsk0UWq9QnNsT+zig\nohcGU1rmNQCpZJJPOa7tmq5ljKwMCPZ4cGaeLAVR9KoRq/qyTZtSFJ4nHStk\nfr9MwBDbll9egHrjbjnPw8aNs5nqiP7LopOGyLxlZc8KgzdU/itQGRRU9TIS\nDVY2FeNVxwnAUxoPZSqhekqZhFgJR5zT8LAfOKaHYepsyvgx9nAEE1XNXbrY\nEYGZseSFX3Ihnpz45gDWrUETt6z8ENNKKRTi9yCR7CSQ5UbjZXjnydWqjWU1\niWttUXP3bsHm1eRR7Z4yeGYG5/dYCrUBAQKV40LiqomtoMkb/XU9gNUQWJrs\nJ/D3TV1of4486UInpyGs30jk3eoGo+dxl1IIW7hFwlb0ufEVX3grnLtaWN3v\nRpA784o8vfBfx81ly4xojlmiOm5MvAzdWP3P3/gj7RabDBX2KlsjmI3hAgM9\nmxHCaEQ56oNFtw9e9axFKZGoDh8CyuCWWConGM/7Vnp0K3ec/xgjLQJBRqEJ\nMh5kywYKRFhkE+MlDo9Z06XH7HlKNgTSmJ72caceHSh7XlB8T6gXuBQ/1xnd\nhT2cQ+6LqxxCNTy/jLIjbe2ghTwHqGE/pFNWCJGoHXk7kCwlYle5bNUTvMsM\nU48QL5NDOEjMqt5bCkmWdaTsQpI7plu4/wjSi3PSg3R5AMbFxZUxxcJXqGoO\nO1Jf\r\n=bZ9y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB0jgtLUAg7Xsgs0Phss5A2GCka3SHFcGiFWbQfNnIgiAiAyaWQLQpBgw4MXftGTNYHRFjYAEID4fQSRJ4iAAswHpw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.9_1627259235162_0.24141491076250632"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.10":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.7","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.10","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.10.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.10","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-hJwXRKvNSkLeRisJ27ySZK9BMO9G5HaDpHBxF5HzWEiKng9B0GXq8/DsNt2YRRYONE0MW1eoLIpaOwbza7blug==","shasum":"971eb0df8bc78749b1a62109e429217db0516cba","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.10.tgz","fileCount":278,"unpackedSize":2370804,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg/1J5CRA9TVsSAnZWagAA0WYQAKLceh9sqk1qA66kPAcG\npvPlvAjh248432dqkkJkXEqgZ2vF32hg7SBhDGJj0OEoHXV9aqM6bWZsx32p\niCfaYf6l2Amn0LvqP5eTpB7B9NS1ImjpALnLjuEedgKc5NdHvb4GYLmBEUDr\nj7irSJ4Zt02TAXb8eI5FAYUlbl3XPappwQBcBumz9BjbMWRICAyrjN7Hq2Am\nWgZuuEIoC6gNVEoxXvrTot3YkiA9cb2sIwdQJf0MOFtZ55GJAVQBGxd6BvPs\n8pyXmDbgBqiY6o3PxemoU/a8mh2h8OIkhzOi1Zx63IY3x39B45mvXzGSj584\nniTKgQ+cNdq/gZ2cQi+sirscNsytxnHE/sSDe2XU9JcOgzqHaaAU/UNjamHh\nmcZpePRvinHXQQBKS6DcanSiqR1EU5QsTMGHew12zQabfp9Ww+AP6RYYviil\nGicNjgvN47B+3f5OxIrLXXqLT6Wv6VTufvGBmbBZWGHryhxWSKWayZKcTDDo\nTfK6svNx3ATXdHp2YYFTZA8FntM8s/ODxaRYAlZl/7dLSpo6v9tmrai5t1+k\nhS+6ONoMrpLYvSR5T0v2MQ8fb46TiokHLbjmE3WU5ZfG5eUGVIZrMCeaD3ZP\nBjeM/KQ7YRewjFZievsvK45P20vdGQ0z40wNgYpV47fCXMM0wnH0LejHIjKy\n8UGJ\r\n=A6hn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFRlRkJ7ysyXTzQMnkx7BONa3CTaPWx4fzj/omWlpgqZAiBT8N+h0S+gDdhG70KTCuk7Q/VqdBn4Ic7pl/ghHEbd+A=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.10_1627345529796_0.7665739486727448"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.11":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.11","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.11","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.11.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.11","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-HB5rVFLvNnnPW5YsyZa8bQApsC/p5r3zXZZi0Vzy6HD2R3aCCUs8zc7WRcgyqacHLetET62oKa0gPRKbd8HnIQ==","shasum":"6221416c8838dcda0040305f1d99d926eaa30459","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.11.tgz","fileCount":278,"unpackedSize":2391895,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAfW7CRA9TVsSAnZWagAA2IIP/AxxswENSfoXwHCzKiFT\nH8VQgCABB+A8zy29huoD+eupFvxo9rPRmThxi+Hv+xDSxBEIDwH7VGbXrhXy\nYVVd/p1fZVTGdP8xPcplACkaiFe9ffoNY9VRB6ufIF+n6qZN3MPN4K4Z7Byk\n26QX7YzQ0Sv1lC0j9QH+0nMTDf6gJJ3Hn7ND2iup6whWN1msnD0m4zzW79yd\nO7adyDZI8+JyTYlAbApf5gY9i1SMU/ipUNtBAZbwiv36ZmogN1ADbZzgcUcF\nZy7rSQP7z3nGPpdq9cSjHL+12fTWC0PrT05YUHUGhVPXeH9K5CeRymvw6bMk\nbGSxh2Ts/XkfbiS/MaLa38MLdon5C8cb63VhfrsNhYX59bD0Gh05w6Vxj8LM\n0E3UKdQ7cXhznF5Ew5qONal+LFBW8JvcvqTP/1gMMI1XvGFqMBA1unDnHdaN\nbysvmYDkWVoIS75csmDQJU1btJScDh3Nd7ZijbqSEHL6JDiUgoXIIAQErux6\ngqyTZAHQeSUeX1AiASAMtUzVfrKOwIOycdxlNcopOZaZph+kCD2WJpyNWj6E\n50r0yTKQPtyEJPTgq0n3lgHZYBrp9enfVuMsRpA9TQDhg16Q2mmg/B1KPwMN\nx65lAq5LHQ2lEFAdXX++LS0sI/dU5BXsSHYzqmn3le9V4MYWbVALJ2PA0865\nh5vz\r\n=tKpV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDITeOiUq1J/qR5Vgs5uORadC2Vzbjs45d2YpGvNFR1dgIhAPwS9v40QVcz/KfT5zBFUs+PlUds0sqQqx/IOZHTa/YJ"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.11_1627518395622_0.5111209803040415"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.12":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen","start":"npx projen start"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.11","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.12","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.12.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.12","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-+9LU3fUkXN//jlwaLI7T27wDOiyAVokwzMesdrQen2AR87pGJ0LNzebkQoe9E6uDwbjwyEXAwVZwydYi28rvEA==","shasum":"ef9dd1cb888ec1bdbbaae734596cd52c6a1aecdc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.12.tgz","fileCount":284,"unpackedSize":2406345,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhAtHGCRA9TVsSAnZWagAA1JoP/ifNBM9Br1PqpfQ2WCdk\nRk5pZC2lxqX4RC7+q4tV6Biz0Vg1frfnxZPEr7FriNnsM0qbakIdiBvCafWT\n6H73MGHb20rWYU39Ddk/aXjBhHZZJAxlYkyP1F923uAIWYbuWnxWqR3zLkzY\nplx+4jeSgXPdvUXoScHrmJUH88v3vhsT/Db8JQ7w5AvPKgIZ922FApZjQzkg\nlNzoYdKCRzUa/XbORbb9zML/X9NYSJ9Hj2jlcUY889yxyuFxN1+yEmVkyNav\nO4XTWr1KuZ4YZQaJ+sR3Y8W0V8v/pG+fH5IyWFjsKBo+vMhmxjD9EqF/76DH\n2+uhYnvEIIPicr4h3v2iyKBtayYHVvrnBLd9k/cNlBQaxN8OC6Lu2GAqxZKs\nSMguP8heeGqXK/aNCeE69JSa7e4FrueDetHFJcO4CEyrVSjJGHs6jeYY12sl\nujgnVpbzBq/qQtzO+OJVs2oTGVTl0tuUtdr0HLhc+VPUm973FaoEHHDvdE2v\nw6emfaGh6uNBbDeRyKZBPNlqX2aHEFtr1jINSF3jP1yYtFVbXIsPm0MeWVVu\nmPrCE5+nfTpccE9OJ3N7kQ2ipLTjUCVEpPK/pGCy8T+CYFBO70w5XpQaXiG6\nnPbQzOdyhA5eXul1k9gpEZYALFNOi51wg7FV0zC5fErXqUKQ6LCxqb0bqBNx\nEe9t\r\n=cKQb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDGrIYCrrlN25/V63qNTU872y3zhteDSRQQfj3DuAbWYAiEA3RHUS3djBZK5BLhexvnuN8SUNM4Hzk6/U5fURnb93JY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.12_1627574726669_0.9178551606206189"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.13":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.12","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.13","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.13.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.13","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-hL2blhw0i3qXSKJcWUHKcfjnicWMUjvx41vBvFvc12uq61Q5vuXh3+LlG8WzCNah+FOUuB+U1otwRLuhvpzSsA==","shasum":"52b0b429d39dbb299adaf43c6c24af798417f69c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.13.tgz","fileCount":284,"unpackedSize":2406312,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhA0brCRA9TVsSAnZWagAAuucP/Atr7wqxPwUXn29Le2V/\nhnpLbnnJchFvUKRTiU+cRu6Z5eVx6+yHJh4x1wttn8zG3eUaFH5BPB28hdV6\nTkA02UShV85C8r1Sa7/XRSQSDeuc0qNtSL76v34DXYSVARtJpA9u3i+t0mmh\nnW2SlrWC2aglcdNYBJeGVB1Tx8BD+Flbed498XNNvDHU6vPKZgSaMxvIZLUw\nXSDjzsTm8565//A2WMYdBX6FAUt8pnsX8niq89wHTQJW//VbNWEEwaUcsYRn\nXEpDA0Bmj4eCHfBkAuR9zaFgmK7jANEOnlN6HN5RIAaI4ll65oKHDZ+tgpFj\nkeHO7P+gw54Qow5EVotBV2QfmZqKDfaJyVQZ3p3A6Dt2zTKT9UmEs9tSoVvS\nmdY/0HnYdqM2TjiCTck/SWbkMEvAtKHXtKHnhJUwwDrMvRDtCykDeI2uHds+\nA9cgfSy3GJYz2WGibwArIYFrU3Lh6JM1jS6EOhDa4tpvEAwlxzeJsTD6GNbO\nC1Ne5f2TpzU0Q94j9HhW3H2o3nIoeSOUH8L5UAow0OKFRNo4ZxB+eSItTlmo\nmePR9KzNBxjtAgtC6sxMwSZhLVBOMKiZDGTxE4r76RRUvoGcMxtG0/bfRCP2\nBjCuXfB3rbGED42T5mzmXoaHOOY//JM5TvAgS2wMGwwRFLsKVGd2WPPk1xhk\ng4X/\r\n=T8na\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCpr5XP2SHueHNtguAzyNHVjU1v3jX+uSg6KviVsZAaFAIgCRcO6LbKgKHUriqc4+R5ESMc42YTZmyVWGIJww5J2Yk="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.13_1627604714842_0.9866055630341619"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.14":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.31.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.12","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.14","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.14.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.14","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-4Qj6hWRCdDrWXM/NJvUgmbKr+LEB2OWJzOklaNqoxDpvewLlWjwPeSfym9HoJ3FcRviJxg1pODhyIa5o4jiHpA==","shasum":"5da081843ffd5d43367eb5afac647be4edbdd92f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.14.tgz","fileCount":288,"unpackedSize":2414561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBHt/CRA9TVsSAnZWagAA33UQAJNdv7ebqEn+95NhDYeg\njQUyXFrdqibBe4zePS01auLMyl9QCjP/CSDUvTOYEpTcg3lxC/CxD51RrN8I\nMzPWEsLhloSPaw+FuTrw+3z6Mwhv7WY55iaD1dzE7byu/L/9zRGpkBtSFSVn\nNWVmxRLjhGZicYKIOKgq/sJ5jRX2uwzs1wHgWeyLhGQGBvxjwTm6pd0AIngh\nn1xxzyVoQowmnZU2pSAj6R0YyevfJlc4Pnfemq/ADSGsFDM7ip/cCeIKbJnH\nCqZqub8keb1+JRJxCK3DxpUwj+jruvLBJwVa6eH9pv5/t9ZQIMo7wx+rSP0G\nl1APtmGk4yQPVLWEufREdXDgp2QUFEwK/Y4UULYIrMQlj1nRtVCGHKyn/Enj\nkAPr0C+AeD9I9qDjCWxmIQwAtnlUonPALeQPjwyUkpToTyonj525FSz7rRuX\nIEuCYBkehPv5QFcrH5nEJU6YFROHV6LX6Y9zQckVy7aqL7upbtkUBdq1LTwu\nyumlL+uV1m8autmF0YXF3C2THCYLKoE3660yiv+daccg9ssD6uRxX7MT15+5\nr0caXgZcJFv0jKeavgX8hshAG/4wPnu3Q5GIV3ZmQ6EGxe9cRlquu2TJ9rKn\nacxf+YIUXO66zIxIzjKmzj+Ij7eACPXRddJUFDgzqzl0qBj9reGoxEDsJxFh\n79zI\r\n=ZV1R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsmT3JJ+QYT1wIg3g1V5r7i75MR3xiVbXEYuyQfyi/ZAIgKmrdSqrbgzpjyTMOsGGkQa5wwnjzmpwENQHOop1zaLo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.14_1627683711415_0.9868450618334237"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.15":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.12","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.15","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.15.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.15","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-zoS9nQ0zzR6I4z317mllER4dTNdyIm36PVRhVl+Lcru4HmSlzp+YG3m8B/zc4+beaBEsnRhs4NWxloQF6QTbNg==","shasum":"7b437640f1caf4a15bacc743cb25a836b41c4ca2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.15.tgz","fileCount":288,"unpackedSize":2414561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBJixCRA9TVsSAnZWagAAPEQP/RiTho+e1AwuN+tby0ZK\naSp5ZRB7BWMSFBYl8151lLj34oTcS90dR/QSH/KUv5jBzANJ9FUgwcPQw6Pc\nLOEd2h+JlWqVgflahGkxTXKH3tqDF7egelB86krqaU6jryOwNtQk2j40VctI\nv05N8I5BpPaomRB2NqYxihr0AZSnMeyBBcKrmZAZOiYRMM5l2LZX7tHcCz6t\nKEFk4MhUVpGvq39Iyeb8TFJkUKe8h+PfIxnxsp289t7AmzUEG6m/YblGTWYl\nbGY16rS/Wklm3mUWm/g4FwJayzQRVf723ALjDmv4tX/0fD6klM8cPdSOlSR/\nTAsfBmjfvuQvHWFIJ1xgoerJd+Ba8qB3GKI9iA6d38ZFoVsFitEcoppkOGWv\n+llFGPEtPetIA1KuDAEbPQ7k1XozCMrI/gEie1V8MHstZnfOyrk6TeCFtWLY\nagG5irRcH/0ypgRlpwf4dR5C9yJIABejWzABbOm4K2Cu7pXyAFv8bS3N0ioV\n2fmFwk8e1LdKBDZP3tYy4OTYwq8iWfs29z3XXkzXnJhOTNDak/AXQQ1hEn8b\noK1iZ/do9IuSl5zrQuBRJuO8K03w+cdZRhiS5saNMlw8Qvf+Wtb87q0VBPNR\neMMg26xQwiVCfb3apEte2hF3igNKlkY/KJCq4SOKg4unrYcGMZVY/BXPIt7L\nYFaJ\r\n=l0Sh\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1fVuNOe1ImrB5PJdaeOlPVDR8uOeaCNqW9twSzUpPwgIgFUG2lEbo57+BlGJT3PywvG70HQKqqbaiQXjZqTRKrSU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.15_1627691185485_0.1608320799534848"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.16":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.12","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.16","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.16.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.16","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-un8mzA6a3LMmFpcCBGE7jtozG+5w13+Mm24wZZvb1CeDLXd/PHZqMOEQRF6+WhVdGTJ59Sh2GFDyuiTFl9XWfg==","shasum":"1f887f052f246608071c99c0250020e6ce6b3ce1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.16.tgz","fileCount":288,"unpackedSize":2414561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBeoKCRA9TVsSAnZWagAAGdkP/0UziPo1beP6a+oSReN5\niOVgTT9EjnPY7aWE+qsoLjViKk8FYlr4PvPd9vrUSHzJZB5DGM9G6iS8h0I0\nOyAw2EJZtq0BG1JuZvSD1RDiASj8GPKoYh3c7rzB85FaA9mW2RVVZyNtSG3/\n+/9nF7PeIAuhWKlClBu9aYGwu3OJwi+61c5nOTLHNFGS8LoB7wRecZkcVlm0\n9ODnOlMOewTfD1CL/jXpco+xWYfMOSvm9d5qOZW1KLfHN46tnr+DTp/ADdOI\nul7rdYgbJdvZ1sOlNSE1aNlTI1mX8jXOjGTVxSCkty2zbS/QGiDu85UUjWNR\n+BhfTLnS3o7+cb+4WRkAtLk7xvE5vhoUOIoib8TIVmdkn+m+emNM9Q4sqqmr\n8PQTd8BwbWVMx73u8+UQGaBm262Ghwk2R2X5t2qDO+xxFjZkGMBw90NapFrk\nMDPN1bFVfjKwdQwrmzrk0h0S6/AD0qRRnTNRLxMgah7yBbWCAZD6i2/VCtwX\nL+mhWpb7bnt7aV23LNX3HaB9AD9PzwTZ823UBXvPWCvsUk1xqtCyW8689G0k\nj571ttaMcSdJsGGHQ5WFnd9L6NdSp6jZcWUFJeD4H1kW2NQRKbe70iStoZHT\nHjjf/ULLeBIGyzI+OQbG0jrR9ji2nB43hSGZFuUBRJE9Ns6M0V6Jk+LC0Kll\nzLnM\r\n=qIwF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDSLfxi6LkeznrfWBDgYdlxyimtKom1nDxT6yiaY/uyEgIgSirJx6vIqCFF+GUHw7WBlUayuCUbfbPyJqDYSs+qTfY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.16_1627777546061_0.37008335641030055"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.17":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.28.5","@typescript-eslint/parser":"^4.28.5","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.13","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.17","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.17.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.17","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-5sXoatizzY67P7y+TlG9OPman94S1VwTm5qiHsWc+al/pWaH87EjXocxJpAgFYHNsevcKGB1ohYPBMfJ5gJaFw==","shasum":"5e2c93e5abc2d29f8dd899567fefe702c2a83c8d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.17.tgz","fileCount":288,"unpackedSize":2414561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhBzu8CRA9TVsSAnZWagAA2NgQAJ93ATWvzsuwS8GYfKMp\ndT9+c6KysfWnSx7d4t2yZT47S81MMbLV2ezFogz8Ijkf3pSEt8K6v6RZYmva\nOZRvBn1NzCV2jT1+gJXdfA6bihwG/5KAf7x0fNuLk1YcpMA3fArLJDLj9s/Y\nZuioRJ9VnqTUu2FReIugTxLVx3yqKYQVjRYvvHJ9g3SQ3emZrSY9TJagua/6\nROXcxOVp3AURqlU61vMqXJzqptFcUR8Oo/ByZ7zUnu2fEdsHskD669qA1/ll\nO9OPTSH3BiWAU/PPrF+UH06WZjW5VsBXB4v38AayrKVzbF9CojYXGXzX/UUh\n0KkmznrtcWjkFCOUN07Xrs/dkNO82Oc3e3FKGjNW2Rudo9FPTHsq0uo6ZcT4\nSSUM4W0J3F4V5Pj1AsUkHjj+vbQmVpIixr47kRHBRck98BwBza/o2RjMzAYd\neSY3mxXwuNwiCiGpieOO1kSOUj5bs/3WdTjyhEu/lK6XYRSHEFY2YfYEpcI5\nBdJIMIRLD+vGyMj3Z1MG5aZxyPD7hwh0YKGLi277RCdyj8ojPr0BRBRyxT8v\nJKERbSmoKLWyJHHoUjZZK6mbIlNjBf5+k3ZCJowHxugE9skg8YDaPFtWS2Ni\npEei9K8/xXsr86pogTN9Z9frn+bUljimxkPopfhlUaSMnCZpenzoDf7hXski\nGWVK\r\n=AfTn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC50NTxybX7/JdsUIK854mfMF+ZdT+bmoS0Yk2lLEvGCAiEAs1EEML1tnHC6+/s4lY9ap1/mTMgK0onc72OdeQrmPf4="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.17_1627863996500_0.7621261361180363"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.18":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.13","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.18","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.18.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.18","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-qziIwJQORCll69PLlPB3kWmVVV7vbJ4cdnFipniNv2MzWfK4NYsQM3zOyK/JCn8UlVdRDlOansq5unbYuWszFA==","shasum":"2a35beb8de051e3690e94071fb0409c38ed9cbf4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.18.tgz","fileCount":288,"unpackedSize":2414561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCI06CRA9TVsSAnZWagAArhgP/RSZMDYeXs7frGoQC65D\nUVl7XU1OMGTPuIqu99vQT27wR2GnqnKKGt/t5iHiNNkLZULl0isDt7b0/S95\nXt/O/oMSwBL8pldzwJm6wGcvTjMzO8VXiUFMlbCg6nxYLkuHDwySSwTwPQVv\nlEUBB2jLYhJkKJSYXzJmd74Fu8EqJuuqJ6oT9h5Gle4E2kumkPrlLNys5f9w\n0D5xjxJ/iqH6R+8X1TYlX3+Esl3AB1lJSlHfscw+mjvZLWvijE6fmv6nCUe8\nyr+L7+appQkcU5fYOy05iqnLdtqBlAwQcKZTbGSmAowjxTEQ7m8DTmaFyMSC\nyMHFfEtC5uItMaXUdQsApkQnIjiD6nibd43M4T+ypDgM3+wbBPvS4XvJBxeO\njEVfUcYdqyojHHGfh7cVxu5wgj0+Rw8NHBv1OjlFlsxDmK3+c7sUAokkoB/G\nSz53dMaGUCZ+61ZUVG5koRDYQTw1u040LNpfKoksa0xvIWzenAo9FD9Euzib\nY4To4a/b/NTpzNAU2rJ71iibCbQWBW3N7dCNGMCOVq2yJfTJLanYorZRZ/02\nXgz/86qfcUVObFpd1jatmXmI6EdEXcvpiZeucVJD0pkvlt7kMukBq5Pjewdk\nyYf+ZwapIy/VKdbJp2E0A97FzdSHDMH6896N9rtfnAHMP7+ZfhlfLWP1rEal\nSd5L\r\n=ioE0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHxqn6B5y5GYD7hj/1FWqdguW/xWiLuhiJ86ZjfGZ/uJAiAi1hWICE/a9NcjFW00PMtgyXt3NIPzymF2jb2DKVetTw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.18_1627950394714_0.5130038273863742"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.19":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.15","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.19","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.19.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.19","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-KsQlWdkHc2fI8nSwZrTjIH+QVYgbKvxPSbt8jaSDjUyl8iXhuYnnlX0iy59nQeYosqUjn4p/p7PuH1PQNM204w==","shasum":"65d49786a36b3fc1cd79017d675ad2f36d082eb0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.19.tgz","fileCount":288,"unpackedSize":2414561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCd/cCRA9TVsSAnZWagAAVoEP/A6qAK+pqEl5JxrhhcID\nXrmgcGBzQI2u48L1N7exHtEQLFnXvz3Glnh3Kg7Jaoc5JwNo8P+3PRyZN7de\nQElhG1vgRNWD6dHeXm3g7FCUaXSZoYJpjtkQGl3DVi0fCzgE3DRurTgD3ErO\nm48CZi1pETtW+R3Ct7ceOFhC+l/L+hFx7UiUbVaWMdzp8F4NQP+QAiL4RVBl\nPzrpMOnftdBl1KrNLHnckPH0UCG0g6Ff+1WHQgf1HowQBdGCcCTF3BReQkiH\nlCFruRBDKf3stH5QwGvmXjOA5mEwxZMa5/fzlHF29Y4vwM9YntCx0z1cP07X\n1RgJwvjVgmWi/Cny0LXacB3oy4tR6EYsykLaBbaYiIgaq0VYK0Igrh2Y8vhv\nOC2oRIin9H+VU6/TxDMMhOLKxDYPSobnT7+m4xZrBv5N2uBEE24ZsU+FUP1H\nXmbaC15vRf1etYjAtnMDj9X8jYRjGY17bJ4Cuf4hsgxJHn/OMFaqY2J3TG+H\nzVeo3/uaSrye3b/OLbWqLU0QBB3OyEXWaDwBCb39JiRGM7OJvL1C+Sd9IkVa\n8WrkIVuLbCcYdBdDaL6qcLpPESvGxyy1WBIUpptn6/GNEOAS5UOi3X8G+GVA\nmM6CuDzA3poH/09v3qndZs4t9X5UXdnO/VG+6VuarYFQIvQyqAwK229gQju8\nO3Sh\r\n=rVa5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFYPjluJgZ9wz4MoR5HizxcjzO22eLHKxJ9wzS3h3GQwAiAwXXekjJrCCwjmphoB3mreZHe+y4DMDYVbYS+ZfQGUlA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.19_1628037083815_0.6155483117519864"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.20":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.20","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.20.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.20","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-JBi2wKTAvJlZYV51EBJDhy/wbI870E29mBbgssaRNs7zqOM2DbOfsa+LPPD9qQEfvQRPQBn29EDohoD84EDgbA==","shasum":"7ada720768d033e0d4f9628989b0e0e0a1afce9a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.20.tgz","fileCount":292,"unpackedSize":2422237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCtdXCRA9TVsSAnZWagAAAZMP+QEu1lfsiGkvzQHsVumv\ntmWAuUpa6qRJ0n7Mp+vMgoh5/i3Onk+JpIS3hyvXzNlF5CpTp0/2RvJklfk2\nGEVjFGIKS0jJvMaGCj+r+PMueXF1tTQlHur0nPJ4M+gpTdehHPrV1XFYnjsV\nuG8Wrbf6HnPZtlRz3lcGB5Y8GZXgWmiE6kM36vskGQ0mlFfpPZBrJtRU422z\ngdHeXeaoEzjHtI445tKqH6AW5xLJm8hrDVJ+megekz4Gal+NzbRCDOByPmwx\nq+MaPhfet+NjXeGoh5jtlVwM/UCpGUHSpheX5/x0uuPe8Dv5PrCwLFSbhj30\nMupY4qABjIW+SChqf3WTRp9IRYeNAR/veyW6QAdfY8+srHKSRZH4naiUWvqG\nmT+r0syQyYbmexgdT0+0T0s4ChPrTDeDA2wOzYRy3pBWJwqQvuFBMG5FxEdv\neQzu/ypLcvLwvxzxx3pRdYPNUSMhuk7tCX0hBgWvDtrB4jQNHFFuhgAJDivK\nPFfLngO0sOHU6SYUBR0iCLnoimKyqtix4Pgw1EcD4SYKbt/jdtV3ANDJ74fj\nk/dnXLDl6D8OuqssoAgoDFTtcwVGCXhtDbBEJSCUa/NO6sWmfwnEjsTkZzSq\nWRQRP3DOKzbgKymGukvsI10si5/7p2kQi9yVqJncsY1Ez5nyxP7qkFs9KuUn\nlrkU\r\n=AMfm\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDBAqhhA/jZgJqLKSbe/pspM8XXGc6Mf1pEL9llkC9xIAiEA4HyniXfNL1cJyn04K2xejIMmGkmk6xEsLyDVdL/cOUk="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.20_1628100439726_0.012857330124111721"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.21":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.21","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.21.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.21","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Um8ylGxObGKzM+tpz+Ie4jtP2B1rBaVWT++MstAgjwD3w6diwzBIPTXn8TM+utcaHx0glBOtWs4SgUlkW66zIA==","shasum":"d68be73920a7db2ebab4463a29a0ce91c36c9036","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.21.tgz","fileCount":292,"unpackedSize":2422237,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhCzCLCRA9TVsSAnZWagAA6+YP/0mKVRMN8ovFrx4jOYx9\nVGdxRduriJQ3WoccNUjpIY1IBcSsTMq4RHF9ENOquiHZ87mFkXhaKPEfSVQ/\nQP0jaq2Cs+g+iobwhrAXFm1w9tHD5wCzLpZ1wFFoFNWvpwDp7qbgcn/pi53M\nP5Bqu7qWnUTECwAjqE7108Hgzs0SY9pKgwOdj6TKwACT18gOilDaVNysJvl6\ncyCNOU06YHfnWnEFjk/q95kSPxDj4v5xXqYH5Vi/ptIcgqgeAHIOPurfhOhZ\nEG8G7aLkCGCBhGPnWYtpPX0rhdWxizk4QTXVA6WgeR7ST9WUD5+oTtr9aIh0\nprFv5VcoTQ38c4FqCghd85l8dq2PEVdKeQOvetO9W1rgYYP6vWVu4IoFvsK5\n2siTsCpedCqwGoya4vzOxKg7UFLHERf+xvz8cvdstZxuBB2zYDszjqS6zjhC\n6v+Jx3PiJdiM3xp+0tyh5pWVBVnb/ljg6cq2O9wwEFu+CbsfjZrx8xmwDG03\nP19WWYJ2e/6WrupNuqjdc2FM+9p6tzQN6MOJy0U+C1O1e5cDvs/68xe7UDmp\nyoheJp4Yinb2G+FW/asNBl9xik/wCUuLwzwUUwl6kcUdcuL+sieAAI54r6PQ\nwENg3YjsuGx2BrlEWC8pZqqEvJhc47kCOZplay9dt9+0zMDPHDUhvBEQpFw5\nQicc\r\n=Rq1n\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAn03KGM8Z4EuB/Gt4pb22Yr9oPxVmXp2ZFUNZcFaNCZAiBDNeqrXPitbsQFtxFF5Jxe/HhffW0ahDVG91rv8SimhA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.21_1628123275179_0.538829025121482"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.22":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.22","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.22.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.22","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-mF8lOyM5jx0Lom6ZfnaAAcO4mEDmRMfdKpGkZ/r8a10ZtIH3KGwEitrdlGSmP6cDrqvnDoXnt84kUM7LD+4tYw==","shasum":"a9b280b108e5e6b2d8f68d288d08e1e5352d7600","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.22.tgz","fileCount":296,"unpackedSize":2448751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDE5iCRA9TVsSAnZWagAAKQ8P/3u6L/fwioe/dINXOAhf\naeXTV4LQwFJdBHq7WHjGQ9P/gTjZJ7EbI8z77CqBytQiLkWstNqS/jN0Cflf\nB5qPE4x//RpSpi7L6fVzM03WfgS3Y6k9xG9r6bG7+xcPIVYET+prTO8a2lmf\nCyom5iiulBM19j2faGBK+FGqOqes+JGWBbntfVGyCmX20RPLdlII577OEVv+\nCl8s8yB5rmmLdoLqiqSDotyM6y17NRBZjo8Hvk36rTtGbul6pcY7WXxSgwqf\nVSf4C1U9oLyeZ1BcAG9lRyncooVPgiKEIfRIWSGiCvZw7dfL2fmJ615dM1rg\n0ogPbfZ90cGCgn2IM/StX4vfSIm3yTRAc4dY8ch8hzk2XnkUnzpEiMtc5hMP\nwD6heum+Kw4glPiLAVLQ7IrZuZ9nBWE19ZjKA8tS/ArUdro7LYfwkSxKypz1\nrEmnTtLdxzzVhI0poZxK/zCttlNJy2ArYNTa++P17uLhNsIbca5rAk/J2Qmo\nUM7m0CnY9OuISsUT3eEWEjpNjLo9yicAbApb3J+rA0G6I7JqRd0+99W+l/Og\nIdStsAiRZI5zxgW1rVpHg5hLQZOo/ePoERdsODBLBCrbQ8nTvElMoUwqdK8v\nD/fAJiNJcRBtjz+I1qzg2XpThJ52IoiGnosBu+XKRgPO9283tV2fTUtKhcnk\nDYzq\r\n=1LkU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUCtVo9s9vYV3OuPPcZKZpqu2vlAp7yObRukd67pcVfwIgVPe/dKBn2FubflmAECy6KM57PEI80Q8ZSiIQgsLtyyA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.22_1628196449804_0.17770318414152686"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.23":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.23","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.23.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.23","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-lifzTr/3OKp0fpt8BkBN4d68OzIWbPK0/f6tm+i2lYjnuHPZJG1alzivewBvvmmEXBNQFY/bgnhirNgdZjYPpg==","shasum":"51e30cf908f288eba6d74d457fc969e75a2bdd6d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.23.tgz","fileCount":296,"unpackedSize":2448751,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDIHUCRA9TVsSAnZWagAA0jAQAJ7ZtjOhlg3qbvPwf7Ai\nmoELNf3LUbc4IPhLsG9KidIe3S2mEl7xgnIUwqjABAm5FBEKul+7AfBo0vpP\nxoun8sZcinSI/LSOkB5c532GlGykor9bIdL4Rua1J3irvqCaY5lhicDrCcqv\nLR8xddRj/kykSWcfGMsCeyuc/6PmiX1hKB0Z3dGHx2vIPWn7a5K89Jjeku61\nGOijteN43qoXP3c+TfycWbuHJqs3jLIay7rVpe52nJl1DSIcp9TwxP0LzyZ2\nB0VbrvaHSoyk0gwTzQLsbIdt+xfxmo9pAnGlFH7dhaVcT03yKFG58M2lxN87\nIKFIfp1nMWF2i9E6mbQej10ar62NG8wEdsAfdbyMCTAKZOMEI/SW0tWy03Fo\nXefLoCrsWNeXLL779QhpqesGAwoF8EU4FRY9A1QgyjDkwZ94/wKuLOGlGXHK\nWKToX979esixsAqVfqSxLQIjkhaaG70QxLXO30zN7aif+7+ous8KyEkpYpJv\nKEcS9me9FK97kP5q2mCXdHgTMuZMESFaDG0Eg9aQ9vdj21BZgxSDEYE5obg0\n3YcvYCt0JUqMTFOs/j03YAQlC9ulWFAGTJWqw4sNHg31LYDApb4BsMfzQ5Wg\n3N/vv7tgImjOX0ExU+GdfsJn7xIgXUCycywPpHYrUIc4M/lkm2Deig84Q+Rq\nKvXj\r\n=uaFL\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHiYM78p6Z7QOikqz/5smD8/x6WXGqWHSAaYTNlfdWHBAiBaP5zTth3O1lE2+gECYlWO1ndROAv6uSelXZsK4SwlHw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.23_1628209620245_0.8553146318636302"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.24":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.31.0","jsii-diff":"^1.31.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.31.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.24","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.24.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.24","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-YHIV8XaQqOBpRcYDaINmqPhstiMEHcUGLahAPnr8RNs+LgOoLl2xSn+v/yajjdTaJaGCJ65avHrQe3YCyTHUuw==","shasum":"647cacfec509985747e68a64061a071a299f6b7c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.24.tgz","fileCount":334,"unpackedSize":2552655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDc9ZCRA9TVsSAnZWagAA/YcP/R0voLgh15f0gASqKjFj\nqnawMwgnhyfKSxBE88tyAnKbGe5EC388Z/6r0S2yYd1TeF+FBPk3y/ZGUAxJ\noEsSXIyrh+dHKKWP5oBDvWqINILlj3cnwHg6Dn0R2rFLhytBVq/hggxLD0Ja\neLPNawQZBketCQE8Aps5SOf34S5Tfx5Gm1108VSKSGV94eyOUsECBGkw20A8\npK9Y1hkMB1x+BpRQWP1O6uJSc06N5VxJ/bmXztSjHyAWoZUI8bdBrPQ/+ZhR\nTe0ZnnBhbAzimKvlQLSX/4g2qOE8quq3RUGpTUBq/2wV5YPw8k7X8IcfIclW\n67laUtlrg2ZRy6SNg3nI1KuWF4q710WczqdI3+4JEcwhLr1AxR/1aCh6ckKP\nQUTODwt9q7mED0cdYB+oGeBzY4Z5C0mfgKqxzXU/teuzfheohnMFfiJOEomV\nOJpVZQcgkn1OC6UJtITlJZlBI5tc9xD3+cke/RybhY3u92qwZh9pOL9QuIWi\nZHrSp6lJbOJz+4TreMWvTFQKLmD8RaMHAgMyj/S/AN0SmMwE8ICKqHl6gHXd\ncpo+zTQyh4++DAWlKcyiVNr8KIDJBfMJpL+kIWJIRb+RVG4qCvRDozC1mvP6\n+vyT7V+VPsgH9Fcfzu5hm/sDL5fNe6J7IHRDhPAdFo4UweFqLYYN1tgQSL8M\neCtz\r\n=hge4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9uJ+TpzmVMgl+JmQWxwj7C9WKK3QSZ1QjENXsuICyAQIgREogkNxoacdRKsQb/BN6GmND9KgXp0rlRJy+o0LDEDI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.24_1628295001661_0.5767917191137348"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.25":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.25","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.25.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.25","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-BVyZDkHQQql9pVorSSb4pkXicdBHuLTWHi1xlZ3LF54QcG+VeYjM3cbeynvx58thoKixqi5fXEESNuiV3NZ4vQ==","shasum":"edf7601f10ff0d70ad564db5eb01882c8367e429","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.25.tgz","fileCount":334,"unpackedSize":2552655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDdNXCRA9TVsSAnZWagAAsU4P/jzOJk5G7N7awOKi8tfd\niB0xqBnV2eHeI0vKSZYZsvkgW4sVaoKas4/yfzKwIrYwb3VMI7wBoejvLlRR\nCfMr6XTj+ZvHoawiN14pG6nQeJlGJNBi7OTd0BrcAm2dTdlyNl0sq7gP9Xev\nkcNkW8HiWQwJZO8HdOR80cDQRk5TD8Ta7pBMq5sDOcSrK6CEK4M51GY0Mw+V\npZ5Cu/rqeNnOZK2M+PgQL3a/UHzYoF28lo8Q9xkhupLvHmkQpxlonPECLGEo\nG2vCl3SPjWIn54zGw614fZwAR65EszV/OYCShUZINwmVPmVSQV1exDTauerM\nT4z0Z/8fwfxL4sZiIRj1FB+JKu1odNZvxnc1r+myXrNiY55QIVnjPYeNquld\nVLYePvLkcBcF7xyXIsALfxJNj58Zsu9LpuLAalg2+Bc/DopHpMIzA0qa1uzx\nfyrNZSHBGC/f79g9JtdFhsItEVKGAC+KLqrvRtJMckTWgRw8qlJ7GF4U1d+6\nJZeQdeSi+g2vY/T6mMJfVQewTnbyik9mOJ9nHXosdv6mtZtCqAplrOmcnAyB\nMRkEOXieYhPq6Ci0N2wsnR462REZ8CvlBkE630UGD/lgw8Vp8L/cEWdH0yCG\nB+lugzN+vm/dKYdL6ui0+bhqw1YUQJjuE+PoNr1r8wb5PCx2GNa2BkhkB1Fj\nPMaL\r\n=jSua\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDglvw/Bho/MBqQ3S+PvNb0CscjToDNWySOj2tNL/lurwIhAPCqmjRn/mmdBfjiqDYGsG4oKtv0PNjUvI/PuNucHM9l"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.25_1628296023335_0.32346421772650924"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.26":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","upgrade-dependencies":"npx projen upgrade-dependencies","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.0","@typescript-eslint/parser":"^4.29.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.4","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.23.4","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.18","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.26","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.26.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.26","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Ga8ERIMaf6HrbsgJ8ODip47eapBx0ihYdFYMZjQTxIRxOt2WPCG2W2gx9P+Y0AQOPCj3+2eNEWgT/TKoRtLzpA==","shasum":"1bec7eeba99d1ae16f1cce12a4abc01c71b8b600","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.26.tgz","fileCount":334,"unpackedSize":2552655,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhDyVZCRA9TVsSAnZWagAA1SsQAIIt9NZbQA55SmL9aynF\nw/NIadUVr7dtw9CX/E7kOLsDZFPseGaBUt/xMKIkQ9Q1NdluzJJaZZ4zj9zo\n/CGC7KAAio8AGY1E39+V+FBAKFpnFdmOZ2ZTjb20qBADkV7Y2M1bb5JlHY4t\nnaxEleuYEV9/mySU9DFgLVQouL06Pk9I5bkhje56lPdIE4sXFBq7TeaASuH4\nGMNPmRUAWndGRnl9R+gMWZ+70CRou5RgGrrAZC0F5wYw8DqDoHpQ6AeZyfje\nJQ7hO/GTFAwr8O3jOMMy1G19+rtmtda82xBHB9cdrJafnw0GQdLwDlPL2i30\na52uXpo8R3g037/YaP+tSbATXlSW6t7SJWJhavA6sr81TsW4vna+27dXW/37\nWMjjzVs8FJErshCYo43N8ZEerIII8nshoE9x/9mxvbcfEU0U4klx0GdUk+Nw\nihfW6qNOV3bV5EXOUFQ9NbeIAscCnJ3W7l9BhCDJsxbaiE6vUIRdDhreSDxo\nCb1r34bGilID4OtfO4bT9tBFW0x5f+rgwZiHclljPC2trQiPEi1GO5cqJ2Y/\nHZs4+/s2DdeztEVdtHdWGCo61HD4gFdRlMJZD/RRRDcE21cII/K8Rilt7AQa\n2iINkertokMwT0hhI+UO64czXnV8Rx8Hf9JOQoJEZG0KNO20NFVGY6R3Ptr6\nj7Ro\r\n=LWm7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+eN7Dn2coKQSVcb7VR/+ptBqZjdQAurmK2tJ48jcPRwIgQzVPRhzmg1JFdkO1EqI0yMNHwajsIHGycJBmCLmwMjM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.26_1628382553650_0.9503900159423755"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.34":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.1","@typescript-eslint/parser":"^4.29.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.5","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.28","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.34","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.34.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.34","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-mdhSYKKx2g2cLYxuu1A6K+0yO+WDq9o8chL0gkiSC3OndhmMmL05AmA8LzrslVTxZ2Ei8XN3vVtLwAwTu9sUXA==","shasum":"e23c74de6dad173f8bb4ecac455865d436bdf9bb","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.34.tgz","fileCount":336,"unpackedSize":2560293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFb5fCRA9TVsSAnZWagAAtZAP/0dJpKBh+qy5/3YmDQxW\nK7LMvFfgC4NHjgYE0zMSGvRQmGK7R9FmHi9V/7oLuI8e/hf4B8ecKnnztmDI\nFac66g9Lu44XUeA1g9Q6B1T6qOJj4tqO2/SL+2816UJ3vDXZror9pDrB7que\nybVJugvT76JAXo+D+sEIpeAWONp/LJk5d21fdEGQCo8arebA6MnBYM3c8eqO\nlqxqPJ/FXLeDvhHq69KacBZb1bdxSS6UOkWRNmUBq8HHGMx96B9BjB7my/eZ\nZnVSKroW5ZeMSrvznElQFagY0oTTJFnyjxKGk4ZMoX6kYuIs7japlBF2ufjG\nl1sqYwDtoFZGRv7vbcZEMWNbXqYMDJxOIBddCjJVZ8RxUhYSI6DHouERWspO\n81sRqY5W/Hx4v5atWbg6ezYTnafIfx6XAMBaOr/Z3wUQarXjUu7zKP0MfuCn\nbKvr+E2Y0b7yriDwF8MxjkTu/tTZDGY0uiIST1YO45p5B8XjXg60Dp6cU9eD\nBkOf2AQwDRm5JIlm446hwikyjwDRjHUQvc0ybF/2M8egrvyjhRG+kIyw+S2K\nu0H80rHQleztnMPDEYFGFSL3eEB2/NYhsIX8QJpgOg4TkY3nht/gSWkJjfsO\nzK38kImw7DDWHsCQbXI4IrkvBtaiSUUASyHTT0j1WhMGvbnwMrInAvml9XM7\naOON\r\n=aP8U\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHLfQGBlgy/tSY7PontxyhmieOKydJZ0O87egZzv9rIAiEAkc2wQCgrktqriO7KcHx7J8jWicwsVZOf4lf5zsu1FIE="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.34_1628814942746_0.8713824658060918"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.35":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.1","@typescript-eslint/parser":"^4.29.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.5","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.28","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.35","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.35.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.35","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-H0sh4sJOrXLNPlryydgW5KwTnrj/UxSkqwZO/hiY2YsCHEjhP+gB9B+nX41aCvRM2cYWQ7IJWduaNnRYqLk+1Q==","shasum":"183cb2e77a54351d478354a42d512fca92cd0361","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.35.tgz","fileCount":336,"unpackedSize":2560293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhFw6lCRA9TVsSAnZWagAAwicP/Rogda5Jc7mX2cIEO3eO\ngzNTQJkx1I1H6PTIRr+/JLrS8I9uLNLj7NPRcQisn4ymOg+FnQIzcadVEoD0\nTNGI1uS9YbqxucOOG0FmVNCHz8D5OiU8No1WksAsqxtNmtvFGxcZJjyAGqkD\nBcmaNC7QICN2SjW56rxJkBQ2mEGqQb5/wmUBIkJDSOS4XtmTu42rhHLGnpJV\nXRH/v3Vlq6jEwO6enc1iCIf/ODjCSd9y5ar9WiJfsL5d9ek+SnwzceHPbRhZ\nCLewuXZ/FhKAOHxlnJsUpUfwCsrJsQ1nUVqPH5jB8tkh/YRjD010ZFWeWlFt\nEZ0wdkIFLm00Tn2mmT9D0MYNWAF6nR9DTyYhA6p0hK3YKBzCA58DQh5bs4yL\noyk2Ga8dKYr7sLXZDCng020MVkAEjSGQBtGInL8hE/1DidaOQdb606VKKHjD\ngoVQGn6W3mKaTHDrj64M+4wOicFcswks4ceVKMObxofknU3hh2icGBkywaKv\nrY0Sg5LxJyCLGrCnJ+YGIiFMkYWgf5Hty8vPTVTVu7xFZ5Y+XBZYlCaMXEBj\nOOM0iOlWjL0OA/mnGrWjU9zSptWpORRDpRMw9XilU/tVti40IZNNxyCysAWL\nvdm+50npHEScic7H4TXjYEcIgsZ1LKlftUYlKuHgOIjOljRl3EJwp8N67wfI\nsfWN\r\n=lfqF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFARlFzaAHvkH5WKoJatjq99BSDgNH1xVn2DuBS4UJ63AiEA69LeQ4Dd2mJKogH8zDSJSnWS/qV/P3tjpmOEYZFvFKc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.35_1628901028890_0.04277811737298132"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.36":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.1","@typescript-eslint/parser":"^4.29.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.5","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.28","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.36","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.36.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.36","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-1BN5uMyq4wX5j0eSjolyjhyabTKgLEeRCuVP/0S4uV387tTj0ZIZ+mBwkRCfMb07+O1B/mz7DDDxC9bk4kHH+w==","shasum":"39475513bb1627f68db6c4b0eac41479fb74537b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.36.tgz","fileCount":336,"unpackedSize":2560293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGF+vCRA9TVsSAnZWagAAEPgQAJlEwUbFSK3b5cPzqUr3\nM5i5gIEoAu+jhfwjBdoIXR8Di5EPor3nTOqUM9iub1Hh6BJspgj5XBy67BcM\nO4LKb2PdIvdsWBnor+LBaWMvW4cbXaQwDEiWCNMKgayH7f3DW9yek8TVTsF7\nvG9nB1RqAb6mT0/YTAH1pZjKUqYtSU7cUHEeAT3IJkPaYfC/kkx93brt4bpA\nrakgV1He7yNY+1Q3/uBaA20x/NgFaZYT7CxD/niVuw7g3hUY74WU8U/+S+iG\nudxOBIy06FLltFQggQQFqUxka3hGvGbc3vXvmSp3V5e4FSt+AWhfJkjTBZWQ\nNrly9pXDspJV0QIdE8bzyvpgg4YYu/J9zpoWXGTtCT6hGVrXc7zcgsal3Lk6\nzVamSOv8G9hh1YOujqEzgVnaKhiG3SV2rb7s6f6LT412u/j/l+D6OOg2l+Ju\nlKPQt4lEDW9xA/oF9zKH+32N51zVctFg8NNbTa3K0KR0K9P2WUYyYPTclItB\ns4GJMSUFj/c0cWN5+vt+/OysUMGdp6yAvr+IfJ09n61FP+G7qCln4pkr2A2A\njBVhpmd965Ac+CAni2g3Nc00eMhsdE8Uvq1KD827jXTH5MUcIFU2bBLq27S3\n9oLFBkVcdQRKV5b+jrNO/Bt4pgP2JBr5vJ9HlCDbSKABOAj0N8ykR9VOSyXh\nA44s\r\n=+tlq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrA4zFeOl3vCZhiyA2u6OTGtQ2/37VyND+QvYmDygo7AIhAOLkXXou9tO49Ptq3G2MCcaLLe3TFFn3GpIvBdkZKaQY"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.36_1628987311466_0.1984647792867742"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.37":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.1","@typescript-eslint/parser":"^4.29.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.32.0","jsii-diff":"^1.32.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.32.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.30","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.37","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.37.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.37","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-CrpJxng2OQjqg8rF70uuu+QF0rka07TcXX/+9iWoEz3tI3JeGK5ngwrn1j+R1OvKnJUWKD2dgFjQkmY8bFqfGQ==","shasum":"f8665c6bc44feba8fe92d819e8b9c30bbe24f37a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.37.tgz","fileCount":336,"unpackedSize":2560293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGbGGCRA9TVsSAnZWagAA9R0P/2J+BUq6orXNvD2J89cb\n3v8lsLa+Vm+APA7ekXvSzNMO4ih7Y9InJ98lxvynZdtQVkZYAFXQeNAPmRNW\nJd4eKR2zY8MFIHneQ1wGSipZlQa540LWdzxvC6zZ2GTvBSRMXrJG9ZFZbH1X\ns0MQ7nQLZ6Hm28Sv3nrS3pUqBS+k7StsGWEXsPAYc1Q+k3+GczF7FM+LSWvO\nVKlfzTwagA1/Z6jiChEPO+tw+5KyyfBNqsSNy6AgxJNChFml0WrmnA5+K9xF\nscYmogDmnm6JBCzMfz6KXEVIsP24ax42jf0iYUOAsWNTdQtSptWOn0RauexJ\n6PBBNtALJEji8LJgy0SzgL1BxjUikJZwD217YIKYcOMIWYPkBs9BiGQmC7pd\nNR0h+0gYH5Xb977Rm6Bq3C5vKzOjdYweONo1LvBUztaDyM2kEijZ2+0ErMv5\n2WA16zp13cwBgwxyfTFBewqNtygHzHAkmdFVEIv35EO6sY+VK9VS5zCok0sB\nUSIuXVlrDfW5IGDBTALOSXirTESqVXA44LG7nZ4PFt/y0SDREUl82R4qJLrV\nwxy12BddDDtfIh8UoBpnq5IAtKefrfVTIN5nmgWAQri57ISEcJXgx08LXZWn\n1NfyhWW+ZJEWXOtVDPMj1jvLUSMHThAqhmzFuDZBuZyJJZHpJTETgoVcvd2s\nEttb\r\n=+X6L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG9GrFh3adoPcOCW8/6To3TMB9CydTMnetnq+7e7g6uLAiEAs9tGeBrv5BZA+XHId/Ons3KgBkGgx/8X1Qeup+lbjPg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.37_1629073798704_0.10779563501612466"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.38":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.30","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.38","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.38.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.38","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-+gqhy0K3tzOgmS0iIc5HsFK5TJRqiR/fMeil2BvhTzGljqYX061FaAvk85YEJAF56GRktIXobM87KJyx5ur2cQ==","shasum":"52a7e12b5442dc5a8a661befad04b853a27ea8c6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.38.tgz","fileCount":336,"unpackedSize":2560293,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhGwNcCRA9TVsSAnZWagAAU3oP/isb8rlIdN0cMNKI8cI2\nnvQKcam0eOn8gB2cB+3nv4ItbamdndBogIE5Olx6KagvkMJjvp5QZBCkiK2j\nvGU2qpKKL1zuvDNiYL6C063g0Mtj4NUaL5cM33D8FC85mhXQ9wwh5uC6pH/y\nAuYxGXaAO3Zkkb5sQYntXm/CZ6co12dQ3XgOmG9EIEMX7UPuihMGXyNyKYNe\nH4vw+i7uJdfT3heqWCcaJtsjMeVaZmaiTFxm1d4yLa2hA2tWxs9HSNsU+nH6\naLCvLK3C0jsP2AbK5MlyOXy1K5zQJwrVK/t8nqYg61SC68uC1l0+VqCTnKAl\nYVq1TBaDXba2Xj9JVZeDfsMvaRg58O5LEX6rHOt8NQhitCuf4JW7YUAyY5+J\nXf6wQrr3lBEY5FtFyfIaHpXSPnYK0GpiGIifmNT3ZuQge6Ky+qMdkZ9PGAkr\nDwjqqFmlh8aw6IXdXLBit52JWtHRyLthZfuQUpOoOfFAnGf+5kqcpyn8clFy\niqkUmFQXANnZi7vLKIIl5flrE1XZYZFDFNHyB/wmipWTPUTGPKzjZsBAJ+BI\n/eSlCfPVw9R7TGT6N8f9XLz+/vWKzKmWQnGj79qe0s+0DulOQv4wTp3So1Q6\nsYH+CRSatOQluCRuY/MY+CxNrCq2R6/ToxTUS6MWlxORJ94CZ9yynU7mcP3r\ng1e2\r\n=4FSR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBMFXdoFqQ5XcAH5ArU4gTHDpFG1rJrWwqR/pX3HsTX7AiB3t3VdDGqAWCIeNaghuJrOsAwtwRXxRspQnLy1nYmXOA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.38_1629160283832_0.1780828113225943"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.39":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.30","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.39","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.39.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.39","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-qi7ibwklf4SO5NoE1ypjVVopXyk9rwkKUVv6t/Mzi4oInEp8tb0jRMNE4AMQGnvbe7ILjdKRF0ePYXO5IyXgPw==","shasum":"26140e420f6ce17b98b5a03821e83db6ed46749c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.39.tgz","fileCount":376,"unpackedSize":2687975,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhG/4aCRA9TVsSAnZWagAAyegP/10nnsye3o2fuC9q3ZgO\nCjPECMeIXY1Fv+I50tc1UwYRN1uAYWsVVtp3Vrtyi5blWV1qiVb2a1ScHtZz\nkCKcC1LAqAiVOg8GJU1CjGg8eQY/mlMzSfqKHuukXuJ+L65D2hi3ty4UB+bX\nMWS1Gc75p7hOdX1O4SpS8LMswI5YqGtNAUKp5dXT5bpMsLAfdAkzEcrivkhv\nnoIjkyQULcPoY1kxZ0jt/cR/UYvE4Q/2y5Ksja8Fkkz8yiBzsJbNnvDkXADt\niY/xmT/oWB7SRqBN01IJ9R4oohwXNAgUa0uIIHYiuiSE6qzYEG1kOdoWlrii\nQ/SHg67Z+y/jthdlm8KVhfryhQ00HlQoZIsKInu645FmNX5C+uverMsNmF+g\nv2IwH85qLnc/DpEgWsw4MAk+ZJr8TNXsu2Sc6MTM9hm0o43JouUnTwA+W7ei\ncjk2VVmqQrJogUUd89yr+j2tQp1fq0VhMF0kkkZSZOPULZwOEv0NNkFA+bo8\n/h5fvswSvTQPoQHBGnVvGhgAKwwLxTNJ6e64z/b94zShPWRMuyZzobSEBovu\nLPcfewHfkFJa5V1veJXscNxjY0D46Ab8dY4A8Zm9cTErkUKDfXAGFynWQYd6\nLGq92w3/xbikPyT0c8D4aLcsBpI55/PllBXmqwhS/Fyg0J4J6bRMGp6Oc+om\nFGZT\r\n=lOEJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC36mJ8gFn4DSqJckidy5VxhVskLV+2C7WA7oSMLgPNUAIhAOAxFyY/PZDGGvV1IfLMlU62eghMs4TfZ/gsneLz6PH+"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.39_1629224474166_0.1968835557493993"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.40":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.30","standard-version":"^9","ts-jest":"^27.0.4","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.40","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.40.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.40","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-eC4uHCBPsVOR6Kx7LuzmTAgms+el5WLfnY7J5AIHYP/IiGfC2D4yCIUoXt/Gu5vT4kIEWHlsadDNbf51YsXFkQ==","shasum":"9162c6d5715d7f2e85fd2971d6a429721e52c938","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.40.tgz","fileCount":388,"unpackedSize":2751303,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHBCQCRA9TVsSAnZWagAAXlkP/Rt+XRwfIgCrraJ+JJbs\nn17VEo9pTQnlIPHG/6S/Ms4YGOsAXPKslN4INuQ1+JD5ETIFr2+uik9L4+5J\ng3MfJstQFrqpR5d4a/Mce6cUvVdtLjGY+Kjd4tjRyv99j4vhcFw6JggQPC57\nUZS0JKk8PPAu2cwnoq0wnVHGys6JfIKKGVelp7qhTUihXxaisSuKY3rlOxmQ\niVe1KfM81unpbKjzM1/9p5IVOZayOlZyCfPYPBk09mVKcmdl8I93hJJQa96z\niMEfuNhCzf806ynrxtbzQOlcIPR7DHJVUsEgDjS/G2+qMZZpJSDkjBzTT11r\nZ0cIQHf3JKmLgmAw1pz4A0qXrEghqeqYeeEUeagxr8JL0NygIPu5OoEp8mzb\nE3aTEWtrzmVv1GPjLjvHAW/L42SEKj2Ie/e1HZT+A9tKtf2hSxIlDDHCGm0c\nKIcFF9euMH/JQt4f+FJPpLyKLW2jwK7Y9X+LWP/fqZ5XE0yxWpS8OxKxK4rp\nP+kK6iL8O7xH5TSoUfdn6o7nwSCYWv+fB37M2mzEyDppTZnp5iHZ0ReqTgYt\n4/A6EJn4zrT/E61XJ9M6360MjbxFZVXNB0e0bOz2sv8uzO4n+5T/209mSB2H\noJHOpjwROr3CISaOa6mJui8FNULrZW1s/aqVfF5YwgUc469IzxJqoYhG+UwH\nQ/au\r\n=sUdy\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKzQoy2i0ivhCQoFRHty5B68+kYW71u6b+iYD3VWoSlgIhAJyjz/0FVV5mluVVku3rDziPLN0vg/mLhyY2mcadaXPs"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.40_1629229199915_0.13498833621782014"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.41":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.30","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.41","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.41.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.41","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-6zUnpduu9CTCLRZczDp97vEbNYNleheSbDcMsj2oRHs8mDtcNZHPK6ZoMvZ5a/swnJT/di0n9BEi8jP9bqpyaw==","shasum":"cf5e407323c6459d32c3ca494f652d8c5c4757d6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.41.tgz","fileCount":388,"unpackedSize":2730448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHFQICRA9TVsSAnZWagAAlz4P/RQvio6XeOx2Ygw7e73p\nMgJdJiDqSLHidQExPrg4Cobtv4dEU1eARZ9UWXnEwB3p2p+lM+wNQgaPHNhY\np89RZTRyrJPlK6ItFfHmNufr3m70CcjHqJuu2iHE+UifBPVzuuiww7a0Hjqf\nGhlVKXHHOLwQuDN9rl8J7kthYlwzZrnnoZTAvENzE3UBeDtyijnrdSPZRevw\nACGL+eucOrfRaiKQFvb5rM4YWpagGvfiZmtnDke4Wo2EuyHAI5O0KDu1xUvD\nSYGMV3D+SQqKGtIc4bPxA+NI6rH6BHkhq1awGXF21Q5NgPgpvXoSK2U9z+1Q\nGrIr7Mcj1r8uLoVHDLUukK1tgVOrt6IHAfd9aa1MHBKLwrI7me9C2K5OC//n\njz+qJYRZTBVDUKOCbIRT2+ogq8Rwz08L0h690hzY5S9Cl23Dc9qCyI3xfbZu\nq8vU/qaZSX99Iddsgfu4miDkeKs792nwlY7bKhrCy8r5/2AcbjNdUc+knYqD\nrn42BM85JghhQZPipoA1f4btWJ/O8CGr9lQAgNzOkQeuZp6aDIwuCOyqNKea\nmWwaoUuu9UdhbP86Ls+mAD0C9HSogRMFmTwtanfeUugdxmVEm7qSv26QmHqE\nqbJPnPR8UBlg70ksClOj0IhUKRvxsz0am2dg1KO1+7ZPJ/dsfrBW8odwPUXZ\nee4M\r\n=I+6d\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGvAUrNIjwcHoe+BJ+T9yuPVwL2QfkjV07D56fwYtfMqAiEA8jWkvLksBjAR2vfNx0GsaTLyi5tcV+ecrZPF139I2bI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.41_1629246472206_0.5101538634869867"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.42":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.31","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.42","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.42.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.42","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-XqNed2b8sI//79Im1D3jUQhZs1BgigUdPN9hyTrG1zoPeET7nyoaz717J7gyvH4l0ZX9jEhXL3XmzhBoPve1Dg==","shasum":"51c5bb967ad9683368c7a614ea0ecd59c5987f64","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.42.tgz","fileCount":388,"unpackedSize":2730448,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHnFGCRA9TVsSAnZWagAAagAP/iV+eB1V0E0zmBEuHUoU\nDR2nbYpBAcMtn1F/lX1pLgqZNX6mT4+prxMKyR+x5bWHgoukBkfpYBoyFJxK\nhO/hS5h5+RaKts19YenmuQI50IIjBeW9Z0XXvjFNNOm6r1R8fagLAG567xlZ\njsImbqNSN5pCocwsLii2QS2zzLG0Jibix2n9Zchb3IB30GFBm6i1JcK9M2lh\naMrZ61IHgeYBJVlgUgq1ZyBrtpolD4v71aQ1Cbe99NVZbmVjHr9x8bl0Rzvy\n6AcuPXOg0Rc+IDNnd7TNTraCixRBRhpVWR/KFA3uJg9nyXwtsDIMI/ke6l6b\nI387a/84+fNZhS4gEqdZxnpPWaOa15SiY7JyS8T8/RsYMupX643QkIoTo2PG\n5AW9zLvZRX6Ma5zMr7ZE1Ake1riyYOpO2/fUz0sRBJ/bhLaqm8+Xu5AfxgvM\nNhShbLx5FCKD3hwuTTdGSUbrf7/km6EK4gJeKRVhuMt8AePLgmKDXpLUCzKy\n6VgqOd9R4Q1WmA+QDO5Y9d2YxwSLpYpSVImz0BU0cZ3E6D9iHd54TO5qCjMq\nR8sadRV1YJyODdjYY3q4TWERdWf0pk5KhG+FTkrGnsJirHZQtsQtcPa+I8QI\nVnKXm/+Qb2SXiGhx/l+uK75i1jJtN1H+GhT8Zc3qyn2H/bveFRRygPa/zcS2\nHIW0\r\n=/Bud\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBoZHaPui6x4CGTiaGVgCDpHudT54wLtUV/uIH7K3a7PAiEAp3W1+hZ0JoXXwLAugZIZXkcC3KnjOr8tDz/04Hdbiq0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.42_1629385030609_0.7387349555402418"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.43":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.0","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.31","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.43","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.43.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.43","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-1E/iPxzmx+y7oh1Fmcp27pnq8fYDE0EllN2uj0Bw4xnKgglxaumnopQTj2m7Pffpc5wnWSujwrUoN8fx85viVg==","shasum":"f72034d637471349dfa629f3625adb9b4d99f031","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.43.tgz","fileCount":438,"unpackedSize":2784535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHrlPCRA9TVsSAnZWagAAKloQAI06+ootL53vJ//CDBJm\n+r2btUJWekY6TMHU+deCB7yB+0o732KHfG64EIVnbjG/Q5T4KJdc9x3HkFHc\nXKFcmcNVWdyHCE+UcVNu4Mz/H5HNz/b3mCGv4ob17MzQoAf9oYKok17fEC6/\nPPEctXkTYxlul4ie0sCZhRNUKd+Y2coWr7+/d5UXBjye78RQb8sXIo/BIExm\nMqGWIc3N1S4Odv6dIyndbDMnceWd5FSgHvl8U42XI+XIyk60rKRjKJRMiviI\nYZAMblataMAyk+ql4GaJaDudIDD33MKGQOSinNzb4gqUKk0zg/PBSQlQUEdQ\nlq5mo85Dpa9vS09Upf5ucSc8xm00VDULKzSepIvVWf5mw8HklytJQ/v9orTk\nQHVQSlPij8Cn7v7PuhE5WvSv7rvEqKlYmG7xpE0ugt90y1k/BsvBPr2y4ioJ\njT/V5zOAGOH5Qrr5bMkzcdi2pVf1ZaUItTm4wwPfevXuSGyWUmRAleyJcOtS\nW9GQ5FgkdCRswngbGjrGOpPPEUPeRHAaGUz9iv66bB4BwBvzAWrNf6c9oY3I\nLP9AIlEKWD+TN5nOoPweI/lA/fT48vct0lrofqZI3AeZF3kKBcBCgxQssjwx\n194oruAwQF4imSMxQ7fsvjpbzZ0vC60VrGGthM3cgTabaSnm2N1aYg7gMvbd\nbHEg\r\n=4q20\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMb3TDenoRa4UAaHtHs7mHHTfnfuWG37zVnu1kANuE5wIgdQiPG49vut9U1yRshuiUuzic6Z1RTzCcEC7QTUF1rwM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.43_1629403471320_0.2075969784214493"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.44":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.44","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.44.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.44","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-VOHMMBapPHH52sayToTSHrYJMpTFU4Lfyz91S9REP/cqfTzarOgwGRWPk9yS+GxYx/XzqUw5EXK+iJMCbqSARw==","shasum":"8183498dcf35d7d081a1c94226134f9f74c0de01","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.44.tgz","fileCount":438,"unpackedSize":2784535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhHvfrCRA9TVsSAnZWagAADhQP/1HKaS5YnGNGqIBYpEuq\nJSVORQXVLoU5AUJA5yuIkn0GEyVkVOeW0KjelNUjgstdLAZrEaQGlKrLqtX5\nVMEiVJv3gIywZyXh8I9p7K8GG6aOaptRs9tuK4/YoNdH2wdw8IujryYR/cRZ\nYjxmUEf4os9gWyo3T09wrXeafPTbclxLlcj2yS6kdGfN54wpBcWv+Csvdr9e\nay/OvEweQlQYF6amIpOWYF+HxiUWV/PXHKmz56TaOuzW3EpB7ziFyPY7jeAR\nn2ggh68rYF1hUKYnmXARWOoG0RVZPF14Egzj/N2PoBIQtwe7l6LeVvlPtCTq\nMz6FHOxg3uGNRq7PLWnO1aMHS/P7hK9ot0/g/wngfLX15stI8B/EdrYYfcw3\nGsc3G4GfBb9qHSmCWZHT8PHZnASlciKVcNeC4uI8B67ORgBCKLZnjDcPdC1Z\nlkJgYcSB0mpz2BHw+5xNFI63ZbBMmYfHzjtU4qVUKMwdCoLlG4Tb7Tz99o3t\nCt0aFB9AysRvjl3M7kKoz17z7oaOT/rffpb0YpwC7c8RqVNADWXQ/5MVrBRD\nqQb6q/YYr5UBwQcUClch39ZQ4mqd5CeUxTIt7T+LYCsSDuByxmT2uh5jjlcy\n3WFZ7HSex3ZUY1EjizbR9wqyCvut+veU+rRZ+l9G1pwG1fccXroStj9Xyljp\n/yVx\r\n=eD+X\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICQOZhH985yUbHM/V1NUwPvir8PwNcw/ggb6ahi1LthXAiBVDXxDkPbELVGLNN1WaVwTjtBjVfl9qS2gytQCfhFRqg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.44_1629419499335_0.6599427310561712"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.45":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.45","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.45.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.45","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-v1LFQ59HmYigemzJW9PI89EK8MMcYlt3Tfpj0ej51T3l3PMXdiqdErq9YFwc6oFqqwdORYxM53lJqPstbg5bjg==","shasum":"f29bb4a005e8a5a72a5a1a76bc350aa8d212c3b0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.45.tgz","fileCount":444,"unpackedSize":2803709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIAVZCRA9TVsSAnZWagAArSAP/iZO3YxaGkUhugsNdvNJ\nVHTzjfTEclnJOeRxamJeOoi98cyF+RmvO4fv3cd67cutjGblDpPBN1i3nKSy\njziGLBeZTo9NT93ttgMGHFimP5baYh/v8MYwzc9kqfCM8Xf+WMtvn3FxolZY\n1n/ZMIDWAtRTuXqTLouUtFiQJKnH1bPROGrvp0z45wwYWQZRBvTslJqiE3uh\n2qwAsivknoFqbtCxyaO/4dP3qBLqYpz4PM/EGanptHQNwk4PDQOEJuP37lx6\nKScIuc9GakBjwAzO04v2oPppmh7YQHX9kmcCJFdUZcjY+56DVebDgSPPGTF/\nzTqtrSKpVVKJhlk+vn9p0/uvCfjsRPl023xdjdrf3lHgbccLEa7zMFY8fDus\nMUot6U5eJbpaOZFos0U87PMZwlzyu1u52SGL5ThEOyUxdZ76gCQN2YIuCGaU\n9r2ga2bwC6aEbn7u76W0B+gDupET+l7xPnJV2BQEhH1bgYdgNR94U0QLbTcw\nZUbFsceofvIeU5eYfag7H2l812rBXyk78U6VXH0VNIKm9sk4JEwul0QpUDMI\nC0TcAhQzXx/LSOz60EgLXBVKedAE/5RPRLEMaQ5AoUzoL9YM0uIFo34tiHSc\ndBfuRIF7nUoK5YDCs5UQZVqnOSl7mH+ogGxI6aVWEz4lIQV+Bu6KyFVBfmVJ\nUhIK\r\n=ZH8I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEblIj/3gOgaqBjaTnXH0GPDZYgfk8DN5QzgI1OaDiXZAiA7Ri7ZCPggyo1VgnMZzpT8NelBBQFIxK1KHZHtjby9Iw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.45_1629488473569_0.35154033474918833"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.46":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.46","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.46.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.46","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-nMhhcoSa4RPUKjgzSLI/mR2+3DLqF07aTW5p6Vf+V8xrlMoYE/misD4KuC8njscetoI/RP20WXQADBTf1oMPkw==","shasum":"9f62f1b10c59c31884f413955685051a60ab8adb","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.46.tgz","fileCount":444,"unpackedSize":2803709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIEjACRA9TVsSAnZWagAAauIP/iRQAozzPrF5vhrR+eHZ\n8LUG+NIsFr754akxv0OoYUM78XPmy52WpzgTKgpjghrAdiKlmxlBVtsbOoeS\nYZ9ilRdV4OmU6R8AOMIcWWe/8HgFq92KcQyXZEuSCr9bsIbFa5wJz5kR74H8\nNmj4kM8xOG3oQ0JUq0rtzQYVeHwRzs4cGqNrzJSHPMZ6VXeQBvboeQGOvlS6\ntoJqJpHlAo+0X45gE8uUkqyMfYm43OvZiMjkTFCmbUv7UFMfg4FdCPRMP+oX\nbr0x6LKbskNVfURnebH+UlXw9AxKBG+FKxWRxuSO7nbZJ9tERHuECKChvSnT\nnTo8/9Z8Pdu4pmUWqiBZOn0HTNOjpK/A9rApcO3JyC9mcwAM2D7Lp+L9Ry97\nyt1Ugye2+1h+POK7PDxdOL0z9auXPBDk3KhtXd19zPnBJMPusWmT886entLw\n3buYwhJn+0DxO8g3SykUgn46iTpw/MMr69Kj6CB8wesvI8IgTobyqkf8DpPv\nGSNvP+4vW5BBRIcifM7aMNwoyfWG8KfsJZstCNu6FEvh4p0pIIc7z+gVoEJC\nm9EdTwabPJjqd+VARsJWV/vh2PQtFY50hBCJExB09iJ8fRzCc+nTezx+Yr+9\nYPRVMq3+tCK/1x4vJSkuUSlRK8kytnTQBe+9L7ZQqUfU3GmY1WOrihbMxdoL\nARWI\r\n=a/qd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGJE84+t5liTNa5oinvkYIzfBNc9uG1s5hEMHKZgLTsEAiBG+H57UOkutNfRx3zEBqgOouUkbg4Pcx0CN7tFedwwAQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.46_1629505728533_0.5385624086834893"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.47":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.47","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.47.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.47","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-qusyzJU1WX1i3Zq+i95ro9qreU1QyFwt6LgOwrJhQ3pQJTr4KIYVLbTnNNHq2CPGK2/c9ykWJrOC35uox2chJg==","shasum":"e55e256b4b2822c399f7b003904c974e35ef7e70","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.47.tgz","fileCount":444,"unpackedSize":2803709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIZn4CRA9TVsSAnZWagAAJvQP/RM91JSHDx9PPP7tySUq\nPCvxBLtoCprS/DNyL/k4Pg6halsizDK2EoMayu9sk6txxlA5z+hu+HOCkOmr\nbxLJmyUDRMCRRCSqXNWJ/xXuTJrqU0/y8uixRoQHZ6tRVzg4Dgxpeb0XH0kM\n0PPL6mKEh390MytImpDuw8j3HyvJ+eAK+56q4iPNKqK50rxen/hEGb4IKFMk\nW5cyJX0biIEzkuJlfJzTLjsqGmIpbKZoDI3RZd2Y/tBAwLwOxHWQ1UWYLa7s\nO+8y4yFbF4dHLAVFSL7Di9sV6xmfWkUav9B4IbBTNMIPHEgcO8AY4xC4SiXs\nspDcAiiQ78lraE18nMPSCmLN9OmXdfVgsgPQv6W0HLOJHKABcRt6/rWv6Dva\nzwKo1FUXoxpeVpJNN4V7EikiptHp5cI6QSBSzThQyH9h63poVyO0PSLlnV9x\nVo/x8MuKNHX1LYB3qvC8bndVglUdN2UrhXOfQg2nzlXBlifdaiQRUDFfWUf2\nO8X0lQofL3Q+r8OMC/SorkNy45kowGqr8HifeOjJBVBPxVGVvb8AMmpGNlZR\nyE6SlQ8BvE+IHN8M3jo2Lx09Sx6Zbw+L53WdtnTGZqnl8jYcxlSpWFIo6db7\nG/xPurBswFTmUJ+l1vugX76Z3BXaGqGa1GEMY/rLjITvz/nGLGoG06k7eX7T\ntSFB\r\n=QopM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZFSNWa10EQ1P9XjgRnZgTd/m6jU1z3Fqacx1nd0x14AiEAnT4CJGYS3hkmOBFbHx3GeDEpG5qC1MIFe2jKm4yCFTs="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.47_1629592055632_0.3977118678991709"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.48":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.48","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.48.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.48","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Po1kUSPwqPRq5e+nLt0BG9lBckhOblQvQTmAnopE6ySHrh7ILppzmiZRr7PobXzUt7nvUKAR3D3aegivwJdtDQ==","shasum":"d789d212e98a46abd277a3f01e86e012c639b3b5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.48.tgz","fileCount":444,"unpackedSize":2803709,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhIuvUCRA9TVsSAnZWagAAaLAQAIuf0hw0bvJ1vhRwBK/R\n1o3jL36Hmil7ZoQ3bmYXOPx3XN6TuNbXWsJMbPFMzGmpYo/uo9ccEdJBqhjt\nVpYVxRsWi6jt8phYMg8BP4d1fLcZf3DRPyG4Bi5J4ODovSdxXGSZvaz6cFNj\nABVpl/2r/LBkcAbZC4H1Sd0Xa1nfmkmoHdys+Ftv7Q98flksgI5dlxvXIac6\nFbppCvxld/oTrYYTanpz1I+TDS1RMAIR/8Twi5tfJ8A2j6q1Z+9G9CNqOzOo\nVQ8V6X7es3ODHANdnvma6l0bNEfKe332iPkRyXB1aGsXrsJE7jCmVTQLdu8b\nFgcAXxM+mlvgdMyqy35G3n3rx2VpfdRElq/zkK5dMjNdSvQ52NtLpxB121BU\nq6O9AAM0gDSByqngSPBvOnKJZn4c6SF0yB+6dBHRBSbqTChDgVvBVwxC8E94\nolcSiWg2HQOVNOWiptIXDKvVHj12s2XOru6EaC504PV2dN1HPZeYJKMDIeH+\nqAq8dP04oS1W9GTSEOhEFHGPEmaNqXCHrrQV7SxKl4bPsA1lRZIYfm36rujB\nScS+SV2rCs314Zuy45jDXklWtxn6s9Dy9FXPitUW6M7uRiky1vzP0gIwcojX\nf5D/C51jomnGGVImFrbc5KuPmX8U/g+gvCR+DngvytvPct7YMiFoOnV4VFBD\nRj1j\r\n=/YF+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCAssJuQ6P1mfzXbEDDzHKLhyBEqXu7ExHtSuPRKGU6CQIgQCQXp/A7jyQvZlZVPtgSOmBANwbfaeKwoCzsE5YRuGI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.48_1629678548513_0.4330978529325791"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.49":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.2","@typescript-eslint/parser":"^4.29.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.49","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.49.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.49","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-w8Cq7AjelozOCeSkBrVu8KL6wtPW47owi81iwSiBEeFf/LBQLrb7f+JMXJodZJnSJ/0MuolH4DQR3QNrDFCzdw==","shasum":"4a71cd09d436e08efa3dc42ab62a65e7f90ec1ce","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.49.tgz","fileCount":450,"unpackedSize":2833627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhI8z0CRA9TVsSAnZWagAAKw4P/3XeGR3I93YQJKVfC5Q+\n3xF5ir4P32CM1ZRwyZHrX/CF/nmpVILCX9UOcXGNut+a/rpMwpdoNiz0COvr\n2D4FbiV0DoMq0O8sgbo7cd9KwVJpCaVgwn3nqFbaF7OUCD6Jqd3aufO1i5wB\nB0yyJ4jnc9KxbTDSMCIIFRza1jm020KEgm0Yd5qhzSkNPK6Rs5iaCH9q1tsU\nFGl7X/zElX2Jxpg+dQQNclso4s0+VT0w43TS+Foc2Z/7XG/WpBf5/MTuV8+w\nIDZ1M5IzZziT3mO1ijX82hTuYjEsR4d6gAp9NggZdlxq02e/DqWc1W08hQz/\n5iurS9dVv/gY9QtjR8gDq0hphD3kPNqTWZcEdmToqfaLiBpcQwbSP44VKVdk\nerVUlB6Rz+V081tQ9OWVl18zqiYgZOifRCLmXCfmTkiL40ccy7pHtE9TYcAp\nhQqA7SS5jl+rG0LxetBWkwD3HIkFRJkw2cakj0Bu1ynpVksIxLMVTjnLiqFe\nusAhTE5c/EZnduF5YhNhTjknUL+yJYUaVO+6m8d7OjrWThClmwk03Zp5bm3I\nytuDvWF/Vd5tFqIRPQJ0dKeiX6VbeSDXb6PXy0gwSpCeUQFTD/QdYTUT5Bo2\nt0DoawSTKYjFlLGT/2wkB5fsoFU3YWhk0JA//1zDFZ0v5uhktUMYpkDaMhRR\nvtLy\r\n=fbQw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkJ6+n9RMjanV3TmrnaxxPBmTkajplXnOZqSjM0hftGAIgY2Hb8tgNctGN37Q0A2FJgGLFDr0FHzSbqACUYBgOjsQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.49_1629736179832_0.2574742118650828"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.50":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.1","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.50","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.50.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.50","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-DnpaMn0KQ6X+ayNVtOEmbuZ4LHO75HuNPYQn5IQ5CF1FwEoTxqdhz9dbhnS4eK3/5YzhgT9VfwmwUZcPDmqAHQ==","shasum":"07ec4c46817c37372119105180ce22d37988c0aa","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.50.tgz","fileCount":450,"unpackedSize":2833627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJD1SCRA9TVsSAnZWagAAN0MP/ieaGUPBOpPFC4cgqbxg\nAzHmtNjadq1W0rrezj5fM4WU7C6HRPv/ZBNCESCJUR83H8XpClHwby0dAK2f\nNqn3ch2NiEmOkShvAqrA9bt8momK9kyytLmfho0t8dxH5XLOGoVHEd+TeoB9\nQsm5jU7x+4jAZDjW4Pr0vg2OpoUopGaDCFldL7ViCn9o0Rut3OLklnxB33+L\nb6gyLp00Mtseo5sqC7R6W06DNnC1SZiaoh0gcxIZCUEJBbKxrRcW7RP2P/NC\nfQLtCE/y4Hd5t2aVoqhs+YKbnRSiIv0kyV2QkNY3z+LhW8i5KnhF7NPqGONR\nR4pZ7H6wrWGJ3zD1h/HM/RXrryFToC33ttKNCnoTBAf8SXWLupgQrD1jQ3X9\nVGmJWsDlrbQX7r3Do1WBQSM9lwdZfO/I8DKgvwTY+gYTbdHkUh+1H1Jxsz4+\nP7eqchAcMfb69rmxNn2US7UZ3qfa/yFlFzM/FpGqpuf9dJevrgSnkLjPMqWD\nvbOkGBV1N92Fwrwiev1htwU/61r8WtGR1VSznrZc1ES+2lEMongFne3xPP69\nPCVOPIuWWbSU/2a4V510HQrcUZWUMDHGBm72Zq1rrQevAwLwGqPVFdYuPT86\nVBbaA7O2o7i6JVIKjgRHrdbqcSHDvDXEQdo4MvpLpcXz2qVSzfql2cqtyPzH\nD5qe\r\n=DCLR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMP+Xt4Sd+5NJcZXym+EB90x6FQPshgyzIgCPk3UJtAAIgAnQueoWVu9MwuzpL8MMJ7C3MIOsPnBeewUgpeMwBsSM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.50_1629764946501_0.4259547963422794"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.51":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.51","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.51.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.51","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-eahYchWFeXzagXWXQ7dcGJh7Gbmfna7ZRQZ71lO+3ia/d8Mxoy5Ue7OSpT6mKfUxQ9S1IlWJmLSY5kmeKWvI7g==","shasum":"3bf720810793a498581563648dcf0ae636b19385","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.51.tgz","fileCount":450,"unpackedSize":2833627,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJY8WCRA9TVsSAnZWagAAO44P/iB5BsiaOTKudpCLRdDf\ngm4YtsA5Cvx6CdHI81FBi6yc9NpQzaQCa6t7qifnhI6+XiLYAvyrGbgnvJ/T\nYMaS57iFUnNAxQ+s9+x8phvHy4RtR+CTzUoJdNi6vSJeItO036b3sa9D6Xnx\nEksudqFLvfb017SUTjxfAz5Bm/emEvlhaJAH6rKNUj3cffpDEtNEDQDXEzTC\nl4jRwNfhN2f21tYHAAjLnqPi9PAMtcUq8U2k5EnWBe2PGtW0i0vV+vq3TmoJ\nkfqpeEZAQ+H/1HNmFmdQ9bJUG3znhc9koxsAMXnQAM5NAPJFhI/2p+KEVYgX\nTJABEg3lC8OJC9BOsdUCqdwNbeH8s3hkYurTBgR8NUro0TI0ccf33RCL7+77\nXnbcjyWKjAaLcnXyhrJcrVmiG9wzvbm1VOMKJsNYCrPzAsK195IAGuiFRDe3\npqnxKt+RLDsWSiiAqNACGpR5AZW8IW/yB/hH+7a43Q3t4w4AfrT12uXozAlp\n+MI3ZxaT0dEvtl3pEvY4mQR7pdajF4jzJShYWz2Z2c9KMDu5peuA1DFn/g5+\n/6PLUxZozbtcR7AbDLsbVUZp7QcfaV4ux/isTGIND6VKg4TkslzlifSNEIZF\neBICbkwQJxrEDP6Aq/e75DJR5wSY/BQUk8BaB4Qfw7roprC+/v9qKmfwDyGG\n7Rac\r\n=Q54g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICOdH0Y9HlTq43zt8BOgmrWdyeKvknyR5T6doLktVmDhAiB2k53ejp7Keh55iWN7nZ5d1B+J5g0rXO4dxkqgxe4ihg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.51_1629851414563_0.14186957089653007"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.52":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.52","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.52.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.52","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-rl0CqM22mULzq5fmkzFAj0Uk0rXzrwyqku6OAR3ADwFRnsFmxhNogdC4BEndu9mgWtxSoTr6Sm+FecT8XUNcLw==","shasum":"cac5947d1f72ab77c0fc90aea5a831afacfc8cb7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.52.tgz","fileCount":456,"unpackedSize":2850474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJmLTCRA9TVsSAnZWagAA5x0P+wbp7ypjujgZ5WzACsty\nN1nPpHUKcvjmkH6ob0/s02D5poQvPKUP3YK1XzP61ivyydSTLo1SQJse0k/g\nz2uf5HCkTrqFwdRVYBvF1DGE5piN4HLpWCrUW0FVMgSd8RZVTcTjNxXG9dRg\njQ5EAKJG7IzUCwEtLS+WeEoye1Msk/aH3uW5ID4D4v/3Gy3F0MEUMPcLLOP1\n3L6oXCTptDCiXqjqNAKSds1NTJb7NiA1WCdgLyijN1RavIIZrlIEK194WX1B\nI9pgz3297YEztd/oo4gpVTzZrUzZR/E9TAyUEQ14QUCs0gqKEIFlcftlvIb5\nUcrsIFu6STcQiDm4tpgZ7AZoiNjosawht5+5aFCuIpF1Hg3SdJQxuHVN6iSI\nN6DAXSZhCo9VvF0cHApNSREmwIzOZ0f+u99mPW31uFABzwVaenY5u4mju8gV\nv1i0JYCXw3QAb0IdWXtGR3xoDk2Cbq25tLw1nqGT/0A1BJhgjq7o6vheXqGs\nRKtetf7y6GKoQtDnlyew5jqHu5RCF7GVmmEEIoiPQ+jXCKlQtHzJO0EKHw6Z\nvx+OcLzg8C/FQ4SI8zbC2YDmzA4LuBPyMtpULoD6tCZQGIRA2K6ZQojGbAo0\nlMNJhrB1fOdTNW/4CI4WqesOBMDeuUBwBZ8pMDihcXYg3T0kWrJOF7s7XzhU\n9bPG\r\n=gSBJ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/xIZJ0FidaUCWPpbD8jm4vY44WsxtP1sBxlG02ILEFAiEAm56bu2+6VFkcsovEI4LUGl5XsO8g2q6s0Z5dYMXJsyE="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.52_1629905619708_0.8859008320784003"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.53":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.33.0","jsii-diff":"^1.33.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.33.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.32","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.53","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.53.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.53","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-NI+qmW9Kh4E8YIew/GHT03zBHyEwuL4zudNEYhBZOJeFQ4ZKZGVeeZ/Fk8lOaqV+N2lIeN2ajABhYwOrxYIihg==","shasum":"747771d5e752e4aa420fc16f6ffe1cc1b62fc04e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.53.tgz","fileCount":456,"unpackedSize":2869528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJmyhCRA9TVsSAnZWagAAU+UP/0el/YCJruI7lw4VehZ5\nt05AuOYO8OZDLNDZOJhxUGsRQ6vyx/+rQFb0RY59CkXswVHXckzBTn4eFRip\nW41C4F35amlf44beepnIJQCGReMl2WKFW6mtmGMxLVrmiDxcER3TkpBDhPmf\nAW56lgWDsPbl8uDiPYxm+ySAP7RadeYzoBeqAK63rfzXehLxsXW70Sqs5+B2\nlBtyZS4cm8o8HUV+waieUqoRROUBwBhq4F7POZxWL3lag9NeLfwc+3dGa9N7\n/BdmfHtc5i2ha+AUpoSUqQDSLWEhUUxCC8IOkQ7XEu4o4GdrixmKHrvk4OYI\nHwgQU5dKH24YINF2R9fmOHyHHSiILu9BtKP54oUMPvzvBrHljL8F1tfp8Cfr\np0tjA8dZAiaTh7u/JI8PAXwHO8BCWVrNWbgJiImElZwQvjH5CGGztPbMZlFt\nqGFyaimFj6L9j/Pli+XTTjugH44WqksU2St2b25pAfIdOW9/eJqIsW5Bn8sN\n4JT1UoJ4lnfBw8CsSSXA683jkyzTRgNy8arrI22yMfuCPieDSKewNDq3e0vz\nOdX1XqHImmnIozPHJigjPwe7+yuBtpvUY+/gqsBA0yplJQt/EfhAeoy+tdSa\nQ2f0JVdu/yrn0Vw6Qy/XWY4Xsv0F0jz+vxfjjh4LUO2wo8BQpnXHPYBUZ9pV\nKDEk\r\n=UAsd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzLrRlcmBMUdn9bRXMc4AYEFV57TGwwO3PczLSMf+gBAiEArYfx5w4NqDQDEcom7ZtJAufdvyO9aW51kOzIDIKGiJU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.53_1629908129462_0.40830482461636497"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.54":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.33","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.54","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.54.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.54","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-FxOrFTqKpkN31LXuDdxV/rdd9eP9KnQ7BkiflhX9+wCDQdMa8NGQplA1BdkqL4BhH81O3l/M32dSc5znyqhqhA==","shasum":"71e17d33278aa1d98375e1657c82a478a23cc780","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.54.tgz","fileCount":456,"unpackedSize":2869528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJuASCRA9TVsSAnZWagAA3xMP/2wrsJ+J8kvWSutaLAq0\nEJOdxHc1rWv0tRRTU8a0lFTPMuBUlqRU8adIri87sdcwlLqbldmj/7IvjigO\nQgW30iVs7eBFpJqaseULAoKk2xbGyhuq+L90KTryTTCwlejHl89ZXFGowqzr\nGo3FnW1oL+nhS2HeTLWYxq/QmoPvs+uNxEeGQrl/9Pd4zZwfclw/jxC1Bv1z\n0qFaN8h01fxNjC9Isg6e22LMgjVyWgqWe2v2KPCJ+yEkrspyHnQVCNjLJEAc\n8czd+z/wD9o3lswOw56GbSMfadZisgOojBDy8ooKm+zE/WOCkWhz19ddrR6v\nZJABMcpQGW8RI9sMPiuVFwPruJIPZIE117VNSzsD4rlf46QDepOmjF2SJ+ce\n0/PyM9l5EIFb0WGw8ReHBXn5yKN8T7jCnwb+Xfn+9IJF++E35jTmVZmcUZbY\nRLHATgzF4Kx4HiGk90Nzl0YY4Vmd2DNdHy/m9VW6ncRKxdgjJ88Htgy779i+\nEMac4mtA5rtVyyaBbW0qfIZhxoSvAf5tCq2EsucSRk2KULBixsymljjvrM07\n9E5zzQcVBgL3DvawzPqVUGC/oSrHqPE0o3mCwXvnko01GwYWcC78x58+gFip\nslGykg7vz1GiLhbaQ4S3xt0IX43DPGV37dizKW5DDPnw5LiS7doaaLS6i44F\nEfID\r\n=RycB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDfRLEWVhcldXSw9OWBwfjD8IPmDV44TQCyCaiJ6/kkZAIhAOo8QcvIxXttKVE1Oi/hasgy0E1MoHv3VAT+wBW6KwxB"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.54_1629937682575_0.44846636256998007"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.55":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.33","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.3.5"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.55","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.55.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.55","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-IAz4T20afynXQzLod3iPw+90NepSYuaH+xmKL1JEB1DLAMcNH+Zm+yxfAo6MT2+B5H1XQGb11WvDMFlTOGXyVA==","shasum":"8d4a685fa30ab9ca33d65ae0bface49fdc5f1898","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.55.tgz","fileCount":464,"unpackedSize":2904703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhJ9HiCRA9TVsSAnZWagAAfO8P/j2MM8lt0ZFwUtRYAHcn\nmHbeWVfHbgAejw0EcotMvQp3zOUXKjAyRyr/TKdvjn7UCuywOFB+PQl534tR\nHR/IyN6VkpgQiVqWTk3aI5NAv1vRJPmtEBu9IrO3B+JSuvEYJ5Ggkir/EsLd\nRGb0NF+r9MNyAcZTO5bXMSaDlRcNj/CpqJGpcdADa8zfXAIhHjFjRj1cC5FZ\nyqF6CJRYfdyLjZGDtTsu2l5Lroj2J4e2XHvIFFkANw/cauPWjczLgj+5bYdC\n2eT8+AOVYGVNmyspMYny622UYTLPdAdF0x46JY0Ishi9M1eQekpsgaIPKBHf\n1J3qa9l3GzRQpUSMfryT3/AEz8BhnqVfaYI9IS8ehhAm6RVZ3uxh/AXfBaTL\nGWY6WWm+Ti1QJFYJl85OvMtbco1srtSisxQI9YOXasN3SH8UUKNe5NN9wlgp\ndQ3TPtIdq93SzuZSH/9c6Xxdxn1mZZk6LdNU6WeWlon2TVAKBi5l2cYAOUTy\nrTZtODbUPP5j7bJgF2vcCcZYh/XzwJEv040K+aTn7Lm091drcmlwkULo+Np4\nQa3s8iNsmQBlSZnEzIMdJ2Me1aCk+S8f2Uq/UGxzbjM969pQpXmDWsbfg3dQ\nypSqgHMi31Njn2j1lsu2guDBG5aufDaaTrOsqwc2eQxmcWAhv0xolwGtPBH6\nyPrH\r\n=4+7t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDJLl0wjsKKW2GQqOq+leSnHuEQAG1A3TyvIrY1pp1VTgIhAMq/+qVvDSkT+FZyIMHQWyiXbf9X8rnUAAw54aDebPmR"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.55_1629999586131_0.9539856126092014"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.56":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.0.6","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.35","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.56","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.56.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.56","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-hohlXJzr5qF8RACG9+agObDU0psvMdfNoi5nbB+vZsETEys8ISEdMZ3fBbSny3ggtrSgKd6moDl30Omo/AKr6g==","shasum":"3935d9c4abeaf640dd0ce812c53475e053890e57","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.56.tgz","fileCount":464,"unpackedSize":2904703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKDKcCRA9TVsSAnZWagAAVWAP/i9gu2jiZ1d45Og8sa06\nqRHKBoXmXPJbQuLNoQrsp1GOWnzrw/iSpZM5roqM3XakdNmzy+Ww63cMqJ9p\nJO9w9xFJ7gTcorobz3Wbr14q8rSd+UwESycgTV2Eusela71Ba0hKS4b82x/q\n5r7Lc1R7SJMRDr4LOtSKSwGCkqFH35NFbwI7q/57RNbYFMo/lx+zpLgg/kwn\n6GnqtcwbTFoKQ7zG7BRyg3wgTjxxZS68oyI8VcQniBVL5zEKrBAFwdj2FG1f\nO21CHtu8NmXBzbYxncnDDIvbBwYl9lEDgmRBI6DnvkDmStxkM1zvBSls6/Sb\nU5zaMOe4u/UDFVmiCKlKTxJoRXxnq9vidV+k1JXnR0VVVx5wV7Jdtc2ntWma\nGWEQ8Hp3dBTkO4ie3XNMxVtV/ZVIS76zB7Ib9/Ruoikv/Le+qAFAz7N9Bd67\nLqnrf6CCeqp5WP8USG/YT/pCKeWrOVonhW2j6xDCq2DmS1He1qNrR9LNeDxw\nx2WraSt92cT5GXcfCZ4WVfyUmaywrdSkNcKiaWQk1JKQ3ppWDDGcDJjkxNPO\nPuB0f9ggx2wMxfktYA2kq0UGCQDO52XphbIAAua6vf8V31Gy/m9H4NjZPdJI\nCHfkkpXJ7F28x9qsEA8tuNlAoTnuV1YfXAMokzq2o00iQueMRqmgXUtNa2bP\nO7Eg\r\n=eVau\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIt3TOsOPUuXOxagpHRX6FdNh0xoJAz1jDbZ+nTAak0AIhAPnsOhJOHux17BvUB9MtQq7oTDUpLQrIbrR69cdAOdt+"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.56_1630024348024_0.11553178683204934"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.57":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.35","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.57","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.57.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.57","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-/Vn52ZXT/Eigw772OyJCTVqigtdwal+pJ73JCPnTKYgoURQSqajv/Hp4N6n54ukB2FNHB5ONiooxtslOKBVH6w==","shasum":"f7bfca5abdd521821ce04e1686f0354305f3fac4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.57.tgz","fileCount":464,"unpackedSize":2904703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKYNfCRA9TVsSAnZWagAAapIP/j/ZoMbd3u+OqLz7+KvX\no+yEWfDNjnqYPDwlZc8NBPL5alaPAAaPbna0WQ19+DHM0IyxcDhLVeNjNuee\nTMOgxazwsECiwL3HaWVTe7C4ZRQUmu096sRt6JDMKpIOVm2EhFX8JxV/qYvC\nGqG+S5hPFBgHbMG95rUPAPgAg5/nOcO37Z0Fsy3QAJEuhD+oVcgV4v5nlzPk\n/44UaoT93i5tV8O30gt3KNUSnXUqNpZnhaLmqTW2qckuQPtxir7GaUIJHxsW\nsWGwNygyHxvf7+FkV6mU1hryuQuXOF3HwdJADQ3SwmTl6TWRdiaJG64gwy03\n6G3jj2J6iyYI0zyAnhY35cL2/u8QbGPx1Nn3SIW11hID58obtbvZfqbuuBU/\nDQbD/22mZMS1iGWeKL7GduR6a4fPoKN7lztNxkweNvIRSLKz4R5jY9b26Hro\nA21UoqTZb8sUnpKAP+jiAQkbm4mIr/oxfEOFi6t/+PBjSYqQDqrSE2k1Yj7r\nAfiPipHboQDbJjOOXEN5/q/HoE+yS/JeSrhDO5hxPdcRXkeYgmbgRLh30uAa\n+6OgHpaiuqHcnAGNCKiPSUhZ52/tXJGDULQY6lh/3qgfT727n52ChKc5b6zc\nO6/NOYjfRvkWhGi5kVEVSSBjLK21EghSAiTXFZlRHEH/BjamAohGMT9QAJBv\nQark\r\n=5bTG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCXuS2gYV6F3vKg9gxHdw587lkJQbLiHhRxnx9XRKcbkwIgTTn1mDoY/99XYfeqCeRzobm7yjPwNNtwRpwIvz/vk+0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.57_1630110559093_0.7118716612391707"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.58":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.35","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.58","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.58.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.58","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-XrAW83pGfvAPudLl6/le7/Dcxa/sRys50bE5Epb4dG+QcXH8gRhyflFU4/L11O3HLtbWc9jRwSTVSc32j/bFRQ==","shasum":"92c8aade5a0419a0d15358480bebd90b549e791b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.58.tgz","fileCount":464,"unpackedSize":2904703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhKtUhCRA9TVsSAnZWagAA3kQP/i/Ugu6BGYX/kmGObaVw\n8OFQSrgq4e5zwpGykUmliZG8CIBlpkotfMfgHF0EyronF2h+XyVT2xuaLOVv\n7lzVxtnc92Rkn0mCK5+W1oH87tCID+W1x6a2enbII1VLAmExHKVV19wlrggS\nFmKhr9Z4z/LBonUGw6lGajwD/r7QZDoiM56CT6shY91VXtWXR0n4uQhiGcLH\nSCbHHWKvB9kmmuzwYhAHkZFnZAZvFfBaCjlWNCKW1mwu9H6JQ11YczC6ikro\nZ19XoFGWqt7yQhEdH7yQuEzo+omueyF8p9oucsNzCHO22OydUhUTwGzz8lJf\n517/+fhZq0igQC8vVY4yU0T64aA0yf1ps0Y5qBV2Iq/rqgcTsEBg+hb8W+k2\n3z6/rYAR2WibZmUSV/LN1xVd0O9VZFn24Cz4zXDeIIVXEjb8JPHQYods0INJ\nXSkW4IeR798BBTl6PwmByLlUsQMcHJ5rUc8sMSGaM3z01Rs6JejUtW4vSC4r\nZ4v8lmfCgS0uYJIJY+T2r7rLt0z+dBnrSdcUrwaG2HcIQqSiX5rBIfEs4NFr\nE+JoPjkpWYFnA2Tu0rX29i3G59enB7ZSNSxnSUCrXVPVjxyjIuec3fOc3t95\nRSKaXMznF5wRhU61BonxBGoMsVSC/RS7KtMq3ACgXe5ImtSWeowuVafdJz4o\nubQ0\r\n=EPn2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoC5GFOdH3OyLeS75nZM4OnIG7eCl2E4Pw2qKL3gNHXQIgaEDfGQ6qeHLtirpS3qMtWrdtRStfJwfq6fY2NTScWuI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.58_1630197025107_0.04050929159914163"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.59":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.36","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.59","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.59.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.59","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-K4P2MuPxggLawdnb6oOH4mJtD3LCBMolnPa9/268ixRVjAl/FCMIMr4jxdBebcK696P/LVCUFG3/9Tasjy91xQ==","shasum":"87d68c1ed186430dc25b6d6cefc94d1fe3607885","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.59.tgz","fileCount":464,"unpackedSize":2904703,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLCc1CRA9TVsSAnZWagAAd3wP/i0HODIWV6Wa+/Ay4hd6\nTxGJOw6AUIqu+iG5fZCAek3VjZwQ2EefgnlMFE0Gbq5oCMCNPjmQ5zWpAbLc\npj8TemVICjWYU2CslqpS0i+zi1qxLr6YNKYVk3/5qyUvrOanQObKdcAd5lOq\nvYZtkE5hf8abF88nvAQ4ANC/ZVXWA/Xsq9buXm9yoVud0ETnbvILjmZ8qEqI\ndw3xe/5dMfOI6e6Q6EQKXZsrmoFraoCunYdzbUNoNcnbpUwmhl2vJoUco4lK\ndd6DCP7F0hPG6A5oPjH+elXTnDf+kuASykm3S7N/wwCH9D2QrizULZJHyRia\nvK+gShESOg0019KV2SBVCUJlJX4Ny1BQ6VfoonQzsMDlIqE4oKaUWRLVwsfy\nexk1Ryzx08GD+GzBb+sQwrnLON5RDAL8J0Hnfu1B1dz2KDmOtX6CCjhpgPed\nJ/H+tAHK2xZ2vkpxdUvhQxpgS8KAW71I1yZEQxovtUl7VmDYtjCiyqVWk24X\n/doeEwxhel3vFltcEFbGYmRqc5aDkq9+jvMm8+5A0p89r2JGh8nzGXig8hAp\nCDYDh9yeqpiScPW5VtGLHRspyA/FlKVwHcbNmYv7q30CmUjOxRcMZZq4NSUm\nZEx/hnBXDUkUT3GPGwjRRNj3zOeK3r0LxRdReEFwHqsTKsG6AzJputI1tMEj\nuAUH\r\n=pPbF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB9xvL+/NkK9NwOUezIHyU2GFPiKwCZ4oVaG7H/B8MBoAiAc0e0fycbrHX3WbXfXutlxgpomqyrm5rgGkVeZ4dAdZg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.59_1630283573450_0.8815681732991107"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.60":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.29.3","@typescript-eslint/parser":"^4.29.3","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.36","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.60","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.60.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.60","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Kq9tCmoRHPhb0banZbXnvcd6xJMO+XANg1kObyQMIYSTahVQrFhDY6Fa+Tv/zM1ZtEfUPqkmR7CIlZqLhAx5Xw==","shasum":"1f8a35e6ffa2368e6f077ec4cbe0b87c4708b0e7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.60.tgz","fileCount":464,"unpackedSize":2905575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLKYpCRA9TVsSAnZWagAAY2gQAIs82pGmKBAAKK5H/HwW\nFuuxHWfsbR2D1q8mbf60L+sTC/VbN2dcrI0zZ33+ijR441CuuQFjzPOQBq7L\nCu9Wfppg89lE3iv1qQAyxxjgjGGDA5pYSS/EK7wHxAWUlu4guQBMb24FGBV5\nvpJFYB79P1FnVGSlrVm9PCBsNQNKqz4qUsqtjn5aCiNofwRbONskC/wPcioB\n6OFvF1WtDorkCPPhhL34y2VPnWibVo0oM+1gAoaD7ZdL1yB2ui/1ibjBtNsv\newKwIB3S9ijx4oGJ1WiGO91q4PWW3Pj8M9EFnaDaZO0Yo7ZKvdnz7y7/4oxP\na8aFVkSBFJCMw7sFb4ki5ZVk5hKMBgD2di5VsIYlcQt/Lkl7QZyMuDb9KCK8\nBPyVME5oScXxnUi+bgW48YeLuwC//w/IAymrzlET1px1fieDNRbB64MumKDj\nQTncGg6gjZvKurykHeVALOWxWARWoIu9etH7Yp8QG97VwAvPYwUtYktgss9Q\nctMNJroVbQtttHnfU+YaQ93kJSsqpmNTcbg4Pgvucx/DmkESN6uJYePvINGL\nM5DQiEZmGOFamO801qJSLXZ5VMatl6fyzzcp1+H29wbH9KY2HDLxSVtNd2DJ\niTU7/kWFbrbK0mrHaDvIt2PiJAqrBXE/OYrGKwx4uejEukviMrAiP+klq4w4\nA23Z\r\n=mMY4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDAect6wirdSKtWh3kVy8kOzCW1QfZ1G4/D/Nwl1lJTxAiAbzhCKkXVyvOnFpFzdlO/IQOVR7gPlcEy+pyOTUZg+9w=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.60_1630316072996_0.5946746225059707"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.61":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.37","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.61","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.61.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.61","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-nr+MAkC9zMZtEsxgggY79bvCc0EmY+wicfGKo3rGXAPdaD5Y8huONv26QyGP2vhHbskDCpm7ZZn0bnN4OyiWyg==","shasum":"27e9a53eb34e65b5512f799bfce85390a7466259","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.61.tgz","fileCount":464,"unpackedSize":2905575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLXhYCRA9TVsSAnZWagAA6x8P/03YzbBaFqf97VExO4H8\nFnL4w2u/G0k+QMXsg7RVQkfovLUX/MigDY3OF8m9X/VcE63NXqaZn0k9b7yL\n3Lf8e5fqY4QlJRIG8aTjtHveqtJLSBCUScBC4wP8uWEvFgYE2meTboF4pmIx\nDFmE2MfUCKvZ530VxLNE3XUpOS7rka9J1opxeQGPGojznQbrxbfILDrDHRxI\nb6JgBOsCP2FFpSihrf8nO/7NN7jVrCDF9EU3Rqxo9022GiR1kriCqoGK260+\n6UT3HY5AQuS4OgtrRN17AdfT9SisZg3091Pb2JaRggq6IqXHAG360QOPHBc6\nOool3fQfLYY/3kr0fGLN3BCF/rOut7aAZST5Se12wBERIhdwnBZhMsA0LWPe\nTfLDWhbxti2oZdb+Gffy9Z1RXcKEIDRmVQN/27TJLvhw75/p0V5EBixsS2Kw\n0UO9OBSvnFBAHKqkByNPzerTDu/uTHesP2YyEK6ZvWItOlPOjUH6lmENFjRJ\nb1n/JcACVJqOUy4iBliLmmhtJCw/lIqN7upNIO1YUbK5QmZSaFbA0Ph6FPPu\nExZrOGgy+huVks6fX+fjmAC2r/cYe74kzCHUP1dAR8DtkxMqezKtI7MpU2/r\nZ8FNdZVnfUz2MTs8vql9N/wq9GTo/e86Sf7K9p1o8Kz4hEh1lp9fJoxXMHbA\nekTY\r\n=jciS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDmiubjgAF0nG+kzUAYPNFGWE5drCAIO1NsD8hDrmYF+AIgUkKCPS7lIZFU7N2l9rmk9GGmWl/wNW9EAT2rUVAOmmM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.61_1630369880278_0.8661715974373627"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.62":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.40","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.62","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.62.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.62","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-TFv3gXRr3QOen/hUzrrwGco1WkPRJ1HqZFvRs/12AQhc1FebhqD0jxWZ1n+Jvbsb7adF0V872f1VFnUXusQRsA==","shasum":"1a4e800eb4aef03c2ddb07871b6bd094593b7ce0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.62.tgz","fileCount":464,"unpackedSize":2905575,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhLsnmCRA9TVsSAnZWagAAfA0QAKHnT/M2+wAIui0uSwR3\n+aObgC6droU4EOizYxIsW3PxQ+8QCbTtyzksLy2BlLVHurvi6zAspgcZvPZP\nsspjsDr32J0YJb9jlnBTap2GfRb9DWOGmNm46NMA4W3BtY8hH8zbZ5smoWgt\nitoHc2Q/HbvQFBKvgFStqJs1IrGJ0OVCLszXqCPGC3NE83XA2Umr48FF8vCC\ndBDsToLyzy0hE1sjhXBlPFWkTnhkg30OVmEGFC0iVA9H8EskA0YamJMCxGoD\n+9asoKYQPvqUz5nqCllTmV0ltrtuZN+Rug4GByLjV22I0GuVaTEqP5zmRMWA\nGh5u5ak0yofuSJEKyB54GhF3sCrgqrTX7S5SqkwQlzgV11XPC8WkILW7Jamb\n59ElQ3+JLtczh8LRuYvdKTQP+sYioyvsjw/mLMQ3eUITMnksIMwOJByR0mu7\nOlEx0Az9WwHR7J0Zbua4qMeDLu+J4FoV7sd2mdR/ntIoL/X2mJmdnYrIj/N2\ny0hE+16n/UKaiWU3gNgXak3B8naid4+aAnY3nEEe5N63ecSLuJXU7xw4fnCz\n8RgU0kZsbG8Kqvc0ANKE+m5LO0CT2O000p0MvH8cZczKOKK/q8gyq3M+dpfp\nhcdJJDDgfFcCcEaBhArym7o+/os2bdcQd+S16wfcdLEvWSGlx19wzsEJb5rG\nqrsR\r\n=cVIW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC94w0po6KUD1b4d8RmNx2Kojm8HFF9wZkyiW/aIfljGAiAWX8SzhYj2LucS6zEm1B2E6E0MuL+LLyeNHI6WeEJktQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.62_1630456294063_0.37404099869639307"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.63":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.40","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.63","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.63.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.63","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-1AvHHqIdKB54Ddjc4/9xdIFUCTAhtnuauUIM4TROBXZEBX28P+KE2CsB8B9M9QC9/TO7BvzZ4DSOsduMdnASVg==","shasum":"8e4b7f9084641e6ea006ce3541d2ac7ee57bf5c0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.63.tgz","fileCount":464,"unpackedSize":2913707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMBrcCRA9TVsSAnZWagAAMSsP/i4zhkH83Nmazcll37dR\nZRxtYI38s+C97UzyrPrIXQsYJDUL8WwDULVLgRfOYa2d3LZjwRx2VehKbK3D\na6URqiRdyUpqtQee5LOS3Tbrt7GZjIbpfl2lPD/4cALYCiJFTudJxF7HTPVq\n3xDv3drFd4SrYo82SxgyQ/ITW4K4jm6KAD7fEQm/24UhwhIOs476KFiv/lx0\nkASEm+QzQC7Qfu7gorwJL8aezkoLcpxENVESmYQjS4KoqaxKNEgsjU4TOYbZ\nFllP5w9IfQN8Hdc0LNA68DvtHTIy+sKbFcxroh8eJNyfv9TrMWV6IEXeP3hV\nPsUVVB1j+iLGPzOFXG2EIHQlbrCE7YPmZ0sRPy7MA2beo1C3umnowikxNfWa\n81pl0T5rhcjGcrQUj6lnMJauEDWHSfesuBExxC8u1WLIznd+AUd+fFPAE6uR\n/WIVhxUzPmDS7yaQxvMCV26+8+FqywH5Sn8uTy2xKSchErJziGmb2yucc0Of\nEo+esgvOPs4OR9TVEoWO4Ubrv3Xa+4KN5TnQyKyTPUjaNuuLcqgg5r/hZpD7\nur9CdX0ADY/hZ8bAkRGPchyXiDLSk82JPSfF7Ll/U/F8kQXjT6ZAweuQTdo+\n6tnCkjsYTQDv3V2KWAwUF7MuntA5Os1S6QeoFn1WJNCnopz1XjZjFbQCIs1k\nJb97\r\n=6oqR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC4LA9BHd46FuB+J1yVsizJfO6+xZlh77kRiSpevaKAkQIhALYcG8AW99dp5nxx93HWQygYUItUDMvRKxie2wQye41t"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.63_1630542556156_0.664061286936271"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.64":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs..","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.41","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.64","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.64.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.64","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-9AOH4SAWi0OeQVycU77jCoGwnqTsL/1u6SiJqUoIFxzLVi0H+ecrWSnkk8v4MBn2ohE/WksIgcvcrhUdQVDeuQ==","shasum":"2b8c6ca8a2d485fd516898fd77b56d707924cdd2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.64.tgz","fileCount":464,"unpackedSize":2913707,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhMWwhCRA9TVsSAnZWagAAnLAP/iWmfieM+zcIvdNEVgdg\nt5EWh+B+4jM855TH7mwT73lWuwfeFbdRT5oVxh89LHr+ken7ZIkeUAa3sNfm\nHefGxv+/F3rwJQVqWF54tauSwxdPOYfaRXPUJ2ZakBWYXp/XRvC3kWrlvROf\nVUiBiw/QfQ3CiTpVgLgk/2NMtlTl/H18z8UDp1mWlecPTk73g2rmlWJwlcUb\nSzfvcxpuABiOC8ac+h+bshRSur4YXjB+mkokfYJIbdkVPIEt67nCbh0M4DyU\nD808mDLL5BGZi88tAQ/n0UWpu0EnzgCPB9n9ejyYUNoU2h9vqleE1sHBzQLE\n3jZ8xuGLm1ofp3xxW/a+7Y+SDL4kW3uCJ6rldQJAmFvx0Ng4Q2+bQZQDgl29\nugCVi5S9Nee/O70XPxc9wx0owtwVSGIYz2GGJc2a/qVejX5Q0fboApAtDLX0\nfUVJ74LEOSNkcEbR49At3wn8ryRyjWRavxfUju7F53b9uHWFlamzu9gb3+ft\nce5VzvZ2rbSNFlW44wyjQpO1gSmV58nfigK251K8xeAL199fpGgzaImIcgsI\nXQDP5wFtwgbbKGCFLfqfnXpHG0HSn332oUqxz6pZrPMAhCzHqK4DEhM05vJQ\naJp2hy3reaZ1Hnyi59sQ6N1DwsnbOrGrcoMmHDk/rDKmKobRA+Wu6++NcLyt\n3BpT\r\n=miYR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCm1wKfM1wTcHEHuKdDeJD2XLoVodGIkfIoRNCShJ2phQIhAOvPVZPcv+deat9uLsN/ZDwbX7G9t2Oshh9Oy9cW5kwF"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.64_1630628897429_0.12014001115850248"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.65":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.41","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.65","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.65.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.65","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Ho2voBilN50eosAemAUwx8KtNFxwCFRfhjZYOdrWtwA9Y23/JAtdo2brVDjxAvPl5pHSRq6ApltIm4CogndiHA==","shasum":"2efdc48a1e7ae696752e83d139f073580d450c96","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.65.tgz","fileCount":464,"unpackedSize":2913758,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN2eSCRA9TVsSAnZWagAAt+cP/3+TcyaxiXKOatI7wWP1\nQE4aIyHd5HU4yIxPrliJeLa+KAFOEn4PnT0JlwpAWZXmgQNW3kuPSz+Pve94\nXedwLQCriw6Ga8d+NUhN1zJvWwBepy9HhgwSgyRB+D+3C/7Xv+gvHTegt5GX\nDZVuHTcUouzL71I8b+j9erPg/3ZvV3PAujr6hD+vScEgczQ3y1IMABsWSdDz\nAUM7qU0ETAYj8JNIWFXbYDB9eNHo1m9KeRvG/VyLdeqLzPq1C/Tfk1uxqgBm\nWRxKC9ZOSvQEORO9Trl+f/bPLZsRz1+yNpMX3QodbOELbCzQjM45u6fBQMFu\nR4ORIEZ6EmMc4S9IeBxnZ0qUaXtG46ys05qTwIhEPyJ9sn7r7x5ZCSQr/Qra\nyK14kuvlEgfEpe3oo2yQJtD9CILoouy1ZIckH2L9Q0X3g0KiFv78L/BRbZ5s\nt4Y8DAkRirqiv3K1qK0GFsgOve5QawjBuiVPzYPuBW9bUVe7/SdDy7koL0Fn\naew9rgk34sIW67CJeaAQqo0vpDtMOZfK3d6XAz8qMDpf+lB5sqIdL/7Tg15c\nEnowv9sCtHa7uiyCncSsTpIhPPXXWJjI2S8jUrmaNNtEkIKofjwHx/aTd905\nFwL7Pa7ADWDLXal5tjk+V+vs0LLYGd8wYkYaM9f+V4hmzZ+SdRXAM0xMUjlD\nd+q6\r\n=8SMc\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAOTffiADabryJFx7k5gKqIm9L3bZ8oMoLT37jy0P80MAiEA+Bz9qySIw0HTAD4FtbyWdDaQUSFbRvjX1cijEapUToU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.65_1631020946251_0.13625580640312562"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.66":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.30.0","@typescript-eslint/parser":"^4.30.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.41","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.66","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.66.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.66","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-lVPU31Qi5/yzf4ZMBrNIvh68imXsOFXjtwbDqB36EhzwLtvH967LEcLaV2jiBWL+P6Iqb34sXZv/ErKnh8EY7Q==","shasum":"88e4e85917ecd706d342668f36d888c83d86f7a0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.66.tgz","fileCount":476,"unpackedSize":2957368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhN/EWCRA9TVsSAnZWagAAIbgQAIYaDx/tCzFd2nXDj+cR\n8OgD9ObBCHoU0JhSEs0Ja7zCFpOljVH36kkGfrIqXydRohl7v9pUby3EMjt/\n19TCaU1LdXgfSRTOiuloHB33HlrNfRAzryWHjDMiMe1uXA/Xe3BTdXzQ9h+n\ns+VU4V1rFrxHgu8ARVPYBt1h6FGd29a1WfAq7XHXyA+cjfhiMWRzbQ0gp63H\n/XJZd4jlHbySQ52n9diwTPf5sjFeiycR6UEnKqeVIb6nxCKCuc0rZ1+MjMeV\nJUzA55+68vrVxeU63vuPsfaX+QFTJsg3Crn4JxrjjYFoyAIwvxdPKb8Ad4/W\nXGHaqkXeM1CNwa7estzRazowDe7WLhZhA6xOix6cABCybcQF5J3tmrRINK7X\n2ujJ+vOL9Z2pM38K3n3k3r71r1hQDev3tFvv91N4hOhjnrg2qZ4RcVk7n1bZ\nPEAtnOGAH1MhxL0KB4O7ZhWcctRW/hZ9OnrRIIcFLSYx3HGTZHOVhHdbjFBD\nkN5ICXS1D/3MCsQWAmmuJ9Zyve3oRIxbEr1kCt9QCBptLpfd5QC1dOY2KPQc\nzFDBBzHjXXpWR+tIGYJ4M7wOOCGyio7R/J7+MUSKmI51UIHfRzzsztxsQw3f\nNy9FG3QZDH/U2CxM/qW8gO4oc6mqeviv7I2sbt/dTcywb4ldGj4xDfj1x0ic\nbLdM\r\n=6cAI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDvJEV0WMNIV1QxYlUy7+k+oQervrI0XRar0qyfn+m+HQIgIkSq2+WLmHwloYXv6lxqtLs/OZIOUmnrPTrkKESZujw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.66_1631056150284_0.7649334786509592"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.67":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.50","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.67","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.67.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.67","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-BXCqPUmb76t6/SYG9uiFluMcR0ZWpDCjNeZYrB0C55i8LSiManyQGgb7I5XG4/pHuD4RGCrT68pjByy/OJY9DQ==","shasum":"43fee0f9d36e807732ec3248fcf54ed16516ca67","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.67.tgz","fileCount":476,"unpackedSize":2957368,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOAPsCRA9TVsSAnZWagAAp2AQAIBtSv8ClloIJQATewBf\nV9g3MRBT+IqxJkY7tP2NUBZLvZ43YZZDIhZQ0mkEUfuO7Y0AmJOD6MwPPZOg\nM6lyi8S2GjYQEGSd1E706Il5FJ356uyd/iqv0W8Vzwsxt0XOef+8Rcgan2/E\niz+N/A74VN3DiH5E5UEK9z1sstZM5vDVxEZvhLOP9gxt6mvLm/HMATXYjAFA\nMyTMc2TgbWc5jSBGcRfJPPH27DG8SWK3PqG+25Q3IjeGNFP94wsQInbKGVzh\ndbBfPr6xudGmUryMeT9xtOObv2aY/UEzVDJy1khvzneu8UpOg4f0dVWfaeuA\ndv3a/+SdY1BW1MUMFciDUjmZQVP472s6V5n2kGnx2lARhRol9f85xlUHiAeW\nLjMdTP34wDr2WlQhDKBUuQM1r+krUrq5xnkDtGKHm68sByFOgsEbKTcPwcu8\nd2C7/eZdOdUHNkLTD+/REDloYTi/nsPLLz3+vlcR4CNPCJPkNDXjKd679DSe\namBURlYkFWJz/tCIxhufCSrPs5rU8ccd2J+IEdoFnYky4ldnekvWvbmSY/fu\nHY3krLCCXCxeSeZI++PnTAwdeUWj4wzzGwQbBJ4bPwhvndDAwn3dE4u/10bf\nUXLxODWzRTHVzWDjzPNICVvAYSC8T8I/XcEIG5zAwn8RscB4aNOFgX3eSeGq\nkl/X\r\n=npMr\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICeDeLvPDamSn503jjYTHABrslJa0HuHSWG5SKkYUo+4AiBNwzjTZPkh1/OkU5+HjivB6MA+0sC+/cIllxHhBGoEIQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.67_1631060972612_0.6903132329408272"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.68":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.50","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.68","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.68.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.68","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-SdziPAnGMkDMgzUauWsX6SqLCHlJ/WHut7in7q9T4uIsumMBaFIc68WXw6w+rH8aqW20WiGA3qZ296zsUyVSCw==","shasum":"de0dbc9274dd8b88299ddd1ff248d82433a692fb","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.68.tgz","fileCount":476,"unpackedSize":2961731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOVXmCRA9TVsSAnZWagAAgAEQAIZYNKfz8aM8hRNa4icE\n7SWQXKlRkwNP3B6WY6M+qedLkiv7eJI4QRpdbP1XkswbPYEU9gA7hbT7UsSL\nhz7s436JCaC2EUl4jCmEu/s1ljwQZpLxKAwdDGErYZ9r0JvdxyeSKe9IYzyM\n8fHNYTXWto3hPPm/sxFYHM5GavLjBeYrSp7bVPXmIKc5nuH95tTcWT3otcr2\nPXfTS2odTgc80DDhBvRChvbOf4UGCJ9BBV5dtfOkhwdiCFOweZ4s/bRXaA78\nvqv0xdpPWxb9CEEEezIUVnPl8FkCsHXqxSpXD2qJu1JMTO/oD4V2vJsnkTNd\nBDhfR3o+VNLT+viBETtntV0RARle2xaOpQM+WWSuXfGFTG8T9Y0Mx6CJUcRe\nmxhTEIk0pB/oBwhVdFg6FMLkzaAd+CyBWZbaNUhRivT3cPjJw9sSBtQFHuYD\nWlyxhncLkgVKmhLpa31US2s0cxsdlxAHBgMM8g0qEZsbMKx2gMaiRmhAwSSl\nzxBE8DNdvkHI2MG3xQSp/wkjou4G8ro2d/QR0aCapYQtOvyeMChpZSEYcXE/\nUFi8Sm/zr/yr1TufbGYZkNgi1QQiRmBRMeOR/M7lVe19DrSppwIeESFIGDZc\nh52wkQbY7nudw17aTuRMevC6ZVJeRw+D07f1Lx4dByMcN/Mik8zT76ZG5Msy\nq6S3\r\n=09R0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZurtaSKJSZke/ZpLaFMN2iI9P72U8BoS70eP1yfVosAiAfQfEV3KNyPtVRGi7qegphJKjkttWunYIL3BZ7Q2C7pQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.68_1631147493908_0.5874251053706765"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.69":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.50","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.69","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.69.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.69","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-NblJQPmmowA4n9dzA9tfT9lc2rxTHPSQnsBdk5oVwwYHXN5uCq3ze7ovaR19xVtJjFjuO1dw6UDVHvv6+ZOcjQ==","shasum":"b7d848bce06065f3508914681ef8eac9bc6d9e9d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.69.tgz","fileCount":476,"unpackedSize":2961736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhOmd0CRA9TVsSAnZWagAAoeEP/RwpBWlSvRKkfxm+Me08\naU4/UNoO6+8a6SG+owEe/t+XQDOmW1bIa8P2PGKpz0/zlKD3PE5J+zblQMfv\n0XexA6ek9JwPIl+d//FzqjHYDmqYzul0AyGo3whtsaCbq8RLre8jBX82gWtx\n+wTl25SvmcJlvCfEwhrpmhKL3wSzsa7E8oQgaRLzb9IeGqw3XHSUYhEbAv7+\nHdBxMA5OOZnN6glOgE9FzkdlHxDEpu4RKyX2sBJvGJJifF6qSQr+veCTcQXX\nQpjvc4u7CuXcuJn5RNNss2YQUM/wKTevhQpjDtI/LhXkFAIR0fcF6Smu21I6\nb8fuMrMO3q6PxSctcUWzvReq/hMCrrSW9HxDwF7hXexVpx9SMoseoYu0OVsI\nTDs/YINzMN8oPUCGOas9ZokSgtNM/Q6TUDl3Rtcw1q1i5DFYntJuTkLSNjRU\niyvvZ7Xrq5nYVchfjS46BApN2bs52J7bFkSz/l1P06Im59nZpGfcOPG4AlTi\nf3ZIfMyy5hwBW9e5SWE0wS7dOAbJUKCLCVKvgqzldephgcfh1eBIM6zs8ugv\np5pkB8frhY97GUc98wz9jSB48mHPXpiMkhCHMmbqCDKRHEdzAkbw1eQH+njL\nrgmYD/qU7OswjnEywAxq0Jf1ys1znQAnQzGv9L4gGU8Xkyo83naYURead2Eb\nZQd+\r\n=WC6y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxVQRFPPZHiXGcfUK0u1n7SxIJoqZkJLG3VNPZgdCpAQIgaGnQljTktNY27auenDREH8uDpd6BmX/6IN5LTYDfXhQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.69_1631217524419_0.5739582065225588"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.70":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.51","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.70","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.70.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.70","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-8H2mXzj5bC3L8mjNNL7zUG8FMorAref2EQghgSTxr/zvzmxlNwZjdrSQ2ItIAAs+e8Y5kRI0wq8hJnBUE3J4cQ==","shasum":"805fc354fb1806a9d652c16bf08f374138c664c7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.70.tgz","fileCount":476,"unpackedSize":2961736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhO2ehCRA9TVsSAnZWagAA6TsP/1w1DRDgcKr25AH0O/n4\nKVAXni5xH75aNQF03JsgtwzBw5oAFwfY30kAfdvom8JL23xVzNjg1yu3D2/k\ngFNFjJvO+XZzHKqdYE5oArjlmo+p585DuzwFx/S8OWOpNU0vAMRsBgZvE/T0\nYqjIYyanPc90viAnA63ch5xWNipmXtwHvtA2gxxsGph9jeH2jmPdCohypS9k\nJQuHPLUfFV4r+I2h+NCmIjPSGDuzN4BZtIV7B6qWAT84yOUHjxycIWieX9Lh\nVPzApqbvh48JMrIYVndOjiayRcj2FivngyLVDNqfL00S7cnG64EvOVNiXt6l\ngDlnclf7JfuAHWS5XiSOba/bwbrlN0NMzjhA+ByssWGIOIGXBKs9sayQtRCF\n3yluMAaqW+gOzQAQChFfyVEdIJcB3VTrbJVL1cdfZya9Z6TuukbGDScbAVP5\n7qVyLiUn8KJNA6ma+rSocp4Lgm3RjEcJ8KOd7xOUS4js8+XtzG1VPvPnKGZD\nintRAprMd6V2v0G13LVA+OcwT264EcoEvNQmIvl5sgtdILz4HF1U4e/1v1AM\nWndw0g59NLZGwuibJEUPZ0ztFByfi2twHCdA8a8J5yxXvZ5rlAThg5TxW4rz\njTWJ2lb3wGEp68zeHjqh0OTMp1rsy4gTZu8IgTV4vIfHjZJC4bu0ZZe7enCM\nQCqt\r\n=Spiv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAUyp7M+c4+aBSb62Bs1fEs1JFBF2EbXr4g6du/U1qaqAiByelajdXcsM3y/Eqz/gcUcK0OQaX+fBkZDHNKgLAPo1Q=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.70_1631283105507_0.07481260846180438"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.71":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.51","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.71","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.71.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.71","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-+68cTmnvrLro/uZ6JkEpQTFtESjhmrtJCsRBFd06k2h/aQXWhq5Cg+JWOzFHNyKXgaqIn8Og9YTgNmrX+dc3Dg==","shasum":"92110ce4e69c78344d459c29f9f8fcc38f24e619","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.71.tgz","fileCount":476,"unpackedSize":2961736,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhO/h0CRA9TVsSAnZWagAAMGUP/RREZPyaMqafEAS1uMhO\n6DzjYMW2TVXKSvWMqsJV1YmHanYHrCgYpcvWKKz1n/SVxNySN+p/+dfe6Fhf\n+tNnbBsCPrKpgGNGGzmFqHY+mUTKL6to0kfYjghdRtKjPwoSKisTBlGLK+zZ\nC+b7BWpNAcZCxy2Lxamn7fFRP1klVUukVJBN9phoi/QrlMLCzm5kVfDp1U09\nUhRHiqHsmz7Gln46dKlHn0rc3TudHb4jONDKvGsDRuHQzIWCZ9W+htSIpNmy\novqHRfrfb7VmDRF/SVwOAm2fnNgwKrkg5OlictoxtaeiAU8BMxkbXMhsEq7p\ncxZ8N8j8PFZnnc3eaSh7/IslRg2sSUQXRIj97qQd5PUGXitBDkpd7te5D3Kp\nDFa516JWAeQUY4F9lcmqHb4dVXvmYrQFb+chW5a84NCwT9nFZlKaR8zSSqgk\nQg32wlIZtI5uOZ1cnzwnv20GlYNutQAsSgAIOo7fGWzTeaqn9J23hAT0wIHK\ngDizitYENyE5EpqIkQOUQsYTQONtzqtiQ5KQhBHzx2vewGNWXPf50TArbTnO\nGuq4CuAYRI/VVpzQrTlpY9Z6/pKXO/1LxvIMMFQzA9thC3GhJbicbDjm/A5F\nQnJVKoP0pI+7aWfvDllgPBp3ZDeCzGKLphYUDMgP8P2hTZ8w0QY5NWadGAkN\nOhyk\r\n=xeWU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEbkE455k2yI0eOstWNdSH6emmnQdxh474IMp8JJZqXtAiAscD/QrfK4LkRwkj4sqMHjQ8BKAOEpc+ARV1pfpLdwUw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.71_1631320180257_0.4972142872995109"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.72":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.51","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.72","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.72.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.72","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-Vs/h7I7pZQg8J3VF7wzp/FVnK7fFyxgZhZb6iPSypQTLmzVbWA0tacc2O1yjMo7xQOK3TyOlC3AUKv8BbvnYdw==","shasum":"9de770dba3b58e316d4993b23d6d2e828e65b4aa","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.72.tgz","fileCount":480,"unpackedSize":2979006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPAfaCRA9TVsSAnZWagAAN7IP/iJvWEJnHxVyihG9PS1k\nfuuevTF/K02vAbfV1ORqrOYmdflimLnmEXqbYtQooO6xA8LN/u7zUCzyEyJW\nXj+WHVGZ3MztjDFDD76fPUIU7gEb0z8aONOrY5UkS2my2HxbGBcWmlxoevl9\n/E+0r+30mtUA+eC6cY9Q2RuXauXTyPSympE/04tJ39cjoFikgvLI9MRHAVXM\nypHVLv0kBRRIVXir96iyp8620DPjScGToI+i276dXaZmaZktEZEzq9B5kyjm\nUV+ATYpGUQwsUXnizWrDyCqs5hmlDxtoBuIamZYuOK3MneLLUrbh+nv/sH1K\niEdZTbhl40nvVTchaf/YTtlQwYgGq2c9Xn3eClBaUborQwJiuEMCv0qBpCpj\naGyfZVmGi7TyI561QwgZ0nFBrAzPtJsn0NBVpSCjFfhYsLZSaSdtVKmNSeeU\nxf5WQqsUIhhZ/imZuTaP6ezadn2gdCoe1Ewv66eg9Vew7pbgcjJArMjHz3bY\nq9Ud0opNih2eUz3gsEe5MZ30VoHw8GvNaMrLkHb7xbs0g7PeuPOvtMZQWEOV\ndDAUcJniuFvd4tPIMjwxfdP60GOllb10K2HReafqpG9z7zGwDxvwDOAQKUX/\nul5jPmUmraQnxhdFRy2/emgby5vBqaovfKHcRG08bWT//SUeUvAGvk/NBcPQ\nAR5t\r\n=DZVv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDNMk3HJnz9fTwO1pc0lnecM+rkBtTEGOvFw/qAGQoG0QIhANNsezPCTIA+wBUHUtTAWu5Zu8XVFxlpEK8M61CNDK4U"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.72_1631324121723_0.9087116003295499"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.73":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.51","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.73","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.73.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.73","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-eoN3Cm2Zyp9eWTKP74qg5FMV7W389VjFCEkZoGlgusLtDsJ3PXrE9c+RGcs1DlAuc41D9TCTMThpJKpUEfnXUA==","shasum":"2ce3930fffdbbcb3160067c44b7c82add6ce85c0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.73.tgz","fileCount":484,"unpackedSize":2992145,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPAqaCRA9TVsSAnZWagAAOf8QAIY1Ai+4hO9axXw0/c4T\nBTo1EEcdpxlmYnOnaZqhIigQkxrIdl1N3FkRnAXO7ODb9ToTfQyCSRfjl+fK\njGfrBB+mm1ezjG4NujFKslswSmeyTSWPpoxH/puuj/gx/eeqBmbspjplgtlz\niS0aTNdoRYQ9YHiQZcgd0HVqlEwYbMmg4385LXOqbh/zZ2s4fHpik6pMJUmS\nEP8D6KE8kQdUUPYn2ywzfiqCXHK4tNZbW4cSFfeEMBAfMLXcUUAzGisB/1Wh\n1C432P0wX2yd0N9TfXwl/qpn/CPahPoMAS7qkknEhi3KdFoR2IFrWk2P4Kqz\n7UiVouF+UaaGekUa7dKhB6rewjuohML7bgQmxNURw95/7coh0ar1iRfgGKCR\niU1h68JjZf4ukxllRE2UYfNFrHc6EvH0qD++PEu1QCYrZdtOsKA/x8+VBazb\nsE+zqLwVvOeu2uM/vwZ/GXnQ8wBHd7j2bEuDxPTiG2iNiymfF2zkiwKUzugC\nckTO3Y/3h3iy/qY/Ax9Hl0YiwM7nl5JxfonwJXGCZvLJnRL8SICjHdClDxfG\ntu1KDZ2Gvj6sT2A9LSiP32OKtua5bSVgfExk+HCtCzdl1trksl7pA0Lpavta\nQBJBifqvNLg+6QbrmAdsO8sjDk0BFy0aFjqaMqPNgz878/CswnA8S9/ewzHl\npj7u\r\n=HupH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEwGI4f9ePhp+S+d2q9LcNJ6dbJaa5Ugc7BvGnJ/PifrAiEAxN8yosLrmpo+U1aEXqZxFPhrRC6IXv8mBRC+CaH8fN8="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.73_1631324825763_0.42987695909316526"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.74":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^10.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.27.51","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.74","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.74.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.74","_nodeVersion":"10.24.1","_npmVersion":"6.14.12","dist":{"integrity":"sha512-1NDqSeEHjm5pqanCBqDizV4o6iuggx4WYeQn0yWunKU0FrtyGw1BKl5kkd+XoepWAF0D5bnyKeemwvGOjchlrg==","shasum":"50d1f280f29114ccc0ac1032bcf8a89ac668b71d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.74.tgz","fileCount":488,"unpackedSize":3009432,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhPAyUCRA9TVsSAnZWagAAM1oP/0soSOHoNo0eYGi5REod\nnskHoJsHFcNogLwxUSrMGA1GKCudPpZxxmB3yiY7I76IfT0nZ3UBId+mo4ep\nS7cAqB6D1dVauTO3wWDeMo3DXEhZNWX7QZqbNi2qk4VHqgaZWGUAJb62utea\nCkhEVHCXYajgVMEq24/jRqqxh7iDE2c2ACfxGKCZeS+zuTni4fB8CtDRac4H\nVOCXxAEN1Xxt8EYjYrTRjbR0jhKQh/EvNx2ACZ9QeTbi0sw/DlJqDlqKL/Ff\noV2vUiHg87lbjIe/j+TGfsiMPHcUqnEFdwSywkAID3R1ugWR5FoQQhE34rpM\nycwM44D+1YBhVZVjvG/xyg3e9u4D+UGgFHOaFMNx/XCfz6I7a2TXfoVj0Obe\nleBCVxfq/lYqKJj4dIv60WYVmBPRJPpsdbWmqbBg4dOedjtR77vQ1BaSCh2n\n3Eg/bMW/xbxrbmJBVq9J8EGUmGGrIn636xcV5wsAYlCjbzwPMVCEyZTaS5xD\nxXuzGbQq//pksmMulQu23sNhuv8LVwux8jVRvJP3GbVi5QHGQIQD7WJEyt6k\nHtCfNshWok6rQJM+JtcwbS4rOYtTRPZMIcgh3zJBRAQLGFwVg0rUVOYLU3RZ\nWCy1t2LyWKMc276dd5cpirHrUdjpSsBVwHqDDbG4QszgZ521CFsMtUTRpiuC\nDwLr\r\n=Ssqd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDrp1WLX+W83DEv3RPn9JjZ4M2jvfQiVUiCuoXCDv0pMwIgak8YcSoSSuOp2wDJjkNgC6C648nJWlZVkCMpNN5PejA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.74_1631325332460_0.45624414543226144"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.75":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.75","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.75.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.75","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-LsyncZFGdl4qPIYQDFin75h47efSslOSdgTWD0cmwfcyHkJTmUtw1vkDmimHuBWbuKAN5ggv5so+ClXdPlaSlQ==","shasum":"8184603b9a361fe7ad189b75f5fd9e37a242b794","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.75.tgz","fileCount":488,"unpackedSize":3009431,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP1ZMCRA9TVsSAnZWagAA06YP/1kxZmcNgkKOGKtWRBZQ\n42XdmAO7yuUfuzgCdfFOC9L8uf861K6Xhm7RCnhcMcaRlbN3KJkUqV0JKf94\n9QDueXclPW4N8kVvVhOhcsd9ZNU7xaN1fZ+etmvT7UCAZ+L/TuvQvrHCRs4a\nZG1EznQVb8/Q/UZMtwWB/6V0d5ZP8izKJktAN1y0lSmxgOs5rdMI/wi7XOwF\nM0m6gE7gT6J48BSz1d2XmnXoxoTCK4cBcm7gFZ5/bBHp6g5JKf+BsrhKxn07\n6Q16SoWvpZZIVaIuY+JWfrZMcuWBJNgi7iPIXDHP6I+DySmIJy+sGNsggdcN\nYLZr/Rqw9yFpoaYFJl1QGGb9qdfXItaNj3s8udO1uo65vUzdYbneaPRJBqlL\nlsat+ijWhkSRGSQ3tauiYNpHsc3S6ojsejvMlFl3+zAeL4PHeGXSCVHJceQa\nRwnFzOWOqaaIz8jyzr5wqei1u/3GRYgpCf6qtfOeRv7SO8YYvQZhYu3XAXAP\nIrwWfCa1PByMXigN1ttUmaB7/444YSYPxI3eYePBkfXOVpG2Z4psNwgnbTaU\nUKKWKqZAbX8pTVrkNq0/MuvLMRG5RW5mzYGY05uqE8qmRdAbyPpQzTIGsZJw\nbqs/7wRlirEDGzWLeODgtjhNPMl75ZaIOHDm39VO+gHR49YXrZ7uV7Dndpfx\nkKtj\r\n=BrP0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsfEvidyuByF1+1Rio+KNNI4g21kLCLzY4QfXkTlV68wIgMvdepfp5/dacigBAhe3DIPzsuOovOR3o4n2kWRbsWYg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.75_1631540812741_0.9447417158839002"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.76":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.76","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.76.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.76","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-RxvpqsIvOdMuR6F2RG5ISsdaNncJxQimub7CmtoAR5xcrYY/S0SNUH4I9zU88AywVuqSnrjJ4ArCnoadXWSeNg==","shasum":"064085cbf766d2808333cf036a3bce78d7aa5bf5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.76.tgz","fileCount":492,"unpackedSize":3022505,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP+nVCRA9TVsSAnZWagAAlcUP/RIpzWtRhdkSU8YxN7AG\nTbShHFxT19SvkydPCFupuOKCHXEg9TOhCYewpwgJVxHfLiSzXBxoHI9JvoN5\nfreEm6HPBPJwBQ+0ZiVf6twpMbj/3r3CgF+NJMiO1G3gc7KJmnYY6BNprFNk\nzVjCpHnG/2mtv4fJNRofyeUCzKgHzhRd9YBMI19KmS7CYX6feD95kNj38VTM\n4lYY9r9LZsSw4KXNrldjhcLXtDH61y22rOPLgyN/yqX/E9ls1OQD0qlZTbnd\n4jEMYPSLcsTSOZvN9UHzBxNuR/9Vm/YC1KPCf2VwKIGMQDlDhQNTISfRaOCT\n/orerOMTzj6VFX3KXCyfx22EAj/9ycuCngyeBoIhfXyxWKIOGamceJlWyBBC\n8Aa/F1yZ353XgIFjhJZRb5TOdLkAI7140AIWyKXD8sd/vJbKC6W37S/VqnfO\nhRmMxRAyaB3G5KvszHf4pm6b5zsU7BcembnBoeoCM2XSJjwZ6KVKRXNWHmfX\n8mW2vHsXElknAvMoGq2dFtpc2FVPiXtMHYTJY5UodxoC8VBKHPUpXogr+m8u\ntMR4kQDU23JLC8VGnGWREuj2SsD90Y7fEJdvROP7Pc9KkZnilU6Li+TdmSdE\n0NTLF3mGvMLriNe13M9VbZU+mpTeQETwR2phTXP5n0Xsm7nO/P7H8WF8+I4N\nyTSm\r\n=deS3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL4Z+ozctlhAVKgp5f6R1WTaDx3m8x2xh3JpUBSkWaQwIhAN2v5B0+jqCzVNQ5v2+u0H9lY9xkTAUwdWcFJXwo8Oes"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.76_1631578581571_0.16146185756979126"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.77":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.0","@typescript-eslint/parser":"^4.31.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.4.0","eslint-plugin-import":"^2.24.2","jest":"^27.1.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.77","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.77.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.77","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-5wjyL/UfN9xDnDm8BYWwEO+9ub3wZceMM2Ow+SJ/0AiRu0CF4tDh2F2KQNYYKAa2/AhF780tXb93vx4EVZtX7Q==","shasum":"a2c40ea76a9d9ab6141064f0c3c92b71f4548f34","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.77.tgz","fileCount":494,"unpackedSize":3033565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP+vACRA9TVsSAnZWagAAIeQP/A+GyMStaR4IIgo1NjRj\nI0RIxbuYgKsD6GLaKML6nVyG80l4crUNBSp41MGBErU/QQKnMNm0PCZe6amZ\nFjbj+NmNBjCBFMLmXa6rO12WgHHcUsCsSpdJUd/K3YpP1c0I4dDypEOUB4Pt\niAAp1ljURy5ApXsqePfrGQBWCIBY1hsSBJNGGmzeO8LBmSeph43ZwxAYKPKp\nQ5C6je5kREYUKzzIACrYfTQMzlcjWb4F1y31n+S9OhzRDMJ/QZTyVv+1aSJJ\nTS19Y08OEuJgFHRje9hJHMhuo6Zq/Bl5UVsVbaJKO3vqEU5l3pjLP8Q7Mb2C\nZDobsLRrJXPDzGELkFFgqsfrP7MqtaAdBCuu4golHhuBjP3UGBKJ+zAOQVLk\nU6n9nmmlo6dFXhnfEeQd96bHCgkCDQeN0rbSvIarysWZgCeWIE+zFQH3UN6/\nxw8Uut53NnR1BsWLcyoQJISBJHStEiR78d6kzq8EGekQq8oE893dwOQvHufQ\nFth2uki57rco/I0aD9A8kf1YTgFU6PND5o0Re3vkRgcg1H7pVuI09/XDiz/Y\nZ9IK7HpXA02W3fGUTT54dFZ2grHnugDNkWluL80gmPM0OTEptqmGhB8g+srF\n+bJidFeazfmKCppbsqqZDHLH2DCRQ+LD+A/79UAejqHc4+BhSLbU3GjOV5hR\nCUzQ\r\n=rkbA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBEshfCERUPhs7hNKe0g9ImW+4Qu62f1eLZPruW4Xj87AiBElJg0m2dbJMHVXxmL70m86JIPQZTeZI71ORQmKiXptA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.77_1631579071849_0.9522946425533814"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.78":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.4","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.78","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.78.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.78","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-6GR+G/Pqp1F3UEiRMCHwAqivkBVB0eW1Dvbw+ButSyuM0cyK8bvLZnDj/01ORUc9gE3KgYz1MG59ExPq7HEpeQ==","shasum":"0979d6b31aaf5e512f6cd17bc5236c8e39071880","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.78.tgz","fileCount":494,"unpackedSize":3033565,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP+6uCRA9TVsSAnZWagAAP5MP/0X6fRWLgOELDpoB8Ssp\nyCx569a24VChT/h6Ss3uyS1598ureVAcWJ2AapM2IgjL9ktC6wOOfHSUyQq6\n2YaDHNw6zCV0E00CXxEdk2z8YnCUO6+QruLIETk/aac2RxQlPqjrdNbAr74E\n2BtUHef1s3A22xN56jwLc5p7zbG4UcHo4Q5VwV+b8cK1lxByH1S9ufMnIYH3\npi/F75mDbTAWmUFwaL8Zts2p1u+GkU5mVLTEFtkyGEKLslOvntTrr1pFxIqO\nvxk3eOarjBYxouqDyhiIKES1LW9d5Mwxc3/ZK/fnh3okWh5DK8n8bkFZD/gt\nm1s4ptpxu3sNKa6PiOpNrj4sJ6+gdTAvdUj//6dbB0L85eG2hhOqNWhJos5z\nENqHzvpU1cXAolNs8nsiAQMj87roDvHMVXIiOYyil07cvpNE6tJi3UmK6jWD\n7FGJzAeQncrNu0RopRtDRlaUtEUQh34n5EYBaLpICFJLJgKQnlHN1wQT3Mhk\nX6hJX/ICwoaeXAsVKprxBCD9cn581POFw/k6bkvhfx7YCqrsTmVdnEHpq+vm\neNHBPuFAvku2Ar+Yv8SVJ1bSfZ2MV1LWksWoRfi3vBGsS0dUWIVD3e3gaJJJ\nAWMTmn05mWWMqAVfoLiZUV2BXxK0y2r9WCNTuEXsJUqzjgY2fiCjNTsJWIss\no+wh\r\n=9bNo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBu6sOlYoM5Lg2sT0wfwgkGwuvl3PyIQiIEKzDHsfk4QIhAMIfckRiptFQYvLRIniQxF/PnWoPbxAs7zbg+f36dFkX"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.78_1631579821898_0.9897074149306953"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.79":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.4","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.79","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.79.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.79","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-/GfIUbB1nVnaRvxerqNKxlS5N8gbkFmPj2987846K1Omd0rxXLMn/GenbgWnnHEbOAN4FEn6CPf6cEosX3LPRA==","shasum":"8663a726c84826181e67449e024c350bc90801db","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.79.tgz","fileCount":496,"unpackedSize":3039873,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP/GzCRA9TVsSAnZWagAAkRAP/iTJKHC0mpvWlpMVJ4GE\nxa0fbmbWIhsdFks1rXj48zZrVDYz+R2X0niJ7NAf1BHk+PSK/XZFTl/ZrdUk\n9jVoVoWfZI0rQ7o7j3yOW6JFK976OEpTNxPfeTOjordGaxtILXgYRaFHZwOD\nN/WyD7E/LGpKiHoWZiO6FDOlH+HD5HpswgIFTjzr/ERWBSmO1WnkSfHxedOI\n4cmsgOesfo3DCVPmv6YJmufbbHucw33GzrNBlmnvLuFuZZ3a2BECLE0XiDsj\nWrwV8Cmm7mLqkoGY0lugXCeGPfgEzMm3Hm7MVuvVbFMYXD/QCocCerDcp8PX\n+eR6Hs//yb4QgdNlpK6H41aWbK+PBzHSefAjwPNZnIBl7Ei7nfabMwOX8WDl\nr4Q9njWeQKGdIIAYNK2P+SJOLYWRZBzRTiblWjbYQdXL4k+e906Me78PlAfz\n6k2YTH3OiDjo2tE+QfSDcKbmxW4twXbWOvxJyUWT1hg2zW1DDdkNOnV7w7Vy\nb0XQz+mxmwYk9isFFy0CZ4ECBHAbkhYWe9pEM58iSgGPpGMajjAYLaxGcb6U\nfTwdpB3ok3uSIUexwu1+Pa0WWC6rWtyJ3VtXjoo+nQAxxb4P88geG4vBmLVa\nNFh/DbGWQLRZN2Q/e/ISILm2aStJgUajQjrRIXszQ14Ozfsw/qkeL/dqX4hy\nhpHA\r\n=D4D9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDM1eLVFruiBOx/V6hEvFtqpMldR6OtLVetHtVCE4ckXwIgGVJHtzDupbbky8R6LTvdbrphDu0ajxyuE4Ols1r38Wk="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.79_1631580595569_0.5365639661741501"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.80":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.4","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.80","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.80.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.80","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-ILTqRMmwZWf9rKhp+NURw0wWvQLstVbcGR8lss1MEBE9W1Vyg/tu5i1lYJecVK/2hDGvny0w4GZsti/NXMheFA==","shasum":"d7968b838051c5f03d7b6c8f4bcd95bed9339c40","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.80.tgz","fileCount":498,"unpackedSize":3047971,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP/hUCRA9TVsSAnZWagAAW3gQAJkwsstPEiPrDi4oHofh\na92UKMY4zbWJchJx71cRP+zglFAvRr7lLT+c0MGP3LQtSqbPAGb2CK+oKJcK\n4trxsjQGxBSbnvSZVGk5ic09C5iPgX7mw3AeBflMmKvkXB6vcSHXt3FSqt7r\nQgeJ20G8/T/V1oXPgcdL6bxjGWbbqoc2TB8o0X7RW9BwPN8CUFyfQgTt/zoQ\nBlPbqZKCoS3aA9t+2pLrakF55sXl6QWQTXDzI6xskGMs9f76Z42hCHXn2Ykp\nJU257p4kBuwgbriUI318nYk52yStwU6hT2blhbv4bq0D2e4LDqRUtnokSuMw\nrecoUHJDa0wk/qKhPcv37uGpvaeoT3dc/nVjyCiFr9dRZWSUuJrKwJQFL221\ny06xhlFtLH+EQOtlZjQxEMMHek9b2UuDtjuz8tlakRHni46XGybDSO7zYj6s\njnl4wY3XYn+cB3kyookQTNTwf1v5BPPsOze4bJ5lQhPQWhHPBVI9JXubj6Us\nTRiwQzMP7iIL7GRCdxaxA4cE3U3jy/sdytYg2uONgnl3fk005v/lf8d69KOE\n5ClFtl2Vu+rLenOxf78bJo5XktxdZrm962HScXEIyQtKroZR1GuSeli+qfTo\nEmSxYOww+VhwHC6ECNl6XNZ39xFCTtJbmtUifzajZOLNt4kvsFayGWqt1Hhz\nB8/O\r\n=D/Ej\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD+jDQeKtdQhj9uE3/OIEVkELzplYiOw8SetvNrpsDy6QIhANYNdxKkcdWB+pZAJid7W/Ap62uYK1nNuKq+Lhc0EpXw"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.80_1631582291793_0.885658022394668"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.81":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.4","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.81","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.81.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.81","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-jvvxIczPpFBADPaYr/puzM1joFbe7T7hk1VH6XhzonFh3HGhj0ZxDhRRc66pnQ0cpdpCoGuV/pXbyMwmF9n14Q==","shasum":"2b5494b9c1b32ed6c4a29d955a9b5e00862bf6b3","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.81.tgz","fileCount":514,"unpackedSize":3113845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhP/uHCRA9TVsSAnZWagAAPLgP/3OtvkzK4qg1g6Ih2jNj\n7lC8ba3fttWmZEmhTVked92tXW14qCcuQvCT5I0SQiqwnIUyQr9gerwLvkeS\nilnW96ZwBOxepgA28yp3s8wBr5cIJJ0hQZpWlnaFr6gK3nuQ6OQoIQ4xr35e\ntJY/4FWEA5soPOep6+EkeLaqjA7VjQElrB6LkItmFX7Twv7VrjsiNWnb0Q49\niv3E9iF/x7kP00vVbdxGzsAaO++AmfDhPjfUrdrQeOvgAGwxIhUpEzvpKfa9\ny9LpwlGHKjwru0X29UmyFlK2rPjI3dcAX8kdKGTCruPGuAOCG2TD0ovrm7Qj\n+ukIvFDjE0IUsymum7StUz6DFqsyacP5CkgH+OhUIKPCVjE2AsMLPpxM6zaN\nwPJqPQB2apAr6TYvpuvaqf7bkvV+ANKJtNde9Pqze35CmqQbIVwvhR1X6ecc\nWeIzqORg0EKak70HYE3ZBMjBcL3rll1uw6EiosnToVKZTsOETChXsx4uuGiE\npz3xkuXFnqF8ITU7/lfN3ycuagy7+kMB7gQk8hAddLws6VI9Dk42YiSnXs5P\nIQlq0iBzXskGCnZHfBFrA8KTy1F2+cnzGPhoam+5hVbwV5/fGYjsdmYVDl9B\n/J9z2ELeq5F1DBzIyzuuMgJnIC205a8dna0N9ilzOhLGNCEwl+337ALGGJas\nEemC\r\n=WjyX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHi82JEfCeELlYzzljf0lXT0st+n8T+YhWvgd8tQptAVAiEAswGWPYWihqu4ogcIZBstiYTy4kDfEJP1YsxD5PGz/OU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.81_1631583110894_0.4400997781509963"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.82":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.4","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.82","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.82.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.82","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-4CwId9//do+qgpB2e7MbMHOV0lBSceEsjzgFkQ4Me7F8rgKAEISuUuQ+FtVinF5Spzff1pNQ4qUZZvaj40VEPw==","shasum":"e2480bc6eb786bf7391631d1890b0550e1c24aee","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.82.tgz","fileCount":516,"unpackedSize":3125670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQSsICRA9TVsSAnZWagAA8LkP/1E8CRDXTCR1Egs/pGBn\n1/02G8VzGfnJeUbJcK2tsVdTetaQv/6mNDXD30WOCkC4AmDHkab+pAh5LYzM\nRck7nLFbq0TZvGLIoE3kw4tgRtsODEhTSY1+5a4+9Q4Zx5qknC4gHY6IpxeU\ngrqjtD6kZHyuNBBlj5yW/YR636WZ9Qvl81nlh4wAGdIL856ZLQ4XVqfbSI6a\nuceGlDOrp0Aq9JO0jhys/pArkhYagsckocBxH8RLJO3swQZB66bB8OC+IsEt\nyJI1Gc1F0e0to8S6D7jXA2e1q+Jc18t3VXjd5SO8Q1Y0Suwr0i8pfdm5Eiss\nk9KqLRn+CSqe9imFPQj+jyi0gBb2Ivvy0scpznrsTaU77zsWGguWPAfsEnzg\ng87lZpeDxEpQAy6vA0+WbareM2o+cycEk93y5YNCxVmF2pGRtPVn0qLG0yYF\nEHxv1cQkPh5S7GNvtaQbIcBDi3WpKr8jTTu2D5wU51nF/oW/vkXqiyQwwLrG\nZyWkGNR1cUx0+R3unHsM0t3VQS7FaHfNTF53MmiGL+udVAcnhUV47E0epQvr\n3dU0W4Smf/XNbVmzfM6R02a6Q3sudXN/8Mmxk/Pf547oRvQ6J82sDy06WMK+\nceJi4lfiGjKItB3V2WUol4G4cKiI1Y6i32rFry+vIlNIWkjMW49nQUh0i2fZ\n8fUG\r\n=Va77\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG1rzEw1YW4uow2D/FKBmAloRCDLJjIlLyO4Ecm1SB4HAiEAzBi8CPwtmHDStLJffUOOTz/Aa+b4sxE7f/A4+c7Z7ks="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.82_1631660808067_0.5989373006405379"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.83":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.9","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.83","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.83.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.83","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-sSyuZ/DhGPhoL6N6PvNUySy5//9krLBwqLAd85NUPJCjbzfNumkGRXr9m4ZbVTX/8K4botLjOIlBR43NVX0g8Q==","shasum":"bbe5ca5ffcbeb621b712b68612811ab325585779","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.83.tgz","fileCount":516,"unpackedSize":3125670,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQT7cCRA9TVsSAnZWagAAr4wP/0tSXMieKWPVMUhni3Qg\nq2+LQ2W5WC3NQ26Ozab+k9lkKLGI7tX8Jagl/iI3F7pewx8Idb3T6z1i6IKS\nUQPTFXPDlWG8j9vz1H6QIrDmeZU+1rXnjOf12QT4AaPh/dXc9IaB3yvt8RoD\ncFArqQQN6Jh8nmVg313Bj8eDJLzluIkG7wObdtqhPt0L4zPyDq+u735a430r\n34lE5NDWp3gUPfxL7A25EeSP3R6eqnrzosueZeCbejkkv4Ltqf6LXh26aVQQ\nPypt/Xbr98Nye+yQeBEs+vj1KWQUFl/eMINJiGcamPk2UW16VlNjyxuXlQR+\n5rmRvwSyGoIwdM0yDMJayY/p1lvn2a+7mTsWVDrdWCCAQqPN9tYgtNc6B56G\nLeKkb4svgYacY2YL8r9QvVRxH0htE2Lq/dbAa1OmiFFSwFabC1Pvvb7EK8pM\nSAlVa/iCcYOc04gVjTvkEN+hOUm+x4uAc/y/HtSLNATXcc00Id2QgV6z4ga5\n8t0u/InnLfvxX9DT43G6tukkLiDuY+GroLaEZQKrJpyJdhiCkteZbVZPJtFL\nJJ/tiXMnWWxJXeU70qYDuLHb2GADWpzepA5Ls86W8s986CniwAwSVQ98wy4N\nuUCc+QEncf3VMWFx98+dWNpPnRzfcXZFsDTyHWDMfmhi1EPFSVYPGfxVclp7\nP8Oe\r\n=yAB9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDliltpmeVHuyzn6CTmIJiH0iarPpKNhXx1yuvd8dTBqwIhANmCXMkG6ujIsbb1aUahxosu2M1lX4vXS4S0gz+KTvff"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.83_1631665883855_0.5106560557830921"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.84":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.9","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.84","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.84.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.84","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-RA07GlGbORy832fq5hO9F+kA+b+ig2a+EvNph3c+dJ5UffKXPLlPKrOOKpQkXii9ylLBkBpqfDlE4Ufw/QM+/Q==","shasum":"5b0d487fc96b9ff8f97ea67fa19118dbe7b34d9c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.84.tgz","fileCount":524,"unpackedSize":3158184,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQUJFCRA9TVsSAnZWagAAlfEP/3PlLJVo/3A1UjTeAWM7\nt8SHXQTCViZUSQUkaheUhIRb3ROVeO7VE65l8h09ihNhTpev3nMiAReHTbyB\nfs9JurIrmgME+doJxrsLi5vTrf3d8X17DK2SAEytL7EnB2k58rYfKmZNpGs9\nBWEccuE1qz9Jz79dRh98Zny9JuzBmz0hovnJVZ3mpc4jxn5fXfB7Mbdkimbz\nWu0gCzboOMQwm/FkIAor93bAG9I1zhhoE5Hvk4+MJirL0/MxRydIajFRbvTe\nn7b9DAYOi6rIQS5e4DN7JOd+bEPgFop0ZhMSI/LsAfE3Pf10vLz+CkosbCgc\nCD939kGXVbY7ArKG5dH3VJbAv9IIxeFYl7KYx+yDzcjdadb+l1/wZVZEDF1w\nkcldnFe6wQjrSBTagca65NtNrOAGm4MUonLTATg2yEtZMt0Q9Ry+Gm1EZ4Xm\naGHkcSuLYcqqQTUMUAMqNgo6jpbBYPCmAa1ogSbRT6rxS+WpXOYr8QiOXj6F\nux929X0HXjxnhaPCOZIKazeSMpRbXyI1Dx4FLm9ciiNKkKC/Ymynv1t0B0MM\nCevzCEyRNQnJIJdJiAOvAuCM5QVVLNbWsjy3bqIxQXX+QMpzh/MpMNKMUkqm\n93eYbDmg0AXCBvxHZVmf+/mQjHgdXCY+JeeoX8Ba1rOyEYR6FPa8m3cMYrMY\n04/g\r\n=mas6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD28OgNQ/4EtPRDmgjSz90QG1yGFXaNSdJA9wi5nfUvlAIhAMVCbqkeh1EX8qJL1MZvGTYIPPdm4IsBtcA53Q5lhBz9"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.84_1631666757242_0.8508499595918804"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.85":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.11","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.85","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.85.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.85","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-RNgsdWFUeVlSW7HxTSWS5C5SBlR65Nj9YdQ6yq6PH+6T+TsenrUUGqkeKvPIJMltnCdETSeLdFgB52jZ/q/jfA==","shasum":"0433854ae85e69ff09c51536d0465c0841423d52","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.85.tgz","fileCount":524,"unpackedSize":3158185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQpAMCRA9TVsSAnZWagAAD4oP/j6Yg1ufwtnM+2rAz0kG\nXW1ehO3F0jARdpYmqYoTjIVADLuPtHWFbZ6aUhznunBkBD8MAdvILTH2XsFp\nUIoErk6LlEgjHRwehmyOOvc839p0ADaePtRx5GYK2EavE5MB8BoesfXiSpWk\n3C1tNhJiBLbFEd0mr+j+i0WrcMCgbYwyNZvEMImuKVBo2Ll2ps6nR4+IDbLj\nya4JGGfWPkvc6DH/pcjt/jAbE9V1eB65X3f1OExpNoEfxCJukRYH5LHBuZCP\nZKTwm+yt42T5y1pmQklPAa8nYyx7z+5PF/IRUCCAXAIyJG3GzORVCxOY+UJF\nv9HNDMUd7ipUzDslYZoKNs+6pJ5ZC+hhWQaUsPyA0DLALFUZAXpbUOK1QVjE\n8klE7xFQAX6vDJCcWwMFOOu4W1qXjAAeH04PBqWs22UvfC6hXa46Zy2EbQj6\nvq+K4eXsJBUxmgNrnK2Wfk84r03cct7WFRAHl8laimT3zpgUCOtjQbBWHS9o\nHwgLORJfJlUlfHjh+o0ByjmqtKVv0LjvYu8/O/sMBgCtbDDXvnciLfx/x3r2\n35gBahm2OIN4NcpSRanL97rWykOwWg2QH6vXoj5Y/eSjHhw75C400JLuaSGf\nwL70W53bLSOUsv5hOGoNbNbLtEBGKuXfvB/PDd7AQlRDa3djj4c2EOphs/tN\ntty2\r\n=4yhF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE+DL9GV3r+hrOdpb/geomKXNVMV5F/GmWvNqa7CCvIXAiEA/hZTHzGSZlO/ndP8UfdI6xZmocSnrb+uFu2WkO3766c="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.85_1631752203993_0.9708828733346622"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.86":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.15","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.86","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.86.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.86","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-TlIugSHYPAwoFfgwe4xxA91EgeMX4L+H7QcXF2oq47/8qTgGGYIW7EVgLif7Bb5bskhArLS7mvkXYd2Y0c/l+w==","shasum":"990065397473a94561ce3a96907f26a83d45f21b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.86.tgz","fileCount":524,"unpackedSize":3158185,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhQ+J/CRA9TVsSAnZWagAAwYwQAJEkvOma5hPE44COrI8E\nAQh5qj9nLH6DX+TeLp7f5x2vnA4luHYMwk8L4UAdCgTRQiec8SnkUMAPfLs/\ny4d0N07bc2t9pEdUeOvERPaQYnvRuj1Lix6YdPa7J+YOuvjAVV+5wDKpUWyG\nvaJFcpewEi3N4pl/gJISilusddSB7MA6WcnSIoPkXaa6ue0XcLbuNqwQbIeT\nL5fe2WhMlAd9Ankn2t61yYT4pPHNpL/TozNJlAGFNawVvEoVwDrKnlc5Ld69\nvvE9i0qDxRWV45N8uV85Po4iMfa1GUYw7+5HElxpbVaV45QQsHbbgY9E+/er\n+mDeHHPTGyZcGDbmbP91ThNV0lwxlNmw5NZfdhcbyJWUcCpmYEzGCHw//mhJ\nOcYde5lb2KsQ5lo82ghyhFFV6A81otb2F9Qj1OdXQ1137N4jppQEK0GmUehF\ndNz7Lfl+g1hAmNUHPE8yiySRjGlKyoIvZ9QZro1Cr4fe0wixrSxJLZktdnnQ\n7rAvg8uOFlq1WxRgSZDCvA1aASTQs899MEYzmuDgKCYuccLqZxBPERGaTkNp\njAHGoa0+C2HcoSKr6733mTK2vJnq0FRje4p7A87DuL6MwYiE4FOdYsc/nhyz\nviIXem7iDTFtln2qjQ4O8bd9AfzJFFRL29CtAQ3esxnkB+YYi8PcKEic5D3F\nKe48\r\n=lGfu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBUDnF49AP5M6QM+J2o4+8Al5XzopBptLB691LcVIWogAiEAuxrSUkFIlOQuQeGw5lzUDx0VOV99oZsAGCWeU2K38ng="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.86_1631838847074_0.8228226897805511"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.87":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.16","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.87","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.87.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.87","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Gy6WD1LuxRb1LT/ACmpMBRHxyErLM++alX4maxRHr1mGiCKhjrS/vQJgRilRnkyMVjNSP+wvnbbw0dHeHrRGcQ==","shasum":"4df685964d5909255146dd97cfb7e3af280723bc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.87.tgz","fileCount":524,"unpackedSize":3173964,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB3nFWa9RtgqV+dFnkWgq16WIkAMo6ByYKPbBPoIFxYKAiEA7nCsKUXpGadsZlNoqfoB6DkJz9cZEAyhzq3Na7tbH6w="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.87_1631925148671_0.4131985720697289"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.88":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.18","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.88","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.88.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.88","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-aSypgpisn2niGoB+uFSlW1O3CXGc0X/xk+Nd4gHhP6OwZHOGuPTqok1DdAYCyPCLMMPI904cWBsPM/mC9bvJRw==","shasum":"1d9a54431fe32fd017797b549b19b95d9b64c302","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.88.tgz","fileCount":524,"unpackedSize":3173964,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDDiwfUms+NlfnJEhBcGXKrTXUvsDrFgncq4ledSrzR0AiEA1JxR/A4IzrDopZwzf9X929i3gzpCZLa0pHONJmWPj9s="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.88_1632011676960_0.21583379049043905"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.89":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.1","@typescript-eslint/parser":"^4.31.1","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.0","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.19","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.89","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.89.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.89","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-N3zWIVENs4nti4PonPm/jqZnLFX4cCJjd2MgOF2YceruHCacFpb7nmUrQR4DejHxrCIXSyVojdlT114chNw+KA==","shasum":"3122fbdfc28ba6a8bd42aa4663168f39d6d34f16","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.89.tgz","fileCount":524,"unpackedSize":3173964,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCFn8ifmKDrDZDnsUr8Jfrblcj1lc+W0dy7im6yCJFzjwIhAPbe1+UTe+EdKF6PnjWJMxC7ZA34wk70LCce11oJoZyr"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.89_1632152600479_0.7100826940790654"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.90":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.20","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.90","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.90.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.90","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-nLXVL2GiYUDX6Cg62Kc+p9a6JyyEhockyNXHpKkNSX+1Wk3GVpIjwqkqksIkBiJpLctSleIMDM7HDlj+7HH+Gg==","shasum":"9b64c4cccc2eef9b074158abf232704693621485","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.90.tgz","fileCount":524,"unpackedSize":3173964,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4rdfTHM/3Nlt9wtj+gj3FdwkB+PlJdj+X4dMRkxt9QgIhALNBbv2t3Jxs5gGIgi0/J1M8kpFBPZvlwOxFVOlBqndL"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.90_1632184353113_0.14512692129518356"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.91":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.20","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.91","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.91.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.91","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-7rtViRccRDC8Rvjhq4LQB3/I/r7t/mtntKgjwwtrmbdrv/o6ycNzPuIiVJ0daZoEv/VU5dxytNaEbQE5bCtRRw==","shasum":"19cfb28424e0e022acc26df406544f7fbe37dde8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.91.tgz","fileCount":524,"unpackedSize":3174404,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1v4eVZuDQwA6AQNw9ny3Ty3wyJ++q4qb90m1bbIVZ5gIgM+zmkcYcAoKOO5w4FSVlIDnBBksSSm4GUVI3VLiBduE="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.91_1632252597063_0.046880413805018506"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.92":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.24","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.92","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.92.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.92","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-ua5ET6H89cChdm3alaBmO5VpmzIsGCYPS0NqaSYB9rUUaRwKBHlpwyFwYgTQSo1LnELn4NsWqTKzKFKg3NVCeQ==","shasum":"b4cff4852985ccc2f666d2a56d0cf289d6045df6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.92.tgz","fileCount":524,"unpackedSize":3194977,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBfjNzPx5o7GlrjZ2hAfrq4KJ8l9trOqBw4ylIEOM2vBAiEAns6EZzVYhssUsuafLQTvS5vv08McpyZL1IR9Tfrtq4s="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.92_1632270899769_0.38407516249062557"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.93":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.24","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.93","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.93.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.93","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-XnxBXnNZb2K7YO0urSDQblMcNuRR6DufPRK/Y69EAMJJw4BLTL+Jff9GdQlEdLNXHnqBVQbxRSRIk9KL3sJfZQ==","shasum":"4aea89be2390ea10245420076976c85d9b3d412d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.93.tgz","fileCount":526,"unpackedSize":3203715,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCrXxeiKBcgFXgdkLz+PxRS/QncQ4fFmyiIW3E/Y1cQNwIgEuvAXRedvGFIOOVO2CgWneF6UUpmKhfRu/RgkUvnJ/k="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.93_1632343970592_0.07482658423878519"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.94":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.26","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.94","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.94.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.94","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-XHBchVzpooLOrJVbDMXCaQZ2S5L+5SFmt4BxoraKUO1HiAR5JtP489ry7ckTOCcXlBzJAY6FYHS9Vq6dj5NPcQ==","shasum":"14f9e6b98ca91990532c1b274ffcf4023b2491a8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.94.tgz","fileCount":526,"unpackedSize":3203715,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCoSqy1q9ZiVjQeSPaCXDL9eM0PZWUN83555RFz3HmAmgIgOLUcUepLK9UJhILJ5RIBOSODbe2Iw8NqvlhKQIKsQ6s="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.94_1632357318703_0.7731527985672038"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.95":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.26","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.95","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.95.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.95","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-CMMvQszUXR/W9QTsbMCQkb5b6uIah1+hk3UL1c11E80DqzClmZb4ie0cbcBZLamZxJCSwSMQQGf1DVfNG6EZqQ==","shasum":"091b6d540e0d5830fbd74d5efef7d3cde9de2a90","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.95.tgz","fileCount":532,"unpackedSize":3222182,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFs/JFHdFV80eoRNuvESwzLkzvkRydY5ZKKTGohf6ZGOAiAc5XrHdQyuj7Laj8YVi29RKpbABSERcqkvWqf6GtLWpQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.95_1632359178245_0.2416042180590896"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.96":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.96","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.96.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.96","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-A2GoQb5WwxvO5l2KEvcoH25CdSw1GAzMMRbL3ZdQBmGe15tkQ2SlP00DcdqyYxFSxfpiX9Sgk0yxuR6nX9/60w==","shasum":"0c688bf048252aa50341c23a499ef0a3acd69e9c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.96.tgz","fileCount":532,"unpackedSize":3222182,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCaWHG4UpfdhWC7f1EXXFH6Gbf6oysWzQf6JY3HfVI2XQIgQqvuDczgkBo603W6yAmqGBfEbwv7xnQQ+HG3U86z/Mo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.96_1632443559367_0.14688464299454096"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.97":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.97","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.97.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.97","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-lRM54Cw7iP4ERlQis40A9xMXZXBHNKQyJKQ3TJty29oMGmqlqeR0gIcEhclvCRxphjiP1DL2hWIdcRoZqAZoyA==","shasum":"da9f9d0977f794d9054d7b38c468acd04b1c22c1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.97.tgz","fileCount":542,"unpackedSize":3265394,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEv9QKJJL3ABZiSNq9peclrllCIpOaxksrmmXDt7NmN7AiB4lEpmpV0c1HdjzMQ+N9ce+5ZuB32V2VDYSH7iqOjQyA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.97_1632482640843_0.22037789486688886"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.98":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.98","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.98.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.98","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-wNLlCo6dwjRl3KykYa7wcCj1lE1be4XNy9l+HhFE8OHBZ++rfCBTJX9sHc/KNiv8sbUzPwLNhTStgcKxyDqhtw==","shasum":"95c44df1b9da1253d896c2bf556ba23137c9b4e4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.98.tgz","fileCount":542,"unpackedSize":3266604,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD1C3z4E2W/Z0OLbv6O72C3DIxDVgnARtED1V9PKW5LtAIhAMzEWBldzs5r3Xjn76eDTU4pLFDLChFcCcbnsCgTMlBP"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.98_1632484821989_0.1689166224058236"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.99":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.99","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.99.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.99","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Ww9XbQ7SLiOy2Ku1xXdpQSc76Dzemop5VVHOgtxplyn9uDVWtZit51W86mvcFAfgPt24DcTBPm19BNtjKyfppw==","shasum":"b77516065c5050bd8210018ba091bb674aa04ba5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.99.tgz","fileCount":542,"unpackedSize":3266604,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCeVzqT/X1xvTAGWFGtfA/hTnWliX0cgSk+/bc7THh9vgIgUbYWXAqwygGWdiF+/1VZXTi8WgDjpxretbihP07VgrA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.99_1632530196123_0.30210238592529803"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.100":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.100","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.100.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.100","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-qYtkzxj/DgaWwAbwcf1wQKktUQBF+3MUjhzSeUyXofit2TTTqA0Ns4OKoRCGhCsz5gyPPhD6VlgmXTn7Cjue+g==","shasum":"21b2072fcf1ab9ad9f6927fc64b57a70b655b884","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.100.tgz","fileCount":558,"unpackedSize":3325456,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDooZtMoUcs3KO6jgdKqu0c5q7CDe0K3HT9ssJMKyrRMAIgLEJZeTXcWB4/9EC36Tc0GiZoi6GMBx8INVUmCbrj/mQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.100_1632557513410_0.7325886567822371"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.101":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.101","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.101.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.101","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-XlueO8RvNFgsZW+hUhiEr7avoG2QmRJmiW8SkGINWDMW54eROS8E610Ym2fdM1N1fWIYxSk9qsgdJRuofGNXUw==","shasum":"6ad99c3887dcd8d30d4bffa09a98b2d15df78efb","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.101.tgz","fileCount":568,"unpackedSize":3360768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDQei/PsYNAcQJHthJT23FxCPfuV/mfanIR8+OCRcohZAiBlqDk4/gkQmWTBKA6sukL9VqERehsPvrMB8BgMe9YEJg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.101_1632558093114_0.505985866443925"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.102":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.102","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.102.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.102","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-/EC+nsIVxEqMmaAM70UQEJ2GxA0MyBOeVE7V+0jzwhHFHEf26C3iOfroQqfs/Al/exfIJTLQ3f38OscE7sy5SA==","shasum":"1bff0dd840173b59274dbd42bbee0d3632b34633","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.102.tgz","fileCount":584,"unpackedSize":3423340,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCOTCyovloARUxNt1LFSqIyC/CsJ4ylildPTyPniCSC3gIgaOvdXlC/9X219TUQNqDErsgE4IRcA+Lu8pmHC54m9dY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.102_1632558662988_0.050150447221562366"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.103":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.103","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.103.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.103","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-8ezh/l//O+XDrzqsSiRnRaQCip/62s6pmIrCg+HSY89STEJGloydbezl7A8zsfDUPYSV0I2VR57cF9+jqySnPA==","shasum":"fd9638422e5d33600e581c610506bf4f898b7c73","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.103.tgz","fileCount":590,"unpackedSize":3444496,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPoyeQx93vMlW/XqzA5CZws5i1V21fjhUGPr3yXHndsAIgZrl3nw6cNO0B7u8xymg6mW8VLe4bJ3R5V/GRtGwY6iI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.103_1632559875902_0.10544220364885049"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.104":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.104","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.104.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.104","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-bCcinMjkBvR/VSqWvjKMoqgJ70fLcixDPVBX2lDLkAeBAet/nmQN6PvrbKT57X9+1qz0QngxsbgrPe/drLN5Cg==","shasum":"e5f8884cdc34cec2fa01c54cdfed713063f2945d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.104.tgz","fileCount":592,"unpackedSize":3452286,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyNWLtYRB7/ivbTintXGkOKRuWCRUN2wnyk1u7uIo/FAiAEiMCznFl23YsuKLk8UAvltm7wW1bZ138EJb36fRhKUg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.104_1632560816679_0.11734292444483763"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.105":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.105","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.105.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.105","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-cXS28fHKMuKb8Jlwmr1/voRhGN2ET4KOxlJXmIrahV7LvcObatmq3Y6Ot5teaWMKFcIygIJvwyZY3Q8HbwvnEQ==","shasum":"20b9fa375e03ee287591480fec6b0f7faa284c1e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.105.tgz","fileCount":594,"unpackedSize":3463065,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTl3gZjmEmHD2bg5Ff0h8heOM8ETqMZRnNpVLzOG5cSwIgMRc7kkFTX05GszaVGkTvv7xQOIHvKOo1ZHL0gUqMEEY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.105_1632564942221_0.9531454632240932"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.106":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.106","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.106.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.106","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-3dQ3hltQag5jzy4EI4tKNPMwGnf5YWeSrX8vhk868qO8sGVS9E6jdIZojuvqpWyiH6Dg4kFTxm2lVMIe1u+UDA==","shasum":"e2db5200f1a2cdbcde552cf4d7f90783f1225e89","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.106.tgz","fileCount":596,"unpackedSize":3470071,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID2ovOkr1sxA03nqncuegktpy4CpU4WmBBharunpQCqqAiAo4tzyuYymm2ry7Zuo5p9I619Y61VDPvytd4yhxShABA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.106_1632565821510_0.23207468371443696"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.107":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.107","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.107.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.107","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-AINgfV/yHQXpJeWVcTp08PpOH+WZD5df9zOJM+sPNNYKdhZm+h9HVF8OX1vliLrbGmIskDovvPS2g3FqkeA71w==","shasum":"b71443e71a0cc2b2386a75a0388120de918eb23c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.107.tgz","fileCount":598,"unpackedSize":3476511,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICt5IXVONpXhOOcsF3Ja7xmwIX2oyYmNrI02PIMX1idZAiEAiTTmlYINDUNcp+iAJecQoDMpVa/h5y5G/uXnL7xkuiQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.107_1632566584902_0.3223852804529277"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.108":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.108","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.108.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.108","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-Pe8voZ1cg62RvL/MixPT9fD2sQ8xK/+SNV6HV9gvVFbA4+ltiaPsUhKqIpo40MzKcPi+0mb7l0WrqL70Qo051A==","shasum":"aa89b9401687c6dfcdfefc1ede166b98a0438167","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.108.tgz","fileCount":604,"unpackedSize":3499057,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCWKplbn/DaGmNA+QyI1Vky7CZkev8r1bEM9GgsSMQLhQIhAOnsAqfBwGB9N+r5Y/3i8afFz7xeBBN5lmMXMbTl2bFQ"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.108_1632568128616_0.15583049586672182"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.109":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.1","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.28","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.109","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.109.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.109","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-qc6JczRjxAfHWd7aeLbveMolieJ1TfkuHDDX+ZF6LoBI/ZjJvvQo/sFMx9X708Lweacn6xAqpGuAtlnLyvO0lw==","shasum":"eb8ce758a15dd8f316c59fc352caf3ab61012852","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.109.tgz","fileCount":612,"unpackedSize":3540944,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHFmocoN01w1uYjOdAZWJAoW5x6ySqzDa1A2Ruimr/3wAiEA2xU/n51L74d3bOn8d4G94VDFgkvomoXR7qLsmnMngdg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.109_1632569725037_0.35173742523814955"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.110":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.2","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.29","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.110","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.110.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.110","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-qvwGeqEynKnjP9JGnSFC5BR01jkMjW7azDVN8Wt8bGey5eRLZpxDdkyu6A/gKVHrG7Xl+9wPB+idrXj7TB4Z8g==","shasum":"72012e2b328e5dd7db6097cca43ddd613c91a5b8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.110.tgz","fileCount":612,"unpackedSize":3540944,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEIAOflADW9ssBMBCA5V9+v31TQnzfeDgM8HWyA9r3UeAiB1G6G3rmQ9mhmNdjSP1EhNbyNgx1gkzWXc+5R3TUI+rQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.110_1632616757279_0.2877484079766055"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.111":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.31.2","@typescript-eslint/parser":"^4.31.2","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.2","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.30","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.111","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.111.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.111","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-AaBk5DHpXIqUgi4nwip+vkMmWmu3J31cR5cGR6fFwC9EwIm7ydYOFgXjGUNQvODlIwNshbgN4Mtp1usi921V+w==","shasum":"c1f96081047203ff7ee5318b5568a64aa107396f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.111.tgz","fileCount":612,"unpackedSize":3540944,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDa9rRTxOskUhn38P9Vj793rK8Ww4jSZE8OQFpgwIrsWgIhAKvB4jsDwePYml9IHPaD3ayisQW3CeTzzsCtCxiYUNaZ"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.111_1632702978893_0.5863674509407291"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.112":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.32.0","@typescript-eslint/parser":"^4.32.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.2","jest-junit":"^12","jsii":"^1.34.0","jsii-diff":"^1.34.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.34.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.31","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.112","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.112.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.112","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-YorPxkwBGQowSSiTls/uLKR6+ldsMV/Gh3DA7zVS+04O0PGWAXcJw6/vXhTg9GyS0dtx1QHgBt4aThshHDQvkA==","shasum":"025a81b5da95ab64517e211a973065be6b39f286","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.112.tgz","fileCount":612,"unpackedSize":3540944,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC3ZYrFlcWZCQ3M+qQx4iWTtrPm92WZmqq+pBbK1UFTEAiA1GoQX2miAIJ0lqbjL1cIBl88Y4DfhCZd2euKSXBVHyg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.112_1632789482110_0.5785882751172378"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.113":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.32.0","@typescript-eslint/parser":"^4.32.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.3","jest-junit":"^12","jsii":"^1.35.0","jsii-diff":"^1.35.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.35.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.33","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.113","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.113.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.113","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-py0ia3lLyIuD9NEAV7TLMP5AH3suun5zCsFurhU2rp7qEujIew+0ON0fzrhMqZDErWiPEozYsFFJoIJtZrG82g==","shasum":"9b7551dc09189393e3a5218e872bb32b3e13147f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.113.tgz","fileCount":612,"unpackedSize":3540944,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICqaC2cDFTzy8ppbN5oizYq2LWPqJirTXWak3c/cgzTKAiEAtx+stwEdPBO+ii8ziKa/RkrDBeVlnvYjjGmrFXvu0ig="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.113_1632875820046_0.8540870071854518"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.114":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.32.0","@typescript-eslint/parser":"^4.32.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.35.0","jsii-diff":"^1.35.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.35.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.33","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.114","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.114.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.114","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-1XsfmhL+JkO/1CUAZzyr2ngVcusz5wqOh5EidiY+yWqoLQr5nCH6NQmkRWdmY2OAFiDN0Y4apaA8BswCHMBGug==","shasum":"434d87e7e0514af36c28f7a8c6121dbc75bd1996","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.114.tgz","fileCount":612,"unpackedSize":3541615,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD1rq+fJs6FfUTWTy5lkN1/vQB+yVR5M1GBxnTPq5UugQIgIzCc6wdfvx15bxPGwlNstz6kKspCgS831w9UaGA2n5A="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.114_1632962172819_0.9563592158568259"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.115":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.32.0","@typescript-eslint/parser":"^4.32.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.35.0","jsii-diff":"^1.35.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.35.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.33","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.115","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.115.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.115","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-IdAUwIeP3pymNeu41KYXW+VSF0VsmUt9fzlqHkVp4T+Ituoo9Wko1tDbyzjlpBzLsb06HpD0m5jiILHA5vB7/Q==","shasum":"0441caa364838b52dfe6940b0012221f5641e8d6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.115.tgz","fileCount":612,"unpackedSize":3541615,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCudUqYUH85kEUakTky+iYDm4Glst/tJHoba4qLQELBhAIgB8ZQnwVhe7vgfy4RVy9FhFm/+QHEWnfG74xnVlNVM8I="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.115_1633048479096_0.9164079338249038"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.116":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.32.0","@typescript-eslint/parser":"^4.32.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.35.0","jsii-diff":"^1.35.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.35.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.28.33","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.116","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"trim-newlines":"3.0.1"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.116.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.116","_nodeVersion":"14.17.5","_npmVersion":"6.14.14","dist":{"integrity":"sha512-mPx5I4gBAqv4lW0np+3liKmNukKkFNBaf9ElJimKWBWcSgs1fHkdHHu0XcCIL2JcMMvmOkLmaw+8HFoayIFhQg==","shasum":"0d98463cf4dbf92f0d13e039712ccc7548559b6b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.116.tgz","fileCount":612,"unpackedSize":3541615,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIRkFbmFg5WyxbcjXe3FKxuehTI07I+bY1kIvUWIp9dwIgQ1Jl02o8kjbC3DQzPiE/Mw2o9HuusZSw1hqt55kS+LM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.116_1633135097441_0.6348812584875518"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.117":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.37.0","jsii-diff":"^1.37.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.37.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.10","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.117","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.117.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.117","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-EvUBPKYRLZJ2fsGq3UsCQ4p3qSNqXmSAXCMRYrd0cACSFiSvHqDxexnL4J5QaJ2f+D5S6jo9Jkodiy1UWpGs+g==","shasum":"a1a047acaaa8e19856a27fb23ebfb8a99a08da7c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.117.tgz","fileCount":612,"unpackedSize":3551466,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAl3M8b5tBJkYWOaLbf6+1voHa19vNVKvvcycPpo/4nSAiBueRrwUrBvP3IhFtWh2JeuRyiZmQpN9N4f18ia8YPSJg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.117_1633546413954_0.7316323296999174"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.118":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.37.0","jsii-diff":"^1.37.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.37.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.10","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.118","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.118.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.118","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-G+MfaM1OkLR7h9Blj1734Hwr1afZufogQvDlLsRK8IRbjVTbnhyUmJd4M/A3rmJJDVOVhHY6ps0j30RS4vmCbA==","shasum":"7dacfa9ad581e22fc72390f3d11cedf986f3f808","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.118.tgz","fileCount":612,"unpackedSize":3551466,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA1H4DbHMfJZ7dnErbjudrJ1llTq8P/S3ulKZfWszPb/AiB+b69a6NumdcboF7iXkoWHAEpX1+NSabs25sUkko96Yg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.118_1633566508609_0.29819416821111"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.119":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.37.0","jsii-diff":"^1.37.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.37.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.10","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.119","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.119.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.119","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-LBtt3q7+92d9liVAKrSGnV3HYtE3+uMOYzlnm7Xa9qbfyrDhg5fABsV8YF/OzdyhpiSfXSAK8RccpIoT8MC/yQ==","shasum":"c1a5d44cfedc306677e7a2732777ba61138da9e7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.119.tgz","fileCount":612,"unpackedSize":3476438,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGaQKaSBJmUjun5JHvYfvkQoGGQja0WApgR6uAK+fTEqAiEAwzSimRjGsytgiTtPz6dCajbFjWRpicrN0dC1dr8nb9s="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.119_1633568219355_0.22660225972632797"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.120":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.11","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.120","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.120.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.120","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ad03T+V9Bux4vo3Dr/yxo7vF+gmsKewMdOAnttx4dNt+GVcRm5XImt72bup8TYGA4nok+0Enpbym+GMjTaozSQ==","shasum":"f455b87eaa0f26356dfef4a80d38520b8f89a35f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.120.tgz","fileCount":612,"unpackedSize":3476438,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGN5siFy+CxpN/pS0CKZKx6CMkn7+wSusP4udkI0BOuuAiEA3tbwZTyoC6/nIyRyCqaLqOyRxmylIt5ZN/2T6rPe7Pw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.120_1633652874803_0.6704976410866552"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.121":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.11","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.121","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.121.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.121","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-YQ72KPwFlUZVvghNdMTkitzzfBpB9V9yGRY6z3RQ/CsBM1pKwbLwJvg9mT5bHNie9gDOYGLZpIzzIjTnWTZopw==","shasum":"b5b09a897561adec62465254c83bed91a1eba4aa","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.121.tgz","fileCount":612,"unpackedSize":3476438,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDTNyplZMVyUt5wan2Pl9Wgd9/Cw7SLbXSeqiM2MlGZDwIgHgyD4IfpoynFqVsdSoDEV59jeeB0bjBWavVqqjCANHY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.121_1633700856642_0.47590842493721164"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.122":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.4","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.11","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.122","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.122.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.122","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jBXg2EFY6pO9bTTObZkIoytaEIw8Gx0pE/UBA8pahen9SIqVpJIIycJagoqwAOHO7COxOSEZGO1Cqh8mTIp3xw==","shasum":"41956b7761a1ea710fe0d0103c42aefe83594014","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.122.tgz","fileCount":612,"unpackedSize":3503424,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBuBVHt95jlc9G+hcfEHaV4DbHVb36w1ZPm6pTd5vA4bAiAm/jAChR1q3iSD3F/4SxZWGk/k4XTcOlrSO/aUOXDbCQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.122_1633724892687_0.2145880058497751"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.123":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.13","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.123","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.123.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.123","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/j/KGh738z284EEmM+bIUoO0JHoGNYFV0Moht+h0iA/6wgXOHiAgduFQvsI71xNGeyCnJnysPLL1zF3p9jBzZw==","shasum":"eb7f963771e096877866de32160d3c513097e37b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.123.tgz","fileCount":612,"unpackedSize":3511885,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDyTz/UCpyRJmAIn0hV8bUNf0ysOpFmniuVOLBPZSAnFAiANdLYelQZ3P/eyrr5eaWfXLMo9VxJzcVeJIxsWx5lvDQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.123_1633739145101_0.11725412183658124"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.124":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.14","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.124","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.124.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.124","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-udZV9D81N/vFR2hrCJzOdM65jfCiQg33ptdFzuZQFHuFEyCWGszkptlprqro2ygYFTXOiSTzMwSu2bS1dPoqcw==","shasum":"2be7155811634c90b9105ea931fd9bf0ce8a2a7f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.124.tgz","fileCount":612,"unpackedSize":3511885,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC4Bzb15qpqycnUAjS0eSXGmnntZtj+CproziU8nIPXZAIgKOu9YdK3oPEjCptsdA/daBHp+IfqhTmpdQAr3x84EPM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.124_1633825533043_0.04807093606968804"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.125":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.29.17","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.125","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.jest.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.125.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.125","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-mXADUTKmXuG4Y5ER5iBZa2AjaM6BOYI+TpVjIEqAb2p4tnHKDvzF9tzMPSYoaWYFoXAyJ6cOUPPp7Qhf83wBag==","shasum":"21a77853c6c79fd8d0be8a10078a307dbbe46b68","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.125.tgz","fileCount":612,"unpackedSize":3511885,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxpT2RxLlVQ4WufTsG0qIQNT2ZBiFprJO7SdJ5UxcWsQIga/OPLOlMLdCPgGL9qh/tgMpn1QO9torB8wwGpqaZlgw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.125_1633912026944_0.29465275321786444"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.126":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.24.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.38.0","jsii-diff":"^1.38.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.38.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.126","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.126.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.126","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-fATeKD7ff70k7hATO9xb40n9M+OKYkV2Vd05mvf7QTa2abtmLBKVNkQL4qKuCGBwaUl6CsvIqs5fCe/fibThgA==","shasum":"4cad2fc6fa82ec81233262f59a3251f5b9027a76","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.126.tgz","fileCount":612,"unpackedSize":3511828,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHz2TS1z2+Kh4Pl/eLzGzNMQMDWaOvZdfRfW+njsTyrTAiBw59gwRJsrHV++PufvMPQ5gTXLFXg6I+1rEOgSTrEczQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.126_1633998683124_0.7227237408140152"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.127":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.127","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.127.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.127","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-b/L9U6lVKM61iI6tmkja/BCDw9ILChFTZbXoAFTBbbMCTmAgGwAOihT4o6/3qnNCwhi3zBOuKtAvNzHimJ87Hg==","shasum":"a4eea212bdcbe2b6c8d95ca5ae0fb957a3e1e8ad","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.127.tgz","fileCount":612,"unpackedSize":3512215,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEoFzRrK7miadkCt3n4i6ne57S/sF0bImutDtxsVUtG0AiEA2VGx94T8HHdx74N+eMXT3oAVn1aMdRPQoVoWuH/iwNc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.127_1634084873580_0.22892317238389093"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.128":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.128","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.128.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.128","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-2w44vB6e+TQbDuHg4vvypPPgv7xP4oPpVi757B5fLe9XdIFDCP8vIAhpifB9XNU+AhM9YcnjUim5RFoTrC3ohQ==","shasum":"3f64a4421e6565056a6c19186b131d90a15ac3ef","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.128.tgz","fileCount":612,"unpackedSize":3512215,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDLSbPME3LTFeaCjmRimywUw94NnOe6p9lUqL1SuE13BAIgf2716tj8LGkLFYF6HaST/RrhVsTqVmG2eEepw5RjDEQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.128_1634171083887_0.9277578123369772"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.129":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.0","standard-version":"^9","ts-jest":"^27.0.5","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.129","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.129.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.129","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-qy2075lSb72ltUOZjfuKacHvtP22h4koYSj2iUYHPj9mw5qXoNq1xBrVV+VOM9en4ed5CU3JG0yWBN03jAlgEw==","shasum":"c6adaf48d2c1b83f97050a3d006d5838b72f1708","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.129.tgz","fileCount":614,"unpackedSize":3436698,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPU9wlJWasa1gM5QrA8x4irxDl4tl/sowgAUw6Nhi3zAIgOuOdvN7lMTAeep5eKxwe35RaqHM2Gv1C/x/k0rhq3iI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.129_1634229417006_0.21095510918276839"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.130":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.2","standard-version":"^9","ts-jest":"^27.0.6","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.130","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.130.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.130","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-9z6VMh9r+JbQXhkLnaZJNDPiLzLK2cyO+A9fSd3uo30f3t/zJ8L2p3AGnYvNzZvSfYLEVtIacpfZoMtEPy4ALg==","shasum":"c993a0d4ebe8cdbc51287b289106a81d26ac22b2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.130.tgz","fileCount":614,"unpackedSize":3436543,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCIkNQnpwrxWVnl5ufsifHaca0/B6Xj+FVHjXW1wCt9eAIhAL6IvDem2dUo7xziXomSeWM63kolN1uUU6gqTYqOha+C"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.130_1634258254189_0.3248667113303576"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.131":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.2","standard-version":"^9","ts-jest":"^27.0.6","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.131","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.131.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.131","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-kAviz9DCzz+RBM6ReaX46DhHT1Nd8DoI88fdC1eimbH5Q2KZK9CM7b2vJRzUMAiF9G7M6qMLwxhS3KGSyOt40A==","shasum":"820a8dc10c171880fa1eecbeab5c124511d0acb8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.131.tgz","fileCount":614,"unpackedSize":3443806,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCusFWR0pU3AvDF5DdrBn2MI/pm9fX4n9vC70gGXMDM/AIgCX7mJ+AY2YihP1vSkHzHT/eksuuf0WgGajoUn5qAll0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.131_1634318275191_0.5132833604265385"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.0.132":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.2","standard-version":"^9","ts-jest":"^27.0.6","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.0.132","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.0.132.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.0.132","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Vyk+jhjQGt7fmLckEe9O1uccgiaSQJzwqcOuCmpSOcmwJnvzkVpEkleVv+SAmPW225AQVofoDm1jCe6u8vzEbw==","shasum":"d410ae85c1d14b8378e0a7a56552294ce38c12a5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.0.132.tgz","fileCount":614,"unpackedSize":3442356,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICEHPp8yb/iewSOIjGUT+E4pIbmz2npxk+b4E88FQ3lfAiEA1ncZhYW/yXMHJz9w5eRcg8Fk46VEG+S6fKt7Uh+8he0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.0.132_1634321839614_0.48354759014443793"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.2","standard-version":"^9","ts-jest":"^27.0.6","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.0","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0OVyblc8K14IdcS6DA5zKzp/1QKJK2BzNhwuS0p589cIhzF6qHjZEQkTD208i9W9Sr9JDuVyavuLc0W04LxkPA==","shasum":"f02d659637142f735dedc5be435983fa0d801da0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.0.tgz","fileCount":614,"unpackedSize":3445111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC/9L0f4mNWpqre5JpZyysnlbI49E5sE/vlV3FOV/FBoAiEAk+is69L3EjbCKXuqR0WJp+2mnJoQIAsbVoCqlWROvuI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.0_1634328030029_0.23765884842995977"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.2","standard-version":"^9","ts-jest":"^27.0.6","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.1.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.1","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-NhRDDP781mr0RiZreHL1RndHkIFDNK9DUyjCFGKMzMgSzaY/ixH+81Iv71gBDshZs70a+/Wi74fCOaqsFvMXCA==","shasum":"e831c17f09c94e99b0d12f1fd753801e305bc96a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.1.tgz","fileCount":614,"unpackedSize":3445111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID65we2b/YFoIF+juqk9285UOebT5noBUjEY1XoFVt9uAiAJJMEsCoZ57jqWSlvah3uFCyQGtdHY+GNiDgJRv11LOg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.1_1634344100675_0.42201276017335276"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.2.5","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.3","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.2.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.2","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-dp/af36HJ0UQKWMjhk4Nyx4wGaqCHaBue4bTUSTcJjueUIWTsbat+tVqVLBAYjk5UKq2tpt+D5TVhPUA/s3cGA==","shasum":"13352c6fd0f88ca306d7802b069a2f54632d6728","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.2.tgz","fileCount":614,"unpackedSize":3445111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHAXUO9s7zaMMLgWNS6X43YDmvODUSg3+upANrpyXLahAiA8QdnzwV7ssNopsYFikXBQyYb0Jh4X4IScdED2U9P2RA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.2_1634430498133_0.97057366781314"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.0","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.3","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.3.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.3","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jlhFYAc5Ot/yGCjUclRwaV3Qcy36t52Ict2uP2QOrSP7Wd8QKpzH48PVWVk/g/S3U7xfQV3YkW7at3AtwdJ6+w==","shasum":"8f7712e1895d9e30b5dfe142edeadb6f7fbf097b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.3.tgz","fileCount":614,"unpackedSize":3445111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB1/PWoGR/hqzz2+LvHIpAlOfZxP6crg/mGN6m5mciwvAiA8n8rURNct3FguYPfQFv6JV29gclB2QghVk4XNcKLjFw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.3_1634517098084_0.08051968869782744"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test:compile":"npx projen test:compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.0","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.30.3","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.4.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.4","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-lGIJJ8b8ys30MV5DiJEhQUjrCOhIBdgl3u2/FsBQorAMc+jWqIDyS0mKdEKS3964Y/BpyoWsKgKwFJ4nrnRH3g==","shasum":"ffd73ec131ea9e644377bfe90979de9babac8e53","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.4.tgz","fileCount":614,"unpackedSize":3445111,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZ4FktSWjCiBkww0nbuFBw4C6f1iEh/nNerlz/cjXonAiEAvPwZOu6nEmyGVRhtT46DqzMkZ1/fkDdkFyZIoxIEpfs="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.4_1634603083685_0.4490016296545858"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.39.0","jsii-diff":"^1.39.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.39.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.5.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.5","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-hcxe0LDjxnN9KstntU0s1nEWDIEP/uuw2x5m3TNgX3y874SUsO/HYz4x7wndSII7zi8CN4TpuI2qOm3lh340PA==","shasum":"411680122b956f969636e4bfd428d844f79155d0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.5.tgz","fileCount":614,"unpackedSize":3445064,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDtiht/E3r7Pe4ocsUyVmu5ZyAyI+MEHd5SShr96FsEWwIgMFqO7M4C4RWw8d7dVTijc7hsDEEuDHgdgdFHWDVea54="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.5_1634689573767_0.85682584042722"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.4","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.6.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.6","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-h8lZZ1b1PiCdX+d/+d94qgss9XkuBpnhpJ9qc8kkxExjpDXlRtdvk0kKtblKDB+DCUI+cKHrUZbaLLeyM2kuLA==","shasum":"2b5832454816d42035a3338fb0463289f83d274d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.6.tgz","fileCount":614,"unpackedSize":3444964,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCNA1Bvi1+la+Zgf8cw6pDhIEZohXzFP+Op2JoZ8ST/DwIhAPcxXHApQv+di8kKeJHnIxuZjSQPApk5xABQKze0ouK4"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.6_1634776111289_0.32831395860855594"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.4","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.7.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.7","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jKChiDZ4T1loM9RTenRYZe6f7zUWFI2gc0BYONr9pphwSrpslyYIpyEc/nXntEjeUwyIwpSY+jjCbMZp9NcSGQ==","shasum":"990e3d02eafda2fa97a7a688c40fa66df9b986cc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.7.tgz","fileCount":802,"unpackedSize":4119759,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHeza6QwHaKTOuNJRHvhH6y1jzl7UDkJ9I+CgeQSk1CKAiEAu6nyr2QAI2Jq66B8LVy990X2Bk0eQAQ9LJOFpZQmIUg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.7_1634839474499_0.36255444388648606"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.110.0","@monocdk-experiment/assert":"^1.110.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.6","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.110.0"},"dependencies":{"monocdk":"^1.110.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.8.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.8","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Gz2SizO8Wfo5QlvTFKzrxEoZtKmrCnhai3cXQcOb7Ah9iqsJFZfo9/QuQST4TzRSJwVFh85E5WBw+9FTpAOfKw==","shasum":"f13d6ecdd0b32d680645332504d444a30d549b9f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.8.tgz","fileCount":802,"unpackedSize":4131524,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDsSutQKsGtdWOlagonLLwA4qwxkn51++J7hDOMPUpFSwIgVE4kA64h9VLfDP4/93aQOVH6adBecPdN/MSNkueeqnI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.8_1634862575606_0.03881327413223534"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.9":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.6","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.9","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.9.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.9","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Yyqp1skvyDcaCfCKHdm2AtyICtYa+Rb56Ro/d1/boOQljzqnqgNQN7MtR/GPX/aKm+edzmgfP2RHc5x4HERM3g==","shasum":"f75fe611a73a3998217bd3a480efce0f420b8cf2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.9.tgz","fileCount":802,"unpackedSize":4137497,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFv6UiCvXwTpYLY+chkYWU4K2JJw1xde9jevIT0DW9FHAiAQDHR4IaNvcIV/UgR/rIVMTbjjUnVTJqsUOujcqcKCUg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.9_1635184617548_0.30910729248010327"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.10":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.12","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.10","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.10.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.10","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-iCHeCWY6v39XuzX14w1BOV1bwsDR4gxNoDNE0rcDJ1TfGR/tlzTQ03L5n3cA9falG4L2/2GwjKBL6Zqlfx8Yyg==","shasum":"e0ac8db4a4bc3e2865c78b7280d06843b2539707","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.10.tgz","fileCount":802,"unpackedSize":4137506,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICX6yWZhn/PLilf3w40cRE65WTPMd3ms0T7oXqOsidxIAiAG6ZfVVt863fP7FTtYu9SN18rRB/eneBSCpyZBypS+iQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.10_1635208171147_0.7511517135122936"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.11":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.12","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.11","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.11.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.11","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nGExKdqoWYAprVARR8EFDHamfd/30Rf0XGX8TjNECGdIDJxfoGNy/WpPqbCuwVZrvK0rB4BaL3sgbcnGqv5Oag==","shasum":"5b2c617736a653a15167dc29ee0c828cef0e0f61","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.11.tgz","fileCount":960,"unpackedSize":4605984,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICxyOIRmUz1KcI+C1FQyuFDtO5knLNvrJ/xW6EUzpgUnAiAouxRoS8B5IEYWTZ+ZSF6RTeBuqDO3SoOzJX4PCGKKlQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.11_1635279823594_0.5809281208006924"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.12":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.40.0","jsii-diff":"^1.40.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.40.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.13","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.12","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.12.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.12","_nodeVersion":"14.18.0","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wB3cK0XMfBqhrypfFf0UzKteRAAm27O6KEngu+76eERsCd0X5dh6u7OstqougJ97JqvmEUzJXGpO2XAZ5rPPfA==","shasum":"156a6d706fa426187e0bb16b893ce0042ee533c6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.12.tgz","fileCount":960,"unpackedSize":4605984,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2druAhMDKpsQkYV9lN54iVf4v9WmcNqQWR6soUJoIIAIhAKdCYp4OarGMuX6JXmXcaZ+5IEnXaK++DMK3UqB2ySVj"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.12_1635295175729_0.723508075567135"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.13":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.14","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.13","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.13.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.13","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-fIAOXQWLmBxHUn+a+50GJgDbS0tf+Jb55fIMBzCiWCLRml8hxFmR7rRkKcbUkp6o1GEWAdg4gj2clA9TBsM4Rw==","shasum":"c51a04e7d55373e6dac22d4ba5faf68fba3c72e3","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.13.tgz","fileCount":960,"unpackedSize":4605984,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIA3zwaHGFItOQnRFPyJk3Nq+gzCizSzdwjSQYFSUij5UAiA/cbD9T06Z1y+enkH1Vnxut6JvjMOq+i1KOS9WZXhEYw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.13_1635381483265_0.2730265351759058"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.14":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.15","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.14","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.14.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.14","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Ep4t7R0CQHZX/l2XFi83mecqlEOAbvo9qKf5NzP5pL5XR3yPjO4Nt9ofXeCim3TGwBh7InFold2mSSCdsqMw0g==","shasum":"8f525f7b925e2b4de3013143fdc2e4986f5770d1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.14.tgz","fileCount":960,"unpackedSize":4605984,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGrH+3gzZKJOpNyxyjCGv8laRGqC6Bl4EmSiSyrD2shkAiEA3RiCwrMRmolYHJw+B+hsdsgN6j6hJprPsEDZDBwOXFo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.14_1635467681825_0.37385403268595585"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.15":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.15","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.15","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.15.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.15","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-kgTsfAoqA6as/I6Shp2VjqdCk3lA1YG3PsUBWpG+jOni0CQgWQLuIn9Gf5C61JfF4sT2lKJwM8CzuvxuLeS/LQ==","shasum":"153ed12c2f66a099ca76b4e83fb1dab04bef7c84","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.15.tgz","fileCount":986,"unpackedSize":4700241,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzhY8QbD+xUg+kt6J99WvR64fO1KFeiR3+VGxp2sGnoAiEA8TVQF7J4E3VvuZhtu4zBDfiDdQ5SKrINE7DGB2mcUaU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.15_1635534984580_0.1817081227800772"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.16":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.16","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.16","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.16.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.16","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-td6bg/VSPxgP+Z9XziuY+IlM3zJzSU7OYre+XZ3g8jHQCg6H5e/uw7knCajxq/oGVWGliMuN+WFQOg3/rJNJVg==","shasum":"de9743390a20b978725a518eddbceb5059f1afe0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.16.tgz","fileCount":986,"unpackedSize":4718478,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9Qc4dmPWl1hXMcsOEOYiPVSh7+/jK8AobOX/6j3zD6QIhANNRda1w8U8Jyur2HETBagLGWo+pm55isjxULVkFf9os"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.16_1635554134342_0.2206860231344323"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.17":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.17","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.17","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.17.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.17","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-JKNgMTppGK76HYnXlybvfJDm0GE0bqm7rkXwkq+NARziOqpmHQnCNrzf9fbelPd4KTZRFZoJI3UdfYoCjjz8zw==","shasum":"a5b11630b01d4388f298342d4cf4255e4c89b3e5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.17.tgz","fileCount":986,"unpackedSize":4718478,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCt+SsHaLa9OipVaZnaqgB8jVtBMgRnbpMiHpBjpHEMXAIgeVPjscga2w5mcjmPNu9TbqIMqzf5Q1+hoj9QCwTxVJg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.17_1635640617485_0.7880915841050824"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.18":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.31.19","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.18","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.18.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.18","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Kfcan343GLL5RikNkDJn25S2TL2Gp0JVqCsFDAd+snI6kXNXIuXjpRalkjFavysqKMDtP+YKpRjRWb2Ddd0yVw==","shasum":"b7c23be80c14af0549b9872e0e512e9acc3e1090","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.18.tgz","fileCount":986,"unpackedSize":4718478,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDR+W53TbBU5qqqjD0rk5fDhV3ObQvc11fO2cR1YN8ppQIhAMc2hXN9M0h7cn9shU9kS9SHQVzOp8cf+28PwOpEKXHF"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.18_1635726961223_0.6321630145537693"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.19":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.41.0","jsii-diff":"^1.41.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.41.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.1","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.19","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.19.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.19","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-TiP0lzsNaRy88dIdNiYGy0RPju5BOefemPk2L9IbmMCWTqVjJWLNprp4b31WNiVvz1MmXzN3WS4nM0hKkI9zQg==","shasum":"7490159a16635800bc010e362b8069411321267a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.19.tgz","fileCount":986,"unpackedSize":4723700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAfCyyAuyL9CdfYN1tdOPfUmc5wfU7ztIBIcVvK1bPq9AiAIHadkPbA57hhyOlBuzdyaXlhzb14YjmgW76fgbxjmvw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.19_1635813324642_0.22990185662662666"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.20":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"clobber":"npx projen clobber","compile":"npx projen compile","test":"npx projen test","build":"npx projen build","test:watch":"npx projen test:watch","test:update":"npx projen test:update","bump":"npx projen bump","unbump":"npx projen unbump","publish:github":"npx projen publish:github","default":"npx projen default","watch":"npx projen watch","package":"npx projen package","eslint":"npx projen eslint","compat":"npx projen compat","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","docgen":"npx projen docgen","release":"npx projen release","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.3","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.20","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.20.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.20","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-lNHMoJXm1Cv8se6OuncJjlUaQgcneMnjW49uqMjPr6D8dgkvZ867pQfSzCg6Tg0QPnEUlL1IIbGPM2CpcIeJ6Q==","shasum":"216f7b78f0f6a0874b5ad00447b1cff4dac4f025","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.20.tgz","fileCount":986,"unpackedSize":4723700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEro8b+ItT4eZJRkDCe/13PflOfpaoQy2ACw967jkJeLAiEA/4yErtP08K4At131G7Tec8uGDUXMMDI37jgn/3Yu6ms="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.20_1635899709638_0.2698170227024945"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.21":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.5","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.21","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.21.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.21","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-+yp7WGzZAFAkArf4QmmbmyiVzPGmFqpTBWzw8bt8diQkQ12yI+cBdeFvnA2R5gDUeYYui8BevalFiEOGT93Krg==","shasum":"dfbb44ecaf427c7a42690eff558c2e48bf91c725","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.21.tgz","fileCount":986,"unpackedSize":4723700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEBo3RKF8L4+625teoTk2T8p37KqS6cj/H/0iaGsGE5DAiAa/O4eheSoxTFvai25fARnP4F3+RFBGXI9+b8iKWS4AQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.21_1635986041887_0.3651160916054603"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.22":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.6","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.22","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.22.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.22","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-p9/TBekn8q2l+5QLADYXr9dyIR9L+In5sCfDG2RQdtRI7hChAfWaK795XN1EAjxTKtzUwsyn18/jHVcjr7iUMg==","shasum":"2176d63acec4e818eff9e7d8cb37dbeb5a376338","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.22.tgz","fileCount":986,"unpackedSize":4723700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDDWvmt0P7hztwVrOkBuHiPzCTKC+adXZnNLWUd72/8JAIgSrqky9w98wHIJIQAJ1V7AWpKfC6Jk6hM2pcdvavFTBI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.22_1636072596575_0.47363412929097226"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.23":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.8","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.23","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.23.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.23","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0gvaPZxB+NWJY+EPzoyycwqhmVyrWRq7KQyzqIzWiMA6idb64EnY7cxlbzO0mX6MlIV8Cdyn+8rDpeipMDuNQg==","shasum":"ee9daff722256e181da59e75a1ca3e6b75d768a6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.23.tgz","fileCount":986,"unpackedSize":4723700,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHmuAzUadCyi6kCQudYGD9jxNIuiA6us2vqkoN1F+ErAAiEA5CUC5T9w/DP/4BobVmrjRPql4uFXUzFzo+bRQUwpL3M="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.23_1636159047670_0.7257347007363053"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.24":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.8","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.24","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.24.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.24","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-faNUiO5xWdXmMGAXkTLkElPmpjj+EpxCBCGzwW+jRY7IZwuPWLq69L3wXH+IFwpgMIbxlE6xgXy2IYlIo4xeOA==","shasum":"1c6658bfd3b12a49be867d1118871db81b564c51","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.24.tgz","fileCount":1092,"unpackedSize":5168621,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDleJw1EE2I0C39P3c7R67LpX8aiJUpQV8/AehTo6A8tQIhAPqB5g+eLhtJRqoZQsmQ4Cxeah0JxH5ADuk0Ke0hGtda"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.24_1636224522997_0.7804125991036059"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.25":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.9","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.25","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.25.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.25","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-P61FzdRgg/jDjSY59rLh/a2ilFX/ebWLmwI+I4SDJEGfXDvbqDZoCZtmAiRorNNH31S4/bakiCIVwhr+fDsegQ==","shasum":"6949357e22f4aba5839fed0a36c673df243ae29e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.25.tgz","fileCount":1092,"unpackedSize":5168621,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGVZx3PPR49oZQhokD96xXYkSaZEKShp9pTE3BA4GZJKAiEA9OeGSq84XYydU1eWWuUGbrlgteBKkjmpUkKKlRKHfDQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.25_1636245370486_0.2948964700517114"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.26":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.32.9","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.26","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.26.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.26","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-rneh950SpcAm9opu4RgwT9NrMj55vmOlZigP7pUcwETV5WxV07WfbN0WgcN4C8PuhQHgAi5jpSJq/wKl+dTxQA==","shasum":"dca47f9ce8405044db3eac3d0713d59f9d0f3cbc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.26.tgz","fileCount":1092,"unpackedSize":5180305,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICsRxXE6m2VzbyO7kegY3NyzzR2zLhWCAnO2xBCK6g4HAiBtExmbj+2Xa/iWVrCp0cU0693V5H2+Qw52vfH8rz8F5g=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.26_1636309798327_0.916633949216856"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.27":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.33.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.27","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.27.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.27","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-c7iUhaGgEefX5jgYyNO8pEzYzYZzVYDwCHS+8Jn+n/Zq+IA75uLt22hZrwejFLzmTYk6rh2JWbEmIuyTFj+J4w==","shasum":"8921772810e72193d57cf86aa689811bb52981ca","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.27.tgz","fileCount":1092,"unpackedSize":5192457,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUWZ5R6eCIbqkbV6sBmdR5VEHe/jnkTLzpLbEo3JMQuwIhANGqlc4PCveOJbPw1EEa0WAZ4+tXzdEZ0GR0RuS3YYIM"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.27_1636332015613_0.9782656226010462"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.28":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.42.0","jsii-diff":"^1.42.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.42.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.33.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.28","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.28.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.28","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-uWGn/6M/nYvOR/Z7gp0eixXbST8VGuDaGAkmSTEPw6tzmgj5Jp6j2zevlcbrL9gWWNDUe0Am7ZjxMsI8eMmB8w==","shasum":"6e8fd11bc5e2375692cde0e805dd9b31724c8304","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.28.tgz","fileCount":1092,"unpackedSize":5193027,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCe8xWsyboquCqdoWWD2JQu0gQGTB1PkX5iBJF+cKydgAIhAKdSwFxrhf41GoXUw3njUHEGGZVJk1dZ6FQBhJzQ8hwh"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.28_1636386566033_0.7127419112605704"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.29":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.33.1","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.29","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.29.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.29","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-wUha6n+0/udklWwmU1gjjs326euRQooUXz4vEYeHoFoMokVoc5oIB/jENX+zX2FXJg71vzGBAEg6vrI5G+F/+A==","shasum":"d5e2053df174d4f5d57a9556e29fdb1558c1fcdd","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.29.tgz","fileCount":1092,"unpackedSize":5193114,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIChMD2hDT/j9Q7tvrOcYuMTyfBt9+GlYnPrR8dCHahvxAiEAjREegVya+24BT3yIFnhTYUm5cN6bFcd0/FPUaJ6c+Sw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.29_1636418412297_0.05870982216881715"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.30":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.3.0","npm-check-updates":"^11","projen":"^0.33.1","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.30","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.30.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.30","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-WDI4kxTueM1r/L7w4dcmewSuMWy9a9+CGQr5xoVF2SwfkKzRRhdNOP/axcCn2m1afNxxNBtytNLK8L0XO5ERaA==","shasum":"c5bfbcc8df36705313e82397fd6384ce40911684","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.30.tgz","fileCount":1092,"unpackedSize":5201874,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCO+fcDSrtvkKQQxZEe7NGnoZOCS7oqqzhKDYg2xrHhjgIgO/uLFdd3SKU4/nIo8q7R2GFdhfryDu5gIMqV3Mc/2tY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.30_1636501215541_0.31355673812433005"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.31":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.2","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.31","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.31.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.31","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Wylw/M71aQ1pf3IfOrAbV0sWs0aREBQUkrlCwMWCCYsBsIRIvvN8iPaKznD7kqk0xKgd7U2yavIZPJWM8QJ1+A==","shasum":"4765e44e5045c7e4aa578deb8b452a5c500e99e0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.31.tgz","fileCount":1092,"unpackedSize":5201874,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCV/zLTJ3nDDdh2YK038OiXwdEKlzp+dqyjxNXxgzJtQAIhAPsxhG8qtp7NPU3poGfr45tr9C/WIohAGgNO2D3DLpHd"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.31_1636504900913_0.17204521810384032"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.32":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.2","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.2","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.32","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.32.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.32","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-S8u5uByS++I0vNa0jDK0qC0qPdvQWGg6wRFFuHUpF0ddULwwcHCwLUrqQz4456y1A2692sP8PuJt2HreeoUoag==","shasum":"1becbd68ebf34477835826e27e0785c2226acda4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.32.tgz","fileCount":1092,"unpackedSize":5218642,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCs1FiOG00Vo4pdLGhNQ5PwAs0nqLDM3HfCMyH+CvxplQIgC2lnJaqPnBJ1lCtliWA024UwSMUMoyO+15afC3kJ/ZU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.32_1636565242895_0.5012447529286344"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.33":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.3","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.33","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.33.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.33","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Ykrxb1JzTkuyPPLHkGC+8lTj3mQtmWlR3vmBSHjAKNnF6BAGAMKBvKE1xiSfmQUjcNeGv/971Sxa2KNxMAv5jw==","shasum":"f7ba146192839154b9ca8055b6c0c232c4bbf9d0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.33.tgz","fileCount":1092,"unpackedSize":5218642,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHtrYPGc3gZ6PvKykbeCgfLpOi7BzHu+vDcjhd1ogPVhAiBvxvz4IoqDmMY9cXItwfEx/nzfGef3KvxRKW+29ow1OA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.33_1636591646799_0.8966291726798994"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.34":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.4","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.34","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.34.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.34","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-rVi7ix5NjfJNdwbVZ4wGUPQqZDuywIqbOMnvD/8MjAX9fzHy9LrFKob3ObMURJGubEHaKR2I8HnlGO2tKLoSsA==","shasum":"8836c1c4c68144e3317452f604fbd3f33b154385","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.34.tgz","fileCount":1092,"unpackedSize":5218642,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEMCH2QI/ya6/PI+uypq0rjSmjP0hqeVGDcybxJd1f2imJcCIGQbZ7lQDlgkHMp68D9DmW/iBwCY69Ukx7Myrb4ESz+e"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.34_1636677630083_0.36253859435505453"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.35":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.6","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.35","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.35.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.35","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-TwLm2+6QJZehuijsJUZ8pcyqEQobycIC++EeH+8foRmxJ2A3cttZBg3U14Nlamfkm/PpA6YgsnMOr+bRqtl82g==","shasum":"da62e38e3934723cc6b4f09789d03101e4df1c71","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.35.tgz","fileCount":1092,"unpackedSize":5218642,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDgaj7aMrZQcgFVxPuESUNMBl7PD/13/EPJHce6MwrbuAIgARtcdzjNo43J4Es4ZL/4AEzT+aESP6LL+2h/1IQHJWc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.35_1636764179415_0.9927204461463539"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.36":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.7","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.36","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.36.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.36","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Nm4bD60DY4+Rf7GBuJZIkzGCJd/7IFxeECWqgbtdER6NN2gj3bJ1aW17GclbA5gJ+hHNWNmm8fJTtrZp3J/UTw==","shasum":"dd7430344e85ae2dc018344683d15ed3492d08bc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.36.tgz","fileCount":1092,"unpackedSize":5218642,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwy+mTi/7w4OKbawk6xTtIwRy2qZyyacdk0fSkVEmsuwIhAMbj93aZ5j23fBA2q2X5NiiMdRiOJJAOiI284vIVGPBk"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.36_1636850140800_0.4594064680804204"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.37":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.43.0","jsii-diff":"^1.43.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.43.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.33.8","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.37","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.37.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.37","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-nqF6qBXs6zfJBXgxVNSfiGYS9ZvDUBCc73a2yIHMGdg/tt7LAuiwHaGJ/Z2GSjZLPc9SuaUHOKzZ6NqiJyaRQA==","shasum":"2458c4fc1c2a3c2637d8b363c9d558d7b9b7e841","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.37.tgz","fileCount":1092,"unpackedSize":5218642,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzum3L2aiAiWu21eqB8LUmr7nFasq54UhfMHVdzF7eIgIhANm3eavGruFjQKGhe/MdbYPYnmNPjtjX7T08InB55woB"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.37_1636936889800_0.18789952149256006"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.38":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.44.0","jsii-diff":"^1.44.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.44.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.38","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.38.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.38","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-BbMWMeoi64Qlhugu9ILAkEosNZNmAj6dM8tGjVSEyOuwN9pSfsTG29ybiUk+wqM/FP4UP6cEbvWLuEDC+Jlsog==","shasum":"f98632c5c5a1b421f49763adaf08c291895e0fc1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.38.tgz","fileCount":1092,"unpackedSize":5218792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhkv6LCRA9TVsSAnZWagAAc1MP/iOocGRnjzTniftBvBIl\nZ6vm9fybrko0nDOfdaIyZ6iXhIhS/gqr19wrrnHJ+8xlClzEauV18cmaByL6\nr7GVRVkncVMgvPveSWKXk3Q4noNOKEKngjDGmjhwwdLE0lWURKZMC4kzbkl0\nUgeOqwzIEeYjciagSoV4yKgBXsGEWkgoboeh8zK3hv+/ktwcEQFEOTirtYDb\nSkFOKXWYac1NKjZhNm6aiFrwkGoO+ov0vDh/Q2BlFAenuGTDX2jKNW0n7oF3\n8VLqCzqLGbubEXufp7a1lPJ1yFe9VghqDDT1rqZb4P4OJjETWsh/67T4xAdn\njruLzNH8tcjXPpRRygUDD5MLlGQvVS+89f5OscQFCBIcDCzvc3LqQqz9xtAS\nN/lQt0OumID+QqHDSYG650C64QrvU4rbpc8nLmFMMc2g6SgdHpYd0tH2KYPT\nGU1pTqjCsyfJPBFgqBvbSn7mowh1qjovHVUg3hu5OxsSzHvYbI4A74r4N56J\nbf0g6X32vyWAIZVPDLz4El158tfJaudL1gOtHEEItE4WC5EVkFSqIr4Zpf9r\nbaft1Er4arvNlHEXVsE90Vo+v1oOPqzKkLOtVSusdNpYOrG8rXxsynRB2P+u\nemjE9bGJ8uslrm0O+nFwl5R/EgUVqYIriUEwdYv873PyxxpD4sGYH7WBiRVt\nwQBL\r\n=BVdQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCaDhgmsSpjuQf8zJmhgJXnDD09pz90T9T5a+q8OfJUDgIhAO10qFLtSWVzEdwcPWK7/YFF8k3fCeZkV6eO53B/EZvg"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.38_1637023371416_0.12572068752570087"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.1.39":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.44.1","jsii-diff":"^1.44.1","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.44.1","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.2","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.1.39","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.1.39.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.1.39","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-45pNtHXz71aY93zpq85irxMeevO1xEyBqB16Tap1hnQgEk/ZJu4TLWN1XM+sYlLw+9OntS7xQStq034onnnYZg==","shasum":"4dd26af6c11498bd60dfea0ddb8ffe8838d636b6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.1.39.tgz","fileCount":1092,"unpackedSize":5218792,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlE9YCRA9TVsSAnZWagAAEmAP/0R6b9xigl4ZoI5dZGh2\n3A+rkCAWqtY5/GKGajHHkC1T/iUBkfAPB/F/kfT+YxC3+EWm9VVX//irkDOC\nGQz5VoMnjyMl+gBSpHwRWhWqRPntFNxFX5EeX+5J17HyKGw4m38HEwuKxiUD\nV8rBkaJet85qAPhBTl6qUZ3f0CoZMsXfHV5PXG6yNRx3MfI/WU3VD5988RBi\n1Vt8xyE7tZs3NOK5v/KbiPdSa2YX+MUJfQojpeKcDh31FYWRt+l10y19kTto\nJbCeOQXWrrPdWNPgZQwyYiUBTn1Cbr5J3XWuIKsA4NJNaJpfnVObZJ2/p+ZR\najLHY+i3mqMS+dofmxYz94gT1iPD9MMo052/18fz5NYa1zXPfxxqZb9M76pm\n0LoTIe8F6g4LMsujPfAGpntClJm8bJ/+7whwhncX7G4K7Dp4/8P+SUhp7k8W\nQ313VJvnEN6aNti3gjTlQBBJhDs7TtoMJt2//UUPgsAp0go9dIluaBFQ6WrQ\nc5E9YMDC2QlXCs/pxS3rMbzC0rr86odtflwyB2wKALAw892pY46PDyQ+hzkC\nfxoeIBWrhesRuN0sPzlqPyFi0Be6GghbIgcUz/SkUKAxQUhZwmrazjv4Nzit\noH5fajwBr9qkJ1EDQLqBL73kThdYzKbkfrIqAtOxpiuXMaluXDhWS4hwqw8f\n0Rsp\r\n=/bQu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuLYcG2JKbm3a3J8l+s2pgL10nWxw1+/+s2hHp0meNhAiEA3E3R36Ivt06H0CZ/xPlvlXwvMtHgXdEcgL7mtIGvK5Q="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.1.39_1637109591918_0.3949728318518164"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.2.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.44.1","jsii-diff":"^1.44.1","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.44.1","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.2","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.4.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.2.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.2.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.2.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-3G34OuOhtO91qmU3es1KGFFtFBmO/249jHLLOFLaKwV96KvNIuh0X1sFk6eMC5EamOklZOH1YHP0c086bYDIfA==","shasum":"7bb9b66d30cc78623aec9aa9c082012680549645","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.2.0.tgz","fileCount":472,"unpackedSize":3975562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlHOXCRA9TVsSAnZWagAAwykQAJOVsiO8Pv+QeMTjV8Xa\nD/jUKHU5YH34s1dMvFwqTqOsFJ+tdzR/co1NrH3lRNZeJSL0AWDB+m8aycmW\ns4i0DjrNophC+ddwWoKvk6gU9YyMhTjyrfBBTS0qb3PK7VjmJ5HFrHGXoa/X\nUckEqswtS1/eJp3RL8oJt6Xz7hU0sva2gsVFoJ6xMOHTWliRgZdYxebUTHS1\nDVppPUju+EWAjygyfHTd3MGnME6m4UlEuMIfn3bbZo7K4zutbBf49KvtxxvF\nLHbeTwOhPpyEOaEcakaNqyXo7Kbb/g7hro0VubvxNx5QLskm5gcoU3uZ0Mci\nVo6WEAzTEcTmpnT74BMhFzuhUosW23i4R7cNPArzPAIrMya4tAEcXFRLJCaC\nablDSBHY7FwA4b+AgG36gPitxEqQTbR+mLjhVmLSFRqM9Q/NesbiVxmwHhWS\nTu3wq9WngGhNbpOuxip87H3BgPsad8Cbd+q50SXrGN03FJ2b+XdZhc9MqCi9\nNM2zvVaerVjHrZ1hHAV/a0SjU6AIOu8VMyE9oCdJErM7R1rZ0uANHBUvgv5Z\n28mq0BikreV6ZgARDjAhYzjMdknA1mPnqY0eYM5ofu872bpAuUyvRTV69CAl\nGufHV3Zc39D93DB2DVokKk1PjLqrNW/qb4EzAKPn24L/en9N2QG2UL5alTHY\n/HbG\r\n=Gc0M\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGs9qpeq826kJShYvfnsNP7JmUghZz2Cx2rRetXRtruWAiBr5as/4ubDFZUzKClBlfWqV1PCGRz3jmD/23JKiroLqA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.2.0_1637118871548_0.1476423667716913"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.2.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.44.1","jsii-diff":"^1.44.1","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.44.1","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.3","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.2.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.2.1.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.2.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Xruj/2ci60k66AVqxkaJB9wnn3ROeiAjUPsQH5QiZoSRPeVOO+FRDAv3byD36AkxIT6uozc5JE2an0yiKzoZZw==","shasum":"f0cb984324cc6e3bb8ed594e5bbe85a3b9990b5a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.2.1.tgz","fileCount":472,"unpackedSize":3975562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlZ4PCRA9TVsSAnZWagAAUzgP/32Q1zTM2dY+4U8sYfzP\n04/CfFB6pxPHp1OXyDLBELZWovwsS/xkDRBWYzISlt6Hop0W25CFaiaRevB/\nLuLHayLM42s140K9iasUnGkt4Tc7czB2J7NroIrdYw7NDnoSWbP6d0UH/Y98\ntbDzPXrAuH/he1P/HQhUI9zrMmDNOlUDMGTJvco+veGcsi/YjVDkkWVctrzY\n/Wkgb8O3iHrZJRSL1UK/0IXZX4Gx8HaMERg1lMS3sDGse8pcW9YQwBg/31yC\nNxNhvnLbGxHH0YWG5dSGU3DITKWmuMkEJkWSu00ZjTpCZ3a8eZ5CZMOSlVPz\nXc6yrfRGAUOzp8VH/BvA2Yo7exZ4H7JiAm7VtgwfdXLuDTLJwUsl95OXuaIy\nVYF0EakUKllPblb6CPtuv4uBz/6XpLOXwvpm7NFzj33TscUFkKbCCeDRJObY\n0yuT4kb7zYUueS77vRLn5xztry2usB/kmya/XnzM4I039jZL1ubNQ6AB/REb\nhpgEg6/plJF84+EgrjrYJLS9gbD++9DvbVaIWsU9qMHLItScSZ4OXlFxL1yC\ntsncOS3pWqiqw+XvEMkajN3lJ1Hkwgg/2exoVEqI53JK0UkVCU8gquelAm1H\n6tw95E6tTVt2TSBMUeq1kjVs4xz60VhM8ya/DIwXkNRoa9W8m3oUmVNFnyNO\nSKmk\r\n=hXDM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBpGJLE8cKIOG0pMlO0bX7avEjbiBzW198obrCbQmGtcAiEAxMICvzR5oG8fZJkMhAg0ZbIQ48irZ99+HiXZZzpnEig="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.2.1_1637195279690_0.27127064302024717"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"0.2.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.44.2","jsii-diff":"^1.44.2","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.44.2","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.7","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"0.2.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@0.2.2.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@0.2.2","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-V2ZCBdCxKjJO4UtkstDohrnbZGEDXglyMf08o6AQYp3BspMv3idgGVi6bdMo3ZkHCt4Nrgy9LY526qtiDTxYfg==","shasum":"afea803acc3a4a96577be06db9b33052fc19ab7c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-0.2.2.tgz","fileCount":472,"unpackedSize":3975562,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhlu9ACRA9TVsSAnZWagAAkqgP/2IoMPnRYiKFAcmyoO8e\n3T7jPnVIGzS3EM0DopPf856+tm0jmhmJVEcfz5+D3YQAtzHE73pkHbvA5y9p\n9HbMFfOzhJ4rIiUM4k1p3rz1s2D2+ckVlX8a3PLURRgIIG8Ud6+hUNkWMNNT\nAQuWs1i/RT3WYKFpZFrFaQEUoC6TP7XaBq0BLH91P+DYp/+zGSBjcZfhvVkA\nL9uzJjRyFR9AwAKtHW2UlnFKv4e+MifiKm5loefCe9feiOQCJZdlgvPxaQru\n0o+c7xuqh1GCBLqC0fp1cl0wlbAWSBk4SCrltEs4lpN0Rysg5jqxgyOSHlC3\n0oDzDUvCbqs9QNF72pnHt1ZserMFlWIs9QkV2Wg4DVs4wAoBZdknhRAnlrUJ\nsGHfBnFXYGwqcEj7AeD35w/jj7EvdXg+LzigGScWbBd68iQQLSTq6g/0+bPX\nXqSzRaSWsbGl/nkLjWDrD11JZSK2M3tQycdopeslTpiExOdFJre/eWxGEaaW\nBDa/Gj8guu/564B/04UoXVz2+K9xItyDq8HE6XxtVQQbyUg3T2dy5Wf4mLjT\nu9/Hx+CelG0dOCMDwgbVA0Iin1bJPoCTFOkEBfxbRsvhfZgWKcLRkMaa/qmg\n5GvsjwbPeqw7LtzjFD7rjeA2mAYUWDzCi0c7JXzySrlN5kFUpG5spPnN7vP8\nrvM3\r\n=ak+i\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICS82kb9qxeBn/DAoXkvsRUVIyt9KFN7aEJbH8RlKt2AAiAo2pq8JltSZdooTWPtqBdEI/GjGzBcLe2Yc64FomJzKA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_0.2.2_1637281600460_0.08046854463101583"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.0.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.44.2","jsii-diff":"^1.44.2","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.44.2","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.7","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.0.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.0.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.0.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-s1fGwFjSewhMs+K0f1efiNefmSxy0CNijKp0s9ckGHxnG7jCkyyhbc9boLnOlNG41+qxkyaR+3Ry02kLrzFfQg==","shasum":"12cca0359f24687be3bfb3394f0fbdfaf5fa772d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.0.0.tgz","fileCount":472,"unpackedSize":2745854,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmBW9CRA9TVsSAnZWagAA09AQAJgTAzHdJy5m5sdvLe7E\n0PSR1voN7GEaTAU+OBq/0faVlNkvdfG8kDEFoYVLy3DcaRlcDuk1YTIxPWOQ\naG9ZMjbcWh2yjlzKSyR/BgqoryhTBI0PS8Y08RHVQRZG9vIUPaf88FpwzuNQ\nHny7lc5CWOamLl56kUljW2AbxRIxVVlWdAA0JRAIKg0fNa1F6oqsSpxlB+I6\nuNzcAJtvZ4GSyLb3hM2CVX3rJxD9I2m97OrgrJsnTlDlG07F8EFgP4oK23iN\nmeRL2eGTjbBIZJkA5FHAkYokVgetH2R2rLhjjGhVMKxoNHva2yLeTXZL2ne9\nENbyz281W189peSv+agODH/cCFg+K3fHUbKNryAWNtXa9KyNhRvGMIpqdDqh\nP8axmM48JSRUG6u53Z/hMBUDEcJxe6pbAu4FqF1EQKx7WcEOEUTSOrjs61HJ\n0hr6M8tpT/HTzK/2xs1e+OBWZksB04Lh187RFrJvONZnDuGTiDEtpjiEj4Sa\nPQbLvvi6u0MMxIiXhXi2yVoNiLxG2JEBw+fY/8tv8Mra51hacELWQ5LxLQ6c\nUg4IPJUT2xd7zEIpg66AvwClvdQCyFHqsLoy69EylBiTh5X9VND3cwWc6X85\nZmH8PUjU2M7J/80ufH1ickpEfgiwVZ8gCIXTvO0dQFJAPzhF3kkby75AhjOt\n/8Su\r\n=qmkR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGy7ku21SGqvi4t43Tp77JUCf2W+6OrVnQXWmDLwhK6tAiBnvSFfIxE8PuiLdtdlkqpMY84twfzp/YAOUDd6RktgeQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.0.0_1637356989334_0.7214206162053489"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.0.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.45.0","jsii-diff":"^1.45.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.45.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.12","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.0.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.0.1.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.0.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-E6mD2fXbxqk9kHhDHAXrGy//XyPgSpO9hgAr4owMZWiQimP3MBGXKW/KpsJDak+8+stzoJY15r4nOKDHMktH8A==","shasum":"9d58aa96eb200df39f90bf721d65137e05101fff","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.0.1.tgz","fileCount":472,"unpackedSize":2745855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmFAACRA9TVsSAnZWagAAYqgP/jGv6gOuDPkydnJfNGox\nDiRwftkEQxaPtyg6+BWVusSqt6SMTfj3/kXtzhOP2GL4CbFrYHeHSYMM2Ehm\naVAQxgdWW+qZ0jxdOUZgJyBz19ZtnsIfieTKV+HDbReEAOejWRmE5vHOSFOS\nEWHgro0BaRheBjqUDD/a7XwDNPHlsInkg9i8ywwkrGy1vKHZcHOt9uitFYXh\nWwbgPTi1OLLPMJmCcNDK/Vjm5vi8cJFVBCEf98qJz6+tOotwwj1TbJPgTBoV\nhsqxPFzNXGXsPbLAK/fvdiicp5YjUHisMYYtyczyiAsWZkveYiZ0RbE26drw\nxOgPSRaZIJL3SjarBrX1AljUD8lCFO2CvRZS6yEu3YifY0ByZQePCSWVj12A\nbSR56sUoYbGj0J7ncdxydi3/K/D9AXfoMUVl7c1a5HfjD5aornk3GQAKfCLO\njeUJPRYsc4pJocgJtPK+HB7QLpVb14bHmNX+5WCN+Ve2ciCvq11Kch4YdiN3\nN9iB573N9gROu6ntXzm1fhwqzU3fKVkA+demTEwFkxP/jkJhAUaqS//09kMw\n3Op2h/tUG+JR9oxsEXqNFC1w4Gj0YUOTYOm6e+X15rSV3YJ8UsGi5bB29P0r\nvtZqaSAEEx215CB7XHY8gtb+pqOBRg3Aq4S/SJ19IeRmXE0FuRp+XjqTvv+e\nIonC\r\n=guKa\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEejkjJLBlSZKjL2P4UGoX9xMkw6n3zo2xgTxzLQ/ARxAiEA8i/hYAV+IFiw4065F/LUcXoTl1nxwafl5M75ZVORT4g="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.0.1_1637371904349_0.6723831476515731"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.0.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.45.0","jsii-diff":"^1.45.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.45.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.12","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.0.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.0.2.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.0.2","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bQszoL9WM08NthTH0IJZPZAfMeBSQxxGExkcC6sOjfE8Feu3GvWij/1sLs7Z1mvRI2SzVTGWrOogajfe3jEKlg==","shasum":"f28755d864d2e1191e3df33b8fa3904425d506bd","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.0.2.tgz","fileCount":472,"unpackedSize":2745855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmZHxCRA9TVsSAnZWagAAMRAP/jt+870mTP55oAcBuHDP\ngtba1KkA1TNElGtqBYsoRXCPFgrIeRvbDdz6rFUwhtT8GASXkLG22r9RTRf1\nRRIPyD1ukout7/w+2cXvGsVehFCzA4XLtqtKdbmY3DkDuOv6dDXZL5yNvDVZ\nC+VaLaGBDRFpZlkBJP9vvRfhg6zIoWhgNGoc9wS4KwFaq+H0qnyOpBPYBhjF\nb8eChkOXV7uMHk/GuwjzOcR6Gf9p7ICM8zOxOWO+WITCGDQDAewYKtY0aq40\ncw9NPVAVUJ0lSKs3//r9aND3dsNmfshR2dvZNAWHhPrbDRMO23pIBax+tJpe\nuiKlT9Kq1dUN+KJPx0JcP7/Rg2Mq33wDW0BGOXUlzBo6fZVP61CQ5tn1UjUF\n8RZpnB+5D1X4hlh2EpUoj5GI2jwaM7/RshW/vhlIThA6cXMvp7isc1m1CcLa\nm595GPVmREPMg2GysGF678OUCXLTLM43CBOxFUiP7ZRoBhME9FPb/7lCpyh0\n4kvgiqqbKGHhdCwScN6amR9mTlgJi+dquaDaaC7YhVIERRuGFNPkY6wK1bMU\nkGERprBtlS2Yiy04b5RlAubRHg2IYGsuaIkNtIx4ELc1v49og0uVQT7AyS9p\n1K3J6GhgUosbMS1XbPsehKA0shKuHWkIIx0WFAL9wtJZscDF9NyhIWB7Ma0G\n0gQ/\r\n=lsLE\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGNozkBnU5RuCy6k6XGP4xyKUorVQiwsl3Ymm95ojbCFAiEAtSkNbow0a3DrgZM0bytRGOwFbBE8sSlGo5arpRC8OL0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.0.2_1637454321548_0.20485167420973438"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.0.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.12","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.0.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.0.3.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.0.3","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-LXqElRtM/kGGn5pu/D9e1nDkt5EbzckTk522ErYG0FJnGx9ImCV6oZquXUTMbercYF4iWzwiEke715KMBIT0TA==","shasum":"23c3090d99bb91b9168e1b921e50b4e200aa677a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.0.3.tgz","fileCount":472,"unpackedSize":2745855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhmuPQCRA9TVsSAnZWagAAhFwQAJq8XRRwI4qP+aeJxgb5\n+b6vQ3HPATyqP/6F4z4W+AhqVAFS4E1JHGJMxmXLPiSHUr/SqUFD+hZ8VeWY\nOojn77Q4aF/yZuWW36ag4z+Hs3ojgInyLA87pSy4llFci/263RBoUeRb5OWh\neNAY1fL+TZw6IF28jIYb0pK0B37vLNazWsbImQCPrnStuNyZ/ZEUqUgjsnXL\nhRmMHKqwAaiX7+i+BbsBobC/GfDx+lE7xvdtMszjqN8M24oP9U0Q3iArWcYf\nBOhUanuXLEICao2ncavMEXFB+BdHbt/oxqBkR+8izntgdWbFMH02d/qxuhAV\nIK0F8Tr5NPkFyQIIBN1ubS8wWRiq7J+IwUphszUkM4ngJG0uWyPeiFrQ/Kil\n5wfFWSdTP738DSoklZeJzh5PxG6dH/Y0DmbSbCIUnMKRnyeb5dnabf0AVsYQ\n9eRJz5CwI3AwNSBBYFFCz/AdYCpRPBCdDP039dStBxOgDvs9y/v6CHS1bT9s\n8Yq8Uiwzmffh99Y4Vcs+D9zqaSj7ekSgr8aEmCR1ZyGR4w8+vsd7eD5rVf2v\nyedz3HpZXNXQJjA8MOrhV9xyB3OOgQFto96B1KSIUGFtKSVb4HVWcWI2RTGo\nDJw0An9DlocvX0HcJ4Vn30O32JHjfAZscCWIb7GbAT8kZHp59IWKWRL1h54q\nLSSO\r\n=qf/l\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCcjvFLaYGbNkZ5kQaZavmZauAK86JiC3mcwRzlWzAQ6gIgf5bh8BXogJ2jdHFm9P1MtwSoXzd+gXdSwbQsLBNXN6I="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.0.3_1637540816560_0.17657629356101068"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.0.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.14","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.0.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.0.4.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.0.4","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-+yggH2LHEEQ8Vw2mipEjjespqPLC4yg2u/xu6rZrvsXfB7U64F0O3tKk8gEOoYXSR2xbIFeWQp2+bC/k1gBvKw==","shasum":"5f4fdd57769ebb1d584d4c4bbc21e44fd4d2bca6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.0.4.tgz","fileCount":472,"unpackedSize":2745855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnDT5CRA9TVsSAnZWagAAcrYQAIZsaYWTVY+t4Qfy6wRJ\niF+QNLQUY7bgT4ca97Me6211kFhWL1Bd47rS7k2MGr3Gga/OqsLzpXkDr9br\nDsp74SqTeAck5Ztk0ZHqie41K2pZSJ7hKT0heb/ktBgBKIcRJY9HlmV0kUqH\nrHvV6M0ml/Xx4NbRyV27e4caIc3mw9Ri1aOjIbONAalRE60PlM5pMyyzN0aL\nLaSyWnyoDpm/E9XcGDCwyf+0RH+TMBaXry7rVkfqDsfGWlcv0mHKwtfulouY\nPlvfCEdYwJr/WMUuoqRm2LS0aRO5IiBO0cUVRRiB/he0XsPguO+HCUYMqQkn\nUMPiVrWMVcJ/z3DGK9wYICu3F+ttaAHLnVp6SC8iwdlB+agmXIHd/ZhMYtjQ\nar5KdQRoCdg1o2Uy8vzGjOVLlfGyLBz9w0r7YBeBCAw37NnaG33QgLwCWYQX\nVgxF3m8RFEn9xO3KAgTmCrvKkQg3lqs///tIJ3LDmtR14G3+q8OXVXdDnqeE\nfIQjEB5jWI3l2+x9gdoBLDVLmRaWn5yj/c4Q5DtO6xEJQ7BaltPxw8h2N2fB\nIV1I/N9Px733mnm63UXwOm0a+sg7AdC6sT4KHO5sMB4Luir0oLmIpd2U8qtc\nOAOQ3+oL1vuRq+jXkyjvvxGqxDTCZvjSBiqTbI9yivf9E31LrlcBUE2oyEGG\nN2wq\r\n=OabI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDsrKSrqf6JUCI3CXTBJ8r1e9/0CA5EIAi5dMNSosqRkQIhANo5qZR2gi7Z+1/i3smyFkvWEIPUzBe7Ue+vaAspmpMV"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.0.4_1637627129592_0.6187442383007622"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.0.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.16","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.0.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.0.5.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.0.5","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-r1XN2gADdX0Kk1MXknJZP65501UnI/Ir41rFGucby5MMNwJJeYrEivBNRI48zs72NQLT+LlCGs5QsKlj8oPXpQ==","shasum":"d7b67a432941f1b4772f758a5e1d0ae3dda2fa28","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.0.5.tgz","fileCount":472,"unpackedSize":2745855,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnYcuCRA9TVsSAnZWagAA8u8P/i1zXwTo/4PpwjXI/066\n/EDW8mRNWF6Za8UrF3SfVFuEDkdTntdLX0z8Z+AhBhZus2gOnQzJ4L567chR\nOEnzXZnx4W2yQ31R+E4/mBSK41fMKiXawl9xGiYvsenLsloXdJfKVD8RqMz0\nHYFiBmg9ygiQThHst1Gd1MAWbGVQ2W+Y5NoQS2dYi9kKI3TrQOMkOxB0K2s7\nanDlWV/lgJRxSNUX0hxQ+UGZattN72q72IY3pm2dNA8Me95Ic5MeLXnWN8/a\nRP4sXmRIBGta6E2CsMDwRwYjCh52XEO5Hmz3OuutDnArNI8iGaT7EbEurgHZ\nDQl4SBZwt+XLgqMiz4zRgdb2A6YHXcq+qmRrOsvecMbMyVkp/J31VGb8nAaE\nNFOz95PbmJXf8oK6SOm8f+z+r6xDSP15QqEiN3MqZzi1iJgNWMrfXYqdP/IF\ngqrJQS1HRIyfW3CN4f1ap9QD01gqczXIXgxopg4tfptVRRwmPhayzfgle9Jh\nanPk/1eCeymaOO7phnYgbQTHgSWgEULJBh9koMvyQb+KbJlmn1Z/SEZ0kPAQ\ngCwbu6/gnxoIz7aC4YK4JTJaQNEwWmcO5wyUYhoJpL1XPcSxqqxjxBQcayUE\nCVCwNR9xRznyYRniWE6f9s8P/x30zj6FQMa+75YpYya/cQzxz6PUN6dOEKIl\nFBeV\r\n=kB2Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHKVPM0WFqAemhgL6nEQieJA7gWUGmGbsFa0Pacs4zREAiEAs5G0R0esEb6NrC7DiR8YfoCt7jeYpxcxo2yRfP4Sl10="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.0.5_1637713710252_0.23786074214360764"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.1.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.16","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.1.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.1.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.1.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-KyaF4liVvhLb7z6H+fnjuP299sVBrQ+oRgpjdZkxaw0WMybm3BpB3L3+2FA6XpuoiDRStr/J7Umhf2afGIBq6g==","shasum":"230ea0524606aad5ec1d7e2a96649a242c7995c3","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.1.0.tgz","fileCount":472,"unpackedSize":2873893,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnlHiCRA9TVsSAnZWagAA5WoQAIgBJgW+jhZR930yk6kY\ny+TGUHqOJk2cAQBoYQtbuvc7pXQFFecy1XoCpz3DxDQ3Pz0CJbI+y0T4agT8\nwtV2FXX7HAjH8OD8wGLdKU7Dfd2osCi57fpbTucHzxvdgcMGbh+dj1r6tGBv\nTdqHmbs+WRwqFwGxCRW0BrPrxtf2vkL0GKPvb7D5DR5066VDyUznYxtSFyla\nmddXBogfZ4NF746XrdnZpi/i+ZQjl1lCIZyNv4ggbW+1Yq9TzMZzvZl7cV0y\ndbaxEGnLzV9bM++OgUdYS49ZBCe6DQYwrl52ADGCMUIhuVXvuWPc3vkmKXzy\nBS1uoUqDnUKv8f5gzNCbhLiEzee8DqqJkaPGtSxuItAuM42rtKDvtgud7C0b\nVV1y6SNr8VeB9dDi7QfRznr2s7zCE2ezcimwk4UzsJPVZjAN/MvAtu8V23FZ\nYsrhQyZ8AutMKgYwLula8WHShgtDzdv0LRPw5PaRMHwWaD+AEHbkkD8HjjRR\nReXQI6uMYpYZGGhbnvrPlNdS2LL4mMjz2G8tOhZvyXNJU7c7hui/SdxWhR/9\nmLwdv8J4Y024/p24tXmQASpdEdHfOwKacH4MeuEm+FD7og29Ed9c8XYhD+q/\nQ5TTCQxYF2nz5eCwel+HhV2seNLOs/j6WpWsVOF/Wvp3YU9nWH7MgcrJOHlJ\n2FkA\r\n=AMcl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAtL6uUfDhsFNsi+nI5Ch9WAb9P7jzn3TuoYaz0rNA5OAiEAm/9F3mIsOgbUlPT9/v56FErPQhEw7HpasGGlQIyF98Q="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.1.0_1637765601880_0.20270624005414506"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.2.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.16","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.2.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.2.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.2.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-DGM5my7ANAi0r4oh6gPDJeD804BiJJGPYvF/4RGHg+2US9bWEI/bgnrsyy/UVZBMoEXbUfVYYB+JVj9qkc4MaQ==","shasum":"09f42f87a7f0563ff55f5790bd39c677efe2dc7d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.2.0.tgz","fileCount":474,"unpackedSize":2888326,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnnykCRA9TVsSAnZWagAAjcAP/iHBVfIqvyxF1iNJKqub\n9PCQc2tQKcv8+tUa/gMF4K1zTGbuoaXuY6jn5ZB6kS5i9ymb5oL1fuzi3u0+\nlD52DLPY3WPSFk3dJheWBxK6r56vqQnBXnn8qF/mibPyq/Cf1CTA6Z4ygghi\nsjuTVQr3nYhxZyJRzufzwcH1FbLyGN+6Y6DroKquGGY2xzoXuN3BPcFsuZw2\nh+mzI0wC0YCFq4lrEECLT3Eb/iNjSacsMc3H+P/VlOhSs2l7jASOqGVDQnRY\n4rHMf8JrreZTAlfXs2NND6MmMQKY+VBDC/BsXcKw777a/hDfMbvt760GvbDh\nlKUZ0UF9xk/GMK5AC1bhM1mFNl0B0ufrAFjLky65/jYrNx2g3cjahheJxl6X\nK7gnkl/5PMdhzR/5lLNojaZsJcps7r4DFOnJy1/ITMZHLVfV1p5+d2OV6XnW\nju9HZgsgvB4Vdz26yZ7R10KX5S7j8yCnccYGLirSkTENo0/wlisEa14cTRxq\n914pPI4iUfpoEOqW5Xzp6J5RH2mm78SEtKN+hyxMgAfyeOtXV1WOYeGL8XeW\nQR7kozHtLlZ4eF0R19rB7RygV0ysO/iBBeMrH3wCUCABU9m49zIUS3s9MaLj\nr2BO2/x8T3NWTu+YH8wRvAw0GL3pRFY2WuygbWv+DeXK6K7q4NrrS65ZjQzP\n7N8d\r\n=FXG7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDrsi+bKtn2Ko94LnHuRuOlGJCMsHwvpYEmZ7Bm0sZ6uAiA/gbVLWF/yB+N+OoumuuJ1QO22+S8r+nMY8g+VwZHj/g=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.2.0_1637776547712_0.998046500680944"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.16","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Se3j+o/meD1TyueL7x8vUy/012bmtiiIqk2Biq3GJnDIU7vqRbHIUB8xoER20HOL5A/wi+zcfzoPd5JWNMCcyw==","shasum":"fa1f0d72a91cc4fcc25285b36bf73c55d6633be0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.0.tgz","fileCount":476,"unpackedSize":2903059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhnqoUCRA9TVsSAnZWagAA0CYP+wX9dBV1srOruRoHQjsL\n9ovCqO6do3VkCN/iNY8cVeCSlw8UAnwdRsfqsI8BKnYHiIKxNmRTLoH6zlPp\nYBrjk9HCdo6iFdjXGh2TRN8Nmu4Fye0jHMlA2B6yXN+UgqyJuKUz0UK9Cv+U\nA2YxMqP+g5giNgXteYfteVFWKCXmAVOZkn+8lpi3pI2N+xwp3Xutnh8NltEp\nxxxPXhnEMdiT9V0mNYNCqmVB9QZcyoM4PW/O/TOeRKCbh7EJmX+It1tMx70A\nN4CRdQFRu/tjxtAzVcT3e1HP8jJ79UEj4ranVPvhMRvAL2GUSjStMcOJSZk1\n/N4anLdVDNBUuwku5Abg8+QYVdy7KMYXZvy6WcN4VbiGeqbQPEzy7BZwtEj7\ncdqOXaCOoaRy/x0H8Chk9MmzDZbol93I+f4TTu2iDL1u+OoqwROFUAoZycv/\ndvig8eBfa9wGcKrjWCQ81Yj2iUq9zrGyVNrm4iP6Aeu2Ah7jsWzxk3LqAH/S\nvALOJgStbt4LpYEmGrF1L9w8nIWoOKSnqB3ynHYbFDmhRjTkUTYnEcdwM0jb\np4gtxOYDThIDz0fbEbkBME3nqBTdfnQBP/UlQB9Atfx8H6n8wG0i5BZWbgWX\n+Wu5eIluXwiwEqvNJa1CLAUs4qBP/Wv+7tLvKGqkvZ8Onl3BInMLTR5xqowr\n/y9F\r\n=fJZs\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBkUKQXrzuUtmvsul8ggZz9Y3mWes/aJsh9ZCKAvVIkEAiEAjlPqgk5SBTKu1WLAN4+6rZDMBZZv/q4kdFVvtuEAGlI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.0_1637788180081_0.5131060555512299"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.18","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.1.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Eb/OYcGHF30d5bZWiWVGz1csX1eJbZ78zImYgbxblKO0XLU4EcQSVs5Iwmw/FQmbpg/4muiEGf3ikQqffZy81A==","shasum":"a6359cd118176d5300b08d4b9756dca01200679b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.1.tgz","fileCount":476,"unpackedSize":2903059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhntgCCRA9TVsSAnZWagAAG+QP/iKDdFI1hvoRw/JuFAYh\nzAwR515XXNwmSNUIqqVwql873Yyd+oytUYfgkunyuw3hJp/BDfSvSvA0NTdb\n7xEV9PssHqc5ycyPvC6U7eprm4dz/FkMCnzKmCrF0fqpJS5g5n4i9z/pntvB\nHDnVnmPn0A/xIY5QuoxC61Kit3JaZzOI47L6ZtE74h6JwVaeqLD9WH6/oBoa\nJJeo3zkpRavL3G5niAC97q7U47qoxJj1xL5ZCU6TILvWNeWC2Zk0E7d1/6HK\nXBJMwKkD776eSVzrOu5sGFJbc9MCAHpLRafvqdc4/zubHEYRUEVy06zTRQd2\n9fWyW2yYIHvGFIGP7QHl+Bq0S4wvFBotj4Pms1l+K0/igmDr7MkeeybStKdG\nRw4DoDsNN+TstwStOIw4ZLfWLUgpCJyq/z1zBx+xmwkJv/T2VITRzf9R8xsl\nKj5n4ropcDuNMPN13M6luaaiPxiU4P7hojXAO5f2GvNsrnAlgcQ82ES+zTPv\n8WH1JbzbRR66HTlhMFpisVsHMrXLpGHrLeSgdI3HvjVFFxDh7ughEI9Z1b1L\n8iAkaBLP2wx1qTvreaGcTAaEUSpXMAQNvIAwalToJuixmZRmyIHtUwAGKpZx\nsvi4FyQR0ysr0wNmPYVd5GJukfp7VrnmdOnvVFQKJKP9RxhCNsWtowb/AJ+A\nCAP9\r\n=J1cN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAjyfdzVZjqTKknUXlkz6SuFRvJWmIvEuFolv1fp+HnvAiA7p60idquRUVlhc6Ym3JXNgtWTYdhPjUU55uNr6zD3Cw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.1_1637799937991_0.614214072900565"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^26.0.24","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^4.33.0","@typescript-eslint/parser":"^4.33.0","eslint":"^7.32.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.3.1","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^1.8.110","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.20","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.2.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.2","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/KSenPbPlaRlrvqnNt27cLlcWB1AyuMvxZSxZByQuF2wIIzj/G6POcTH2j5mZFN1YIL96jBdPzEdsc3slmdnLg==","shasum":"47cf7fed5501e09902eba6169ae4684ad6f4086a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.2.tgz","fileCount":476,"unpackedSize":2903059,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhoCkkCRA9TVsSAnZWagAAqfwQAIQTKEQuIY7FahD0p5Ra\n8UVxrZG//lDYjbyyUou9okY43KluKqETZ+cGm+LvnRTGv/HQ40uWpP1cWa0P\nQiTDjyjMqjLFhuy0AQ2ceQ+Rt5XMFfn12xtxJkQ35DmkkzVsa6Mx+JI4A9v4\nuUCgrVsoPFGyfIb6XRElPRTyxx0VLWnzU+g2a+zbCADUG0QylkCzUGC49L4Q\nAw8qNXCwkyGHYyIDn0PDA74V1hdZxPX/ksCEl91FQfVo44k9btNuvBUvLXMk\nHjwowGuENLDBR/smaz0LUF9dUBtmkuVJp0SCx4Y8xcjagwnUYdMsMASUa34T\n4DBDgJxz6reotbH8QQynoD9G1oe6hwNPaqK1kQgMvwrF7iQ6ucU9MqDJcUyA\n2GqzTv7TPkJnZuNhKp7MtDHGuAvG+71EXxYlxCGfRV0tOsthS7l4Zj8OOalz\ns+dPlxMgnrPEuuccArvixwaHmbaXqxH361AWHaRscsuN183SgA29IcrzVNWg\neeqUM1xGA5ReShS7tcyhfuVZbt4YRV3XKW5udm4Lb8wWxA5B/FtMnYRo2MQS\nxOWRgBM8f8c2Q+0TmwRiKQqYE14DYqX4pCrYYjcYWwdHqJlLMyyq5nqBgwqx\nJo9Nj7BSOPDeJO8kVtu2ZsSIljYsnfd5yqrAA/EZuRT+T3yEv5ti5J8diWTR\nhsl5\r\n=lCJK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCUKPCdEWpJntld8e/elveNhaq2NZ6Ke/l4faMPcKPAbgIgZr3Gjoh+YdXILuaZ+3qvpImaRxHgfs1oN/Hhcmw9oy4="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.2_1637886243781_0.15796974247672546"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.0","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.1.13","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.26","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.3.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.3","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-fAA4Ze1m69a8dZ+ys4sATGmoXo09zFtOtE9miuSYTkX+e9OwBhBgJ/zf+DLTCpgEAIvSk797fhFf4GWYBxNZ5A==","shasum":"9782850dc320053a11f49e0429f49edb5ec1c029","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.3.tgz","fileCount":476,"unpackedSize":2899596,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpXAZCRA9TVsSAnZWagAAplsP/AzKrcqAMk75+nTY/aiM\neOYXe/yEOA/xjSNTzWXRIWC0mJUKLw6/UERfD5o0jz/JBGLD2/1HjENAbqs2\nDHpoClV/3Uj8v8mR5Hh9oD73BOMOhqt5TsCvYdgPNDnaWmSa7O1QtZLPbUuL\nfT+Ejo6Q46J6RaWp1sMgE4CM4Rjts8D6Yk5Pg+8vDEvvxDpnnL6qJHSRWoCQ\nzDyFu6ozyzSYA5GA/mDcy3cZjiTrLubHCvbDoMFbYlnQknjEBZC/JQOzw/zW\nnS1oM70wAWae+62Sa3xtnFC5LrObiv8ONT+KlTZRACp4KVzuHgRyJgKeafPm\nsir6wbcB6dvjCg3XKQW/CwLTh6D7isaPkAZUefFgPquWLeDE1MCqx2TJxkhj\nkdQRidRuA18GFbRfOHayk1Gc3x018Hl/2dZpLH2NTidX7CEoKURmIOPP6+cP\nCDEb0Ge//9S0vKxpxTw8wBz6+FB6xBzcVOxLrBFrDkEJmeB4hjicggQwb1xb\ndq6JKW8+i49TYUqlR4vQoPCiCFVniZxyo5PVeb/me/0ligxiLKfKYN3WLiF8\nnpfTWlotXhP/BcUTCvvBWC1NmQ8zxv4vHZDmt5B6knnpzBNx6vFq0Kon1/Yn\nbqaCEc7JSnqwGyFzf8GcoEP60tXEcedsvSKgmHmOFpYZN8wzS7uTUq1yfqMS\n4ll0\r\n=OUj5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAdPLLZ4IVXdMnBSQ2t31Vy7JkDwbc/IuDPQeKRhLbHHAiEA3YD4IIzNtmJZyFJqjdz4q1HJtbiR6FAKUPUmy5YBlx0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.3_1638232088978_0.29813149777390624"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.0","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.1.13","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.34.26","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.4.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.4","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bSKJFDNPfDBhmRxPxJOSG14IEiul/irqyVANEGySDwsflLesFCYcCiU1Dpmi3a6VeF6npsst+imUB6t8Yt8ZeA==","shasum":"ce583b9af66d8fb8593b53c4546c785b835ae3fc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.4.tgz","fileCount":476,"unpackedSize":2911042,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhprEhCRA9TVsSAnZWagAAYAkP/22yssInv6cdSPNFz5QY\n/WJQi+mW+5J/asmAS1mcDY+UfSYCTbI2cMdhAgIJAo2iUEULXVYkhI3l1+dK\n/r0dp+gPxx12mx79q/U+4aSQjcKKax2ytBPTpQAVaRD8RuKUCuJgtO+X+kM/\ntZ1/2Q1k3Ptk932vReqv/+Pn/HAaGto2ESdCmzWSiF2iakLitnWlE5AqcHZD\n7ilX7TnazeLKLDt0e7p9v2A34xAwToy+VrznMF4JolIixJpT2ENdKKsOakx4\nkdDXne9y0tV0dm7yJeRiamdC6jnAQeLMPfHjroGIZSjqWKeHm43zVDd7Q/mK\nfDmq/pU5ZLnNtv3RRuClHhqeiqNgisyhFgWX1igxGz1wLzsEAUXZXpWq8rfq\nZM7KluTMf//yOAYDjBW7SSvea3xcS88+E4iiEElp9xCU2w/4hCg1qheSJw81\ndS3Fa0AWHkI3F+BNIF0lcmjbYc5TA6jjO7cRq6AX3/9XjQilpgDXEy9cq8nv\nbwJ/X5MVU5grv2AsZMwjop1a57BZgnXv0M+sW1DyMMzZ6Fc2fuW8Zwbk9W6h\ng51YbIJ2QShr5XhAz1DcZUZkOyy93a60SiFvNvUJYZHmY80tid0iyOnTMwu5\nQDPEP8GxMIthyP6Ukc5Wd3dlK5g6QQgegtZ0TMUuamd0VHhNLhjmgjEMipCh\nKi3J\r\n=93ZV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQOi/5sMRzWHyVIf5630ifyVGMBrc5GHjdC/T1jjZ9JwIhAMQuP8YFUC6DrYiOoZNY3gkZfUuG1cycKa0gi/Ko3Vkr"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.4_1638314273015_0.531044746426586"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.2","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.0","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.35.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.5.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.5","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Y0FxhaGWdT7+rCgUWNwCxkmBWxCXgjzsAGVLkkFLZgm/kwAqrEXvMcKtEtPt/93c6oRPn+3mXVm0ZqCgy5xEaw==","shasum":"a77d342966a849df9acb9add45d8b52849217726","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.5.tgz","fileCount":476,"unpackedSize":2911040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhpsE4CRA9TVsSAnZWagAAoN4P/1bSOrQzi1d4flc0LJqv\nurrllZJZpbEhGOWk2jlmGfwT0JZb3aFKzzLU3A65tSL6+yZsJhI+Rk+3LvWH\n0wYiXc8KCpSw8Q9YmzH8lPdlwluMBmvXNSXKBdBbXX6u/84+hwTcxkeLeHAT\nzbZkTRL9Up8qyVn258nz9aSDxaiB0ibcd/C450aqK3jCBqxJZWBC7S300hQc\nLQ9UrgzHVGZDDCH/rvg9B19pmnMhfACAf+Hrs3Z3/DF/a1iNSc+dHahQbJUN\njlpkMEl20tkr4GqgzBcbp6rP2b6uKlX14ugN/xWNBDUiriX/Nek+uwiw7PUL\n4buuhIOjBBWTGee9CNtf1QslrmkP1gqJrZHDw+n0EUk30IJ6OTP9CSrYyTjd\ne2dauxM5ktT/kbcMLIKa541WE/gEYR4sUOQDyFIM3rw75J/NsEi15LQ9aEol\n5koUrqnDv+NZnDtQ3VkwM8E7NusBk5nHKiLgc9CXoEiYViJgFr3ssfQVIWP4\n1W0n4jT1hNAjjo/gs045SIieUjOEIKQBtdmN8Rst6AY7n6qay/bUKVCF7f31\nNgrjPhCbPDElXQB94oPt1OZy/9XwUGuFAcnN6AD22Z2I9Q9Nu0+wdtu7LlIl\nRz7NSeQ335UOlZXR9+YwskzGLRaslJS3sIny7tDMk+suDkHJ/wcj72KhiQti\n5kqB\r\n=c8vU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFBtaS20loYJn/QbZfaQIombhGOp/tpPiEVOAf62oG+1AiAP5S3577gleuAERVV8gbSSBl07LWvGV8VduxpCpPwV5Q=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.5_1638318392004_0.8492241067099553"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.3.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.0","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.36.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.3.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.3.6.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.3.6","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-MQW8e7QNeylLjr4+bCekLlUx8WJ0MdFtDsttO6dU6q1SvhHgCbKBK01HnQIPWSMr3xIc8Svm0727tQ3TGztE1w==","shasum":"17162161b5988765e8006cd6adb7dd14f38475b0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.3.6.tgz","fileCount":476,"unpackedSize":2911040,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqBbSCRA9TVsSAnZWagAAgX4P/ArORmNuyIzRwZ6Fuhf9\nrjNiLqL0cvMDTdU449KakKp4v77h3hJvGCJCgAcPrJEnmo/Y0TUIJN/rf6UT\nZuZeG5cNy2D8oKrbZAK/qgwUHvhOp2N3S0r4+npRULDdIeMpyKgyTcrA8vxT\nrE3OKE3QentYesHZHR6BE9VoEoj9iVRP8573FuHXSG8SX+nhiH6J6ytSwDav\nIUQ+xSL4LKsn5ouLKndWDsNNU/Iq6Cj5P+ueBrZq9fRQpIt4cNE0RCekoQVX\nBmLolxtofdbqYzR6p9fzI2LkLmx3FvAfpfk/sYk4+LHLaS5NNJ7dXZqOHqlY\nZfiXv3WYlEvq2Rtb0dUquhp9yLAS54szV5N3/nOy0RsEWfkiPWVYq9iV2lUd\nLSIwk7FOB3R7ZTKN8bi8GQwZ6WeghhTD6R7v1VA2BQP2HApfr/V3PnmP3e/q\np4HvevgLTPeJ/5qoTGcxr3WBbUjqki/YMvQTNZKkS7M1pkjPQD9WxAdfuuas\nuQdNJ+6dgo8s9eHay7Bpq05ey6qUE0yvn0oEmTf1WclZeIus+CMC+mXfHT+x\n58pmH91SA7eI/KOoMAwL9oP+wVIFE2gnee5jnEnJ8R1nrI0rR3LTv70syVTe\nDMiEgVtTItdATpVfDCI+u9qvExBvnGuj2lRKsgX5c1nZLqHmacfF6nfGqnmI\nKeYv\r\n=N1da\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCMzWTr4nGFzwU+YODfpidd+Li590AootFHWXBu9W3oRAIgEXZ+Pr62BHnuLVtHEwK4mn9T/aFuZlvppJBAwMGN/Qw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.3.6_1638405842616_0.5121677003013849"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5.5.0","@typescript-eslint/parser":"^5.5.0","eslint":"^8.3.0","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^12","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.0","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.36.0","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.0.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.0","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-MvOj7lTiyLnhQkAlESiSWUP2ofLGB3baksOVbZJv5w3uC900o07ZTRbbzTlhC9ifErDw+RdqaqZVakIGuADqhQ==","shasum":"afeebab5814a6354ca565afce82278b7e290af66","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.0.tgz","fileCount":478,"unpackedSize":2941650,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqNeXCRA9TVsSAnZWagAA/zsP/RWs3SxbrfeevNAb5R5x\nuraxSMy5sU8JBROPAb6llnM4/BlSKblj5R+cEt0jolcrj+H8xwuMmagSiffp\nLgmSkyH0GlzYxLv6hv13h9XHhrSiS/YycZ9TbHhk9GRo2dXNh24iPa6hrSUl\nDGW51NuK/KayUN4nD5hNGrR+7MYXCmFCnFPNlIJqU8retbKL8nC2M5/tQ9SN\nj5ix64qtJujqIIPItQuMyKgc2IYtrTKviPWPKON8Vb504+hTlYAGqYBi5qsm\nUCibAovy1Rsyj68KhGC34gmppsVhoHjUHJ7hq5uGqKTDVBZXENUezh31QE2a\ntdR8GF0x6Whz4R7+Bvxks0wO41UXdzSy0r9fOzHNVjvjPW+D5jTYGfVRZ25l\nMtLO+/A0Wr7YRUfwackp1ePaPZ9p4iMcFt6ECvMBKjfARYMA3ZlPLX80gNPi\nvugMVYPXN01QtXELCxnEuoqAB4QQdit8ZD2L/VKXcF/O3B8RURwbpdTW75Wj\n4vwC8HNGEnBu/2w23sHCqksl1aUjWydMBO2hsKVLg4JAZoyOFpTCVCwUpjn+\niivYfm/SWHvXYjgL/3GKsKtXOmCLXy5KhMe2ijGUwvvotm+m1Lnr15+dLzrK\n8zm/QMra8o6r+RiVLC8SULz1e7bmjCncSv5VP2gkE329jgtXS5pyMMqpUlXN\nQiHc\r\n=GD87\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwI8aJ1+cLV5A0I3aQOZeNzjOUAxPp7ITztM6U/1nucQIgY0NDtZrt+deMftFuqQ9nAXjCaebuceX7nJN51Yvn9Z8="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.0_1638455191139_0.8872762471138871"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^13","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.3","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.36.4","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.1.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-w5nW0JAirWwq/TTfw4/efuDcN+DL9gmUAa+lM1L21i9HD4SoN7AiFYlH1kMYMchLXrjDM5FPgYEaX5WO62xhmQ==","shasum":"a692670f19c3687e2d5dac4bc35224c31d8f5bb7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.1.tgz","fileCount":478,"unpackedSize":2941638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqWZdCRA9TVsSAnZWagAAm7oP/Al7aL5Ml4X+OxgfuIAK\nfcixIZ+sntOOuZVp/L13L15nHVMfXMvOlC28VK0HYo6ByQcM0n/PlepBtBSw\nqHa3TpiSyXDMvIffnd+2p5yUHkoRP9BOqvtGgkQJiVrWa+y9JXcXlGm9C345\nMqkTy356xVkC0FRHfZaX9dum4b5wwYnrx7RgtM6rrV8YfuC34/ggBW2jM6AY\ntof2g+7Ww9Nib3yRjl+oVvid6sBFTqNeuv8MdQNRdOL9BaWNS4k5k39vTNuL\nidjNIdjbd1PAQmbhg1cZVHt8b5kxqorQ/TnDZcj5DAllzW1nkwMBE0VP23Y0\nzRz5rutizTrDA3yK0UtEXmDk8pvcZmezSyN/yOLd1XaeXZHTPj7AetrXV5kT\nWH6E/IDZDrN8odAf+N5fANA47KH1/H12BbpeTf22gh40T/j8+0v9+zeUaA3J\nZImKQZB1dMtc24URIu5imgGvyONwKeJwiVD65w9xoKNB7CzzfCf63gxqoh3v\n6dIb8DdKxDI5A+qiQx5J4AXWPi3QLs1g55YwcKIGrL3k/4YeVKYs7hkIc2HA\nTQCbqM+iEa+Sr+RsGrOl5+5YFaOJ5NbEtwIF+WjHLMHqTvn/8MMGRzNnsK7j\n5mzCFdltEnCYCKICQjkxKqSE5gszEJ1U2v87yD3aYc/76U/GI8f+yyUcCV/3\nRwTz\r\n=sOlI\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDRwcBSB0+FGunvIyMZ07dUiAc8klawHo88ZfXKrqC80AIgGUQymJ+7AntqASQakNxZS6hUUqcW9t6qhJl8vICYVQw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.1_1638491741679_0.19041692173607339"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^13","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.3","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.36.4","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.2.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.2","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-+J17Wgk9b0pyDUdPm8+arOSuJSH8n/LcHvb6nyy71FOaLCmgmjbkrP9TlUXJXEUuXtZeVRq+43i7bIh3RFlm8Q==","shasum":"761f198d1105f06baa654e7e1e0c54c3339d3bf5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.2.tgz","fileCount":478,"unpackedSize":2941816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqlUYCRA9TVsSAnZWagAA610P/3FrC2liYwvaER0EEWI/\n+KW6L6Vc2PN3IPS5mllwG1PAltIUEQTJvp9uwb7AZFRmFOG3uvlsrvw+Wpqm\nmJJxp7tutbKfsp68QywFsrv1coan40mbj2kupPjDX38w0yfelUb1H+wpAnlV\nf0z2i0Uo2TQpP5r6bxXtVM5j93l4TYem/6ywsB917Nlw1+nfSCTXCzSOANJI\nDspxFcx/lG9IsE4dKjJErUxSa+owZrAAkGQKG4pO8JQ9qj+iCxNxUvo65Yf2\nnZYC3f7U9U4ZmNf/o5oIfnfApVQ7hD7klrPMhuctd40GEbkyc1IJd3HMFdIB\n6vYm9p5pRW1gLrokEZ4qlj6O5QtY+p1z0pDYDpbJin+4JAQ8pbaVcRUGKcZr\n+1DfL80ICGnaPs3Vs+0J3o4oE+uluv5xGqVcTdFv8ODbSyN+9Eh/kV2DXtSI\neB2fDwrU66+l0ItI7DBDhzUYgtX0U8yebE7rHswWUbw11wRDc0Ziehoo3Ox/\n/5z2sm5j1AKQ5qcrWwh2q5umABzLegg71NVsZ/uxe7nflaxxLty2ygLlbmQ2\n2/zsBM0Wmoi16cDNNIn/5fAbxqMET2C8wVSL0qbten0PRBqSHCEADqmQdiPY\ny9Kp099gNonMiuph1gI/CGZXERlXiVniZkfpiS5O0y5ih1/df+pHSuAjIOSj\nA39V\r\n=a+8L\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAIcpFxTKvAUazZxgRg/WnkL8OEC4nrSMZsgffsz/4dMAiEA32zvoFexzxgIwkf8HHKn+fAVIwQ0jFKXIkThKQc9ZqU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.2_1638552856621_0.18073257779561525"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^13","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.4","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.36.5","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.3.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.3","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-jukU6Nabe7oLsL5+XjeSanfVTK6HnVEMOWYoJ22qmOJCO0RhReMzMFUf5RR5XjgoRBjsV0t1iFS0KQs0kage7g==","shasum":"6b548f4941668e654da977535b372a4f36b659b2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.3.tgz","fileCount":478,"unpackedSize":2941816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhqrV5CRA9TVsSAnZWagAAKG8P/AjNaYsHOfX4wXNyD8Yr\nKSS6MS6l5HpC0tcxM9ZRoaI1rghBFJGhoy3H+1yCLfDOy+CqbTH9UluVDwgs\nwjmw9mp++OOngCcoput8eOSTUeoFSwlLiN5IaiOssGrKI7KwlMADScV6Hqvu\nraZmYLd8bD+Ap2SlJWjSlAH1nAEWn/xiZEYYISa46EOIVmRxfGqh2keMiVSX\nekBqfUx6W+QgSLPXeViNY6aZTpnYK21uQkgO9RJ3mZoEgNDabLIE9WJwH5+o\n6kGdzAKZ2X1spBxL+SJ6x2LOLDjPK5yyTDnbAwu5wy3/asXirireFBGSCKHp\njZTQv8qa/qwH10x+d1hHh+IXoQU1yGszycCEgr2JrrYsvPtxKtNc9FtlJJ7i\nOkZ5fQQJF8eUOp/NL6RyXKMYhVLmaSNd3Azy/lccCBqGEDzPchd5ZHIgZRFn\nOP4dtfsqCG1jAN9HjYT9iRIgLKRnENDy3Bvc8j+5rdL2jKJwMXVJoW++BL2f\nh/BBMogDU+BaJOT6FkwGgqtjc5cw4ibCz+ic8cBxmgPYnaN19Lhp5NrkTIF3\nkvsVl6l9K4EBAVKFnLFVpNUzX3d2Ef/OHacLtZwtOkVWNG1/kRiggAFdltFu\n0Fjyf9rsVr5e0zLsdTs2BgOvlgQO/bkvPOIdXfRv9YOiKNn8tvJRzTlgk9X8\nLOa9\r\n=W7TD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEyyO8wizhnlOg7N5B4Q68UEmuuMDS78JCR6MYMUM28OAiEA5g4cwIXpvhygHW+Y/i9WQ9i1VMvWqp+7g/W60NEpc7c="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.3_1638577529518_0.43793246815471076"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^13","jsii":"^1.46.0","jsii-diff":"^1.46.0","jsii-docgen":"^4.2.5","jsii-pacmak":"^1.46.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.36.6","standard-version":"^9","ts-jest":"^27.0.7","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","jest-environment-jsdom":"https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.1.3.tgz"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.4.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.4","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-UVD+rU9z8AJYPno2ehqc9eZ1Q6mHBzZf33GCaf8DPmiDRIGGPCFFjt8p9fuxcyQ0d5PBommLPOae19s4emEG5Q==","shasum":"9cf42b12629d48acac459ade89fab0c7ab138b8a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.4.tgz","fileCount":478,"unpackedSize":2941816,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhrAdBCRA9TVsSAnZWagAA5VcP/jt+QchXFkp+iQDcmCNW\nq9GiWtioIlBOiAEgiOnsjQUWPVY7fNrqhH+cjOyLkfqlzpSKZQGkCXOtCicE\nxAq+2WWOyw3iqCZUs/P0Hrs/tI541vMm2ZUFMzEyWEuna+3ddWfEynzKRufG\nm569QuLxtVXYmrUtBuhSv9idr0dVupP82tog9uJp2yHmskcZgKwFpLzdipF4\n0QGJS8LqQqufZweJCYcNhXxoJCvbtq1B7w272ZMCcH30KT4D+ekd5my8yRKK\nYSPGg2h87J2A1XGTlyyRKRGKqeJr0/7LGk353syPDKCg7XUK7f1HhQ2U37Gi\niAkpod8PdBIzf671o0utlF9ig38y5LFZvGgjXy2IMxCIP8klP0vKhFVsk993\nswHLTvkze8NW4Qrc9xt/YW8TIYLJHkmkmDFGUfdbWJuS6/x/VF50nuwNg00X\nM2WT2VHO6BcVqmbMyeis5Tq0Ns71VeUZjsIN66GHlDn+zC/lky93Oqu4f+ia\npHsvQX4JiEOuocCjsLCcQGdMq3FJhWqij76kBATxUYGIdbuMQYequiPHgG9n\nir6lUE+p5J3mn3p0tvXazPwFGci3S7mHIIYOMzwuDdGhrfCDUpVtsgG7hfuc\nBtU8G5B6yFax2e1ixsMSNbf1W9sKdDmRVh1hGvX9NBzB3OTdf1K9AA/hGXnJ\nh146\r\n=3GjH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBONTKattauudvX5kTdlEXWieApA9CQ4Jst5utYPa4G7AiBs/sNroU7f16w87v/KL9XGm9bWYX9+FMQNoqZO0CqvSA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.4_1638664001403_0.0906047816310398"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","publish:github":"npx projen publish:github","publish:npm":"npx projen publish:npm","publish:pypi":"npx projen publish:pypi","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^14.17.0","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.3","jest-junit":"^13","jsii":"^1.47.0","jsii-diff":"^1.47.0","jsii-docgen":"^4.2.8","jsii-pacmak":"^1.47.0","json-schema":"^0.4.0","npm-check-updates":"^11","projen":"^0.38.2","standard-version":"^9","ts-jest":"^27.1.0","typescript":"^4.5.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.5.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.5","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-VR1034rqtxcRSjm4NZjsMWscmiFJsLiIkH/2qblacCFq3Q8At3J3xpnQQJfulkze3nnbpDD37iRiWlpziiZlEw==","shasum":"5bae79a7206389cbeecc45aa8ad5b04f301d8ed6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.5.tgz","fileCount":478,"unpackedSize":2941701,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhr91FCRA9TVsSAnZWagAAadIP/1R/SVTv/XxNT2hZ9ouC\nz3KHa9KG8HOseO2JgVVskB5Ls0gksmjP87ZjrjxPCTZ4lIPKF/Mi9c43dM5B\nJxGTHTV8lZMxgIXwGKLqQssU+7P5ekYI+oxJHnAAcnnLw2hxE4bGcMkrQ+12\nfR6haPH7KV1rnURguFQYAy35eAn9TUUU2B8w7ciqIb3HDaDeTz0Z+BKSKnc8\ngtNXrWmsj9/RkKI9Uapz1vq+rMO+OlVkAYVmcGG/9FPdXnSytpwKPrFmaj9O\nUCIIMS3PdUhcqRfDPFhLYzxAb4Dif5BhBlTE4WtNfQ+kBaUTpvzahHFUb3Yp\ndElY5HzdBNHesnkYCt3zEZ3XJMmD0RNMojKYAwsI+Li9EuPmNbXisnLTA3LS\n4UiUNQRz3IGPiT5ogCmF5XoYSAUe7VdQKDfWilbjCUfojjX//8RComVm6d1U\nH9V+8StmUh2XxtcSjt8WJ6FwgjGbR8IYYWc5z9vvd2F3bhdO8uqhOIKMLpNV\nmoGITYfDunE6m6dfL05haV8uBthqtPGNb3/+vtVwKvqg877td5JwdAixsRfw\n7EbfvOGYRQwb+W2dv7qXfJok/PEfWTHeAKc8xPo3g6UwkgrnQAuzUFYcsTix\n6g3G09sKNIv87lZgbUJyqUIcZYrbvzDwF6c6GygTmY1/xZaGoWRZOSHSwzUJ\nzMbi\r\n=w+u8\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA1YBrViKohR8BY8OUEMPdZBwirWv9wypJpBiV2SJimHAiEA7lzCwJLFW+Z8MwCO017Hk4pkfJHTi8jsLfED28fsdxI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.5_1638915397033_0.7443107467243106"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.4","jest-junit":"^13","jsii":"^1.47.0","jsii-diff":"^1.47.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.47.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.41.0","standard-version":"^9","ts-jest":"^27.1.1","typescript":"^4.5.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.6.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.6","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-OWqxprJv1vU2ajGx710fxnRmvkajqg/nboLWbVAX7HJ9YNtx6zuExd2S7GYxpxYZ8MJjQWiCDNitbjt6jStRFg==","shasum":"e2b23127a5af4ca181ddb603c9a5d17de1d95153","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.6.tgz","fileCount":478,"unpackedSize":2943069,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht37OCRA9TVsSAnZWagAAGBMP/2EbRZf/QBKE2NJU6XjH\n5Hlcf3eXdHGnheuLpUbnM9otVC7EChg24bv2seJSSgpxiofpGq3PgQ1k9uTf\nR54Scpg6k3iwSw9Xta7Vex3oXHiiKNq6jrjQTgpKuFUcbkfK9971o0QKCx3u\nSsDioWh+fDDw8hL/sTDYNStItNzXtPCTPJaOTGrg+zMmm/C6Dde6OW/vL/S+\n7E5ikf4bhq2ttnctwhATgCYTe7QhtWjK37MZW4mZ/YOaZ3a90/ptsZHrab2O\nD2+WZ6aaCHCzJuEYL1NoibhnsP3Pmr/SZIuybwWKzqscUgo8tLyCtB9ANmQs\nI7kOcLzrlWxIFm8VUwVJ3Adk36wBxlmWJejMyTsqn6hbws/9vjpI8O6+jzhQ\n9puvX2MgcGBDO8h5WKlygZzO3ri60C7SHDt896gaJTi6gPrjIHSx4ll2JkU2\nxePeDfuoIhJkwvPt7GjnnsA3ovCsyjKS7ShmFwfnlfEwHiYKBiWzG5K+eDK0\nBcCjuu0hgiySmwkfVLVeXshHLn+LKge54ygIK3GMMvc4h8lGlf/bUuAhniUi\n35Td85YhmDQwiy2HUfCkmTyOnvqr/98L9ml2zWWGjJfZv0lcV16/Z5czwfgU\nsnVbsbSpplf7fG2WlcxDJoLarL31Mo4p1sMwkk14VaENVT8qerGpcWnVEoYm\nLwS/\r\n=epRB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEhDQkBbs+6Jr77i4fXTGTXKb/gBErMYTIxTL+n7cLZcAiEA+wYz+ucfdHlw9ao3o3DTi7pZ+bvCp+JWN4MDslVv4zg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.6_1639415502124_0.7118915174894094"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.48.0","jsii-diff":"^1.48.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.48.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.41.0","standard-version":"^9","ts-jest":"^27.1.1","typescript":"^4.5.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.7.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.7","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-/GITpqdZ9Dl9xgum5aar6qgI7nvBrvjLk51if30bfkSm91PDQ8779EVFNRd2XAd6hn0y82uOnpFzRgk/wtzv/w==","shasum":"cba897d2e4d01b2d34568ff78ca8b48218265808","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.7.tgz","fileCount":478,"unpackedSize":2943094,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJht+dbCRA9TVsSAnZWagAAntEP/Rh5EJ/4JYZjBmCj0Xrh\nWN9rsiov+ab2KZmt4IYSvmqcFxXjbqOTvZPtXJtwlnWo1NRDbxxP9CJBEsNp\ncurGTYuuyp5IeodGAipt3j95+3FA9h+nsB3lY74T8UKKpzTUsUoR4KqYRZum\nls5s15K9Pg5iwa/sBSZoaNGbEGUyEGarwpTSxiseDXEA91s1pV8evU6YK6Yu\n1t+y2zVDocNslK/F8YqZBdalOcYCCbLM2lYX+zLslmGFoHHCWkUHKEbjLDz4\n0f6GAQCaFrrTNqWZqNZL6f5km3BP3ABsKdR5/r3tmRiavGkCmIGzz/ueIYJP\nQGMaQcWAQ0iuSmM6GUOAj+IiFSiH+402+J+IoG+QdktYmHavn5uZL6zpMrO5\nY12rx/aWKGXqfyzgQerUTKhdgShHPJ1BcfUvHlwFKxdOYhK48+iv3Q+1YziI\n2mLY0jf04z5fqI96ys1RC8lndh6pdLhgxLp7RWQwvawCH8IH5BB9A3xJ/xSL\nu++bRm03tLb6AGRTjtVgVdRwGzjU/ENiH2c0iUE8RWMTQ7YeEpafFhf5oOLc\ns04xM3ND5k4aPvbuA0t2NZO/c51MfXYKHmSOPBkm6TTqPJUhOjCUnmWQs+z/\njR1g5hjmQjwujWkxg5j/hr3XSlkGxXmAg8hmClpJ05YH0wAxJ3YfFHnQMubB\n0SD6\r\n=9KE3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAlDgyX5cPJEZbQMo+arHhlZIo39rarTsNhmu6fjS2HXAiBCvP1ZFawDOizSt6OgTPxv/AfpRJ18/1q7ErjC4c+FHQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.7_1639442266925_0.47868384673783315"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.43.0","standard-version":"^9","ts-jest":"^27.1.1","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.8.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.8","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-8HfIXVXiDKVn/EwulFIdiLKzmY/Bk0FY+kJv/kwICVioQ21V5wImr2mDvV1lz5uishvYuZ6xDssYuTogUVIM1g==","shasum":"f9e86b7c0c4f55586a790f14f5bfd89901241994","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.8.tgz","fileCount":478,"unpackedSize":2946425,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuTmDCRA9TVsSAnZWagAAwNkP/0Hr66XuvqSB4PN4XsM8\num/elRw8da8EM5jCVp811P2YEo+r7Cj0fsz3mAaghijrtdJGVVwSrUSobU3/\n0qVciqT1MXyI5UeYBsQ11gYwySh6BcfaPL34RNmrBCthlXJOZqVp4hRehwrB\n3gzbIYXk8fCJnf5vbC7Rcq6HJIUplnZM3UQSCpJrJ05QpyXZ9Nea+rd7hWI9\nYgANBfJeEoGS7Ha20OCDDsorGI3xbgZlASuIaBztLZeRtSYB9eE5O44tHC4H\nUu/VEo70JzueUFALE+G04RVHN9nY2JZs0szaFmyNKdeHc7rSfZwRYmBYXdtT\nOhZRkMLYD8+1a5VvM0JLFBdGLXXx5nUVNqcBBp6oX/etmNfWEKlhsMz1qXJp\nDzog87zJneSktscTj7lNwNoHlKWhNlDuEPh0xipz8aCmhH6IyOgNS5ErNKIE\nM+2v5zfjeY2mgVYYgDBELlm3FYOdGPgc9KOoVPUIqq0PShho4Ibka1T/KuTN\nGIdR2VldQM4kGg0rdJxwjCtE26UEmC4ewviEy39lJM3XuLv/NstZebyTlHZy\nxi1/EgSiTmNgllI+yCwx0KHpO8tpxke3VgvX6XeR7lc1+d68BW8Z1ZOkkfoM\ngGwSWYo0CP3M5mSroZ8nafq58e5Eeumw9u7R4U+YwYUrGmlPAlm7Qpi/c8cM\nkvFC\r\n=/7XG\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMVxj8zqhGKdl5ndTZ2OH2+hgi6TOQJVDtqxClJ6K/NAIgV24YQHy/qh/OBC3wU7I+AgiIP9jnzyOmfrptY3xF9uI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.8_1639528835289_0.5078432691945314"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.9":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.44.0","standard-version":"^9","ts-jest":"^27.1.1","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.9","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.9.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.9","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-O3B9lCg4GqkXgpyWGiZ2yw3R4GqqDnnVwEs2pcFCqQDuEB4/wD/Ec+axB/KdE/dFz6VVTc0sdKydezoIM2xocQ==","shasum":"c3c8d921b1a5d2911db72fde23dd1d98c5c232ee","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.9.tgz","fileCount":478,"unpackedSize":2946767,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhuoq/CRA9TVsSAnZWagAAtDcQAI++PknAP6qQ/6kCG6nk\ndiQBqmuGHsNbssviLo0dhyXCK1lePJ9nUiNebeqds3q4Qidy98fLOoMDvUx8\nS1mtTxbQIEOWZnVhSeHDnDGHKbTcjEdBCV9XNNZbRdHgLqAKzTYAnBRlLcD8\nenFPIleZz+jhrVozYpHe/Zmf/ef5GFC7Q8bDqLlEA3VvOg4PE7W5RyNSVhCY\nha5skFK9I4gJqsaf4asiAF5WgmHPp2fctCaJcFlPSI1bLKDj/4hMGu9GXKWA\nMr2LRY2tn6WH53pOu6vJQbFNnSidB493yJ7svAjGM6dlP5kjCLc97Q8oIRCN\nPq2TjZiSPvQ02LAraoTudqiUxIAG+TEcWYx5UQVLb8raxCmvgPTftl+lDq0A\n8MnKnnOaBKONba+LJ2gscd1VHjQB9o99UNKlLgDiKZOVhq3A8lZhn1ntcwp/\nsUAO80NeYYsL9VzZ0kIhc88baI9/ZL71jznoMMmkoM2T8FfvEDz25TKh7XQt\nTYpHDXtdCgTY9GqVv0LGx3bEweK9YGo2UcdKtqcM21VXi/hcRxq+EfqUXeJL\ntJU17jrDX5Xavt+azeLmBVZMdeARuI3xr/P4QDFGY14eTjCYiFZVb4HdPtNK\nGe7d3nlj62qmoLT0ohR/rOSvjCS2winJ0RInfW3vrwb29ft1aPNT/J7EiVAZ\nrxum\r\n=kEL4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKZu/SYRQO1BcGgzuQCAxWiFNp651IXVstIASepJ9xHAIhAJkuV+9ktg1g/rNRAPLqgA9zh5kuzd629aICWMSUtkn+"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.9_1639615166876_0.7907960999174528"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.10":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.44.0","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.10","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.10.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.10","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-DTWKaxYssOmcsgkxqMhoZROS7ZkAPuWNLMG1nYZE2Foeorfi1EJE8jEqoIKG6bGY5x5Cr28KiKT83dDyw9cUMA==","shasum":"cb20e2368614e8716b691dbeee5d1c64fe623a4b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.10.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhu9ynCRA9TVsSAnZWagAA9xwP/iluCfLPqlQHC6lCXfzC\nOd75B6DWZ6FydW7YXMn+HaxQepa+UvR1DV6FefKNR07ox1oajGKf6WGD9P1C\nq/TIFcflUNIA3xAunPRUXmfC2fJVxWpihllswkbytk/mtT4CejSM2PJYXril\nZaziirxkZx0813p6BRAGn8zsE52BiXdpC1Zf7bpCxE+4WZKZNg3KMC40Iph+\nB/8UboVOnJDEnpCjwYkqsXxe4rgUtF/jXWrkrPH2DurGSUGY0dqS2/zfZNMS\nhycU2Xeg3Wj3A0k1qT4iXuhKqwJMHvYobWc2oGtu9CYbA27JeVv/r65OTFoD\n3M62EBheuLr40syAajHpI7B7PcfLeE7kz1VYwNe6CrFKEoDqDwYSzlZSVbY+\n51IqIwGT4SkZ5r1+ztk4ZENixdHnQCN0pjxD9MYBg0C7jGiX7J+odg76ZRY7\nVj6KLEjBlZ/ot+MmTcvn6HqpJxIJ89EeRIBx3mW/IhssLGFEHmzQbppX2lJg\n9EVkqf+fSMpH2XqeJ/xWLeD+9DqSvQ5j5WekQ1BVfiQVBBNMqb06qlRK2GNF\nDqljnlPOlwK4RhB4Q/H5M6nhOflZUeThauNb/1usB9qYiFikBCK/sgpCpU83\nkpO+5XegYatHOXBKzzAxCMpl3HtiqIZKquUgjW/SFgJPUc6PL4D+BFJ+ET+1\nUjp6\r\n=Xvr7\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDADF6Y1jNQk8FQ7q+3/rNEQN9qyMODohyYHX43dRdjtAiATx5d/r0Tim21pYjoXhX36qSWk+UJg8OLwgQTw9qJqoQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.10_1639701671174_0.3043207434267483"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.11":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.44.0","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.11","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.11.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.11","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-IDAkKrcMXYRKOojnoKsyTtRnVM4Q12v/X6k4ovQdqE3C8CWpZB6qcDfZB4UFtZ9srn76jiQu4uPZn4uDtu3VmA==","shasum":"512ce37fd9bc11e8fa07d5398c1f88491b30d849","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.11.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvSynCRA9TVsSAnZWagAAcp4P/jgnNNtC2qaU8sknRKTT\nVDLBIxa1uHawIphuFhG1QtLRbsWENVFo74IyjOMTBrVvWbij64o2+4ijo4Q1\nJoZp9S39pXOMWh8i2jChGGhZ3oKVdtVnksWszHYz77fM8Y1pLX0cvUC7lHWo\nusifhuSHYtEvi61FADrhQp4NmLtNRwYGmlrL2CY275gxu2m8b1bbWhTR2Ag/\nj0RAsdF1MnZo7yGxsX51dxBoQbILwq2nIk4MCT5UxpjdsFVfpmBUu90OR9+s\n+ipETacDPV9VXnZysUfkWzWx5bCPWeVGGvKrbpc3VyqpUEYr8VYPrPunM1p7\noZeIfn1a2ISKtAl1ORY2re5GuWzI/DMF5a2R/gW/EFYx+XU7+qCcZOj0kB7c\nrHc3bwJ0AmRL0b5qmXPZw1qUV5hiq2ZBqdbuqP8h7rQ4921yI6RyGI9W5AVu\noWgw+SU1PXo/JxSYgMCuSJVQ1PwURtvxke4h46dqfVBL9WCqlRmwkhrkGZbQ\nmAqhNYnyJg/hNhmI1Id3EcwRrgkpFVq9aBCOhhuVc4DFRu82fzII+kjignI+\nKeDgCYm5deTdtzeVZbr/5Dv0ggMCoKapLb2IAFM/+SDOrEdYjGeuzfquIqKg\nwUmKEiFkbJDDKGZ6XOHedWrdfb0RB8oq81O0kToMwPKjsenL9M1Tlh86X1Fx\nzyxP\r\n=ZhsD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEAW/M7P3jESp8B/Qh18afEoxssVIKqg8EWEiLMduNxwIhAM/GphbWHB3aozLVaEAnx9B852IYYnK7phF9P2RsE4ns"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.11_1639787687059_0.5793270133108135"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.12":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.44.0","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.12","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.12.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.12","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-4oo8RGCdBfBXDIhKIauKuYX+nVT4795mpzN05K0tn4MAlXmRwLvs84MWvWY3PZSy7TjyenGRBAbipp3sjLn2RQ==","shasum":"c8a7058299bb94bc595022aeabaf424113d05b9a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.12.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhvn9QCRA9TVsSAnZWagAAY5AP/REoEa0t6e9f3DpgTnAp\nwxzRyU5w+T9NEBJDmNXqQpDt0EZvKmMMH53hY8slrFPkl4JI5QQ3xiysb2oA\njP1LjSyLCe2txPgK68xNkaK3r0VCWjOOV9yCPnohzQgUvEXPqdatsSU9/Cr1\nZ9J+dMUJ0NWoxEPDJDWQ5nhN9oAem0Ky0f8vMmF5DJrqexuhHenhWcahPRyL\nlh//EHbuQnha594ppha5SrzvZn+AXlx1bXqhPCsIV1WsDA0QMufAkt49RA5U\nN6HRzBhZch4HO6aeR5/Ta9uyip0YlyE9DvAJKRhrZCpzSnhv4wmt5/4C27oL\nJmC+GyShYJQkt0fJ0ttYGw76+nSJuBggHfuU1DAZwrabZ7f7DESUk2q9tZLB\nV/4lcXYiH08chN12pzE3KJq/Jpqr2i3+t2Za4iH1RsfSSBCszEZTRL340Syn\nL8P6GZycZvRP/wQThlQMb7gzm6WJQwfSCuCKW9LvR6xDQdwazhJYJanWzLFc\njFpHlLfdmURvIEPqfEN6x1PGMrr85GGkhsh//fnB8T/4EiEnZeCns1aNEjms\ngVnmJ7qVboMCaf/z9u7CwyO9wmn2egrH/fJVzWNHUXtcyUiqzWrjkqZGv77D\ngUnwitdBlQzaPJRo5bnwr+r5o2OTpYuo+Dcj9klx30wFoDptWNBpPxT04hsJ\njU0t\r\n=Fd57\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHuFRe88utI1++sngNxZAkhcsxRDmL3LeIGku8Bx/icaAiA3QEWEvatzneQTgQC4CPY072fVyCxQUqKxBXfUmXclLw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.12_1639874383820_0.7051319996427379"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.13":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.14","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.2","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.13","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.13.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.13","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-bYiG+Xt7AX8CLl8QEK8f7hdZJM3hGUwI8Odmv4c9hVUbPp+tDLprNhewRebQ/lTrRs5c+xvW3Vh2SnJE/i5khw==","shasum":"b0992c4265f0fc76113633dcd82935a55d5b8747","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.13.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhv89uCRA9TVsSAnZWagAAGK4P/jDoId2MWC1yPyQ9l87G\neLNcqObJnYufHK9Bygq/JSXDsPZDnsdbyBWdyBQLIOmCkGgO4Z74ZAmuFf9d\nf5cDHICLXsupAzpqjQ+R68JMkUoSUoK/F4Eszpglrabp40ZwxFTJK0CZgY1q\n/CXJLq3MBA4zZoBY3pJ6dlW0eTuf6uz1eNz8ObTGYJ8690L+N1eVEFwMvgCb\nEt1hxfbjHXpAqbR9AS5tcLmyLIqrTPxHzYJWY34xSXzIFjwH3YyfgEwD9l9F\nnl4s3ufuI7eXqQpplJfYVuv4lL1q+X+vVTUaGxOfB2VW/iuDuoa5Nuesvfeh\ni10FuvPyaOWFgi58Z9zlsTaNIc9wc8mNcn3vSDH/eiSvrG2dG2UND3v4znW5\nbMmTk8AFEMpgXcRcTt40yxlKEqjgCZwf0AdiHf4V6VCKx8kpSv2uL/88FZmC\npTvsIkG2WAA2dAXhnTQHKxH3JuRBk+3idq/cNbIe27YHJk2M25OCpufatv55\nku+LFnA5yi2dSlaQU5e5+Ulz2e/LhRe1U+bTcrHLtShUhNEW5OWLNCaBJdxp\n29t8+izNGizsMkFSHtrtPQscK84kVGJUagxQIDuXw6YgYqZTdX8VCX4eA0G4\nRAhezALeNtnSzd2JSLGenuc2rfko/NiRfOYLoNEqPo76vPlnbSoof5+5qIa4\nZby3\r\n=wRwe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIF9gU3Dk8h7K62wUr0PabeMrPywBECGDtS4i5BOc4YPhAiA8vAc/dVzuf77jCVOYlhOOp+SPuRYaPknFtpVCXAWqLQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.13_1639960430734_0.37245058364307404"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.14":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.15","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.3","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.14","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.14.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.14","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-BC+594FOtZmdSWolHJHQ6vwpaDUrba0rmNZwuPSxcIlG5qTic3LHXRjAPnUdHCyqwJBGIVpQXNTq3gSa1Ctx0w==","shasum":"7d613b4692b96807d8ab0c2253c168f4b3b3c2f7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.14.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwSJ6CRA9TVsSAnZWagAAB1EP/RoFIOFFPbZuYChaFIbp\n4L6UAJtOZ8q6Gg+EgHzWwmwGmQCH6JBwq5oSrn5JWpi3/ZcHdc79W+15MJdq\njxkilzMEDsFdg7o980JpC+lW8TXqPAzHA8/fsUwyo+iIP1xe1fOH/x4ihdR2\nhGk33bL9qFlEJORQ7ms2/qqarNh3ioOYGUFbuHjng9S97EenOleMVR65UsfG\n6yzwQ135y7UWxYtSwEmLdlCnlLHnmo4EJ0FaFoUCC68XhrMdUqhkff8dVBMw\nLZbTCUjh705SUdamWo640Ui4j/nvfEiTvy7eOZnHMuhTB8QZFgks8e2pwN0Y\nNn8HqdeitFPyN2fmVsaIEHtymj0u8Upo3rRm45cIo6R14x2ui+fLE+4Z4FuB\nSFCa3xt6m9dAwOivpRysLCy0UYGm7n4lOGvDhbfUmDvyQWCNBgS0mj/s8/AT\nx/q/VK7frA9zipqJeKXHQ77Rt+vkOTvW8Cbc7/P/SErZDNmMtrQLSWMjKmOZ\nLhZWCMRt0+E9Pfewzs3OnogV4wMPlNShULh+5PJcHN523iqoWtfrZB+HHVem\noYmTpWvgbhT+ttPw4E7L/khw4t2SCFGwHmp56NTS09raZnhjhTNFiPwekUCa\n7zmk9cCbfDfiRQTub/oy6F+kFIeto5TH7KqdN7SuEC0jaqzclIrX0QzKo7am\nXdgA\r\n=18zl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBvxcSe2dx7bZH8JXuEIUQn0Sog8m8mQ4iZC6jesOz+DAiEA9DLF7SQmEy801VVn+O76ICglizYMlF/x2NLFZxNfqf0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.14_1640047225833_0.09276837628604628"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.15":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.16","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.15","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.15.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.15","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-n7MyN8/RrZ9z3aHJOm5yxVYPIVDPtxjjPZrc1A4TnFIdpFtgSWv6xHLtO3ehKx3/R6lI2lFEuK2FSqiqQjLtFg==","shasum":"3b574efa1043912eb920dc3e8e0e8956b624eff1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.15.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhwnPVCRA9TVsSAnZWagAATRIP+wTwsnddWbaJ5aO0Nkjm\n53gwJWsX+CnaB2yrXGyNUEdMrvt7O+J6i45hMiTynbmrY/dlxkwggqHrBzuL\nFC/s13ojdNBeOrJaJ86L9vpL1cPEGK/MHorg6UytZLkA4INYRxMaPvVoKbDm\n8cUyeTnpqSDuYD/rZO1YV9L3tnmP0g/3iO5SdGFx53xsPfIVzsN+WeJdys4S\nPyuaGWdXYkrQmeLhfb9BLTUu3lPnUhA++z8SFOYxUePqSYgr3/4wsrcY4ZpF\njA9e1EAYFVvY/71kgrP9YZVWrz6kxeo9wYxEQW+OCEOuYvmk4/ZkSMDVjSLR\nOz+cDduygiEj0Z3vRK5sSHOaFZ6FTdrUZhHXtHGBx6DGum4P7qoABPCMzJUT\nxpwYe8QVvP5QQGm8xf9+FI+FQ8E+xKOjNlKnpm/i5UNH7gAzfawU2rAV3wA9\nlIzbk66XdFSvpcoQduJfgEz73wwQ64AaDXpJiwExF4i8UoaLARjRLKbbIGYF\n/CMS+bkm/IiYEFjtTMQg7LBI/awNQ6z4c05LGP4HtSyTyrTNNSIHVxaI291k\nfeMZQclV8kq5W9xjoYwsR8BSfgDTbmwS/ESLyTKaBEIJ0PyevkQxJTVlUYNK\nGxbqB7qVyTlSDrcD8FP77AfF2CAe2N0i0ZO0wVoImRld3eSza9N0za4pcF3y\nqNms\r\n=4p8e\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHRBMvqgO8+zyJcMKu8gG+UmO8otnYNHS9gndQX8+Ez8AiEA9Ms8XCQkawt3T31Zn61cmSK1eAEmfMd2SEAEGds5Izg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.15_1640133589478_0.306624351708924"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.16":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.17","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.16","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.16.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.16","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-oG1uUqF3DOSok7ZMV/PyvVLIn7ZbvLmtlEyXdBltIzPYDxfPsRjOpnA4DALOlDDebqgComEDpIk8booUgpy42w==","shasum":"8c8786ee0a581013973125e0776f47c3b3afb146","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.16.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhw8RbCRA9TVsSAnZWagAAbJ8P/jWGC/AAtV4oqjcD66KZ\nAXFoHn0GA7VktCneYcbus5edLGvM/ORrcZfL7dvwY3rTh4SoTZCd1h6juTTF\n09pNOl7MatbkANdG3mmFVC2vZANhH4JdY6GtDQbV2OyP3+9yXy9a097gzfG7\nry76IX8K56h+GKyYTYJ3ubJbkRs38TnndphXVGQPWCNgXwmhvOtl3EpFh8j3\nBVSiwIkWBw9/6/c3vE9FRo/ijiSgrF7EmaEyr3Wqkuw9nD8haJef8BZSY2He\nfzOBnn3kCX38a3T909uHGhaaS+p5UpKL0glBCsrE79R4i2YDQ+ixWopsPX6C\nl3Dd/Mk+CokY3rWhg39dD5VM69PENz4CvhCAL6M7lsLanVVWwMjIYlmlSfNN\nb61BzUbq49347g9YlW69DRJVYLwDcNkYTJB19EjQbe8Ir04H5F2ez+AexIrf\nWKut90DZvp6xMgcv0YUyisDUTNd33sx6rFFUW5qRDsiNuyls2oNE1D8muhvp\nz/HJKQWkqDzEQWKVAdP6/aqw9k9YNtXUaqSWF9dNuCmsBTt1l5jg/KgZuSmg\ndvwp6m41UdzKwfR/BghbIZM7Rax0B3NzUzjJDyCFa5CqUJsGw7utIumGJrDg\niBrx395XKM47ljHLx6vdVNNsU1JPuAtPFH1wHA5jrxsqTyBZJqwYfFUrsjzB\na2r/\r\n=3b+G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDnyUhGUICPVl67rzUNMl251h3rLs0Ga/F16fTrKq9rRAIgFDrq+WIHzUG/IKF3ArXIzW0gjY2IPOVzfTGJHsXBmxc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.16_1640219739433_0.9094610719183964"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.17":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.49.0","jsii-diff":"^1.49.0","jsii-docgen":"^4.2.18","jsii-pacmak":"^1.49.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.17","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.17.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.17","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-+dAYSVaJViKx3fmfaxcjfrCI9ROsTvTAM3HIHyuOiC/sV18tOMW1iYJNHYHXSd6jLOFLvnSkLXZhp0UgzicekA==","shasum":"c10a7d4b8e79e66d017a6b03740b572f78759b27","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.17.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxRZ/CRA9TVsSAnZWagAA8U4P/jaeEnQvQLKxrMrh9dNx\njLZtJqf4i0bPcAZzzlzE4UPJYMhVHkUbMQ1c43oAeJit2qPQrK2WGTMokqQ5\nJAz6tdJK3QGCzulMLh0zt9GCW9jyImFB3PB1Aa8XV+c7EolA77tjSEvGUH/w\nnFy41zKy8wgL7uJMAa3KH7NOBOm4E2r6e/JsPVHOQKNO/uZ4vtIvvKWPgZQV\nK7bw5Lql1gRPzaVEU4gtilkIk5/RT/l45L+I7XP442lRFusUefSR0CX3DUYU\nOn8YaGue/dU8TQPpZJGyBFI0QxxsGSyyvbNY8aFHDB6rbOs1bY40tCYlvitT\n0LwDxQWh1WKHqZW1G2LBUsBAMrJv9NqWciCxg+QroRCJwt3vhy5T2UOeJ7xp\nw61kUH60jvDiEzjgJSQOEpYR6nIv6ZJYTz+fkhYh9fL1K3y1gKOCH6WNfmqq\nf4XN61xK0dNFj7gnof7nC8Xz1pa9jzX7jgYmgcL6Dt6IyNJBdCzd81URoJNO\nuLxOjqO4HhiaJmEYy/ljXGaagTeJbbrIGVzGHLNwJ14iWLmEbqDNogun3Kk3\n7/eHjKpbIB4YrtQvsWexeKdbJ95ggfcl5tl86s51u3K1jkEpuTntm+e0CHPb\n6TPscEWiDIRuR4YxKp2dfMeaGWQkqQCfgEhoa1Shi/r4hgiPPaxiBa/6mvQq\n/jDT\r\n=wNU+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID8NdEAO2vRmcwXOfxWUrXV+oTq9EdSwFYrzyABFzB93AiEA8aNdTXzcIuoRpLzu/L/kcaOKbcXuYZAltX+vfpkRPpQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.17_1640306303412_0.7473161855329182"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.18":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.50.0","jsii-diff":"^1.50.0","jsii-docgen":"^4.2.19","jsii-pacmak":"^1.50.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.18","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.18.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.18","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-KbOONTz8jNlI3VIebT8tSEKXNaTegTutz/5AYpisbmKvPzV5y611gWhwlJkleNmZ3S4SWdTid4uSZDQdg5E3/g==","shasum":"e3298ba57c237cd79848a97e505f1dec37e2612f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.18.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhxmS0CRA9TVsSAnZWagAAa8wP+wZfFjaEPmNAcXuB54KX\ndYe73mtA+kzbTuLp6wfcUTqJoZA/uAzMnYMGlG0Gaf+iDnmlA91Zfa5Bbp4l\n498minyMJspl8k/DnxkkUIsRQQpcuqZtgmDH8WfVkCNDiANLkxgVsurZTHnA\n+TmkjYYTZK7eY4xTDWprWy03YRk2xOaYqjiA1Gur02+jb5wQkxVmVamGhu9/\n5zih4SW2gBsXUxX9XV7G8+/F8uDED840ofDmbFO5s+Bf5zO090UpugSLR+T3\nwsJyztseipRmUYmbkS8gFv0oObuREcH3Q12zy4C5lH6xTxAGpBE4J0YD9Rtx\nORek+vPiHYhmIb8mFO1fsscxyVOHHfbyv+3zkXHF6uvE9f4kiditVGGIjuii\nBJwN4UMHPlDWxeoVvk/sxbGxwQxaizuew+El1W6gaHSW1jjRxErgQnV5u+6Y\n6dvaoTcDgFIwWjKDfdDOTIEgYSUf4TwiKrjMV0VjTEiNSYPu1RAEgMdNyct7\n7nhBg4ZwskTgQ5Ltxp/zpGGa/cABRQlrjeB5/vPqFoYfwKACrv5SjS2/PxIC\nlzewCAIZl7wv5ycEg+K7Cwbiur77yhjGQtjMzeRCWm8KT0cPFN5sQ8rKGNiH\n1Y3/WCKVSHcerG/2m2BByWvNBlYpsPJpvAxQMbei3SxEszxjhRpvPWZeWLwA\nT/L5\r\n=Di/Y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFAFHhuqscZPNaaJkhPKKY/XUWWiuO8C2rQu6KqTagwrAiEAtJx2fUKGFvU59tjpUD2SXU1Xau+ojrWwRvRCN7ZG5mI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.18_1640391860768_0.5954782450171285"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.19":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"*","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.3","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.50.0","jsii-diff":"^1.50.0","jsii-docgen":"^4.2.20","jsii-pacmak":"^1.50.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"^0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.19","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.19.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.19","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-BVoEDkB3sVKPCc0YH7ubZbo83S//oZkhP+Xe9ycWl2gWcb8l3WfqE5FLSOiIxPO2uAPt7m/eKm2iKSqfA77Qyw==","shasum":"5dd5595d91914b204c0fd960e8557a4946420ed5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.19.tgz","fileCount":478,"unpackedSize":2946777,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJhx7ZvCRA9TVsSAnZWagAA57sP/33Z7+lZkRv0TjS+Z078\nE2utcwN6GOeh0lV54r7z8lqa/cWZMRyfwF5i6qFjWVJYDd8rcnfO/IP8S1Wa\nyiX1f4CLKr1HijrTVpNBrYDq66zuTw7pab3vwXxE5JGZt11T5W6CQ4qrAEii\nF2xcMpsOINN/WponQlZozd2W6FiiK0zvKnOR8kE2IJUuO9qxDnL/QEepRVoF\nX8d/98a+/ugSAJXL7UXF5YuWsHL0NbdLNdti6Lyua/HcLkRlaPas88zbcZmL\nBJDoDcm/Uv8iGweOP/QnByMWphKdRhY9WfFb6M3fYDP3cA8gtIjAT9wYuAep\nZ+OHtxnBy5rFCDNtvKpN8Oz08cu5yXBJzedYjYZf5Q9xLnxxiLrPAKSVseu+\nPf47SJpr/zJsknXhWZqPSBH2olPgojZ4kfWql6RKoeOko+12Ze+z9v09ad+0\nNbiMZQRqKKuRInCjDSbz3noLbhuigphuh4+VnXriLmg7RgyGBhkw3tikL3HU\n5yZrNx2hrxq7msuKdEaRaCT2Ip5jDwnYew5aW5MFHirgWzfHcxM05FI8iXdV\nQLz2izQoa1WHE7RVflM5smdp+eb2uY9mPPp3sRkO2TzHeGLdSixGxv8Kl4D6\nfW9ujnMj958eYHisyR/k1EzZWQujls6ktDrVIivh1WdI4vhh5uYig/WhV0F4\nsoIw\r\n=5rw9\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC9aXayVVF2/xzftQCFK+dWt4gHzVInLVnSw/6fIr3cVAIgeFgGrXNsu0ehy9kYnIC0F+L2EZva9N+iUWLHK0d6SdM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.19_1640478319430_0.9718791269834794"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.20":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.5","jest-junit":"^13","jsii":"^1.50.0","jsii-diff":"^1.50.0","jsii-docgen":"^4.2.30","jsii-pacmak":"^1.50.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.20","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.20.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.20","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-vblfoVbplRMFrCOQ21PgEe7YRXe1yHI7reOSDkuga6WHRlW1ipSdOWYD8C7SmuMzkp+2giS0KfLktjOXw0uKnw==","shasum":"40e593e81c1c8a16328f315fb8e6840516be0f44","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.20.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1Jl1CRA9TVsSAnZWagAAOJEP/1BNHDiyPGBpu2GdiiKI\nSKNXsewfBo+B247s9WmUuE+KcmHCjmpk3X9Ly6xIwf5HpqMvF/Sf8EC4ayDY\nTuELXFGlnjy3BbMd+qAJ2wm0R/l/MqLfu0Xt3HVs821go3236JEcBvB6JGvb\nJu+BlEf+H3eCAi2gvw3LJmASeTno1oWdo6KBdH9mgIBELhLCA7+kAnpIM3Gf\n/nVRemrOxUgmM8s7aq2cFhx+RztWMRfedWsy2wKhDLoJOHmN3Vga8ck/rqR6\nlT2euZeGqM0Tm4SqintEucxeGvKeKesX0fIP5W985I8d40URH1Gt3BEl2X3z\nNU1/zVHWrIUYBmnmsKtYA115GoxbsYIV2unny2SFP9iLZg8FWW2zF4H38fvv\nSsOaVv4Z3D7Sy97MBQnOhbMiumlK65MmQeltAIK0FsVxU25hKfX8n0yh7eFz\nRbRPMB1kaQzC7TE8LAT3BOjMsS3GX+RCubI9h/nvEJaonzhmVXxrGPmaoygb\ntKDPmMaApDAZ/tfIR02zIJ2F6Ctw/WfPpPsQRCvdmO7+wt7E0DVbOl5VuwzJ\n526yvuafFmNM9i88pPLj1FQZN1dx6uGIGPKBAGZuQh7ky/4V2YgKdrqsM9Ws\nF8gbKGN1cWSOdyTdUApMffRC0bJAM/P4AyulUUjPPt1M/nllKn0416UoVUFE\nsWFc\r\n=2JWv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHx2qNqpaRuhLrhwDI/AaFxDeJ5oq1AKHifBJLzL4VSdAiATL+TfEDHT7nvKms+M8sal4w0f7lZELiQ7S2xcvMoQ1w=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.20_1641322869539_0.9290637782797544"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.21":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.6","jest-junit":"^13","jsii":"^1.50.0","jsii-diff":"^1.50.0","jsii-docgen":"^4.2.30","jsii-pacmak":"^1.50.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.21","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.21.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.21","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-tg8WqYDl2tlp+1CyHixRMNcy4ipIAF37Culsh9/ZBqq++zhH4nHX/1ZfDqX0eApTr8GLKix7FG+iSzAiYOeFkQ==","shasum":"8943e9332d90525411eba79e5a90e7fdee40f1d7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.21.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1OX/CRA9TVsSAnZWagAAIwAP/0nvhq/+fMKQLHAdItm+\nr35AlCikF/KqM+AACfjBuH7J0GTHlDr0FNB1jWHE3mHj4NWezH2IdcDQ1f//\nxThWPNqoFyAkh31FpKRPoYgPVfM4lK7TLsP+V9W7nFfCdfHE4G60am+Ggsn+\n8rlJQbZishvdtYHp6Lw25GHDVC0RyKJH9kK0mBOtTPPF+Paqo8XrFqhqf0p6\nlkpAMwpygrstzQb3jM5lBTxlfpxq1UfsxmxcbuXQ+wATfNNSl6mK05XrExI2\n8QatSJwLKj8Qv1VGQm5lvHJe5jYqn5Hn9Y1h3bSHTLH5Yz6pUnxk6CbWRBmJ\nS3tuYWEd0tRMeYjLOEw+FS4QeGwKD64hfBuyd3zFELGA+GmNGA1VxKYeFXsz\n1iEp9MUW6ghHvzZNeAjj8H+mrg9wMrMdmkSBEYedn4kEgrC9nJeNY9h61ZwV\n8mv2PUhJ7bWOU86iPvNawKa2BbeEE6jG1W/mZmkrmQxjqxCRriJJC+fo6Wbo\n7Uf7QLdlFz3PYgJ0joD3Hoxwv6x73f0TKJHlCna3C1/TdPa0WOftq2v8wtk/\nRluRL539ziPDipzzuHiBrW7RF1RgxZLixdB7+gO1UbbnQUrwHD1edHS8zIxq\nNHvatuxSf5XTigxWqdXCf09pz3Lnbb1c6yxJtfJ9GTiG2vibsc+mArNs4FVt\n0YoE\r\n=0mfR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDiQjTLr14SrBgCNzcox6ztbq8WOthKt8sE9euBw+81lAiARht57mqAY0M9JEv1vSfT5+mhpJ9t2N3KZgKaKfP1RXg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.21_1641342463459_0.4946390805682017"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.22":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.50.0","jsii-diff":"^1.50.0","jsii-docgen":"^4.2.31","jsii-pacmak":"^1.50.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.22","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.22.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.22","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-Y72z9FEaehuOROsiwKOwJyq07OTLpwkWZaaA5Sk1PL1GynLXagE9SJkKJUS0Sdhp3xjf4RBJYg9I+fsCgqpE+Q==","shasum":"5e7e5e0c7cc1cef32b810e6ab2ebeb49ac75ff66","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.22.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh1jZvCRA9TVsSAnZWagAAkuUP/A9kz8B20+taXTLDKhzT\nTyhdo+UsRtujtQi0da5RJ2mKoE/7VQb2I9K5bvtvcAv00XVw6jMfQCG+ORh9\nBpDdK6fP1il+4oyjUld0UhBEbFJO4yXNaBq8lS1CCnCu8JU0TaYbIN9vsyL+\nYqObRomdH7of9HVhq2FRnucgmjQ0dgWS++KkqJG02JQfO2DcAu4H9yWgvaQo\nPufuVAPwoHIeZfeELgGs27zQp1/HwOeKPSKMANTpeQNXO5cBxrsBn05a6lBl\ngTrkhstDxiSZx8x0wYklPgkAqHNTEZCuANaqfDxkVeKf7lJaWdCBetfdqZDy\nwQQPCMVJD5TDsbIbgYImeslnGHqT9svRy6KDCCjep41VzPVO7lPkFuPePHrg\nNtmdk4XsndkOUwJ52Milh+oYjOn7mYqYWuHnDl+yaBjgphYFjLKFCv5oWiC0\nS1tA6hHNa/Sn739xuOUZ63/2e6bjZNBCDTFqApyg4ocTaw4hDwnvVWXH086+\neBjLmn4Ss1LOS6wV/EEOsR0PbK2QOnu5XAHfCWBQ6ivtpt85PBtqgbWKXS88\n4eLG9ecJ7vcvFbJKAhl10wsa3QYk0IcHku4rAu+wXgnYeT3QiZRWaJhybdle\nllznR2PZ9pFjP1pBA1z3MIo0bNKLhcATtNIY+7yUHd9i0dx43dDXJiceXcgn\nva0/\r\n=T7d1\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCDqyV2ZTsOCN6hKXEBMSwxr4KF+Jpaa1vJ+EGMfRZgVwIgZUrP0o+aPkrG+IYtk3aRbhFIGf/9NRMJnUBfcxTgJeA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.22_1641428591008_0.08181574817974391"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.23":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.51.0","jsii-diff":"^1.51.0","jsii-docgen":"^4.2.32","jsii-pacmak":"^1.51.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.23","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.23.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.23","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-0zDSTFJardzZPVCnZE7N3cd8138/cmYYuE+jXIcPf/R6tXwfGwcEtqV7PnLuc9l68O/8uOKRVKIj6zyLx8UW6A==","shasum":"1efe34ccdd1f8fa34740898051095200e6551028","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.23.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh14iCCRA9TVsSAnZWagAAYFUP+wRdVbKR6TaXX8SpG/FG\nOKGAD0M9hIMl4hJjeb099K3DrJexReA6UD3mzXXcDpW+z2TAQG1tIy+EtdOE\nwOHbXJzRC+eTLuvKTcnxNaTtL5t+bQHHB4hcd8YOaR72H58vpFpgdjhHjwvd\nk5h5CZEFrlLdR1eGyAvId/bQU9BhCD8DX0s2zWgzL2daD4hx/3MZGnnkXjF5\nd/WObg/DSOYcahQmmzxacbLJ3M2TKUwqKtezot1o+VOY3apPBInOswr7Al1a\nXr+G+YYVOjM+l8BYl3+C3hGVli2sVWKzTa6VnYnrk0WKLr7W0nfr8xlt9M6c\nOMLXbjgBYzXXJZ5Ia9zJ63fKP3Wu0ryuW4yUvQzNNe10LlpRhRMFUTs0g1VZ\nt+C/HkiLMSPv242eYwb+t/sCPq/K01nmKXpKdCCbjVMuuPuWuk2/kIMYrZFq\nHLLFIHs7Bcbb31OKZRpQO8Xxols0giLje4j0eyowltxiN5kER6+Za7vuUhjT\nx8SYX8ttydqNg7SPGBW5wh9RgwCIn/IrhvlbizeOKpK+nByc8BaulLRGEshA\nWQG2f6FC83SynsaDaz363KOt4HjaTXcjdWGDwspMCZ3uKzN8oLukJTQliJCk\n49I96O9QoIPF9siZtBM+W3NcdubH1ogkrfr558ZHG6msjtciUy6ciS5joYV6\n0RKU\r\n=ccoN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE3uvXsbxEErji4jO/sHvV0/Rr81KyyzfdXEgZ87gTiHAiEAwK0M99ljPcZZFqnZJYbGa8WPpAEkhPEXY+PE3kJXIU0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.23_1641515137189_0.25950514564318694"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.24":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.0","jsii-diff":"^1.52.0","jsii-docgen":"^4.2.33","jsii-pacmak":"^1.52.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.24","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.24.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.24","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-WRgXjJ+ifZeq032NJMzV0VIQLuZ5WimtkiGrZS596kJlsTJt4bx+2j4iiSE0xSbo00Klz1cFujkLxyEYIK5A2g==","shasum":"423afed32c9525a0ffd38c92172f50cc716f8ce1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.24.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2Np7CRA9TVsSAnZWagAAsMsP/0tk3cDoShcpKUWQi5k3\np+Xnq/fd+kGQ4O8B05y5JAD9/6yYVVj1f8jQHmtMjX+f8nokRbwt0xL8Fqzf\nqKGLMl5e6a+WMj7Spv1/KQPkavE0xg87b0qhEn3QdLBM8CI9p34L7XmHGHHh\nF+ukF9yyX9K+qkyO6IY7z4cyu0NTQS88SmcauYWs51x65kfcfInG+iif2Gei\nHkyWFKVxZoY3eYB8lC6numiHlslX9P1YTttRFEc6BZ6zBkasG/B3LrpuMx7q\nL3mIXlD1jP+6Dv/mUf82rg6KocOYceVN6vSKExKt9uYJupFip+yKQsEJDepG\ncK+XYYI9czuicvTL2D1cD4g5h2FKeushAEBAOu5ZOclZIr4AyhLzAchA+Pdw\ncVkC1oQDA2SgMgDzEsd85C1GGSSBA4ObKYlT07p07DjiLWN8aANuzWpSxjMQ\nd5iAibZ3NpUtERQ36XtAG6bB3kTwxakVSZU0/XRli8E4FE/f+rbxkgpJ6xHQ\n9e0wuJDvP41X3y0N0qEKMku5scSWoUMsNvZTMg79HivE6rgO1GXqGxYlvILm\nDYyfW/3s87Zpx4P+gAIWI+UupvTUCh1X4Or0z0wdRU1/6pM+BdoO1NNmqgAM\nfz3h6b+6KKMYGHuNeknU+/iUkHbdqPWOC/W8uXksbnABPknOPSizt5O5XMUc\neNLT\r\n=/fAA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYqkbiPQosNoWTA2dRVxzl4xdXq7Kv6D/xmgXd4c1gEAIhAIHuqCufQ2EgOEM2H9tUgVCo9Vr7cD3pJT1Zb8QpQ4gY"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.24_1641601659129_0.33131971322493503"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.25":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.0","jsii-diff":"^1.52.0","jsii-docgen":"^4.2.34","jsii-pacmak":"^1.52.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.2","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.25","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.25.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.25","_nodeVersion":"14.18.2","_npmVersion":"6.14.15","dist":{"integrity":"sha512-EMzKv/re+aHWp2I8X2XFSCZrUQ+7ZC3Nc2Fpr2Q6v21Xrkacfz9wBCPJ8uetzjbYXuqzZH5E61UmqoMGZjjEPQ==","shasum":"c79244749561af34457ac19fb8b21063aa18bef7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.25.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh2iu9CRA9TVsSAnZWagAAA/QP/1oOnDrPGCiBGGNM13C9\n4G5h2WUIUZAszzzeyPXxZhml7f3Asl56DAu5prIw8oMdzOmjur607zpNjpU7\nsh085N1cp3uh2GmUoARDieZyCqBt+kVosf4YyhwjVQC1f2iJg+O0Q4MaVaWI\nlc2A+VrgJ3VD3JHHuguDVwqlmRR5QWw/OmR+/I/4LlqPznCzowNO/mkr+RTg\nCnF67PGg4p9NTW3EIRhOgyHawmzaQcF+aqrcEli7h/mmCY5KZBz0kN4iraDw\nwQh4LjbgdvuHZ8ruRi8S6UCDN8exq1rTSqMmK/2cW+J3EyR3awqQUTYVv6GB\nO8JR0sPXmUy/2wnxQEBfMeqRveMNhijPjQANxDDd91nvbZM47v/TGSP+18WW\ns7V9zw0m1JTVg/ZA3OM8mvAlaCj3+XDidwSKIAj/9Av49tBvDxjWtGM7WWqa\nYz2FsTQvqVYsSoe3HD4TI+4JSLSKOWEKdpdEwPQQD2FNxCuGc2oenCHP1Hk9\nVF5s6Dd3onO3Vf/DvNJhvW/rI1lALb0iTz87M9AH0IlQuMl/HUxkCKbw/9PU\nBy9yWEWb9DyXA2+p5wPMfx3LVSjN4bM99zwHtMFFR4+XKNugv4ndzpcTWZQI\netPL3VHyxDiqpAgq5EX2hwO6AZH/RioHM8ZOhocpPFf06ieyEgVFdpQ0RMxL\ncCIT\r\n=Tbnu\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjSYoS78PE4znI/vkkl1zKLhlFGYCw1bMYT0fwlxxZzAIhAMxYueDAVJxLwA3HgEvo+jOy3lehazIabv90ejfMHhws"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.25_1641687997079_0.597104383574941"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.26":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.26","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.26.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.26","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ZLkoOA25YvRc/RHB+Z3i5cy32OdWfaWo7d2dtFqZb+iTsGufY+/kSG2nlDsToZFyHHHvQeDnl0rgJVu+9q8wBA==","shasum":"cb8ce4165a14bfe577832f72b7998aed3c1d412c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.26.tgz","fileCount":479,"unpackedSize":2946808,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6DcvCRA9TVsSAnZWagAASIEP/0Kq5uAIgF7ZzHRvsK5F\nJkqETjpLJTYk3XhOybn3hsdTlDoR8f4MbNfS1+lLuXflcYiIDdQHoqeIWGra\n6uPzoyx/P6wL9RpA6y9hE8eV42w8t5u+B7k3Lx9by9w+5YTCACLz2QxmVBoD\nMx6g4imYzihAIVJACWKUMq6xl67/fx2nQmkMY8MgEWNRPFYRImEGJJu4kJfK\nBgykoSim+X7rHaG7hH1M29+8LZocf+n7jW418q+hi20CvSkUIlEpz6Etdblg\nKFxAEX4ubHagsEnZbaX30udJLberp7AGoU/sJGpnLwPCn+gj8iZRwSSuBsry\nlDjAZBf6qp+uoeIfc4WVNj0H4BzQ2G6YVe/tEPvPl/HARh81aSURDLP9Ykd/\nmnQwEx5hwcoZwjXHmx7lx9Z/XhvZsbUhqWARYw7Zu9MF6AxDK6g8Dhyk/Pk2\nL8hMFrbfZ+TTyz1G8xRATcduqr7p7LhrpDd8/YmJB1Jo39ZXEcccLfd8gPqD\nxYP/EpvoBjPUi7x8zn70QqlovCSF3+pC2UIbJSTxAPP98tPJOLWgVQ9gWFc4\nIcmvLDq+jmTxlKzZua1+QRxOuCbJn3dZ3LOWI/WV+fvEMN1kQeGg3Rz7sbZO\n+N5knGA9PhRLjM+TBirrcjzTPoAy76ihz3clRwKxWVTDpCTtb4b/XTxWUSJr\nTdN2\r\n=HW3y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDlCYKqrvXRum45r4kjEqvxh/PUc77GUQCAGfANpVULhAiEA33588BLyQU4SjtzfUs4gToF2uo2qw+4bBBGWH4lqfkE="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.26_1642608430568_0.8913586640083646"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.27":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.4"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.27","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.27.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.27","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-pqkiGPyRGACKmm9Og7ji8n9UoxVLHRLdcdCU7WIhipRhnTYYsjHHW14XZS7dOoZBAL4E1z8zPzvNJMcfhNQCrw==","shasum":"9e7c4e99676938134a96c745c6f0f5908306a65f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.27.tgz","fileCount":481,"unpackedSize":2954871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6OJ7CRA9TVsSAnZWagAAcgkP/RuUKf29wbeUacvmK0Vg\nfR1ik1e/R+CafBkcDxp8j3gq5PM6ylZ1z1IQSOddeTD22GfJk3SK2RX9pOTA\nZwIZ05tuGNsrghz2rJT3FfSiIK2oIELvYjLAyCrzM7Io79OuIu1rZvxpgqa4\nBk8IojEBHLTQi1M/L/7srodjcZHDIFYXbRGDXcStTIbcbRuttluGD/YuwjsE\nSKlwiHhnA53SBOV9gu0295vnBCq+PBxEf/oPxDoTNXpOe0CbyJtqpASs6/9p\nVN9zSdyQNj8zZLtS1ermty2VDcMkzj2JBRposV89pVNnFKAKE2LSNpikTEY1\niWIPFMsadGruCDheC0eBXb87b68OlFbTLT9jq3MLW5jkWgYeNcAtPfBnlJmW\nilJ0Azsh1qwIJFNIsWyk5sI00XFJ5O9h9sxjumBNzNEWPDfGbzxIdODHz1Bv\nacIsh/uTxzmEABkGmgr429JKsOHxKdP5siKd/j+mKl7xHUsZACMlSWC5stI7\nb+oFxXpea33NfS2SGwFz9YRCNrRo7Y7YC1GBmFUwNL3GIrHquyaEGnZWBgMJ\nQ3juSvyo4AZm5oGI3R9E/sYgZH3bnPfSvVVkkeaG5uDONpYP34f43uwuvEXG\nGRgwdlLL1yU9h7YwsvfqL5C4uUKy9WTu20fRG+T8SZJeKTZ9AHpuU5ldb+JD\n5hqj\r\n=6P0t\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZnpzWe9dGvAwn0yk/X1qQv4D5z3RtHE9rLeV1wubj/AIhAMWDfRJb9js91SMboOEBNTCQA2HyhcqZvpJFOCZ785GN"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.27_1642652283464_0.4257180279815611"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.28":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.28","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.28.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.28","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-00ttfHs8mwehP5b1PMeH3l3SS3fS7FeHJM8n9HPxzSypEdmo0EBeONm09Ou78HCd+tqEZij7DWMZzP7s6w2/dw==","shasum":"9a319a970f192713f63530ad5c06fe31f1f964a2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.28.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6g+ICRA9TVsSAnZWagAAKRIP/3MPZCTSceF7FtDekqkn\nhL1hjb0yHYInLL/a6IQsVMkDowTRA/c82MbbVxg6/h0eWqicL1gJdOv5TwLZ\nnbrww+6LHJrUdhtUvogTJ2pHyGo6i4h3PTtEZq60XnICEJqlq6NTfGpOB+lP\n94shnw91xVqwFNxuTda+gn7OQhzYzsl5p0fAUnxkfsJ2IFHSYMpuUOU4OhsJ\nL5lQy/ZmSS3PjcrRh+1biC1bDdRUqOswyegzj/Co8+Ba3JJX7VlcloT3Erwg\neD68nh5mDG+fFf4Da0zY7NbRLxcLSaGc0aE7gjqSB2fL6bCRQaNZN03PrjJy\nGo7rcnVY4ljqblVHVO2n1pAzAIvR2THNj3vrTbvo8EEuyA0Gkgh28N1kHNLw\nXNo6aTZ/oRKEmmf9yyP5YUSwfdoq+VM74efp25cc5Y7OhEwPuxrOtCZ2z8jG\nk0Ho/gdXSCzA0z93F4C+rOUgy4oE7Uq3N8rJdcKhYz+4wY6DDOC6GKHNhj43\npXFjDm+hymzyHe2zm9saOq/MaP4CMWVU+9AQbBhaT5dOiIAT22oYZoqpx5x4\nlZoXOPs6HL04yCfzt0O/AEZgMWuIHNyc+YpQ6QEapaFwlsV7Jg0Ljn/aJDqf\n+s5V8KkDWsrzayu5h0lJZMw04Eb3Yv0aj7/09NDM6nUuQVa0qQ7LpU95+Ans\nzfHy\r\n=T0iN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAaQoEoJG1hBToR5+5fEgbpxrVk8Nr5V+yavk+5q/PhFAiEAikmK4JmNuM0PXNjXDgJA27HhJ1lUroFjZ4b5AmImCYI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.28_1642729351383_0.6189879261445084"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.29":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.29","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.29.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.29","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-P0TI6kwcInNtw5/LqYQzQxTtSP/n1tlwnEelSzQGz6IWZSN3OYrgLgZMA+COknAFQVxD/KZL0ARPiyuUzc05mA==","shasum":"0535ff81746ef2b1dd13562ea66346b34110d0f0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.29.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh6066CRA9TVsSAnZWagAAZd4P/3MeU5W9HMpA3QN3C2Ij\nx5IAfrUJhkKKPqJ4tjwdVwwqeLwzOUVPut3F95fb6oCf3MfhhdxTP0N979E/\nnK+zdmUs+RxckVDLNXQU6l9pIsqGrv/fzB5eJ6iEdKblxNefa3NDductH31p\nGUSxbRoq5r2IM7TeP5y1pgB0XBSzwTc7KbS55nf/W9nlR9fNBwBa+tVp05Fb\nEYugxQ+NqOaItX6BWPPR64W/y6wQaSU8N6B900iiKELsx/Pc0Idl4c59Ofzg\nxow7Q3ep5RuQ+gN2PiF3PZKoXfbU3vlp5VIAR6+qrNm0VXZsQWkXbM0VsqC+\npsbFzzoECB4VSvW5nMT4t622LerGGcmwRtyKsd5WXVFMBcBicrCr+64k9qZC\neEP353ImdkM1DjXblTQa5GCQZ0HqMMjVxMcakBCoow/hnkrT4RcVLDJpT/v2\n9WpyJklxLHkV2iqdPXZIKA1Z55XWkER7d4FGAzUaWWT3792D8GsNFdESd/bd\n+iHSJtNq0GaXJu8us1SbBqUTgZYeW6+e6mSMrfNVTYLjXModpt1hp3PU2++r\nTrZR8Ta7rdCP8uyt7leV1QVp973t0y7NRwuI5Yj41epzue02FCQXxv81ELHP\n++PWqnjnyUZPJkcymrMOAbhAaWMJ150a+m5kZIBZr5Wh4sLzgZ/vrob3brkA\n5MBH\r\n=8RzR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICF8EIu1fSanhnex73E2MZaTvzN/CoxtBzccDqery8ziAiAGoj1VPbYvcwNJ8bPBMN2HkCFiSohIE6SeVPbeyh54rg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.29_1642811066571_0.11613153639609775"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.30":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.30","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.30.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.30","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-W06mtkqWohIeKzT2OJyEWg6A2LXUzOy4JRoGOvYFn+sChSSnCa4OpWfhY9Lu2B/kXLRd7wNLf9lCoHSzZARamA==","shasum":"604aec070f0b92e9a4cd138965813c96daebaa11","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.30.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh7KAnCRA9TVsSAnZWagAACrwQAIoctubYAtAn09gnL1pf\nKpu0X8kz5DhXIwUcjPJmqpDpQPGLRjw62TWKG4byIpAEqF7UE32TtjhF3Jm0\nwsIzC0vzPa27WVKkhvHplqi36WjIlyrtp4efvMKyGUSqdEggjYNu/SYaY6xm\nllDihWtqTvzcL6BkqgzHy5/ECkbucrITJpaygvh9aiBLu4e2hj86/fCe+PHB\ndysG1tIo4R9ouiIkX4vrznnZI5gYXYtG7x1FIZ5ghenSBUA5oa2+81N0Z7HG\nA/DT+4WTz4dsXBJO6miilrnrvBlElGw+E9o1B/kR0XW7ttUnlkfw6RrahS3X\n6BUngsENnkJFAoMWkD8EFVFdtZzMCFA9sNrClCwUkvQ52t6MVKrimEEv/ORV\ny2M3t6E6DTaCVUHwMh6Dm5wCGfqKqZgtJnvpNZXwvGySZMkkvF64X29pn4Y8\nJFPOIR0ee/JbLRosgHkR6uTmUSWqJC/gYWaJKQPb3Rv/08m0Kx4TVKtWa+Rq\nFcOBxpNL3fdoeVUgE+0ygcK+0oB4p9D0uexjwSbvYro7gyImX08GyygAlsnT\nEhel0+rTakNXE3xZvjd7Iaer/zSLxnYJR7AfufhA9XWz40Aokpj3byF6LfH5\nSQ4iGuFj1bfl/TihKhJxISmZEYoRI0MhI07dTV/1ks+nIQXE+PLl4LyUHSoW\nnJaW\r\n=Ftr0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICLOw+nKNcqR4K7XFPmCUUTLl3KgwBHw64wcevvtNuEXAiAC2LnaiN/P1OkxUIufcvqMww1DzpHV2/8aBo0Iz+VhdQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.30_1642897447358_0.8725368036979044"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.31":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.31","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.31.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.31","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-87gZEGguVYz66JnGs7pz0G0gGW90YiqBwru3zRE9iF2T/aOjng2FYU3iAV/zAWQdKwb1RxR4+iqfxKuNbBZzAg==","shasum":"d4b28b348f5e3a017aacc52cfd202df37036d7d9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.31.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh7fFWCRA9TVsSAnZWagAAHvwP/3x9v6bW/d49KNiND/Zq\n0MCZVdmioPp9yXglFESQtmNcmq3hmw3aLHXE93lGAAJZHSIk3zRi3XSmYRVc\nEuMs6E644CtH8ONS3O2JWf9dk8U/644M+UQ9fVarHgHAvWe8vazdGY3ORNV5\nUeKYSbY9Ye5KJmTPYTEXp/plX5JJNwCYu5cS1UWjZLCS41G6rA0sUrrn1vEr\nWRPWDQ0ioIlxmoEQyND5lu7w1g0ukM6PcSwb5r5MgvvOtQgf7nZyrtOmYIa6\n0AvTsjQwogFV/FaVAI986/9SofgjE001/oDA1au4KxAIqiZ9NzGmR3QI7HKF\nbv0aaaqglr3zcQ8MFwVf3FziSt9SNOx2AvrPaLmh/b2wWjXP0OF4lPZv0wg/\nXTQOx3pfmuayTVLbuMizrPH8HeYuTxcqEU+aZV4nleejWVfroGSpb0qdavnB\nfmuauBCIYwrJo4mb7KT2UhAiUCTCVZnezJfzRDN8F+pcJ0TiQghMzEwV1Wdo\nn49un/sC48+m49lLblkKrFcxAxEMsXOA38851m5pxyionaZl/RTUHCLANK09\nPgdajBAfg4YCmraAD6bvRHq2B3lR2nN93frekPJVc1P+/XGXwH/hxBhTv9WX\n+8p4LwpXBlbSfJ6obVRCPPpAS4/QrePnSzietShlepWIZdX+ElXG5DJL0bng\n/jxX\r\n=KNhM\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD+nv5O7IYeO5ZHRrTr6GDEIqlmI5CzdJ935CgVhqbVGQIgGE+BmTg1IwlUxu3fB9MxZEUTm0JGSiogBUSPpKW3le8="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.31_1642983765857_0.18812177787973616"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.32":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.32","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.32.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.32","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-gIdohQO/nwgiP3CkuyqyOu7pHw/cetprpj/CH2QegAv9+cTvaTa4/yXPEZgVAJfnvMn116YMf/sF36xVZyyXPA==","shasum":"17c97e9f96ab50a4f81374f8ec47b6d8360d525d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.32.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh70RpCRA9TVsSAnZWagAA31AP/1ocbijdLMCqQSPF+sEh\nn49uJZqfysXyboyy4B5sQp21sp6ipfgIc/2q6MJCTzF29CeIShyDHj1ZwQxz\nY1sp/HYlZi3yq1enKIm7ZTKMKPhKkU4cazcza3E8Vng/Q8Wh5j4UnW9aSlwj\n1eBiL5kT8eiweg6tho6wE5q1fwKKgzhCM3M0Equ/sJ5r2qI3+Av2f4+gEjnT\nAKo/EkWbvKYV8KNNTjGTQDk/0V61H5ARO/t2YBxz72iO66kJf6I0LYFMpcOI\nqunq1yASOXK0uFL3tudM8Xy33F4jt/8mq4uVSCD7SyZ9kJASfe0ettp5Bexu\noxjMsIrUuNC661sxQxZwcxBtVAksLuu05aGK1lVk9xvsA7m4YcQhYSe9K2BP\nGgMZcB682tJ5LJyL4euN3Ssvnj0vfZE6149vbbJGVe04eeGQsaNwLug59F+A\n6qKG4cK65GQrAfW0257cOUVzBkIAVuCfjx+y5S++o9nn0XuP8HbMKc5mbJiI\nMr0r9EXzPc7VyRj7ra5ytkR9u+M/zzI4PLaecLoD4HghoQPduMKNb16O/pNa\n7gLIKLRUJE8cUVn5f3SqkL5Qec+nK5ZjqYqOPh6R+OxJiRfOXsMSdklOpu/Q\nvuV0UibUEvdzodAhGzl21etMaXP51CxqOLiGYm4pomnnyCL5hw6W4ltty8A/\nXWub\r\n=kKW3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcumwmreGe68E4RxVut3+rytqevDyBV49bYxc5ZouuMAIhAImMU22eKZXW7Xx6APFUG2dd6qD9it08P0EMzf72kCOR"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.32_1643070569145_0.262641410283035"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.33":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.33","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.33.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.33","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-VkwfQCILIac6+JguT6Qzrt6sh/id9nBCs5MMuyiLre4AdoVNsYS902ayOjjYtSnZLAvALxgglB1MhzQkm8dPMw==","shasum":"f7cdb0e49d2d6d615a4ada7a14dc68df33d10603","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.33.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8JVPCRA9TVsSAnZWagAAruQP/RZ48i2xFZo6x3u7ikxM\nXM34RBtPAvD0CLu8ADcmjuLcTydLxGT81Qw8ND+NQUtqGywvo+g6RNOc3bVp\ngb2kDof7+itwIqXeDLVaqpyWUQAd32724mv8FijaplkcaTtnNo1zWOd6Ec3q\nsgauku4gnWlwm9JP3zqaqsR36+Tm+lb2mOSNYp7Z05AHIx+Rwh+X4T1tZV7W\npdFi7D9Ta+X6GVDMVNMV3H29vVItDVtm4OJRy33rtGBX+6VAuJpQ6oJMA65O\nr3GCf3VN5isSAmGCMeOGx5CuuaV9aKzeX8qUUpfofghKb3mVhlldhWwhzvSD\nCyAv25wlasEO9muZT3mKIKTlbtKPAMKcKj+tSFm2GlJDi18UDqI0kbjT2/Z8\ny2Sal5Be5E5nSg8pl9HRx8ZIDkrjp+qh52StqC/b9y1YwKxWyY+e8+/Fk/dy\nFdhg14vZbjFoWkfgzKTkGLoDO0bFaNdFbxTgdaAuJXl/gSQfCIEca/Nyclp1\nod5a5RIpJviBRvKfjw9WMaEWa3GN3/FPRhojjh38FjKfOGc2wInHMxAJXWu9\nO7Jv5IfJUlOLqRMLLHFHGa0E3z+8PNmM63C0NAyBUtQslpjKiH8qYq1Xk0rC\nKgqM/5iORKnAhdGH7zyGLgefQbSNzDZwz4+03I7brbj4if1gtSZdvD6RIoI2\njCkx\r\n=wOVn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjO1Sh2AcqB1jBXNuRQlmQnb1p5SRs4Vx3bI6bMyoQ8wIgW24eFIbds2XW59dx8gVG2UB/5UhaRLTKjIxKaZFcgbk="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.33_1643156815568_0.7547113066439233"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.34":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.34","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.34.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.34","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-2rtoBHpV6mqGOtr0RxdYbimHqDy4tiAhDdbrciWdUTFavd4sZldvM+RMqSl4ZmbBqA6uw+dw3RtKKLUbmnt6OA==","shasum":"5d8a11fad2afbbcfabc45dad79b667cb00e68a4a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.34.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8ecdCRA9TVsSAnZWagAAmNcP/1hgE+Kb+wE13qqDJ75O\nUqFSnOJURN95GSk8tYH6hcB0tyRH1uevbox3U3uD2QSV1NQlLeqbeNFhHAAN\nM57y7UIIGPhMMYoS/d0o4p94vv21AU0enSMdjJHai4xQYibI2Ox+80j+tqf+\nO1Bv8B2qOE37Rlw1RBUb8Qvpt9M7x038rQTqgGupL/5WLdIBbdWi0pdjWDc+\nh3fRW6tCDmugLm3TDPn3LXq73xqCF/npIBbDC7ARor2iBdA0jBGtty4HJaFM\nCkys8MEaFBIhuDrUf13d/vpeyv6xKywTvWO9MthMBIAp+1E4Q11S95Ug2BHN\n1DJ1gdgfkD4YXeeNbVIL7612Fr5NsbeS0oF1gH6DM/vh86xhhuXVRfvRE5mf\nqYLWCWMoDaG077Aom846+dyILpOtacGycNUTjfUkdHkxgX40LNPVpbQ+rE+i\nP2qGBWB3RC5Sfp7bFp1J8GuxosYaOY+PHC8rEt+PwAqvs7HLxmpe67zyFW/W\nTWemt7WfD/TUysTpb/0DGzwpiho3U+oISr3RK5DNEGxIycExzEG3cAnLWB2J\nczCWNv84Dq5BgGqgxK9WHf4zk/KanjvNG+sQr2KBMrS7q5L32hKb4AIca+Jh\nL67E+H6wB/WxcJRJCuIYeHmEzWY18shCB3kUOJMMfZvttT5EU8YFvPLseRDk\nFFdA\r\n=Iq5I\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHdE+u6R8rCgvBSQWBxv7BAipl7lUM/KlxzWpEOcXq+SAiA/MxZQOomMVgtEtEcCzvocVcAKD7mONo2fj5rl7he4cw=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.34_1643243293665_0.9301047016176036"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.35":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.35","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.35.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.35","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-cmAliO9yCGN0spjxh9s6OV2yoLtOXMw66DFUkFvp6A4aul85tIB26ilYUbm31Bjsu24k6wC1SFplw+ItWAqERw==","shasum":"6624fda8eb22d4a42a608d8ab5cda4cbb975a71b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.35.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh8znECRA9TVsSAnZWagAAx0gP/iKUJvYjHLI3kNJl9c6N\ng1Y0mxzBahlOBnpaU/FNG+uOR+Mtkm6xe9lxAPhXCfOapq5KzUDLX2LbB5fu\n83hraMuIRR+gWgN0oreoyXF5yUxa1h+cPlDjD4IehYsehWzlVEPJ3fn/ZAVB\nIg5aNRKzhUPpAe0fxPOF2s5DoEck2RlRGwiv7/GYJKWgepOVUlZ9tX4R6HOI\n9Y+bucCsYXaekiPN/+Mlo6hYdEeaQ57gJ8Hzr1+merXfdykeey7e0Xs94o5C\n8Es5XzaIG59IbYHcdb5+51D0iz0NA0LthjHA+Gb22epXdxye8b686+CVuJAT\nBqv9/0tc3GEOzQMXL7Wg/uoNJbPdrPJnMNV7SnpRhdm2Le1JaSN61djNGEW1\nLB+Pl153FOhVzq6OUNWXp04hr4uz+H1RU3Uu5xak7dTipWFeThyvS3RUPZsb\nkL4uSd9vgS+TfSLlQUXJ9U9PRdszu9zcWEZGbZEfUMBySj97FCeXewFfQ51s\nXq4vuwxG2z1aSzoD2219jLWYw1ApLXe+nvj0wXQLifSUoWNfnMJbBjbylDrZ\nwefpqzK9deTLnqKizftphpbxgN2fEZNI2mnXYL0/6jquH2zKRoMkuSTGsjyB\n0ghDVeRdS/BZGw3ntpIncMaTq5kwfE9b/HvgfeVO6RFrql/dKZz3QeyunMTZ\nhitZ\r\n=cHkd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC+JcZnFtg9ojPeg85hwV81PX40LCOZI/CBFahloOap6AiEAg/uRIp+iHT2rA0A8h+LyzJumkUmjOz6qMzqqb6rz7mE="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.35_1643329987851_0.012808703528715215"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.36":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.36","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.36.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.36","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-R+oeDs9JnFAqOPkypGaboRsiKAqaLZ2lq0zbMSzJTbbKvim4h2xZoqDPpEYeFkKi4y8WAwa5np+YPkZmNRntjg==","shasum":"d10eab1aa351bbfcb07909061bd64315ef585f9e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.36.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9Io7CRA9TVsSAnZWagAAxu4P/i3woHqBp8XOFaar+M/m\nWTr+ZnkE4tJDoBV5wtEnfpQx70fz9tp8FxoAlJ/uL7nJiTlrA0jIojTVK8lT\nytMKsJxh2UjeGme4Ae/Mbvu81QBdZvg+BOpy3CUyBwgsDwSXgmseLD9aKlNM\nsDwG4wpKqdEiCso5N3h6ciLFXy2NoG1tvEcLKMIV/KxIDCwWCf0Y+wYHC+/O\nNyHsapUgvNxwExRF5oSQgDs8xkalV5b9dEQIn65twhScozmX8SskYbbs4QwM\nSw8VbHO+qMZquRPbiYYaD2zwQI0UAMPgbblFfp/hgzPBQ8FCmf4SMVu+O/XQ\nKiWgf35OjwT5VqZZc1OqRjAOCobGIPAAEazB1BKgi4rWmUG1RvJ7UlzaLd7t\nSW/t4zj2PQcAH39VgjL6Xyct5UPBWVXyURs4eCmHgM3JzV0j4cr6v1OPbbYi\nwJAyq/1rS2hUxwSQFb1g2DTGFV/DuCYbmkCqU93PkYNUGrcuWyVUjOSVUyOO\nsc7DTvNYc8qmop7BokOSDRV9ZNq4RF5ZgUCHwDJdWsYEAeRYEKrJVXWssBvm\n4aYyS6Ai7s/SyEtVFd4vGxZzYilgt+i9iBjNfBzHe7rLmYWeJaWa/r1K4M73\nkVRZQ0e6PA10OemAs3M4Z1zxjWm3oUiV4IC2cgCpkJGyQMOiQLzUkm4bt9Ub\nZ+7z\r\n=CNBY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAWAKi7YNE+cujWSnorDnynTyC40683kfZDEf0K+R0FjAiBeDvPTG82zSy/r3ORalNVrib7W9Glc1/W4elPJvbl4oQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.36_1643416123618_0.04718411728830274"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.37":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.37","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.37.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.37","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-m4sRRO/ORnp+r8xWa+QDjI2UClewnQFnRvwOvxDtw/IVfng+4944Oj2GTDfe9PZA1uRrjVEkL93VZywcxyHCuQ==","shasum":"8b0d47b8df9c2fb1f0c0d9fb3d5ec763be71364a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.37.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9dswCRA9TVsSAnZWagAAwScP/1qmC1fRav9aLPttq8mB\ns4cYvb5Ow1rpd0Vs2oi5AHvImLHk4tdUEvyWB2VEu9m5xS24ldf7PlEwiUOj\nHpd2BtI4jkye34tq3rIs1E8YvTff5A01WTuccHG9DkV7K/jiQY+ubiQf82mp\n0uzKBZPEnRy8j+CX2MewoWpd2F1mgonlzVK+mU1l4Fncog2gW3riS3aFn9+Q\nh4gI0S28owp0jsUQAt0479KI90ssWamcXTJAJlJpvfJalmlDPO9KdqPQeJuq\nqk/k172MfAatXy/EAnOLbFLknRGRcPsNe9aHobybkPwKBCYHxkgzsYQs16SR\nK4V2IQoVCeQZ7DKp78NBhzX3mM6uL3xB4gcBaYkWnt8uDNJOHDwCRoukGRXf\nYl69w5gJOva2q4rBg/cfFmx4oNzJqNktgZCNDWtWHYCl0hvPbR10fP0T51Se\nkWKN+vfon1qO3NOpvVgxSxvxTJsl2FY6Yomsn2rdRcD74YhUaQ/w790K+esN\n2SQQ8uIMSDEQ6bgw8KG50N7tG9XwfkC0CWuldopiIIyug6VBq8bFr+3l8+dC\ndiVrrg7EMkrxGXGZ5E8QesybLgeTANiLVJEO25P6Xuk9J9q3ni7D8GtGMtly\nOzMg5RwSoGDWTxJPCHC5SVgXGLK2/z4YR3U1haNZP0BHOiYuc05EnT2QZV6Y\nUP2r\r\n=Sw8m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1fylJt+gsEnwZ2i1kqlxNlheS7DgQBqqQNHi0/Uo2WwIgSzc5ixd/Sqi3dSTW48PX7xzN/XtG4weZ3hEEhnG4Ujg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.37_1643502384738_0.4715122263208342"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.38":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.38","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.38.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.38","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-n5V56FsN+GWsEHL2+jqOBjkMQF4TaV3cKiQ3HaDg8w8BforkeLSDZIfHUS/ktm0LcDhiPYZRCrc7Cfi8zg8cAw==","shasum":"3f8d564f8969649d025cfc775dcf47431e20f75f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.38.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh9yx7CRA9TVsSAnZWagAAgdUP/RLAkj9FwU9MswzE8fjY\nLaK/+NDOvnO7PZ1ElOAapZf1CY+4uEbwB7Nm3XD1N9630rp+lwYQYKcFdNY1\nZW0X34jJ1V2Si/CNzDgJfkloM51kSqkpc37wcyPrE9//eycoSU47S8Ed9OqC\nEBJBLgQKBfF0fg3O4AB73szbtIlpy4jnxygWThSATMa+MDmFcdZypGkrkGtr\n41HerS44XPE+QI8lawCmU2yhpdHkGg1zzOeUAPzlitniAz7AfNFXldGcncY2\nCVZKBPxxMzd7FUWFC0DmHTR/2+Mg0Qb422ShWdkdr4O4AGvKuNfbaY9ZNLgv\n33Y2EaJucp81vn0IQhNz7uRdnn9DdEX0+6cUyCvhIi0LiJcex85DlVLUBEWU\nSfjpdKvUTT6G3DIX7vQuPHhPqK3Lp/TQmkRVhKquoRz2MDOlUyE9Xd2L6ROf\nOK91MX8+s869UMMh1vnhlMJomMx54CuD9/9Mw1Vcf5CYLntwX4yqXb/vyZok\nXUB1OdWFFzOozDzD7O7SVjRY7WwmFJLIIBODm+Br0Y/xK4HOyx/NZUx5LZWC\ndc1YGHgSpQOcHYyaT/FXronp6mM+TU8JQRQXwnPLNzPTPD1o+hs4vPHguTRP\nstS5w9ZjEvPPTvEfSNSTwhj8ph4jXsai4NI4mH6JU5ZeeOXu0EMm1ZoT2vTT\n00HM\r\n=GXfF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC6v2BaB+Tfp7rU4oINhMLiFHF+cvJpaEoibG+Hs37/GAiEAxSh95+Y9TEjlz8zX6m17SpjLvlqFUGNlYgg1Rhd2YyI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.38_1643588730889_0.5008312272054205"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.39":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.39","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.39.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.39","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ajQkU1fOrsTshXVQYU5xtLJDd36YwdUzFLBT+NLk1J69guzXXlHxrtXju/Zjt1fAZJnIgz/JiODsSRODy44c7g==","shasum":"783da00c97aec6bc28c4664f835cc6a23f9c1560","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.39.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+H8UCRA9TVsSAnZWagAAZhAQAJ8KWOOQxS9oUirowCh/\nkse32JB9wvyJoqXsgjEzXDqC2Y4WyCeHlzkK8NCugSI4HtOLHNr8nOyMyU+7\nmNViywWEdIJ7fH7bezXNZNio13SYIHkKH2Snq9yzFbaoscDfVF2P7Jfpvf3S\n2NgzXT1xFBhcXBAsgbigHOvo397J+UsYDtfM9DLL/ZcbG+eeq/3QGznMhNo+\nSuHECLsHNcGs9HiE2VTNiGFZCWfGiwEbl5RKDxuaufyfwKOB1khG7mSQ/XX0\nS2VNMtWQoZDZPOorPKrUY5Z//HsrA3LfifpUgi1D9F/mH2CZsL9kBLUvLfm2\nB+IqLRvHR2yUffV9DUByfIMkNFiPmUX/+CtY2QwU5G75UnQxsyoJcSL1YQn6\n/Cg1mdDx37+MzWPAeCstcbtR6amivcW+RGmDLUmcLpOeDGprcW5R4vybUQg+\nydNYRYY0EpyfBQFlqqi8iEn589vOX9CRsmo8LRIuJ2eho6ZAmd67X2DStsbh\nNRcI38hSOSnS0VHCCE/GiDYS/tyoyLIJB6pIvw+BoiZHnV9z7adbKi8Elh0E\nkwM1J7R53yGAZgx9i58TlvKp+uHl1mvnOLQggT5VbQu664uQhu7UdXu6y0xz\nYQCFaJ5acbI2heSiiFZtzkoQDClSbQZxwSvAVOkIFat9tKCjkPkZxZKXKIcS\nX/V+\r\n=OwIe\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDecqqjQBOxWCnQB5xYYwB/PL+oX5+SCoCxQAFEXZZtjgIhAJ1VGauwgYEJJ4+nsejp4BBdsTRr6dR4vMueZKbmkzr1"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.39_1643675411736_0.5121667969920141"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.40":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.40","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.40.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.40","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-gzDr1nezmAthpiNrWA6D32eBaJeMcwiH5/lcME0bbgRZhdIBBtd2mxL0+s9AYhuL+MAXPQq/262/8P68xV6gMg==","shasum":"0e71940a2128ec0ed96f42fa57e4eaa50dddd43c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.40.tgz","fileCount":481,"unpackedSize":2956797,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+dFpCRA9TVsSAnZWagAAYqsP/2wzTz9/UJgx27ODsWJm\nBpQHyfn6wKddSW1pUU35YKPUzbvQ1uIjS2rwFv76G2o08Fyt0Xu0jTi9B6pD\nODEbsnuiDQbCsZrazprjxJPbfFKvnyxfidwEsHKvcrJWFvjoUOY/HuMDktSm\npb1/R1jdGIunmxEjwxxI06qJ/L266TC7HKxPjITz8zanSME7RDHt6ABrQgZR\nyYfhl8p51r9rwHCJ6g//Bxjt+1pYUOVExx6oKVQ1fiRwp9BmCIp7bg5U9J9Z\nJAEtNz3uetcPW34TK6uoEGj3FiJgLsbWIPVibLmy6ay9gRcb+bHHXLsNXTDF\nU4NjxcMW7fR0Xx7hYIAJSqvILyqRYdso9gNzgwaJVtY/SH4UISAn5oL0vnX7\niN6iQJTvKCTVMHR1cldUVyV/bcGmNcmv1IWi5atqMMUqxblZiyCP57bxiAIL\nDbCLefsy07RFhz6ZR+LunOILukUwOyEUdZYECpQdPG6pk4IEJn0vDdwZm9Zr\nN4/nlRb51za0LqSbWQJITdRthTjNCXKBp4EiSy1NwgpjB+U0Wos0Mx+PLQHd\nwlqrFSsK0L7ZpXFdjLLWO+bMv25ldABUDzHR6YE/mfVSPgOQ3VhBSF/3OKLC\nKL2YE5ZiIzoDrw3icw/1AWgA6466yUqN6a/KCxLbo+74Ms6Q5bWeNY38OhpL\n/tTH\r\n=JHSH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQClvzEGYxnbgDQrdJPDVf+fQf2rMq2WkTESTBQ8Ee9zBwIgU7t3v+zfCfr4XC+CiLSaEauReU+as/dfLOaLBT7Ovtg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.40_1643762025117_0.6239126393997201"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.41":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.41","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.41.jsii.tgz","bundleDependencies":[],"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.41","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-ff5EHNkvA1WAV/a5Q8f591sT0vZVXVM09icJmu3B7zJjd0dcHjhqxdriY2QLuwNgWPEiKDqz8EfelE0eY362Og==","shasum":"a681ee1df88dea4c322c32841ace87ccf80efac5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.41.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+rMDCRA9TVsSAnZWagAA7K4P/RKGWm61EktY/DFxw8l5\njbF5lkcvD/71sAds0wlM54JaQ5af2J5M9ZDwahSnWUwCnOYiFRUiretMegZJ\nLbXDUxrPi9aRxNCmG8xycexr/X5/KQ+J+uXv+GTn7cvbSAsrPL0ZTjB82KbJ\n9I2ilZIDBkJAQkJub8KUPAq64EeMmES2OkGxd1kaeO8hAFRYEVCQnP4GT+6y\nXG9DbbXlRnqYVlRCJAW4vnmH2loT7qfW2bxTplTykE18LTMh95VH/Ts/jwa2\nun7lEsLriT9kv5HuJyb4BfUnhsTikWoL3VBvnxrjjzN6mLw521Ap+xCLo6L6\n3tPTl9lWzfzNjdDPvoHXj10KRNEkQkVEwqceS+eKC+ogz2f4sHDE4udoD6my\nqZE/ZsuwYfpQ0Mg38o8UlBQt/Yb6fYuSTV5PiJ+Se3LfDQYuQY8K3S4bII6h\nqMkVq7BBtqmfONsHSkC6XknNEdiPyXIhB3IFxs+2swXjNTMOAqoHrR1cJk4Q\n+vZZGEDXXaYv9Q+EdkHJiyYna26Dwl9j5xxCkmKaOR8PKgzZdDCji2aaTVnt\nnGYG2xmNAsNnaFeyPSBZn3Mi4o+vztBkgpGXIATdzg+Bge/pwN6pz1PW5GAn\npo96u4txbkqNqhGeFbedGcrPJRi08czmCruk5jeOBM0tecyjxIpcmr/I3k8r\nTkZl\r\n=8hbV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGGYHr2/GMCJ+RBxflyKSo4HloIRLe8f5Ij+VWif+yNlAiA4ZxKJbqqR4udQp0WWE8P7SLaRDx4PwK6io5L2C9/6jQ=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.41_1643819779526_0.2141852793720258"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.42":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.42","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.42.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.42","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-FCA46jiaJ748bULi0UoqRdBnO0qbRMnKQe/zLOea7hO+pDrhfRJ95CWrWgNug3UI1pT+4bRUSVPQvORhGXUK0A==","shasum":"37f1ee4920ff48e9adc41e86d638cc70aed7acc9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.42.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh+yE9CRA9TVsSAnZWagAAw5AP/0+nReEefhFp63xh/UF6\nI0BRrcsZMCXYuNtqx9E5yEQHJCbty6Ixqzu1urk1v32naZAyK1qCwv+mqNQ+\nqMrSxMXjR5Uf5dB4MRR6V05rZk9h9sSD0cJG7k33C7v+LeWiiQCzVdVHetwu\nRVA//PfDwQnDnxi0MrzlbjX3mXo9KLoxhw2SmlffjHoOvDwjfVt1HKFenKC5\neJLkS6CvyeMlLbj9UNe+LVUWlqstvmsyORIlm/fGwTAJVY03AqkOVPX3HLCw\nGQffR+UXuE781JlPkigcpKtJplg+a5zKu22KlPfS01eTRQNntFuJbEXE5GlL\nyY6XAhkkLBXOJgX7EDamTZaDyvRd2R9Sa/9Fojab0d9eUFhx3ph1gUNxa0jG\nuVulszWfD3Rbap/GLlgA5Qi+Wd6Ut9vrcCVumFT9Tmhal2tP6pq3z4tKX2M/\nB+0/M2YkCOgLMPZg5sJGZGk0PGLepAevCyXPjL+ZamD4yV5vnWi844PMb63p\nUWSGoexSryMRSuNP/4fPEHZuGlZ00DAYwIg2xaYCxo4aH7u4NCGwpZzoZGAj\nNwdAYxlaXhWhBqoO8G2CdrWIqHNPYpbVPrAicTDP5Kt/pZXW/2xRB5sHpc5O\nKN+PSNZWB9kSz9SXfW6MxTcIYUL4LDq8yb0UdJohP3tqHOgT0EJqSiEB28CA\npLGO\r\n=rSU4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID7Ju29b/wVz5A4huP2yTeupXkQyEkBmXbetGVlpgGv7AiEAiA1oa6YS3w2oq3haj8225i6/WFyEANC7skMn8yPIYQo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.42_1643847996895_0.14072380221236558"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.43":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.43","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.43.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.43","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-x+qUjz1L0UvurmExj+e77Sgio0rJUs92ppBw5yKVDf0H5ODezdctV1E+FK9gtsoUsm+85AkJUaxDimkndLEkdg==","shasum":"c7a6345abe7eb44af9e1298a25edd294831a4fce","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.43.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/HLICRA9TVsSAnZWagAAeAsP/is8yFYEvZH/evINOk3h\neVhOS5DEejRF5yc26GJlfK1t7s0OxGnUpYQMXao5yER2TQQUpHj7dYv+pnYX\nB/Joauhe8gNyzfs7pOWQqpJe0MSvX2pHibaqTtTEIat5lffGaTEDdPCu9aQa\nHupy61yvtHAUKyuK1Nwe9RDAY/lIO6JT/NyE8lT76DsF/8HPkOXPT/gforPO\ndidgbBr7CatKtf7q+ZTNX4MVA+nz2hobLiRUvhaPoCIzZKk8r4oaakW85oL6\n4q+4KUCj5yYbRGGnko3vYGnsSQa5iV/m4oFaeUZrxYXCZuNPYMqGO5eDrq+q\nYhmJEiw+EUYYXjoJgqWlobWTU+JGpSPc40s+R4TXORHcC+j5H8VhEJchum6y\nvhZnfw5H7RELU7cGyET1nyV/YOT66MiotiTpIeoPxEulJ4EObYqJdJU7Nm3W\nXaZoTgP+zHMXuIWLEdb3mevh+B39xJo6PFQmydx6oBTlXVmQVbgWqmvRkDGt\nuiz78rTlMJyZeiGSgsRxQchYkvSLa+mhtMqldf1XyLs6OtwfKfrc6WVwslWm\nA/4saWXg2znnGqZrzUUkcfOdTm/B3mbREd+Xr+adu+Hq7Pc6w273gAvFbLTb\n5ltgKxbUOaSQfYXJCeKDvPaDkSgGZzBfHGOQgppJBD9g3wMVpnyCxJbbBhkT\n3riH\r\n=CBC0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDumdsJgaFVxJkVYBJebrIw9PzESTMit9iBiffLLpXErQIgWY/ADiVHG9CFXRHYXnVjaGqj1Ep+Y7mXpAS3M6VABkY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.43_1643934408456_0.30191198065183844"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.44":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.4.7","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.44","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.44.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.44","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-t0fDTIGWtWNfnvya1Ljap9J8nzWiRTZbWPhSj1HFu2uo94VlO27EGtwxkKyjPnRdV2p8/AtZVRx71oe/D6yrhA==","shasum":"6f386ce0553c4387278d8a65dfeb5173da4e030e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.44.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/cY1CRA9TVsSAnZWagAA58cP/3BPkM7Q+2gBkRStUseL\n9OtiQ7zgtYu19ODMePcc3ODhmoj+yZe40vgWTecE7vo1ixEyAi4X/JYNezBF\n3EypSn+5uSkfiz5tjBE52IOAMRf7MKnOrvU7nIje47psv+Ul2RPrpNUJe+Oh\nByHHX0CSxes25gbJRc9UoxjUSZm012KDDeFCQHSubg0wMwGn4+qj1QzIVy+I\nT4+oU47rPPYcLUaSb0nk0/zbPDvIu0tM2OcFahrk0gVvdjM4hD/LaL/BR5hZ\n1Yq9tYl3cPlIYepciFzi3PFVQBf8LLhgfzjh7arqdow/Pf8gQZYb7fYV9ELx\n+OeWJ1X2Nhj0GMl/oXa9gyeifjQu0T3gHCkCV/JP1uvfTnsNtQpHJgAnmPhZ\nc+lEUM1f7FbVm5MFWD+pT+8/gX44leWjsV06iPUCUsBxF5uQV01aIg1HuOS6\nxHD9fjrYylp6uv643AKqO1aaVESv2Tgrfw8p2Czh39DjohslNflpx/66MgXj\nqKoQtLUpJ8/YvwYSyNAYR7uCsDwkYofXLkh7GMpOmO5iDnLw9xAixxAT5hYc\n8qlp6/RJ10femQ6CXt+RN3+JE0SydA0hvQrOl7Ftp+z26+BKA6eoK2RCjkWu\n2uy5FmG53IfxQd/RMIoTnEH/dP9ssEVTHgOgKkAhwbJq0re0fEbuIPGSK8+p\nQTAU\r\n=tSFz\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAvBcvMg+tKxJwXVDGBbrjSEFnuO/TfKdjgfWvoW84J7AiEA/bhhygYhVsfVpaXeAtKB1oRFfYP08zv/5FvaRV1+b4M="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.44_1644021301528_0.002643657370737129"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.45":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.0","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.45","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.45.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.45","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-3TFUide+DmKyny2mmqSPsCMif3/8ai+i0HyO/HCCrEnwPEOAwOI6nNQvomj+uq++rAL5+s48HR1n35QTuqHYgg==","shasum":"d3ff0dc676ea2060b6c3eab8a45b31eb6109c40e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.45.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh/x3vCRA9TVsSAnZWagAAKmMP+QBlFzlFlhWsxMN5FY9r\ndFKHNc01M8Pqf7tWUWZnhovLeyIZxTpWo8l2DDNacnJq8hdPFV9UxEq0XfUN\nCfRGzHIPm5sosGmbdY/9rhR9txkGvanfphEMkdjXnnhzIJLNiRFD8Zxfaz97\nCng4KyddEF70OhRUcPoEB9CVVPoHwKlSfWz4PlhztrsXzlkz8eRU6aDeH92g\nUQ8SARrBcS5hN8FLjKRYPEf2kw4CRiB7wtjV8xqdCu2NS12X16lmQhqdM2rd\ndB0oFJ2aBGFX2JaxCgL4U7pnvhxRBt5TRK++ApmIdwkrs7GfDPo5j9H4IIjr\n26wNOs12n4ywasyKY+Kc8bJb3EMUs5yBj+IjVaGi7lDUKglmdhg3kyDLF0GI\n7PRR0WTXjzSlgV90WbuknAUlpHll28t9htaT0m+q4ZqnUprho5P5K3Stczla\ndfJRz2MaSZcRMNJxi9wJbqvpcuUFPbTjKwjMD/Q6UD9iadhQg76e6GkzkyVc\nLLIzI+rBAoM8xFH2om/f+KC9RNG1j9cWQYJ5fljRmW5Qcm6b5/Hfs4G3FGIS\nyd4Ftk2SCfF+8D6oUBzZhmsBvEH0deIyk0BeFtgCcO1uXzsDjOGa9mpOPwaS\nLahbPy2JavRFYXn/BRG5cjl6PWwvlSA9zOMBjuLEQnZbWhmxjLp17ZMSdx1w\n1Z/3\r\n=EVok\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIALu1ThkzwT2mEyevXgBcLPkg8V69QrAfLFuwcYFaRh9AiEAzA98uo8alDZRj7nDRfvLedWs92nbyKnuLa/HEp5jlwA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.45_1644109295078_0.4264110017377283"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.46":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.0","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.46","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.46.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.46","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-c4MpOwYu9blQkkpRSFQwSMVneWj+U2oFbeF3jisXlvatPsujPZiEnaR2YBm7Jk7FQQwfrIxMlYuHS8arcvVqtg==","shasum":"947d3c7a73a4caebcb48ee9182c666ee7e51ef64","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.46.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAGaoCRA9TVsSAnZWagAA6A8P/A5TbDrAeLBJrjfp9iDi\nMHDk1BNYZ6x2qpGozRR220lcQ7VcHuaS9uD6aLR9XNOGr4Z/YREUB0NWzglH\n+LK659X6u6vAGP7Y1ToI0HfayDUDWcS4ci5Aj4TkpFi6kbroGNZ2tZ+gaJCE\nHbDiEKGb0rqlsHQMiW1OlYd2FFvvDapaQn9e4m2Ew8/YoEbgIqJmfst/faO7\n6QmUYSlrPiS61+f8ZMPW0l/ZgMoBzlFkxyPLBkDFScjxgy+c+nDBjSczn6eG\n5Ndb0Z7S0rOch7Dt3KMAQfs75EcxfvlaSjaemrKpVy1NuOe9kLX0/940gXko\nfF/x7Y7/H9fNHOgIcI+mcL1x4BAQr19jrj1U+SV4rX+wzh/XQiskaS5vf5wb\nipNTtOAurM1+mELrb1mzfgucYBQEHU2QlZwbcFDBow2BszTqHDlOzPynrHEZ\nPiSg5ji3uQTaCXkG9I030S4E0LKJfGrbyGPU92hS1A7/uaOD7F1fg1oPNE40\nhIMps8UCPvIfxlDfREX1Yo8CNsIH9qwZIFlyONfil407mLAAyKo0hOXRiIMC\nM8OhWUjmj1BnHUEAvXFae50Txk87Z/Tq1LhjrIcZ/3q59MYR92TzWDPO/uxc\nUvxjRKHybbhYnKaW6m0fqCsZ7hA5kCM4dN/lqrN7kZz8De9dLiWm4Yq6GSeE\nFDZT\r\n=dMlD\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTobERw6DOPsqY7KSzbcPyzMCbiw6bTBc9x425JClrTQIgDj8f7X/Qhe78yxzTa6hhTrNQrql0+Q6DBIwhupL0irM="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.46_1644193448280_0.4926342536789723"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.47":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.0","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.47","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.47.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.47","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-2jOCsxMaceSU6cH9oVj4Int5UxCTwqFbOxBsAns3ND0JqvjB1Ayh6EUhSQqvsfmhE5e+7pVMvlftxpfS9I4VhA==","shasum":"745fbcee1d7afd54d706a3e46db3f9ef44f1118b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.47.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAbmzCRA9TVsSAnZWagAAfPIP/29OvW125EBbWYo4aF4N\nBAHQRuKJBPtJBsgxNeBskq3Q9MmQmP+ZfPk/SWUMug2R6qCSbnXFDP+qWeXi\nCD1aKgjmejMp5T3KbE+Dfurd7T3Yju1eye67773q0/3mkdDlvaO4KoFudNTs\nCsoBVgfURP/TpuAx19qy6J5M4sOuLbdFF7luBBiWZVHg+Bsyowkil67vk5eO\nmqhebFK2RqQ/oW1X3PtZzCFMBLz2P5jffLEI+NzGB54vRuTpUYglWZvDkzBk\nCdJZ5P+afvH5eD/RlteEUEzNiAMDt1/ob4119cKJMqnTd57qnQ/Z3kXkxf0D\nf4UNxIzCXzmXt4kO7cSm+sIrytts3Qwd+jCT8r0XXr+eJJyMD6xa+9xqmv2T\nOBYjh+2CdtYrfxKxUdcIDorMgaDlEnaX7m1mC1oqRsihC1Uwg8aVzUrMkua2\nxhXNtQz2ZkAA3ROZjZgZp13ZkLW+B4c3+PIEhqQz7JGxXiUYIYqoewtNw1Q5\nfA9XYhPgKKgUCn1MRLomsZ8sBgu4NiiOr9jD+R7GmXo8/FmfeJN0UMb2wbmj\nOua65ekL31OVfa7PFpf69ouaZvFZuUjNG2JtLy9mjaoNvuQMwMulMlRmhXTr\nwsNrK2rb0BFkK5v1nxefxHV+4tfBhiHafA47Rn4Ir8xkEc1knvgF5SqRY4Ja\nDi0v\r\n=yXvw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxRM1NXWGl55PNWLixnMI3vvLgWu+ajg70n4KzU1/eRwIhAL0EqMXlg6Y1z3WiyGYJHeKoOu/WEDu2sUVdrq4i0jgn"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.47_1644280243171_0.7457613780442216"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.48":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.52.1","jsii-diff":"^1.52.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.52.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.48","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.48.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.48","_nodeVersion":"14.18.3","_npmVersion":"6.14.15","dist":{"integrity":"sha512-rgfGawjns0imKjVzQrtBNv/7zX3dz2tShHtSUveurSBDJXHvY+6ruFle0K3x9LBWDXEDB0UAjElpJsstiEv1DQ==","shasum":"9ddf4b14ad29c24cbc9fde1786c51c9c5226bb5d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.48.tgz","fileCount":481,"unpackedSize":2957175,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiAwnPCRA9TVsSAnZWagAA5k0P/RVFIOWldOcdJ0GrvXrz\nzgnWkC1zbHwHtzabXCyaskSJdXXHzXCXDTAQuOQmJrK/BJOlda6HZF+8bzAq\n6czXCIbUrlG1camSmJc3GmlUmioHFzjrA+ulPz4QNfDqkAD5oWkV5/3+RC99\nJudYy4NjqIzHemQqO55cM0zwTSwL0OQRiQCGMS4O58JJe2fHOWISwwYCfrI2\nF6j0AD4yRpUJNEFcqWT97Hg1ZpCbY12T+aqoV2g6METHuXq/BGk1KgswPhtk\n3qOHBj0IbdWQpZEyEYSVjBVrSkR49Wh4l7J7UjArIN7X300fTamHEkFyay4B\n1TLy4USbPyUZggQuxRC+hJri26m9AFdOSH9ZiHhovpQelEzP3CTFF6wPe6ik\n9CsSDYrDpkr1B5L4CZ57mVTRovj+SvYR2hlkReUJJmiCSXW1yAGab9qXMcYa\n1diHCOkOV5uwfKc9Pph8XC7IhTH+jpFfYkRr5I5AG1eEMFXjY1K0kii6CLCL\nSEnkCo8z6PeSVYvBmfV16VKh26Gh3QrdMumWhJVb1l/JevvlUgWokgjwhLFI\nedualgVh0WdvqiANGjflr6LiRdQ4gpHweil+JNaq5i6bnJVRdNA/eMmi4W6P\nq2WL9cpcoX1dcH6flMKnIteZuvX4oNi1fQbhHkrImVXijfLWbI7LSmvHMkSm\nHOiF\r\n=Rl3G\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICaLLXHaLkhzk9cwiLcPssgJ7G7iay/nQB6Px1ld8v26AiEAk0JGpOdVnX7msAnfAupX6Kb8MWnlyPUt00RcHbX+MqY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.48_1644366287265_0.22273517388125974"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.49":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.49","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.49.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.49","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-vbgm16DmnImYKGiyZTPwVOzIKa+3QLEXRb1NRLNC4IuQEMNs6nIEv+PfO9KN9Xs58tf3ySYTeMYvIGlEiIOLLQ==","shasum":"d8207d66b3cf87d2e5116b864695f4f97c017230","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.49.tgz","fileCount":481,"unpackedSize":2953617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBF70CRA9TVsSAnZWagAAEk4QAKR/OB0LhhH4e8HJa8Uf\nN2RcWRJgpUh16EypiNJL/2aKw4Yf+5F6EW9fyVHqSC/aVVBoUO1yyTAM7Rso\nJ+iLEJmGzaggNl9rG9nwzl/rlifdFevGd9ayvLsT5QYmQ4fOd4AD8BSMkze3\nm+VDaeNqAfzE22IiHopqKdAEAFnE4CH6dEAhGr1Qyp05gZNIZIM7LA0pP0Pv\nLY/5Gocnt5dVmB7jekTHkGKRkVPOG+nlxIbV5Acwa1JB5Pm6Gxfm2iwBhZX7\nmG40R1X7yUGi75voFOz7YFEh7ZUkVaexhSeXsK4Rru280PZB6cSH+J3wj8Uk\n3R099Lvl1SfcI1cQcc5BSem5sM8G2gOwpwb43yEsFsWqT6wdXdtB6QrmfKid\nRT/0j50xYGRm5bix8EszIlsgLmgwMzBVjlPG9GG7+VNxKmVfCxKqcIPJqJYX\npnxq3b0q/e3EAR3X4rql7qzqiGMuTvozkd+8AInDKAjLhuOZ2YpR9xLb1MhZ\n3A23ZqsNsOKaGo6zz47mgLI9McTW4zUWJInv5E/fxSecc28aN0PkVSdi2/NN\n9hfQkmqMtuLXXlxyqE1dtLDrcIAkCjHd9idXDhz1ej3z0dC6V3kmmka6DLFd\n2AY0gmMgojTjCQ1lEFK4xAefys7NurgUWM3oLttb9OXyOMa9C1C6tEDvoUp7\nuui5\r\n=N+8K\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUMYBwEsCDrLPHiqEsyxqPggBMjRaVMaR7CQTk//3AMQIgYLocbTAc2Os4aG24v45gVnehBKF3f2lg6yzvJJU4tOo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.49_1644453620428_0.27769411369097363"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.4.50":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.4.50","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.4.50.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.4.50","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-TYtB2dULTwOgaH1fxMabbfrtqC0BeS7EZAKFBr1PpjnuF2A6WnatXiwDcMcENEVUpLF3UjA660EbDqz7uptcJw==","shasum":"97ac9721065fef29a54739689fe497cf72617ba6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.4.50.tgz","fileCount":481,"unpackedSize":2953617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBa1mCRA9TVsSAnZWagAArKYP/A2k6Ex3ydXxqAsMvytV\npNQKT1hSgeKj2ICNw8FmBmtha8I2L63b66i70Vu+GM8LWoqYVRPcT7qiHJbQ\nYzgjCRsR3etL0sSlKhEgZtI36eD4ycEKsAKaLhZJwC4Ef3/Y+ixw1krniKv4\nFGJT6G7/LlZXF8ODWOWBuzuq6OJu11MDNxhcXVRJVmjxyvOa5poGB/peUzJj\n8dU2siBD7oBA0dEIVMeyLG5x92ioBogmYFdLMYXmfGi5NrREdiFNfo7hc7Wh\nLKe66DMTCLyY5tDisiAI7Gg8Kdvpg59aj3KTY6+PcIk+mp+5ERw4rjDrERzZ\nM56Ntor9ZoYnJ3jinc81w2SVRdEW76Oc1jJLBYctrIj1L697TfYc5PP25T3T\nZU/J6jV4035i9tvQ3XOUkleMBCOb7N46p6TmiK3ii3LtTtCC8rTrbyCidDAa\nauGXIxFBgaIGijHleWUJH/qg1NULTwXpDUAFwJEZOJLy7GK6dxYkDhSduer3\nvovbaKwX1kO/Y8/eoFHZP83cGvPIGOM5afFEH740B2zm8VjNox31rDxn7Utk\ntQMts824aruccTAGuy7oB0sp+mxygZHhkD5VqZGoW4uvPOzRjXP1GdoqCln2\nz2aYoh4U9AWfC8h+HLnjHGD0QEMqw4x8+UxKi4dOHqVUCtGClsf7Zgs7aOah\n/tct\r\n=X5Ap\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE0DRhHVj75knrL10r3Rk3UwPJtJH04kABlm0uv1QhhdAiEA0YSfv+OKt3qNxSpiXl7fzHw0BUo6WjJl82A0N0yxHLU="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.4.50_1644539238088_0.3675539858854675"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PuJAmfciydPWlRYrHhv/Ofi8uPY9lKq4SC73To/JOO6Lana91tkXJZPGKnlUmAxLMcFwSLpm4QabN9M24DeWyw==","shasum":"52d21b05e782f143fdce063508881934137e5e81","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.0.tgz","fileCount":507,"unpackedSize":3085618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBvcqCRA9TVsSAnZWagAAN9UP/j+Q0ui+m4MZ2QY3gvHS\na36lmUg/eGPcfJUlolzwRqQn5/XD33+Wh2Shwnhxhe6/TcEALMAhKX1Tnf9b\nJaf09jNkhJkYWycIFjFc1pm9EUrIZFRWOSKBpV+bn1yc9KgPKxBjhqDa8HcS\n1or6NRMx4Fa0wGqhqI9L46GtrQJRJrChy1dwVTg7/IvJPD7Ap5IyEXrn3Edm\n6HFitVjhBHZev+KbCWhpDle/zE1pQ1i5VmNMd41OVYTg33Jzax3kZeqeQ2uo\nYGYVWNLnHOcdL7QrldTpLteJDtbws7rhf/ycy1JLAeLAFnQF7KablL+Og3ZM\nm2Y8TftfaPTxOzImrt7w2NcSm18CY5AROwNAWQsUqpstCv79CPeygb0cDVKN\ny4A7GJJNAme68ObE/nwq8Nj3bvwDRxjC8NFYvkqrWHvbkTYp3tGpeSUOItG3\naro5SbaJ0K8NYE2aBf0/GaekYWY/G2rapHy7UdqYfSYV3PxXldvHLaKoVFHG\nyLxHxz5H8MmZwMLmIhn/i2egZ7efDqDDQ5VWKZI8mixipJeafOYXIhvSdYwV\nPGoJHgKy29+VTuXofqoY9Nx30Jjr1yaFNL9JHXkieIypSfaSGRXPratoytJK\nVwHAizoF35s45pIrX2Ific1ekmhRszlRfiSSwBIkH95zXzBn0iiD80SXHAlJ\njVSE\r\n=PioF\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCC1njcL9XEAg3HlCtNEHGiK5aRTOhAVB4luw4UICl5aAIgJ6saWR5+nWvV58A8nXExsS7xZbBdDBKLv7DI028n2jk="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.0_1644623658095_0.6300082059692096"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-9SHcnbker5aLjOaTxqwUCz+AHbkfj2+6ohkYpgPDHSPhY3SJQgR0P8+wZSPU0iw7wDxgLCfN6lYlwlh2KB/wAg==","shasum":"95cb5dadb8521cb623ae8d7af361e5ea639bfd43","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.1.tgz","fileCount":507,"unpackedSize":3085618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiBv60CRA9TVsSAnZWagAAnV8P/RIEZOs9XK47M+8/9Cao\n0GWfNU9qLIHAHge2ZOZkpKpIw1mwoCNG/sHjKY0zK7QQ8EE+u+fFMiMv63Ya\nE/aXCpcESiY4VWoDrjFJGM0Ou2j6ymwk4PE+2JgODSceotPLVSZIgkJ6yo14\nn/CPQnFouCRVTJs4VDoTyezJGgOoR/sld1cgBFAECl766889rFGcnTIfjL+q\nWp1hFKvUPWUKalg7IjpLJqfdrwAF19ckubO2dV9pPI78fuZ4XxwK8f1AtENb\nSaJuNXLGT4gvld9oPRIl5YEjFU1/uto8G3nGQfXYTruy3NnnfOcQj9XteYtA\nzdLp1PGeLxgwxJiVtQtrxz2mQAmYRCQop3lzH4r2EiO8CoU6YFIaIqlOaydz\n1eNnqfq6FiCxxUOmqU0RWxiGNzs3t3a96Tl0EkRmuLzhFJERvrPCGqtiXMHg\nT9RrD0e1zAsBcJ7CyJsPK8dpu08Peqwa9nwoJOF/QA0pr/BIxk4fSSvxQNdM\ntS9fZ6eUww42l0QMNgU/rWl1xe10GgaDls0Kvs6M0D4qsBtWVdvfg26398DU\nP9196BFSwUkFZMBImb2wNWEmVsBNpv2kcEMi0RQAk5HUJr84KI5OqSWGQi8e\nzWcyz80A8E8t2tfkNdBsduOoUIOUFGzO3g3ZnQ5UQ34w78DK2joGxc8UpxnU\nfv86\r\n=JtRb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAprSd3qIQH/XlTcemqOTm3FX0HkKFSWmdy5EfpoVZFFAiEAlbf6zxy+9IqtV6VB/Ge9qm25A/slPmahphk2SuduYtg="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.1_1644625588069_0.7378805028248896"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-KRRdB5J3iOENe79Ke9tT8B5HRps0m+2vtLaMXyhuNFbqpkkOPqxxtdOofTxBK/QPhgIPjXTXD4YFQ2mBPeH+pA==","shasum":"08fe9d3239d569698b2932e0e2602fedcaf5f1f2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.2.tgz","fileCount":507,"unpackedSize":3085618,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCFCsCRA9TVsSAnZWagAAhPkP/1WZBRBuObaW5M4bI9Fr\n0n9a944gbkRGyvJoRBvFKgFkZlI1gNpqhzVsEUIwmnCnUV7HYo28CQ/DtjEH\nFFxtXUn0an7M0tZ6NLBnKYVwifRZEs+EDNHSCFRklQVE27JoNSn/R03tRJWI\nGsZdJCDboehk0pozYHHQAqlu6EMTGvRMhkt4g69kQiMy2cqSvGzM3rsRENZ3\nIG1NC63gwRO49xzui6MdAepco1rhX9zzvdS1bsFpppqb4KW88duF1nnIe/xv\noA38UyDp+ZAgq9ewQijgzoV8w22g+w38WmvLN35cFKc4oW/VqB9EZAF8eYOT\nA5FzzQPGudllHTLsSUZmgDz2tGR1Y46dl9HSkKfN9ep9o/KgSiU+NLbQ+TdN\n0W/JdMXxUSISzR6koO1AHfnKR9beoKAB2glen19u1BE9C1ByWUAGsONSXtHt\noMvu4zpiaE/HQz3IuPnQqYrEiptmwRRsb+QRh/NNAtpRWZXEWUK6QBy7LNrg\nA914998pZHoxbpFKHo90pufc/51h7T9CcgVICU/eXZZzhT9XCWW2G9Ny/DNG\nndhrrwfxymDxXsM1K5OCK9ZiQ8BjMcwhXL/ueJ1CI7YLZGcCjKcSD1BXHcoX\nixanlfIKTUAYSDQ4a9o3P1lT7UWcFPSphxb7R5eeDliNdTUC6wul4HldqHF5\nssFl\r\n=9zlW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvaxqqlvR3LpJ0efE9TRsguXAoG+DKZZTR2+Jp+6B7ewIgARDCc8pSvZ+AI4wS2xEI2+WoKF0PsRi3bSBJGHDKflY="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.2_1644712108245_0.14489332161525015"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-DjTRgXSXc6H7kVy8ZBCku84uiGh88xEjmJjCqO9XUXDKbng5aQNZ0biHXh910LpzycJXOUIW+T0zsndxVlVaAw==","shasum":"590c55567b9499ee97339a5838c2cde67152a249","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.3.tgz","fileCount":507,"unpackedSize":3085528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCUgwCRA9TVsSAnZWagAALtwP/iNrbzVR0D+yGP0pdcAx\nMgLQDRAAbzNPrGkymfZZtQMpsPWlW/P+m63PnoKNDN2wXpnA4YTPodlJwRbA\nPv1usWTamz/+W8FnKgHAVnMM6MGofxnV1iB1VqAcQFmHGJRF96SRYx6UNiNN\nEixtXgcWXGUX1DoOwGWVmP5hMbDmfSIQZttIlP1+JDCUWehkeP8ut1BwnWU/\nFwb6wrMlf55JWid68ICEQfdJz9rZ84GUHUElpxqdMgP9ujs1XmL2rbpZlliG\nOanC9J8i4m0Ds06xRjO3jun/hwBFgjkhx3QSB6oEQDdytYnueS68gdoW2R8F\nES23QTqaW4E6vV216BzKMSIwMj2Ilfu5SFKGA0pwa4oqG7mqezjfBqJTv7FK\nfdlJ51E1hjTy1WjQBIKCSytVhNKggodcle5hLDkf/hniqAu9YwHl56PgJV1i\n9PpJ1aA5rrjMEuouKA2KRzRQ/TVjhquQIIxTrrc0XyUOOJRFtDN80Codffwn\njqrtba71AFPNThNmF1u8nPnu/k7TyzmzRIuGiJbN6jkXlnBqPmbJhnh/0m/9\nFgXBV0Rs49EkY6VDthFvt/yZbd0C6J/nUpPMMmvkMHWmb6g+OV2uxmiG4Dec\nZ4Ef/bWKeq6vyrFO6SMiR3z76yMfltlz0yLFHSSV9bL1v5cZ5L4PWAp31/Ka\n4J5p\r\n=eV28\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGY6pLFhLxCDf8uNpumPbSN1Up+ohTOtXH0I215BqwPRAiEAlUSMSOvV60vEve7l3Jn/h+nH3z7gTn725s+h4hdRmT0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.3_1644775472381_0.4817244186151668"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-srnMvqvnEA6UOFluuvKup1mewF00KpJZCe1WwZ12+uMQnVqgNnvRA0ntsoIZtwsloZ7DdVm2g5uJSxPlFw2k3g==","shasum":"9a6d48ba28a13880f2fde62294f4e40b0eeebd7a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.4.tgz","fileCount":507,"unpackedSize":3085528,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCaIGCRA9TVsSAnZWagAAcS8P/081iIuYcXQo8UIVbpuz\nMeVEOzJ27Bz1R9XN2Y4zYk/6LtpWKTYDa1Jgvr1EGBpoR/ek+/QGUXrW4lVS\n+0Ell6QbgYAIzKEVI9LTxh03o5Yxcw7iRIewEpu3kIXDfzvNNRdF8eF6HR7r\ntuUU5nT75Rkzkf1mfMt8NN5cth9bz+3c0jWvLmdcVCqGig37pnp7DMUePIeF\nWF4tjt2bMNI8PptbwdBAtahxF3/gb55bT1UY0PkzF7lmCr8AufZ0jcHnv+Jg\nwaCn09ujnQbyAxxI3tJ67JfF2W7K1T9C02B53crY7UA4zol9VVnC1o7RYCP8\nHddqBdoEhcwnpD+v3lEnYER11UGpkIFkS9mEPS92M4n8MWJahf9751KkkOWV\n7SzPm0F1xgKA1YOOjbii19Gcw4cO2/S2JTOxYbrjbPDLsGXX+/t13lHPx8wK\nISqoUisg66+5fLnHHd3oPTUHtNvHu2HbX3qRMzfRlMJRm2WKkKXQnuIhUrDf\nArzskCJicg3NvAsYP4cc1Y7Y78Hpq+/U5YlQk10LlYgX90s20CYDLW+ABDjG\nxyRppzuInHyfgHVrvB2mFNs7Kb8tEB9hT2kC7u/XIGRZ3GQBzI1LsPUiioOR\nkeUEFRt6e+5VDLsGu5s4jc9JVn9B2nnnQuLBxnUmwUabq5FVwdUgaKGEpGkS\nJCOd\r\n=LUvi\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCByGPVtPQX8K6v97PWH1VFx+E9PBhYRUkCaE5HQDUZnwIhAOOvsVwjVyDu9CbpZsR/85VcZUc+oYn08A4wtS2R6gtt"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.4_1644798470502_0.8666629291134473"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-FSlYHTK3QroMW8NkpV8NnLsEq6HpgjM0qhW25nj3u5VzGa7/5qCoWxSdIV33hGGCfgRfc5ZtFEvA/pHfDaieNA==","shasum":"273bee491bc6c7bb7eb60abdf1c703408d51f1ff","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.5.tgz","fileCount":507,"unpackedSize":3085535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCuivCRA9TVsSAnZWagAARdcQAJpKcyyARY/VskCYq6en\ntGlEUKrcddDTRiuSoXtnHn+yGOSBDqKdw4qqjSiQ9ztUGy5F7S22THWc+Pfo\nzkPSxPKoto+th5qMIalm9tGZ15fDFD8IeXIlqNY4TnkM6z4gQT/SPRO5ebxT\nqaDm3rX74vS5eQ1a2p+vn19Wjszq2HfN03mNP9d+hTCg56wZjkIYj5/27EF2\nNEdye9NR9EXRZdQCyM4KzrJa7B0gDv0LYhFJlWzSIAQNOyWXRaB2GuPtgsWh\nv9oUJi8G7EsOxeFIFiTpsOdsQhJl7B4HEeQtAcmrK7DY/N1AT4txOBWWRxEd\n/8T2MGYJLfNpEcAjDoGt7ziyKGK4yl/HITb6XT8ZPK1IvioX9zLXokcOBMDa\nq5t9yDcGCMWygmAM2H9EXTAEQcy7n9v4rMl/x6xhm2mia3GHZwTREVXWDpB6\nuPxtSnMkPDwt6hSWz1G4YrxdNMCeBJOVS/5brJdgViQ4w6GNGJxbH1Cp7Bj/\nRR+ewnnQmasfMeKpHG8gW1c2wMkhORCRtPRq6VPp0w20ZMuLx+oZT5o6jy4j\ngsl7JH9cw8J34vGsXp/+CPK0HXQYyxxLz0q+L10T2kOQf6W/q9ssVSEZSpPX\n1YXbQmmTNIjJoHqIHqvgvCavgoD03c9xfMzEj59dkFnMowGz4lvmRF8pdMQY\nTEQS\r\n=bNaW\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKlfuumxFKhTfvCjzUoNnHxoc1qtG4IT/GDG9xin88dwIgMP3e+ObMkG8TXzxpwTGSwT8rSmt/vOCpAXxFIq36TDs="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.5_1644882095462_0.8081997526042191"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.53.0","jsii-diff":"^1.53.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.53.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.6","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-ioSZvOkmuGdBUYNvCBDU0DVO5Ro8XviEwcz7GTdHydhJJCqESyjTLh0KbL2AumNvcv2uh5qH65BN/O1b/KlOQA==","shasum":"9dabee195012f609b41e3c143c56ba74e8ec8abe","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.6.tgz","fileCount":507,"unpackedSize":3085535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiCvM0CRA9TVsSAnZWagAAEEgP/1HD+6THizFGuGiLWQKF\nqMFBI7XNhQwIBXGDDD3ODW3EPHizqhbzAo2Ypn2zCd9h9SnzRlWZzSKy3Xu7\noSusxuTihtAA6KHPKhB0aCsUP5bT064FDfcCOrPBe1Tr1/w1jvmthlSgeejn\nGEAtfRtq/tgU8kFamwXzxom8PoikunIhDSDAYvHvyouoDXPwgXzOvGOkT2iD\nAwxdQs+aPZWNx6KcM7YSY6yIITT8BORMyHa4r6IVbeazm6McdgjFcBzD8oDF\n1kwzHvY88V1Ovcpu+ZIaaly/WtFNZRgWjh7CewQImlPX4kDggY1050E8seUO\n0qiohZyngKeKwZBUgU4+TLv7UGEo1aW7cuu6uDFqMt4zEsf95Pc8kKQs+9S7\n/2UNVTdSz+0K6NS/BATstiP5Ei92g/tPl/rnxlk2Yjt8zXtsbzXuPiuBAK53\nkAc+t/1b1/HKvX+3cNjRJEYx750TEpuglFMU05mTgZ6hu0ZpNdejYa2MzjMU\nYck/pJpn0VppwjQotdi0qDtZxo+oUw4bsc11+NLFcDJb9izHmqD+PdfvAkwm\nUU+YpOlWb1wB6g4KBhOiGrd6KTRNOfy7cIkogDjzyhkR2g24D0tmZbjhMFbq\n6GRCP+RnFF5eGbA9WLWkA2cXHe+WTXipqMFxUwsmxBzu/8SWo2KyJiAfu2eQ\nD0H1\r\n=BK6V\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFfIq8s3Ffow0ihbUU6CbJlwfpmDdIJkYJSjcPa02tg9AiEAjHwrV9ysCuOyYPHqdktfrdREwNlGA5qM5YU9gM6JH4k="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.6_1644884788222_0.6828267306540199"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.5.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.5.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.5.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.5.7","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-aVsazk39u1WfPS/23yguXL3MWm7x6pTDZa0E2TL4VWq3Z5JC12qwQl0QEU1bA9ndQ/AVSMNJyYsoZXSBvNP9sw==","shasum":"ad00502038683db022d7860206d0869d20b72bc7","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.5.7.tgz","fileCount":507,"unpackedSize":3085535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDEP1CRA9TVsSAnZWagAABP8P/1FkKO13F+tGFTIqGIWR\nMf+OB00Y0nikRej5300bcj0GzTCogMSCH34cOkK1xHYdaJ2KOPRdA5xpptuI\nIvQmRshbRVfAai+glqz0r0Y3MlFLS9hzXjKRT/kehO3zTiFuoC5YHg/1Lqvs\ns++EB/yCFQuxdw3mfayKQxZ9I+B3Kf7EuJeGtU57TCACD+HZ8igITvCdoYyc\nHM3gDE6TBTkBAffMkyTKIMAhjXp9UiRdtrAR1t7V2xB+t7fs+rupgB1vqqz1\nxJ/UI0uAoDAhG0JqdjQA6IL6j39Up4cDwbFgLpTF4mJ3tDvZobm6+hRFrfWF\nuM4hw6VDL+L5b+OhkxH+EL8JmZJ5PSNYKWbcRgTOeACINBvBLH4iPTMzLtHn\nfNmnGJ5JksyvRXY+vdDHAFH8ahoz0tPdsTD53NzDJ+1y2n34lnh4V3Pxr9JF\nmKWNdDiJFr/ZmfMmiHBBmpn+guuuN5Z0ETrALGEOWkRrr6Ka5/PGDX+DFy06\nhqP3o2jAuoKdMrkgwheSuBh+y40R4XEzngwQBdNPX/JH3E/L1jLCMVFOipv7\nAVsrF6QsUw2HiJg3Hz7Wgcn5GcwtrXeR4UJF4cJzwP7RCth/bhsd2Br30N+A\nG5EgtVI9B3y9/vAxrVqDD6VIWyafzzYR6IJVm5nIAjMgtyriAredgiaDro8S\nZDcD\r\n=ykt2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEDiL1P0Dk8rxMPKzCYCmh1vfyMntY4lM9c1s5XZlqrlAiEA70nTTinJwMAqQ129Qjuywt6x2v/ziGf/RouB7rocI80="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.5.7_1644970997409_0.7415613659967575"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-M7rxals2Wq1hrs7+BAtHm+kkpusxET7cQ8Jq0kgnzXvkal8yKHKAWS/7NvRbjjTHe0U4259aPzv1N01XjydosA==","shasum":"d23c7f2a7febc7377c468f66f4144697a1fe981f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.0.tgz","fileCount":511,"unpackedSize":3097447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDVv/CRA9TVsSAnZWagAAe+8QAIE/1ebYsxjBKTRVbb3T\nhOLkFj9V8CFYe0MxDGZSMN4L5MZWYNdBBGX8nIRrL31EZ4SjIXe94yPRw7QQ\nHwbgizlSSo9D18gf39Xwls8+Vqu73o0/C+EscxKKwWC6OjKtzIwkMSIh2Bpc\nViEaiNdMqAXf7vDlPtr598BSn86itZTywvbpzZJ/IEaSIUAocbW8bnJQH8U1\nla8P+BDrTB4DXbTF5y9u8I/Kj3Tr5L/fvpuQVL9qTInTY5ByBaX4CMgJyQJL\n00ncdNHU95JZwMA5GnZpNA22iOqdkzETKgSZCXw5Zzx1EEp5AUwwknYwdz41\nIhpT7vcyLqt9L6tr/cwABLzPYUfDkciQHXbYEc7VdkRVbMOCDRDDFs513urI\n2z+/YufFaCPMHn1HVAwtpBJGSw2BJMHwy/6K6c0ooWwq33lxFLGpESNf9NGj\nZgr495YGwPJsGgZ3a64AzLSf69ZR6bkG4ewLtxZRWTRdiQkBxOCLWyju1Pr+\nlupNRXviE2rNjJ+67kWQsVVrzLkF7I+beoQlKCALyHohSEJ1sOgEz8Et2ux1\nLpaQQOAtjjQFOhWcnkFProMLWwC9Z0WwOgIZJISbFQjlFVNWkAsA1N89bXPj\ncAe6oVst/WtvMi/MOtgQ6GOvi/Hyz8we8zPXpp5lxbtn+3htjhX+v6wF2zDb\n5js7\r\n=geo2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID32QOC2cZxtG738nRNmF/hqDCjc1xljel1Ow55fN+39AiBLzguOJlU73C+nB2jESsVfZEcSWKOarfmHZ6WlENDspg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.0_1645042687272_0.2983460572433516"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-hTthwj+yjN2vtyzEi5IgpI5PUTDiEGS1HrdW12Hivd1q9Be83z9pEjb0f2FnwJPrHxxtRv1m34621LE2HGoqjg==","shasum":"99e93fb0633ac098a57ff1d97a502ab06ede2f77","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.1.tgz","fileCount":511,"unpackedSize":3097447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJiDZV6CRA9TVsSAnZWagAA7JwP/2ofiNpILvnGazF+DGDf\nm47gVGv2Z4tj6zaHwlk68vZlj7/b+k9NJr5ju8lEMYkAdaOfnmX6ixvZlVpy\n9gY08xqUkobwVIOvAvIDGFrJPhWr555yOm9IhNXatDU2raFTu28O7R3PDypf\nXW8QYGD52xSsK8nLHgFQQvRKGahW9hgZPsqvIcCkFA97wbCD1XYdssQHrm0B\nKRdETHGzlfehgQlbQ95doSJX3ZNso5ZTzwy2dNcDiZc8YJfbmXeQUga3fUgL\n6oQfxHTBD/NeIGuZ7Y6imAtpYM6bO2lig3qarMTMrnLQ11kuo1nOgZm8bE8B\nf+16gDgB4yNG2hxkgOZZluLEf+QZ+MOZsAaLAuM3Az89lNSHpSatybljGqxC\n4tssdrfJ8/p8WO4hX1QdlOWFg8A/B7aDt/3A2F1TK6ME+Cm6y6bYvHZkwdLj\npc9Hg1exlzjvbB7xLE9SVJnvQ//QLPRyAUbLpCH5IYblKPoenuYKzqJ9b/qo\n4qv+20Bt9I+h2EvGoUNR6/GKOfTn9EiGAFMJJjaDxUETwExE4XDvW492+TX1\nBEDwj4eKzioYTNyP8uZmOsRe7Wel/gl5xTForuV26VE8kiZqyC1zhw/+QaC2\nV2v+Iz6xH/vNb7OB8w7/DODpkbwlduIEFeX/7Ne94nUKtQTCni01+wTCNr7E\n+DBz\r\n=+tH5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEHSGwc0QppZeAm6N1gI7MzxI9zgwx+swP+f7HisGLmiAiEAuBUjxRYpGssrrPLY492gJ6q9Trd6AFv51wqfMSfP+Vc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.1_1645057402514_0.7974132321742768"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-G88pU4417e9NuWMvQ9GVZmycxwDwY9LG7DRgCjyh11hcqYSgYKhW+ceHPfRiWf0hXF7XIsYxvSq5TQMAjllxsg==","shasum":"e5e334d55ee882e0dec1fdaa1b135a9d5657f0b9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.2.tgz","fileCount":511,"unpackedSize":3097447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDue2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrrZQ/+PPf5MLdov9GtuoIr3PJKNRXX/OHZb7tmmKeyN7DflnAPkqmh\r\ngLwuG6UN9HUSfRuh4SiumXSnaZERWNAYT+y8NYMgPRo2ZWcXbLPshRgEgdRK\r\n71DQ9CNC3p96myVC07q02a8oBgxGg3kHxCFMgJRJ1Vypc6QxVDNI6omvLGq0\r\njkqzQl46jTqdg1cqo2P/sHzXXRFZjOa1QTSH9UsZ5OGoQkAv52sha1bm8fZm\r\nwodwPeEKdbS3VjQeqzB/YCsPpzez3prX9s5ADOX+rqkXMHUOPo0k7fxehg9l\r\nIkQLWRBUEPaI/kHqp8t0OT37GXaYMEOPI8pvaRk07c5atJ/ceaI8wu8u4178\r\nPxUIJn0pjbK+/2vmMlPjkNrd1j3rx8KzfoewH2tRLLgkCgtHFA+DcuIJRwpw\r\nJH17r8MG7XlKWVmovz37EZw8e3I6Qs/ks+i0ZQmjMbCR69WFlOB3v1CFepvs\r\n9O+83F/SYqhkPv9KPntBSL3Nl6uvqLgtCB3jQRTGx4dVp4UoClNsFD4PHIZA\r\nM+9Keep4tfGCTrzd/RQQ5zL5Fv+UygoFykIi7M9rZvv+6sTQnhnSWJJcOPSG\r\nGVlG1Rgzj8tpaKX/JzUMTPgRbwhz/aL+sKL+8/RTyh1+OCnDyO7Zf4AZkxEb\r\n0O1jo1fyrslXidAicIr8PzUayg7ShUTz8O4=\r\n=Us6O\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZxipEfsvPDH+rXzWYbelPrvT/cdaKCxOcuHL/vLSyZAIgeEev2VK0GY0qEUhtnlSHbHkPgCji/1ovEvr+TruAz0g="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.2_1645143990519_0.7239480112038867"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-nmPvMx3LX1FeW79JkNzKE39Om3v6tPJ6mtLbkkVVOZausFX6D25NmtlWzh4p4Ho7xsiLOetIKzroDW+lX1Mbtw==","shasum":"c1979f2bbba45cf0872089a5e4d2f23f73139542","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.3.tgz","fileCount":511,"unpackedSize":3097447,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEDjQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrpcxAAhow3+ToBavQ7fKyk26H/KX5cQHAT4xQJckVJg+ssxDqQ7fXu\r\nt56aGSOaghALzBk6vtFqVRGBZ5ba8St8Fw7EMMib8eLoH8/MZis9WOFHArQB\r\n/1Q/nNRc0lkGV3HrDzx+2bgeEOwkccz05Jgm6b3JxQYrX5IhNHQ46fI5XohR\r\nJeNpT6xHtJrBCz9O32venkFgoxGbeeLrLEZBHlWEn9mqbfKKS6chCCup1l2+\r\n6dsX3onDCZaResjBdt31E1B4DoyVIuS+xfPHdgadriOy6Zt+PGF0LE8o7kkW\r\n+LcTke5PE4KqIaTUxQF2T0ZBB82aMnhphJIVmW2eb03KwOktDxyn3SNyi6q8\r\nDsdQ4xKMQdO15Ktfc4bF8BnwZ0qbgemsw6iDHLhJ5/xMTofaVGa0p9pVkA+2\r\nCQjmMGTLgVnbPvNehyBXFEvN8Y5hT2i+JnPv4qI3ApMRQWKvx//OveCLhffS\r\nhmXbtzbniKNAo7tHznj8TxaZJgjBuwKiqjfFisUT5DXRHEBU+z2JLJKf6Vk8\r\nXTrCTFTFWnZBl/fYvgUC6J8oGNivUmAtfTddYRwVUHmlKEhTK10nG3URL5Pg\r\nXJlMYAk7B119vDSBCviLkk/1SLFlB2jIDPIvQl3+/TdbwKnGUaI5oZJbk1ty\r\nYUU2MWx9Far/9BJ5sAbbpaNR22C5LiA5Xxk=\r\n=HzrS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAPLtXxpyqkMaFZDn/NA4/SQ96I5jbt3IlPa7XU87iaxAiEA9ZCamYXJcBh90a62ayLPQXrOBxLgwaN4egRg3ftz7b0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.3_1645230288281_0.9344274054936323"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-crY2FV4mqh39dDUzV8RLchlI+m26TmoqAA0r1T54wIj3kDRhbdOSepUFP965GYzZW4ZE/kQd5+7KpzSlF6EPnw==","shasum":"c0ab8d5120bd39a6c7f206af97bc8f89408b802f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.4.tgz","fileCount":511,"unpackedSize":3097845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEYoHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLuA//aKr24fCEt3acwC+bgwm1gk1Pmfpcuxie6/cJU6QtyYyB+taA\r\nHkPHUhVYQrj9GW1D5ZSx88ClLY8MZvCDsRMt9IzM2ApC4zfGAjAhhJ2N/ZaL\r\nHGnO+iFqQG7TIPC2KIbZZ+tMQEbss4uDS/oaGVrNz0XJ5rCjWFYfqKiKMDYE\r\nkR0fPuKn4HUZL8yKkLPH7etIwVpdr8mziXR0JXPkXibaXKfzFgGXlUYod8eI\r\n3AR+Y7DXxlHvOrgDh7+yGOAHKSrvre9KJW04x47NbF2K6P/TN9bKj1vF4kDu\r\ny0TB5DrTpC9Jep6HsJ4DWBhMAI0mwLOeEq9kw28Lg6tpwyfbY3lmTm46/6Cm\r\nMTae9h6xzj70CeSMLgezuP6ola8kVKtWX1ZLK8USMDBCHu/nRkojWO1nAci6\r\n3ME9X05ktzYLWi083IQh/aZO2ofDbajZzv1pc0CiBQVyN7E1MZi4VSwTCauC\r\nSAdC+Z/kvfWH3SZg5nOnMtsCwombHmwSKC/09q0x17piMWR2U2F3aR6YPJ3D\r\nO5qrk16PDmPBuoj9KsMmWs3iSF/las6VGV1KHlHDMUAGOr7anj9pQ8N/BeDQ\r\nSJ3jo+4u1w7D+BQIccMf2RgkUJHY00xsvNlT7MBv+4hf6mXTwqFqe/x2pokC\r\nhFFsll7aGL7WWJfXw7FRoKPNS+C6slIeoOg=\r\n=OPzg\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFIxbc0i1IlyA7bw8ZCENWxYaW7AWZOxSu9FmkXNToTnAiEAxupJYQ9GJmibG2aAWjH5yazDhnNM7ad/sFEeVBrvCcs="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.4_1645316615165_0.6182608603368387"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-8fUsGiiGT0HuC+3IpM2U5MnFNQWdvy+l+6q2OUF3c6jxjKY8rSex6OrHJeIq9yN+DXGZLD1GUAChongpZ0yJ4Q==","shasum":"839c523f82e92a76c29305998a2015799b0c78b4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.5.tgz","fileCount":511,"unpackedSize":3097845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiEtxnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoS2A/9G5qNBWqWp8vH6W/y2ZzgcfCSrsE1KQpeCYDjuwi2A7oT33DX\r\n8cSO2xru1MkZKiyxazUltx49NvWwi4Logzf2NMjFAfd6QxdpkyfUc1AAU6Da\r\nUvocWSNFo5SQ4lpO7N2PVcBFmddKmw8r9e2K4S4t4deJ2Rg6qFEP3KczNYFp\r\n4PNuwJs/Mo3bJm98q+X/jMIT/ka5pQ7qpFpcs35ypLnsB5lGCsNC3znewZZL\r\n/loTz5jDGJdKXi5lZs3sYj1vA3LUF0EiDWeVtQt8hTaon08f8r0k2DlZj0nt\r\nlA5Q6kcOL8qA10ceATEWItA6WV3dJT8/On5U4lq2VD+wdpba5JCkeaZ7vi7d\r\nf8Kf2tGKgiIV5rOpS3TDtSkt9CTbWVO3QX6LLxCJF556b5j9VqKFViNolTvC\r\nAuJNILEPLRO6zVQ9ZQ0zC3/fV2elDS95EnO2ji81FkBLxxHfVY6lIlc24DJj\r\nDMzYJuDeKgp4Mrnxncnmf72Jc1e/xSfLQxEG6Sg9t5LA8HZj8IXuHftDbUYK\r\n+PretzaKbykspVVDwteBoGK0EqNzx6Lnf2ETY/oCejlAihXiXbaJq38KXzwz\r\naUF/0LnDDbJjv8RFWzle+hR70fnvoXOh7l9tlAsrtbjYn08wad4VhOZZnaQ4\r\nmk/8PC1YR07B/6j4SYWHGgn1tMttti+84k8=\r\n=Qo69\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDy6y7ThlfBaqybmWzkWkHnV3H8NAfnEWTxmIhVIhWeQAiEAkebuEIZMXPTUZvuYXbwS4TzJYrdV1nW6jAxUYtWuMqo="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.5_1645403239450_0.9395282619531513"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.6","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-6jNXNJ8Qz52B0TpUmcX/mq0BZl5azhXRSlLhmFvp76GO4dchtqcYFxxMdFeGgcdkgOQ6Ef6tncq4q7EIZ55sNg==","shasum":"f7152d3950e613494bb82c2294f4799d6cdbc801","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.6.tgz","fileCount":511,"unpackedSize":3097845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFC1HACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrYDA//VW3Y4emOppoJD8dbYML4Kz9A3c5OKD8z7KqZ2wYAWK1c7mmX\r\nCLJsHkiNqwyjNnaYmAQjdr0kh6HuSCPJlWg+PismLdo27czS3LyqzJc6iaMF\r\nJGVS4uTeTRCFBq89tDPnqHLm+cT3uiAuyFQQHyPn/oHKk1VZzgJ3rSa4JC0K\r\nsL3yfDR7d73h2kgZ5cggzu/Wg3ZoruokfAzjQwAdIm9ypLnoT9Er+C6juSqH\r\neM+YhNFVbqcymkMcMFlWS8v5FAPLLy2pYVmsVDdKep3TE3+Xj0eMBqC/oTOi\r\na2/LGC3qX8hKudiWfSmRCw00hiNOh0dhRQF1DCxwMJT2wYePBBzmvLETRl9P\r\nKuwsfbh8ogZB1w6xDylyeAxPnOGH3UvQeCGDa6K0/KONOLDXqtiz/78ZrlOD\r\n6NH8p9DjeUOW7VN/juRVvzrSQJ/1YPLTkv/haCRMbDKYquRIWW0eI4ZbAFOq\r\nJ5HVdoN1vsHxQz1ceP3jF8B0TiLYqOFnKoGvZtEWR/F+uYTe/AlLqrYX7HHY\r\nA5Ohd8XVmzCdwiPpgqs2Fmb/K+YE3LfObHCHDZgX/VgCx+m7ZwmfoeNM/h2q\r\njKDkF7t0P2VT8HKCGrhUAGrLs3EKOSoSW1faJrlG8EfDj+KksylcnAAgvkqx\r\nVQpjIy7k4KdidLxVGgR/wNgTgCO/naGNJGU=\r\n=MLtS\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFYqYLny1BUZFRiGrMKk0VQwzS8uhsJv1gul7lafRrd6AiAfrU48Lgac6M887oRdhdEbsYyuF0aMSyBs+JJs/KrrLA=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.6_1645489479127_0.5348160092490715"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.7","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-MARVIm0X3Q8zRRKboxFeUYHkwGksZPeossRZHRwA2zGtyhF07j1KmKyjBPRSOtNlXhP2ciBjHMgnLRvt4MoDHg==","shasum":"00ed4667f0aada44ee7cef48782356e615ff6cc5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.7.tgz","fileCount":511,"unpackedSize":3097845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFX/YACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqiLg//esXNl9sT50gGOC9X7o96LJS5+z3ymCnTIQmAHqqmBq7A1RS/\r\nfY7tCCQ3bwt14gHpfd1XUAsP8otK8Wv3RepCPnUsO513v1zmY3MixD5MxOcl\r\nTZDpD7uClsm3UswQFDr3LvXcnV05u4AIZO1uP+XjMM6eIEyT8cI5Hb08UWb5\r\nRuDmYkkDS5b4AK1rQh0QuxS5htu66WHzWHLFO/sYpuGDjuTSgWyLGYiAX3Ii\r\nMUVXIXXRiCpHpDJqgaC4L4LjufxpcsJjscGjjLflld2wJF+Ir+vU7+O1+NuT\r\n/Oz2mJT68NqltlK3yaXbCTfQAh4OljOEg8FxvusQqYdJUxEGhf9pozcvCRvU\r\nqY8Xa+VnXybVQ2GDrpj7ZuaRqO7OSASpT29b+JPmYLPuOhSw3RT4v+QR916L\r\n+zzOPU/HzBdLBnizyCxdIIAxEyocYHuBw/rGEx6xQgwpNm5uISqYplKNSGku\r\nk6guZ6+W/gMEW4wzg1N+Lvvj0Se3vGoFNhHRAiyF6OtWzY2SQn+ucabYIyoa\r\n1qzYFbWrvcp45gC0K4dgJgyDHQ4ODPXb679nrmlGie1TWKr4DFP09yeNV82C\r\nqthLykasdwWxLQTL2aJbEPaxwveYVq9r9TxUEsaIK4SQoLXLk8l9878o56ar\r\nz3yPa9aFLppHB5buH6DpnmVAzlCJcRhjuj4=\r\n=aSGl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBPBT+nsnLD41c0XbAEBgXupaqz5fct2b9Op6KG7GpSdAiBEupdeR/8knBgfg16+1XFUfbfBoxBC3bD/BrR77jh62w=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.7_1645576152599_0.00016913716385102973"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.6.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.6.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.6.8.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [{ id: 'AwsSolutions-IAM5', reason: 'lorem ipsum' }],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.6.8","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-2+pTOQ0sZyl65LeS4ERTGXynmNBIxs/k1+unz6hFE2tNaP3MHKuXcu/12EqUcNBGm//wqjAEE+MdfV259C0OXg==","shasum":"38ad2138df276dd36737066de5808bb9f767b421","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.6.8.tgz","fileCount":511,"unpackedSize":3097845,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiFtAaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr1xg/+L3J/mA5ItvLWHrdYUVIjRhFTK28Aa5YCR3jsFF5uoG26boC9\r\nX+7XeYrRssF4KD0go67aRy4ccttDjvJmwe8yEMJOTWK0AOYwB5Xmi31iCKB6\r\nn7R8auSZOOnfldDitAQ/DI9nMp25L2Nj5TRHAGt2kXdviilTfCX1jcp6zKxM\r\nAtmREy0uZF+4jpPGNQXdmpPxLlb/NVi3leOLvkRJ5ALec415w5rBlPjy7e+D\r\njHucgb8uTiiKk4VJHsNIDtPMl+U0IrFYyGBn0cBmTv9dTbmcgurYp8BBXUAP\r\nRb/jCrrX2Mk06c5/UILN9nyf9pu+7Cbqb76+40k694qMlFoX7N0FXYsaKT5V\r\njVXHBiTOiULzswU7eDRQMv8N9vB6yhgWyEv/AXyQ+Cyy52yBTYfk/NbE9PKN\r\nRSny5JrMLH8RjPD95JHlOz+evxllaGVgATJ8VwsnUoY9YQH6zUMjBXRYqxHk\r\nIYroxUk9Szn/B+Z+e+RbP0ewRiQjnu3O7H/VWczM5ZzoeBfsKr3szBnzAaEH\r\nkcEinci9RRpMvX7mrwpyaIfh+P0+6NGeYWdFKK1+Su/ZYdiBFdfbPhTwEiIx\r\nlH/enRkt3aWtSvfCn2dWJIDHtBxcSJc/3PljezXxZljJZO+L0dt4DLje2223\r\nZclS3sSGWoyvIw35qnFn+1JlyeXv7fjDTGo=\r\n=tglU\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCID+1WK1KFxND0hRN/OQOgMReGv6MkcC3ygZrHrj9ad9dAiEAw3JZXYJtDI7SY74q1r7vnO+kh1aAEVFCjO78RCcgcKI="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.6.8_1645662234473_0.6024785523846508"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-8hj3kQHCIaiokpJah4mVBNLTReEwHSWWabfeH8BdXQv+u6LUQLNrAlXRWSEITQ53WGVLUPEGKVlpAV4l8P85LQ==","shasum":"916b08a0eb842dcf9fa45a5445ee20d155681e47","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.0.tgz","fileCount":515,"unpackedSize":3124561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiF+CgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpMXQ//Zs8tyJ2S1BuDTXaeGOfb7GUGoJJLdoqsXw8Mv1XGbA1Ry2Le\r\nizmugaV202kJuva9JWFpBdOkBpXAuwyTeIlRkHWL9lpbjMB0owVGLS5JjShX\r\nU2YLNUCPf9itfoswOwJ4VHx6zY3KyOYimEXXqS/rdgxZ4BbpC3UeFb0wioQh\r\nfXq3MW5a9MbyQ1LNBVLqJA6Z5akpAt6XpSpwhsW51HD6WtitO2BaqFOrNVZv\r\nCx6R7BlwckzPz+pS4WlNwf6VBZbwjMiZN/UeVTsyvnxd/EGRDIjvCbxQHVty\r\nC8YGgHWBRfnq8qdXarEJKK0SMtpKrkV52aO1gATFO5/sjoqhOVf3hxKNcUMi\r\nAEgiTPHZ025MQyXF+se8m0bADHDZRIVKMEjpQyTEYrfJTb3g0pww86JBT+Lo\r\njlCzkKtm+DcndwJ3MEOTtf5/9WvSNkvGQz86nvce2+3AL5d38zrZjLhBG/WV\r\nijfbErEMxVy+zUMQSe0LoJU7V5cjkTkhAu8a4PLjLo4X5PGArdPoTeADSZPB\r\n6RSHfK1n0X5Ue71eAVjSCej3wmoDtzGMmhIT4UfyeIyxM8kbcqIS2NahqD5v\r\n/HLgNt6386bljObMxezebgMBtCQNWnnBwjXxGKWswXujfVPgg745g5pwpkYB\r\nAQvZHZrlwJ50KWzWVjLyk5GajLuDdT/fdNs=\r\n=WIK4\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDhLTBcKH8VoYsZfw3X/D9AP41bWpEJcOza++VNfiBBawIgOk+X/PlzDc5bIY0J/cDKg/p7n6LJYd/LQT+q6FlC5mc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.0_1645731999853_0.7933618003309264"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-C+BUPFxlNbNnmCPKK5K+A/VJ9ehS6+Yex9QjdJq/Dsp/emoGnhKhn0FP3OVN+3mxbOORiRvxqedJENAnbczigQ==","shasum":"4720f97d41121cebead83716559b5898c2dff87c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.1.tgz","fileCount":515,"unpackedSize":3124561,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGCHzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpf4Q//TRofD/JpkPt9cb2BrbH33E3lNmAKbTx6IAXglknQrn+N2Jlh\r\nVz2nCdAONAvTII3EsdkVwgApl9xCVmWpCj3d52udbS7NmDgkWRoHEFCS2Av9\r\nlUdr9e9SEX5YxMvLEla5nRKgTXgopG8z2q2dph1yYFXs7j7jpeC2MEpGTksb\r\nqxho4NApHYx0A+Sy0+O5P/MQuIaKaJVgV3IIC3CPfdFTORb89VqQEj7Ulhqk\r\n01rECNOrE+GouxE8R9HUjXYe4quw/aQsg6nLGrLt+YYac46CCdjJskFcFdWY\r\nL93UaJi/NKdTXdc9blDwg8/8MaOmt1jY3NTh+CYRyC7KOhZsfKO6Pc9SFR56\r\nnFlLnq3FMoSgAxcja1u5sn2DIMArpywOHpRxcGiGF1lwWQxn9R4z8LuWbvNV\r\ny236hTRMNPkoJIH0hAJgSy/gHEjY4bIIPksY63QWY54K3mFSsROYdJZ0rXVM\r\nxC5kEa9n0QyknOvb9fpC89Uf6ACnjTopWqMklnvwLVP8gvfnSstjJIyAAQM9\r\nkPnWKd0IFBQQ6CYbG+3jjdaMinJyQ0k8+NyehIgAbj+98AFdqp2PrKt7hB8T\r\nZaa2G0h5Bsnwzwq9zFirRPUgi4zF4Wvmtl2jfmrMhMxFdqXOXUETVm+zNX5L\r\n+xwcq6/8alYJyasqaklMu0J7J6UkBBVXAXk=\r\n=YEUx\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEnkSRIJYlg0RdaEkdKzPhY6sEge8Uo3fdWiOojhejUGAiEA1bqBSNBjhnhGTXIjkpYlsFnhDA0ikjtm085g7eTHClc="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.1_1645748723280_0.607127672758498"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-mNaAhULGBjNh8AEfGOePapuUqPN4wguIYLxDzQR4/y2m+QXXiVCHg+RlSwXgu3FzZG5V+c44Y2rnZrTSzdHe7Q==","shasum":"cc30fabcd251b70ffcb2201b7ae112798535c3f0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.2.tgz","fileCount":515,"unpackedSize":3124549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGXNwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmozUhAAkSbd/C8obcGrtr6M84k7FZLuQ7xIMd3ylG2wnXFqmVGh60yb\r\nC5ZiEcLWbSmGACxp1sVZM7Ey/YAYG+iEZuhn86wOyUf9UYAQ16AjzRKJwe8J\r\nzFDN8IRrbMotG9C5+j3aC6hOUE9uwQuRdCy8oDisIWUJTmhPZ4CjOsmh0Z6L\r\nrwU/JnpFiY1Kb2Bllvjp7PVK462zlXIzP+D5pa4NumT2jZli4TUF387qgBK3\r\nTrxDStRItRz9PJp+AqhONrqa+4I2DgJTg89KRWtsLgBHAOTcA0jCOLDY3yae\r\naiuK5mTOwkyrIszd5dvIsVTzQ6f+Gzwej3/gjZv5q+UahM/OsLx8qDxnLPRe\r\nmQAKPAaV2kpAndO75gwj3Exi1QMJ+LXvWJmCn9UGIy2/SXM99K30Xgxh1Q3G\r\nj/hunct6l+x293gmvHfyuezvbWa78rj3N0JulVvbkrWlUVOblGrEqOf/768F\r\nQpLs4qa3JCTDFHNy/b8Bjr+JNtNC2zNUWdxQq3/fCMmAwhwpx+24M5e+zcfI\r\n+IJY2bLvLBjdLaDR1oeLXHNyICGo+qEZUKrsbn/x5P2hCb3UsTW8gErroIq8\r\nPGfZ/Uyem9Nbzhe2YGh5lzheE2LYRtpUkpOae0edwBGJTLkOzvqMVyBhV1DX\r\n1ZRjvIAiIWlT/THiPc4x4Jp3klfAVSxHKUo=\r\n=8qnt\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGRlkQdnBh2QXdNgLvDDaAz4Yhgj6jolpS/MkgrSkJAQAiEAy0WhbfrN1ne8G4JSaeVksSNoOhN/Yxil6+uYzkg1+g0="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.2_1645835120717_0.2932044719251894"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-A2IKO3Ga4bvV2pf+RqPt1CiJhCIw2mdBXCfXApcu0ZPWkwnA92IKMjVYu3tG1OEmNc2mkLSSLGv9nYprxoGOrA==","shasum":"8213cfba6937b20ef46bc60ca57925f4159ae745","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.3.tgz","fileCount":515,"unpackedSize":3124549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiGsUiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmreng/+OihDe1Ny2XRWLkrm6W37oTtZgO1aGCKPS2bPuqyjnRGO/foM\r\n7OuFJAk11s9V3rSRpzmPC6NE3pgRpHiI+oY7Z6w5JTia7tLDTrkG6tjZSt0x\r\nIUvjuDGsIPz116ICKv+2gKz+MMktjmn1tlL14NiKiyvIA8p6WDBqAoeA28iz\r\nHWqbGssVDRrohPkoqEOncCiypqvaNomtUdUJIgyVu2F9hrAw6jUgoRk6VzV9\r\nigxcwAxUR3OnJQF4L3lQd7Tb9lTZ24F1nPxkAfMOObfpY5AidnJiZu7h5BA7\r\nZtYLh+IIQVowmbkNkjs/nIuzfVqrSJWzbsGCIXsyvlrQOt5rrCIW6Xw6kAC3\r\nJisUlTQeu/bCxnZwEcof8O5FQRQTjlv4SdyUE37qRrLqpdsWWZxx0pE07Xl2\r\n4hQgzGks14KDNSpwfqNbrsVD54ag1PMCSvGGznsI+f5LoWNKuDRkH/eHhXJ/\r\nlXUf05xbpBOknhC9RbTg9HrIYxFWvCguU0RmjoH36F+e7GUsd+NBly1aA2KD\r\nQAuMqMSzdER+XjL7Q3G0u38MDCr3oQCf+chnyP06al6OnmOvtLi2nMQiPxUk\r\nrChIz68BMJYlotlIH/W+8gWpWAU5leSRlf3KFs7TARQ/FWFFYye/RxLP8629\r\njiQu5Bo+KFu7d4U6GJ5jfq8MckC8Os87r7k=\r\n=ok5D\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDZ0mHeqffm/36yw8JwQ2AH/8hch879pDqgZzDg7N6L5QIgaWnR08mhaxLg/uYo7yN8yS7y1SolEw0kfQIN7jQUe88="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.3_1645921570755_0.08751164438539383"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.5.5"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-m5fYzHjE7bLNJxYXM7aPESuf0vyDC/1poa0RejggZCrAcNaI85qQ04QgtOn7/PYFwLZ+wVJIt7JkR6CsZnjEhA==","shasum":"b9a32ef2ae9eb2f13c4cf518d592d622ad3f53df","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.4.tgz","fileCount":515,"unpackedSize":3124549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHBYXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoEsQ//RHQ/idRiiU5wc9cXTLxWpevcEFw2WMJcsF69PN+WQHLkHM4p\r\nc/Cg4j34eZXo29H8krDAE6VtUZJqY0GgjeYRvhNSG7Gse3zy44ykx9dr2f7v\r\n9hVjUUcbQn5YbFDUyxmmc6kVgxw9XphzzHJE0Acz4aLNT6z0hC5m81j1oH/1\r\nf+fAz3Dt7nR+NJEC5K26MeSgAa3rtlrQQ4RiMxsJZMk7V4nWQ1CvFCNUX3dL\r\n4tkkl7x1hymZ3UyVkAT64SzUdaeEqmDPoFEBa5DGNoz9TZNGL2jr60W8vuKk\r\nyKiTHFzp0blVkA/Cali9Io4/pwE4i4rMxEEsPuyvyfxAZFcFCCIFaX6A1EIt\r\nvgljktWBKETGhpwWblO+RgYkRv/DqEQBo7be8YY6wOFmOfNHtOLL6iqCA7qD\r\ndUlXKxX6pXI4ZVK3Cyh86wAGdEYSq9YuAat9HdagZNYQgdd0N0sRT7sAyGOA\r\nVug5O4lpELJCFwCpnlF+kYj4ZwZ5UrumbJ392A4p+eFJGNP6uSccLo0hIu/y\r\nOfjkZB8FjS5nWPh4HhjqTp45lRkugCQyjcg0d00lWxtULMJudWpGjHFrfAn8\r\nCOz1ZWlkE/JAV+TUZWnUVlPJKTtOMg9HH5+AD0UYkL7kxBbbYsP+a44jgAK2\r\n21fBK4ikzjKDE5ahvRJ6Xty9m59zF9Zxkx4=\r\n=LFY0\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDFSq+RZFN0thUBxVUtwJVCVzWzxUBLTchmM/YeMv8C7QIgZxv34PP2EMvuwmTO4mOVV8IP7MFVeDyF/Y1LcB0hIiw="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.4_1646007830611_0.8232963772691038"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Wjq66lQhZLjPU3KBfjF5l9EN5d+bUpfsQA58lWMLfIC6zIQG2R4HAonV9XWfHXr+N7BIpkOr5PqWA2Lk3+TRLg==","shasum":"c1e5091657c65a1c8b8be36e0c1c8db657512471","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.5.tgz","fileCount":515,"unpackedSize":3124549,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHWsFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpPwA/+KxiaVVc0mIIx0jZYSlX6GNZhRMXF4I7sEp0KsWG+BZHidctJ\r\n6sa9dtP6vNRP4iWnVuTrOF/Onc0PfQ4ZCzs40RrRzj+MvMR6uXUf44ruSBkq\r\nG/AJqxSRfMpcgC6b7fSLqE467A3rJ158hddoiC2uOe76OMS1cwH+RW5AbOTI\r\nHzqlYWvkvFADvBr+thDrgXmYzVBxMN2Q35PbyxpQgtxzupJrdzRpDzBp6Yuv\r\nhnoVrbzMmIOELsB3hNndGovDdX7/WknYgYcmisJFhYuMZlabQ0VXvL9r6QgM\r\n/ktujbspKX62rGaXD18+t6uBp1An4OGlBxNtuFRjckqmVdqyLCIgrJNlm52P\r\nT5zMAJYpVkJNnCOsZTEypfy7ZSQ6Dl0Fk7ikheLduLPcIOMrjwvceidCo4M4\r\nhTnpaecclfG+A/IXWMD0Fyb2dL5v2mhHRlt5aUPompfszgERtLLjawexrN90\r\nNvSOwR+phLUVQlf64zt0iucJuZZFTBotdrTjFAdqy+DBku/EVSiTuAVsmyMB\r\nBcLJtVL7SoKxJ5+RaHZmoWt0QJRe7Rk6weEXKcJyYbtPTmaIba+ZzyVupp6N\r\nglXh67u/+ihNME/GFYY6Cc4bXpGX2MtLyPc2vl6u7p/mq53dqQ8jnwjAtlrN\r\n4q1g3cC31roZbYrRK+HrRQRkb92NUo0zTP4=\r\n=xA2m\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDvu65HlkMGiJpmTu/Zo81io9rKWJta6PFPi+RD6MISEAiEAoVdiQPnCBAfGfVBG/Tbd/25fPha5FwNvLjNWI7uqxiA="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.5_1646095109117_0.47911039927640586"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.6","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-7OnITYBRjlVlmCGbWpKTCqxDrESZuCN6bLUDqXgwJbXXVKvN+HJga6f3ZYUArLdv8xXDJd+DavLSTbVTKWJIbg==","shasum":"a7c55f11e4ad04fbd93e3e24eaef1486fb7e16b5","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.6.tgz","fileCount":517,"unpackedSize":3140937,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHqBAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpvNQ/9E4XX/1QLoLUuA0F3xxYhfnmDzrZMvMF+bQW5tYT3Jewx4g1T\r\n7VDhd5Z1C7XxVCvrQ+8kTDKQ3C3AzplOKQwRVatSbN6D4AuZNlzgxnRqGDik\r\nDU++AVjBUPhId62RtPqYwF+wgTYZhDKaNFZBBDmri+LIJBSI8l1BOo09kJlP\r\nA//JoaUoWqCqLp9Odqt/n2t9wkm0VZkLklxxb3sBaVWMqBq0grUZL06ay+il\r\nPnzcaFc+KEHNg7vx1+LAfHB0Ytk94KB3Vnpi1xuddLgVFI0r0aMRSeTLoGdt\r\nzbEa2n6nBfGnpHCxvzy4Mk424u7W/VlBm85BNwtwerUGP53WN0rZHVQgUL5b\r\nTyVgXX546ZpLpL8IZlDPX9MaYzyFXaPrxraMxHW7pGktQsxitcadW7lKn8U0\r\nKbYpClziafkFyQMNIwEBelAo8P2btZuxQAvxx1/Yp0/POXs9FSWGE3Smq0/Z\r\nH7ni2youWmnitb2LXUpDYPRpRtQFVvrGAKVYxBMdIXglpyvOFdUwkSNX0B4Y\r\nNc9MrAJM0Kgaa68EFJ7D74JZ0kp+ZO1yuEARh7w2i7DzHP+Pc5IhGwKkSwiO\r\n+GgW20ws0ptX81AZZpE55cx0wMoJnCicsctT57b71Mt3W7CVXT9160tlGlbZ\r\nDv9WDBExfLMAniU0MBGnTzVnnyYjCxWFe8s=\r\n=vedA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiGipN3dnyXamghyUfblzo6T1U44vbOX4CXCJMXaoUTwIhAN7P7ts/1D13XZ/ooSgGb2jXejngmRePapZEmxQCgpWm"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.6_1646174272415_0.7114085680114373"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.7","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-CgWRgN/ipJlVD2Ea2gZJu4zAnVbcXOZWpSVbURRM+xQGbiymZggpyByMwlRjSGO7olhBfW2gFRw9g13it59raw==","shasum":"8d4024ec2c0bfff17db77ea755c8e81a2e397b99","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.7.tgz","fileCount":517,"unpackedSize":3141427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHqxNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkFQ//d6B3uP/3QUjQ86i9P+pSnVr5hncIFUBavzCJrDdNvDJQw3i8\r\n2V7MTmaid+bcc4Ve73m8UJfhUlcxs3/RJ0LsIuKIvH5lq69EIgFPHohbXZdh\r\nUQ9Rufv978t3Gw8d+xJagWJ3FSN5DcEPpY+zBmlGnJV0l1Zen6dGyNxsv24C\r\nMjk4lk3lGb2mgDarnkMyBDazynIe5Jd/+8TIpv7/es9yPwo1IaRbnl53Q+x1\r\nq/82QJnmtqM13Xi4kS7JYgz+Z3E5uHtRou8HSJwVM8ICcSDdFbRsrpaNtQVL\r\noj9eBn9JBdyuPdR1UKA6oTpO5t9Dj/kYdWwZb/cn1kEZl+3KSt494zXiRJi0\r\nqnjfwuATcOoqNbngec1xPCYpsja1ExfJqhx5ZOb2sjlX//XvK9b2b3T/0l+w\r\n94gKaEDsZmiGYxnFLf6NosTU28a4YLqYPTSsDKHoj/N4gZ0xzGTp/cReU3Iw\r\nnjLxnKGWbBapGyBDZlZMAAlQAsR8kJuU/197mw4PeFC1cDFnzsPRbF7kyrab\r\nH08d3/DzNyNhP0moI/8sokq17VOceq7LbR5MX/Mi0EneuJard1kt9wBZ2SKq\r\n43jm1ad1rSYawWhuPLMw+ZzVKYO/NvExQAhFJbfH/27iOXsLOlfOEe0yzNO8\r\nI4I5GVPd7uhu3KYYW/OHJn9RnfZ6kpGk8VM=\r\n=mpmR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3ITfl8V8qqvqYqjOw6bfydlLRQVL85G5qxKDh0j/C4QIgYRzvRKGlPP4SKvGsHK7ose3zvGYKMaggWd9bcWKxZdQ="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.7_1646177357315_0.02241081380692367"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.8.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.8","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-FfbYalmLZ7BBjIt2xFyWXC1fvH0agNnNL+5aVI+gc+z/hJ6EhJCkz85fh8wIrVVqrmrg7zlGaRLQEugGm/cNzw==","shasum":"788b2961baf0f1620224d32d2f6d853a32bfb291","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.8.tgz","fileCount":517,"unpackedSize":3141427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiHsIMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNcw/9HVZKC6u7x1bIIft7oBojM6/jU/VrGWqsJvSgakjM6MQb5kIE\r\nEppGI4zUqE+Yw7PlHwB3st6OHuEWM2sJcJL0VitIpEn/sntCtgBBpMHMKTdM\r\n5Ke7jL04vHdZ8FIGcXQIq5l+BTqbJZSag2a+nFmRnAjU/FsVzbuROWMARo0i\r\n6b37bAjMxb656P48tAgkne2yyM2MekP1OLFMqk3MIQKBxXZJsZ3lmX1sm4QC\r\nBU7vf7WGlStIQzfuu+wf2d9pfXcJVkUKmL6YBWqa+W4HSDPOWYtBX0mEQh/x\r\nrDHlk0rsA8auLR4ndJXOuOtTDusSwlWeer40WZ1zunvS372hwpZhLjATkiV4\r\nVGVbycwO82yk/qsanqq/jsBR28Lz8A2VRH7nJo67i/llL6ZCe/yCExp9gbSg\r\nloG3Uaze/vp67k8gHBQ9H0b3uSyXgDhrYXW3tm7Nj1ot5SoOQVe1A703TJhE\r\nts9hmkdX8WeC+kbgxQdj4QsEJSTw2QTZHKELKw8bV+7Hhz9VmQ+eXJQ515uc\r\nAWnO6k2JxxUF90XqsHCQ0t1mFCr27I4HHE5MY9WJBHbFhVLLItvltvbgx+d7\r\nbAKuCRowEfeXetqVBZb4O9yB6m2Eb+a+UdeeLntYBol32nF8P4kME34zfhPV\r\nysm69S79BCpThI5RPBhk4HQGDqhhC9IOp7U=\r\n=ezuf\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD6skW5meNy2b3olXlwL2XGgJf4WB5Gm3XSEBx0emRHhwIhAIqQjIe8nT6oEXS2DVkidf0ZKkSLk1kjMuBjUB6ZvsIo"}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.8_1646182924771_0.847532743420462"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.9":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.9","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.9.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.9","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-zz3+VRaZle4fLgUV3Z+ig2NOtke2Zo+MHwR83eIqxc1eYIK9jmyU55WSCG0guErolsJA3rdEM+LBywCzaAQ6sQ==","shasum":"95fdfa09338874f4b2585bfc45d2211b73bb506f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.9.tgz","fileCount":517,"unpackedSize":3141435,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH4+0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo++A//WHvuqkp2sbwpko1AAu2avEyazGPjEKNcMnCt2FKBBZiV6dOp\r\nO1/EXRlOSRRxUHGnbmBzSdEtnE9e/lHef2/JzUgpQHEGassW5pRS8TydAOkp\r\n1ygRx5Os2LEx/eZ+9gpD9xF/y3V0bqcNcdOCa7WpOzxkrP+gzsptKrFClo5/\r\nGcqgX8khT/7J3aP9mUHVSxTcJOTUer2Pz+ZuLxAjgj91aDRCxkTHCX7jKq9d\r\nEEkK2c5BpERM1H64BI5oYHmNhZyHkCX4T24UXHqXMBcYaKUC4N2Zq0g8mXiW\r\n8/KzkoEb1Gii6xQwEUuGoImsQGfWPNifBozPT7Gi2Ce3rrqPkOipcq19zXiy\r\nIDPyySiHYcSIRaIQmkbAveRSHZXWZAJeTHSI3/KF2oVHeKO8X2FH7SOrnxIJ\r\nPrFzFVrxBSHyXCb8ytKuvMD2I0CAesdhIliGL0pSB171bNFx/Ij5WFNK3Cki\r\n9e+VhZcZd2wkqRc4/WqY4RxQCT4RqZjj+oaj1VZxSjZ1twk/G6N+QAS58BGB\r\nQOsuxVdS575kodabQIbprVLExa21VsmIhWt9PeLCccWd4LMgKMSuJgWAFuHY\r\nBr/JLkYhaHxvCqzU3N3/icTKZfj9cAAKxAcci5sT7RisZCozfyiJNWfrHerv\r\nHkPzuMEtMT+ff8HTExDVJsWCjgxUIpW7ZDU=\r\n=N5p6\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIES3xFk3qOKin0XbBHt4+QSHrd3kb1pA63vm3EZpxbEaAiA+gEnAc+/KHpy+uKOySzbapJaz2vPe73jTbGuoCcVHyg=="}]},"_npmUser":{"name":"donti-aws","email":"donti@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.9_1646235571844_0.620188653439989"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.10":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@aws-cdk/assert":"^1.123.0","@aws-cdk/assertions":"^1.123.0","@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"@aws-cdk/core":"^1.123.0","constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"@aws-cdk/core":"^1.123.0","monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.10","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"python":{"distName":"monocdk-nag","module":"monocdk_nag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.10.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                   | monocdk-nag                                                                                       |\n| ---------- | ----------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag) | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag) |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)  | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)  |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.10","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Zk/P6Gyf2LqGGu/lGRY3ntmSjror2hYeBB/rf3AeUqqtLcZ/NTQ4w6RkiBBdRsrJj3joJKkA3g41Y8XRrzDEGQ==","shasum":"31400afda12b9c4601e38b9c337380cbcde1efb9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.10.tgz","fileCount":517,"unpackedSize":3141445,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH9rHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqMKA/7B4pHlWnwcqGlalqNXbqh2ClUX0IvfH7hsRaaUzB9zxhjhBcb\r\nnuqyC7ZjddltBz0SLsjUOt37YVaKwDrK6qI7i/mxo/4vQ42DD2zOQGH5aFK8\r\ncnDYfLhxos/lc6WK6fRPM34g5m5ajmX9bQDZcUL10CqaUI6soda1futCO6lm\r\nDow+1uAnTvekE4LHPtwQQMVI2XbdJueqfZ515m0jQBwr0/2QC5xCG8I1m2RE\r\n68TwTBZnqR5pi6FbawXu2w++XvYuQwnNK4C3ScX+lYtBNnCwZ0l3N36aGiy3\r\n3d8kS+KESroL4Iehh+Ru0GMh5RE5bkw4qbSsuhBlIzpj2IzEtGpQe6C8r0Hq\r\nxHHshTschznfWh6vLDORilSd5PbnSpjUVN6QBR7JRFIYXtz7TgVBwefLRAmy\r\nZRjHxeF1jekzYJ0zrxPB4tp5foeUhEAc1KFFk7S5k64wpLXdvZBF08Ojt4lW\r\nyGLdVpcjuGd5ozBe8/JsZBALSoRM/7bH/zgYB05JCAcgUmAx00im5UsLdOxR\r\nztVGN3Ca1j1xL8eSzzplMNfC4tWl31GrIOCCLOTHOlD6/+NoDIkYGjz3d2Nf\r\n1ai0coNC6fZA8DSb0568NksObaauocMse7LnvwJc+i9GVJAUOKOAh2mHDUQt\r\n7gw8fsdIbivg5l1PyHZNrV16JVS2sEmCXJw=\r\n=Z6J+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzV/uRITw/WJhs3jdG59yiNnxcz6kNZPC8rWfPI8R5rQIhAMCwbapwHhI/M47EF1eyhKLkaIxmf/Lp5v4TOZElrNCl"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.10_1646254791460_0.4391163806590548"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.7.11":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.7.11","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.7.11.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                                                                            | monocdk-nag                                                                                                                                                                                |\n| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag)                                                                                          | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag)                                                                                          |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)                                                                                           | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)                                                                                           |\n| Java       | [![Maven version](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdknag/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdknag) | [![Maven version](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/monocdknag/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/monocdknag) |\n| .NET       | [![NuGet version](https://badge.fury.io/nu/Cdklabs.CdkNag.svg)](https://badge.fury.io/nu/Cdklabs.CdkNag)                                                                           | [![NuGet version](https://badge.fury.io/nu/Cdklabs.MonocdkNag.svg)](https://badge.fury.io/nu/Cdklabs.MonocdkNag)                                                                           |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.7.11","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-WVPfnQT9dtepX5Am8DasAGA1Vg24L9RSyS6fSFWjLnAUFST2+ZkzyDKv9epKPYraZiSki+YZz3EYf2+8iuFJZg==","shasum":"d4efacb7561c7744d8f986973be8cd669eb757f9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.7.11.tgz","fileCount":517,"unpackedSize":3141640,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH/GcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAgA//Zkw6QHep+jbHF0HRMZGjlKtduBmt8EP9XWiRBUZR32NA/j3a\r\n/8j+Z+zE+D9Q2MMfUYefCG21E6gDhSVQl0MECMTgZiz+/zI+b+WIpXrBc0EU\r\nHuPfSS4lNhnY1ZRtiWQsyPmhQ7Siwt7KApYhMw3su3tIkodYO6gur6Bmfxnk\r\nac7kprMkkkPtSRdRX+EW98vqNelCw9FoUVxy96Yzdvwj4U+8tLdk6Oo+pxF5\r\nT1NN4hS0enuo7obpR2ABc23SKWU4yhVPxcQvBqEKwqWlVWqGxn7Sj5trZTLn\r\ntfMhW07qdBxLfhxdCArtzKPEQJwD9PK5o/AVz9oyKY9g887KW0bDf60q/8N4\r\nnM6lV7BJSaY8lWG6vaB0aX4cwIJ0QS6AtS8rpGVj3lMWpR8Vll4B1zvZcAf7\r\nJTHWTw+Y7rzoVFs4itDiEETFHFOYt7QVLvimQX9HKe4PcLGKW0JaPjz+b0rq\r\nb5Y+BGDS/2Bnzug7ghsIlxXpse5pa+diz27SSzCCdfp+Ok4mY9rzL783UqiA\r\nondxjAuRwTPWpZl4NRHf8ukd/VLtO0PGRC/XkJH/3upEnVg2ihZqjWgECybB\r\ngwZy5FBW3YLOc5MlsDUXUoLpcuUixvTOeaopEpYbN1cFbvZxd9m0Gzyo5JVf\r\nuP7ct8m6z+1f4KMFiUy5hlmZIG2LjACfBns=\r\n=u1Rn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdibUHQhnsBgojBMEzqGH6MDPKsffEsk8P0ZF9RZ1jRQIgMsQj6KU0GwHVQAIxCPWCKuuekJaiMyt9s4cx6+uPwWw="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.7.11_1646260636653_0.305038089534994"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.8.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.8.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.8.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                                                                            | monocdk-nag                                                                                                                                                                                |\n| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag)                                                                                          | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag)                                                                                          |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)                                                                                           | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)                                                                                           |\n| Java       | [![Maven version](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdknag/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdknag) | [![Maven version](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/monocdknag/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/monocdknag) |\n| .NET       | [![NuGet version](https://badge.fury.io/nu/Cdklabs.CdkNag.svg)](https://badge.fury.io/nu/Cdklabs.CdkNag)                                                                           | [![NuGet version](https://badge.fury.io/nu/Cdklabs.MonocdkNag.svg)](https://badge.fury.io/nu/Cdklabs.MonocdkNag)                                                                           |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.8.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-XHZaot7sS3GImTst16DDPWvoXjyt5mx75AaOnbpwnW1f+9LFIo35PAO+RCFIz7rvj2ehzWPWyuEtUIKTHnIESQ==","shasum":"12e405ea3b2a4a33551f5a3bd5573cbeb9b076d8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.8.0.tgz","fileCount":517,"unpackedSize":3142725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiH/r0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmosOA/7Bt7hVUbcHJFr22SxX6YcRZEDf57QA8VoXvQeh7cyea2jEQ4+\r\nOFC3XVZnr6qTKVOWTxIIMNMIxqnHTUD9FCBt/2FGZ43KaB3I4TpLf5k9EAMV\r\nKR66H+eaNgm5hPT7itbDaZIfie2ofQPIoyAURPVrsf0ihMYjYeWRcysPulUJ\r\n5Bcg1tUyXC4XWKiHhlQkRVULs9fnwREPTA6FL1cFkKNpeJl4701PqBJ/3RaX\r\nGsi7TBe2wLeFFepjCQY4slDS6e07ctKLzGv+RCnu5UWhACNoOqEFzOeGD3ku\r\n2OKVnewzXj7LrrO3RSCn3Fn6G+mAj6A4mm+MaiVZ91pcYlbTlTX22O/gZTdX\r\nmM4w2SAFet9jxyDOIEARPMIyLpaTPdAcdsEBv+CIFXXbwjd05VafLl0i53WR\r\nKEoKPWLz/RSx8C9Ovx4UAPVjwGQxoXLw8ToBf6Apzb+vLOCqm+gCqKFMonn8\r\nkUzL8MHPpA2ORKtTHLTIixUW+qpy+CP0D9oATC1RrRm9cPntF9V21nWoleEA\r\nw9BzcixpvUUCTzQz6fQsQnLXWh+tg7FytYHxiiyMW21ySmE0cqMPoJfK5Qli\r\nkoRhumFq89nsbZofKdA+G9bPREPByMqgrRBIowD/SXqKRXM9bAqGjZ7QK5Z7\r\now/KcGp81UKkmv30SIQwTeU/hb6TCPCTol8=\r\n=p5r/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHxjKvl9M2Ar6kc5pt4+gBm6kZxSVF/p/y5U2Bp7X6NxAiEAjGcQ8ZPUlRaShAIsH2460Dj33dPdJeIe/ox1p09qSG4="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.8.0_1646263028627_0.11816910005169734"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.8.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.8.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.8.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                                                                            | monocdk-nag                                                                                                                                                                                |\n| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Python     | [![PyPI version](https://badge.fury.io/py/cdk-nag.svg)](https://badge.fury.io/py/cdk-nag)                                                                                          | [![PyPI version](https://badge.fury.io/py/monocdk-nag.svg)](https://badge.fury.io/py/monocdk-nag)                                                                                          |\n| TypeScript | [![npm version](https://badge.fury.io/js/cdk-nag.svg)](https://badge.fury.io/js/cdk-nag)                                                                                           | [![npm version](https://badge.fury.io/js/monocdk-nag.svg)](https://badge.fury.io/js/monocdk-nag)                                                                                           |\n| Java       | [![Maven version](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdknag/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdknag) | [![Maven version](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/monocdknag/badge.svg)](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/monocdknag) |\n| .NET       | [![NuGet version](https://badge.fury.io/nu/Cdklabs.CdkNag.svg)](https://badge.fury.io/nu/Cdklabs.CdkNag)                                                                           | [![NuGet version](https://badge.fury.io/nu/Cdklabs.MonocdkNag.svg)](https://badge.fury.io/nu/Cdklabs.MonocdkNag)                                                                           |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.8.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-ZZglut+izR8LEvymG8LfG9Nq+Tf7aZrXY/d3duya7PQo0IYN9iOJ04rKQzsdEHhschXSpS45UoN/gXlRKONiAg==","shasum":"c0cae3a976d0bb0a5966fe9d9f97ad4d4a3691e6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.8.1.tgz","fileCount":517,"unpackedSize":3142725,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIBE3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq8BRAAm4QXGeipEEJPhcnot1Z0rMhbpLaNIA8ug34/ET2gN50CPqOa\r\nXUYes4MYGLJNTduko0a+pM4PikLAXtB49y3Le4sGBoMmydUtdDPFAQJ4vwfG\r\n4EbhYcNuw3i2Pfevy9+Hh7HsUj7W5RwBm4G+HOsPUjg73Qve3pcBnH0hHTsj\r\n9M9o6OMW1KUaKhO99V8TrQHLotaDQFc3gCe9ArYVFs68CujIiBl0cNaugzpf\r\nAIV8MEijzWcoo87fzajDmTLXqjzYuNZR/oR93/SzB4ykTqMQPcJlMGUDmDv0\r\nLZsDB791uQSarcjlRpVjb9y0I2gojjbvOmiSmIvNK5kfweRSFQPNAY8sOipF\r\nLR+OVsHTGotdrUAYbIm8AnPrQKvav3HZC3TI7KTQU2nOzxg9NULSoRgEFx+v\r\nD9lts02yhUsycp1XNYPmNodtoLlr8M/x7UbQJE7mMgBo1OBPIl3XI7fnCHEm\r\nX3hb2fKYIokaxyeiW/2FyEjqojDzAkd9RlKODPozNv6n6lEA4NxTnkG3qPua\r\nTyAm/OrSdG+ZyzWZ2GvafZVGkEkKh4Te/DH+8n8WqM6Zvs/3CHDHMtrTPdCD\r\nHJyQCLTy/gScsx6ynunDfYNyioSI/PCwCFo8OHH9r6FRiZRz5+8ZQ3NH7wc+\r\nvWKBndL+dp0xT2ptc3goTAVqOLaHmKhbgZ0=\r\n=wiJd\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEUCtFh6tnHBtQThHDVM7tT2wLm6t15G7S5ASXvqFaPuAiA03DcYbnDcWNfxLPXao+xNmSd7Bj4a5yTDRhU8xism9w=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.8.1_1646268727682_0.39700904625375233"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                                              | monocdk-nag                                                                                                                                                  |\n| ---------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://img.shields.io/pypi/v/cdk-nag)                                                      | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://img.shields.io/pypi/v/monocdk-nag)                                                      |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://img.shields.io/npm/v/cdk-nag)                                                         | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)                   |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://img.shields.io/nuget/v/Cdklabs.CdkNag)                                     | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)                                     |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-oH/jhtACCi/uhmmBY/u3MiF7tlvpDY+nAL9euA1UYVJdg3cCthus+OtCFzdTj3wLLBEE6UiULAcfcNhNN8UK/A==","shasum":"fdf865b5d510245a58a6ee0b44da88f5c222297d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.0.tgz","fileCount":519,"unpackedSize":3160972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiITAOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoxYA//aa3gtYNFbUyAxZMNPBNRLUMwv9hCSuOitp0pHpUzfTEuPCaj\r\nlObEslxL6RsY7eAThDWFaxrXZPaUe7TkjwFZhXhwq2dcQ0b9EL1X5rIrmDkC\r\nYjzmdS4dl/q84f+m4Hxy47HaRtK3Mndb9NewQu1bWa14O5StUPdoTeKuORDK\r\nf28Mf3ogMXV4DuXL8Rd0eQNLNq5s8t6SVm9TRqQm/a8SsQ5Loy3rH8btEa+Y\r\nN6nfzFPVNWbU3BXzi5gjryGT40pqz0G9mZ3TksNZb/roXUaFllRLSryTQrGS\r\n5BM03LU953piLwXZ6eVzVfaGc+hf+jQVDqFldc48LjwmpOZpkBrJu2L9owJu\r\nOBt9H3hP4B3sZZe3PtLHK+Qh+cygQ+676x/d5wo5M9Pl6qD6djYczNKUYKuE\r\nRxC+hBl4eu1e/8MjAt1ZCqH9o9lLz20FJi9ZK7k0DCLWvfHuiej7XUz3vmTi\r\n2+oRMYL+GOtN4oBcn6+IWa1xBVlBbx8X+GvNxSGE7jXRThA6MAs9qmV+a6Pz\r\nF/F3ISwbPgUYihLdrGEkLj9Q9fo0Xw3taPpJGqligHiM4yQvdvWTiHUX7SDz\r\nGrjOvwUI/P2EkM4OAkVZOCXxtDKzDVlCKdWw/nezLg6gDdMG5qtlxAxfEqem\r\nKWBeILgd6C4j1OrXPzC+393Ql3lh1ILq5WE=\r\n=FuU+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAXqHctMLLhdfcX8zmR1XLDebGE/xSzPgHwmF/018+YyAiEAnRfZQRNXYJAh0F0yoMpJQFZ6vdpQBfews+RerZgGSpE="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.0_1646342158665_0.06345165244942597"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-wXV7+o4PYEGoAAAlybIlQJIW5Ax4XGja+JTQJGfgxdwO+1n+S/yXBL2Ogp6iKvg1URpc5wD2Ow8KJr6lSenlUg==","shasum":"85e47b9968ca70e09cfd8cf9db600562b4a61b20","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.1.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIV40ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnJw//ZQQv/m4mYWjHdoynmuz4UE58dBa4bKZ5LmSuoeNT50tcCaBY\r\ny5a/jNF72fBqg/UTwd4Ju0nn+uMG1Rs+ertPfJLPp0AUgEAw8mNBpediUlUh\r\n2MvLE/DiyVrq6mKPePq2kBv6/5P/wVwH8tbCRBwRgXk2hfUMAWRytapUDout\r\n9a1xwCB4JAM/eBdcsUg+4sfJLAE+m7j7nxNX7PQsIgkxsdC/OpmG91lSJHGW\r\nFLcty7xz/dV151I5G3TWCGwNKzfKAZPu0TzZWLNenatTNazFuYphmsqSHNHk\r\ngEY9BKZTLNikSvY3S+SylUkAd1rLVPTgwFhbqbRmZ9CSdGiJBZLB0RX8HIyZ\r\nUpJQLRV/LG6ervC3KaJbj6WqR1MK0bLtLqwyGf1Z2JXSDuZO6lEz2WoD9lzl\r\nw+uG75t+aPsGyAMN25s/hk7wWKyEDaSUGfaQera4nncpS9IRO+GwPvadxK2t\r\n1MP0HjFmbNO6K7ibN3XxvDgjffQhWrdV6kOhF9C1jUB6tBYVwBzPLmONafjr\r\nHeDKfxZs/PAett98nzokdiFYipKAX8BHNQbhrMC9rQ1XSjVSUD2EN0e1CJKp\r\nsqn6gvk3SZLol1fsFW1SnZblyyz2lgXqa7HvD65y746TizVjJmWQXxgGWgfW\r\n6yJWiv89GHGtqVrVd6zB6p8bEOViBTiAsAE=\r\n=RzmA\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDiYeqTjb7fX+YYRjObsWZU6A3CeDrfEktH1MMBL3ijrQIhALPqbyGFilIlhuCqiFiTFgAg5oj0B4iZRo5bdJoBSm9V"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.1_1646353971820_0.5993830683299524"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-RHPBjm3Nux9L2E/MB8uJEyi6UIdeAJdiW8fpv3Vn6fU0f/d83tgqMcPNE4hwG+acNHRk5d7JSs+vuB74BkyjJw==","shasum":"f18fe471547e8c1e4ef7cb769c5c5e16f450cd6e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.2.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiIq8mACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorvQ//S4Y0OJEfpETDqtRGmmDxwSXy4WUBf7FPx+iklAjXhuAD+GR5\r\nCyyZjUZlOWtJlZBpTlHZ6mc+KfQK8c3mZCuZODnUX5ui66I/weDIRp+hb/6x\r\nvsXpYytpEwL3K8hF/H6QdeYTL9S/bVyWEN6d4px9OO4yfDy2u9OJ4/sE5irk\r\nuEREo72QgrukzVBQh7UiXVqV4okKU5+blT1Yh7V7PqH17n2pwS+4wUaucFJh\r\nKGu0q1Iade2ZRqKvuj2CvnuLjEQifyriMNQ6veNC40sQe8PkZmVBwWNlCsR2\r\nEWOb8fDdF4SvxhWx3u3azSuPioNa4PE+zBgJFboh48xQueJXrKthIvQHhLT5\r\nwMYbwycNOz4VEXRUYCF+eMYgKJAP8g+pwpD0EXRMjmy2xlMgP6u8cet65jg1\r\n87E0QxopVfEo9WcdY47He4+Sbq90ixenWl3cqLPbzig8LfBT/g8TWQQR6PUH\r\nKNcSkv3GmnupFWkdoV8dpUqg7iURv58udZ+0nPe6aaFRIUVo9FXwR5rIoG0M\r\nAbnXEg6/3TWnI68Jv5CwSqDpXRLmp6d9eo037Y0orD146G6Op/YyQHOWJvSx\r\nNuKWxJ9YBd4dwwZXKucyQwZqmllfeDKZB1Sp4Ur851uyDvnID+LvbYW0QVrk\r\nn6SIg2OWb1YF2lYvPKyYZUpT7WDuvvVWxTA=\r\n=cS/B\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDeFP8LARBV04qih/2At3tEC9I4XDLG95AVNt20daitngIgNUFhM4RR71Y+Psf9bjJAcYAYtG/5agzGRxkIHXgorys="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.2_1646440229850_0.5627325555134433"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-/si0GUP5d+wByb9JiGTXFBOYtIuqaExqGBawZUNXPoc8oVfVX+oqyfw7d/B/ZT6OPXtCJndIB+v9lc8/NQjbLQ==","shasum":"8b137e8bd118a94c6ee1944063ed06d7f0f7a65a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.3.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJAFXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUPQ/7BMVkDP2sdt/gCNsaz+UinHHemiK/jnEbX1ZG6AaKUf0KFZpU\r\nMwlLf1PtsDGaOK+WuYtlTlPg7x9K8YetINRnw4vgjnUfZeOTvBHIHwGpKWDg\r\njhDWajwjS8laNbkdbDsFMGxmNwBelE77Bamsxis8HHue0v0lD9/Bhre5pKIu\r\nHm1MnNlDYIftRui6GOMVl4Ka8HRXu6m/kE1Q+XPe5E4FojeWI1UzvPqC4/tY\r\ntcG8if15Kdhag50Us+cmc6yQUdQSoW6lDRr0agEwOO32ffBqCxOmArvfj8Hb\r\nWExtGG9wbez1jNeUbpKNUSQ2HfxCaWCXzhq9QuZVTxlaSO8XPMGdYpMojF2S\r\nLrQB6Wbd73/7wOvSf7PnZWfKNQoBBQWFMrhMfzqC0a6kxyXZ8OiBOUuTRMSU\r\nmhC1H8vOhj2wZHcfwBeftMDCufBJURIq3TEQOZgAKVhfn8EW0eUV8hZbw/6O\r\nOSk7O3cDS6xW3bbFPLCeUcMBS3n9Du5nRitIjdn8K18hr0LZ8lb0a/TPv/e6\r\nP1xAogvT4Kx1RMxi/SznkWbaZIWhkE/bS+XbmVLg4/lo+wDhMZOayv+6qNS7\r\nEEngl8WHR3bp7girSVqJdk0C0hSUrUCsEiME5Pt6HCRw4gb5oG9jkliQsuVj\r\nIkPaGHN+b83vtAFCNPuU7DerrMAyLB2CFeY=\r\n=qoP5\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB8XZCmj4TP+Dk/mt5q0XovdzPswk/HROuD/pZ6aGKLkAiBrtM1APErnFz8koHFPzTlpKKjLhdfF2XOI+ZWadsAO/A=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.3_1646526806789_0.8564824412277361"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-nicrF39CX9WiL3FST9GucNkqc5iB5b17Zp3gJhQnQ0W69EXnfvw6FODqt0batvDagJ8lwWg3OVWtoZbzkR/nsw==","shasum":"63b0b0ba733ca6972f2407513742677d1bd2c858","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.4.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJVH9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrmGw/+KxMM1BtKeKoYV+8Z+XfuH4eS5W5SEF3wwcCwHJ+X8liIslOH\r\nbkUKbmpX5OlBASPAb0ywNcUObmyetnGZT8q+UbNZ7QAEhLSs3HuVseJRq7mU\r\nttOLzJnr4DcujCTy81v45W21Hgc3jFmWiBtTz4xHrX0PwwBmRF/cWHMcW4Er\r\noi3p2/gnXIlaoGF9eG9gRHbTUg+eGaQQUb8BOwZqACzzaclguZ3ZQKm+o5Vi\r\nDsG5Ed3bTGMrtqa8bn8eTfHqvQGESHzZz9Uu+0hZDaE6KGgul3xNI295mrBk\r\n3kdFgHArJ+up8xAEhcik5c7n4fSxFHcQ4ShQaDhROpe+luKKfE5v3lfj6WUD\r\nOp4hxOAmAQ8/blwcIz8DXe7Uy9R8cNaeMtsyswxITphjjdrG331pPcilXGCh\r\nEFjao+GHBmEv0fauphVyZADaxs7ncgTkBWxSD3zQtH25iQDLAbQ5vOhKIFZY\r\nGo90p8bD5UhBKA1xWQZEFOcjatNqGuaRhctgCLfZ95SFH7IGBkUa22I8M9Rb\r\nbwfP/SrlQJrUt1/8SN8RuKSiFtgVjADZqx+esZG97fWGZnzrmU/vei6jYaZU\r\nEyMqw1wAR5Sp71wSxduKq6Mpt+jMYir47HYhddGFeo/05KPUcaES4/R5BrEq\r\nCSI7NRD6ARo5THFJlP1BRxRbeRPFDLIhtxI=\r\n=2cUR\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHB9AsYyNMDLPzfsdnHL736NUpQICDgdghkfgsEoQEWOAiBm6U9JVrMe3I//ek35NN9N1Jt26vmTu8UGbIDWF3niMA=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.4_1646612988791_0.9336626184759413"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-8P9uu/s3Y1AsiKGZu30403ykY/2o1hhDOzEPZtcPJrKEUK3QC8fZJvgOmmAKgBq1eOwByBPcFywKeh7sElFY+g==","shasum":"efbaf00a3b58f260c5663179dae1a64aa54b8e7a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.5.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJqQsACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJFA/9G8O4j+7eR5yEX02sVGwBLITMHNAqE5yZyRuYlQOKFrVXI0zW\r\nMOeErS08gNiLA8kNzz1RAeYfcxDQooX7A48mWfWaPIQxjpZDl3M5WS3mQJeb\r\nwbCFFIXvwJ0mxFLoviktcgGjj9L0TlN1SUnjommJsagqF5v3zuERFFH0lvGg\r\nhFlG9qMdW/x/07lnayw7UaSHzM/hcdRMlrUXhYPemsvepVVNdZWdoTYK1n9X\r\nsSRn2ONVmNQhJJteniK+9CbRkk54lG0+Rq7YIzhe6GStBipN5IGgOvH1Y9aZ\r\nTojY4yFRVFYlrDmw3Nf0G/QbkufpFzT1d4BTnskT0xWX4/kqmV9HJ3Uz74e7\r\nWn/1jAFt8idpCDiNIWSygOOlDO0afA3xPwgIFZF/38aM9ujRe5/Am/fqN31T\r\nJR9gxi5M09o+aPkujiqX6MMogxwYcO3jGshxCqBXH2NvAEmN+76Zoln6acEx\r\nAHonzXQnFPJ4JUnq7W9BrGUEy7ylhCn7jlIeUVPkRIl4MBL7xS7d4Q4MQRBr\r\nk+uXM7B/7sMyF2KQZZDpWzcDgu34OoB8dZ/8DzpRBlT3c+lnNPT6RaHfLAIo\r\nOpTGrxjj+LLjoRwLdmccg4dneFgIe0SCt0JIvug1SJO1NXbniAFfe1zbidAj\r\nbv2yMg8Vsx/YmamCQ2soJH+oKgJw2e3a8cA=\r\n=5klN\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFq2gyrWJtnEQz2ARG9KBgwLrJXXVxpsmZh0tMjewcK5AiEAoYlvJHi18zLlC8/Rk+TuMkDrWowk1+Qd25BUMQy3hQ8="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.5_1646699563940_0.14450185592278064"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.6","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-WaUOadedwzCpcz88mxLHGEac5mB9Q+YDG8PvhW2hL0ijrCNPc0yh7snoLXzLO3BYUaBMcYEBAwSyqoJKRzzOeA==","shasum":"5f4b898ae3b30bbb36114ed335cec9be36be41ac","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.6.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiJ/TFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrOlA/+IbEA4tpsCKS1Me7MFM6b8r96VYJuhagCFkwxjzwn33uZ4WvQ\r\nJpraYYZ6ToqG5q4Ro5ZjQr574FfK9e2nWHYlsyFshps8s5voZRPyZk8uPSE4\r\nxziktXgBC5ErgRhiPKBql1aZYrqQ6J8ejqX7Xk1ZZWAuRe569RaTzGh3cVK3\r\nZ+PX4r8vU4oGl/e5cA3eXNvwzUGdEUX89PSjYySY3nP5wqBnhMsin+twbrc5\r\n9rQc35adWWRjYj09VJa1c/EUimnwMejdpJEuBBc/B4dECViHyRHPnMtWhW1v\r\nmiPWIBG9rEBJBGp8FTmX3B2BU6wVxjObifmDvHByLNG8mbabHpBoj0Bk9gji\r\n1cjKdA5JLBG0vFyriZTc+ILV3+DaOchIJrCtyEbpffrII+4U4qenkp/mIPaa\r\nnEzhZyEXcKLwHm/O6/tduzW0kjq5rVYx41x6jR6cpA3oyDXi59dp/WkPFNrZ\r\n+xatmHJ5OdepYUvfUV3QMH95rb0W37cB3Y8l7eEMKtpngRNMLVlPZnJDaD9+\r\nWd1r3oODgS1O2va/2TFBdJr7F3WeFDUEhP6nlOJJtBUv4CTRIOwMiuCBycf/\r\n3uIZPy9DYDJ3zp2VNuubwY//muspo1KCDqFulm5iegskxP7v7z4CqeOJN2Wy\r\nDdC+Lcw3KDhkZo4DJHvK/poQArpZLBicWWI=\r\n=hpBH\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDL2ABSG6uPmPq2bmsY/BRrA3gkoIw0Og186MLmVh5y9wIhAI1yPXfC5PFupaDHnLHuZ26U0Ylgk0VrlKjd+7/ODREm"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.6_1646785733227_0.24985217635604462"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.9.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.9.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.9.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.9.7","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-eYpB3x7+5t1tzGwEmxzpA8ZZC1xtC/+lLajgq9Thp+PaDurLElYWp6Xy1KNOipiGiE4cjgUnERG/jjS1ktr+FA==","shasum":"5211a5235769e8c9caaafe38abfcd7bda0efd661","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.9.7.tgz","fileCount":519,"unpackedSize":3160468,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKUZ9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrxKA/9HF4fpomvF2FKQLGg3noNGqxkKZ+h3LeucknqlCi9bCrIxQVv\r\n7jSmEd1W/2wMrch8VczEsBikqHQhoNZI5Q1z8pn2HmE6bhAQrBQMHkaGATr7\r\n5Fu+fukHXOHHY0fLaQ7ujrUWBH0fgE5HsJ+u/rDohIlBAPBeDPkXvRRNEzVu\r\nzGfMDNP+0fwPD4nICal13QA4BNnC2d+SIwdXs6ZRa2bHspHpkCH/QX6C3bbQ\r\nYNIxvSotckgbKhRjPF2kTO7NjyE4Q287Q+2xPHxvW0GQAo+3Ik1qBY8p9z89\r\nPR8fOulJB2KhCFyFqFAZa2ZnJeSteYU0esuQr1KQ9MzSLB04OsVHY+N7zDtZ\r\nuHkKg3kqj6asfVhm2tKmWnkz65kK/pDdqN2G713dLuMzeFw1oDIwRBBP0yBV\r\n8ysVDoM2YjwvwaNtAi9wlIoTqoHhF2WOycCwMhECpGElORWobOGiJJcrky37\r\nFXWOr+Svv992O3ClU23pK5yA7vwfV9DHdP2lmDobBjg2jmpwFRo5DxrG5t/M\r\ne+8jXz3fF/aS8FxUBFvs61G3aIJkZlZe1WlyXkTdgN0KZqV/i4c/l2Melo2p\r\nZHEPhRfz7yaMzrHlWgXO9bRIaN0LdxdcHosLYskFwbamrHtb8ysl20XMEgBj\r\ndQCAQNpDt7Sq3XfExI55vWvrraDRIhSWMSE=\r\n=gMXK\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjV1JNmDWAcAxRg9VYIK5Dv4UPBmnMc9APUAFpIMJT6QIgSr+rHskpcVh1o8QVZ2kYUOrvEaPN5hJ/YaqCWLvOiEo="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.9.7_1646872188914_0.9367423694487464"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.10.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.54.0","jsii-diff":"^1.54.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.54.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.10.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.10.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.10.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-BOvS6PZDsBdsbU41iFJnfRSjrqVkL6THTQTvqxd6A8zlXT6jq/yyq5n6GkUTUS3HKp/YGQ8OfGf/lsKoGEGjsw==","shasum":"40247f7cdd964450186c10c9c9a8dc7ce9cba33f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.10.0.tgz","fileCount":519,"unpackedSize":3161360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKnq+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPdRAAmY2Dj/GZSp1ggUV5L/bC6qQkFGo0h+j3sDUpdN4qj64LXumx\r\nsFxn2q1Vp77Yy9dbKhjybIS/iUKzZMtDh43ychext3MGsYr98XHl5AKDCXWD\r\nhNu25rn2gcHfd/EBA9MHDZGrSAzwzMDUlSbuBZl6/0LKfApeEBNoXQBTd8r9\r\nLcSdhvi+vSVVb5p6s+EJNC83s3Q1fCnVj3XAO04ztLO1W4Palko8s93TXi6D\r\nvFPPYolOFUWxDwAIZLWKyp3WE+Yjpn+wk9UpG5AWDdl0aEpIxqvFzfnkYYOO\r\npI2bu5POfRy0TCBqW5ownEFwA7zdG3lh2PANEsG1DZ7oEy8LpjqoVxxSS934\r\nHs8tfBebadWdIClmuB4iKCvjTbgZzOUUvoBM0g50zmPsNkRGfBC7JcUK5bgb\r\nMPLl/KxJbN7riX9CDURGkdEPe7DNqDbtC4GRuFMplP8vTk0FTJHLlq7QwHOf\r\nuxOzYiZnm6WtrQZohi/cUULvnWy1JfQerUhUNmFH56hFbHKHuq2uzMtwdchF\r\n+najnBBWYgtds3GS41lI2OQva5S6de6gMKeWLdldcFYj+lLTes2Ro1fAH/0o\r\ncKDZbfTO1jX1zkS1IEMx1texDIA+tn5Pqst9vym1vkoWcfM92awnfoscDZlQ\r\n83Y5eZITva2onOA08W6LIhXGVz6R5XMyy8o=\r\n=I0RC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHYPVZ4Io+DW/J2oQzqKmm0pW79MHE4x4xonX1zApgS0AiBcZA+1R1YonAIgY4HcgpULqw3eP5EFSiFaP17jJFLrUw=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.10.0_1646951102109_0.11789715431702952"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.10.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.10.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.10.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.10.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-ZB+r/c8ANm7I/ExdSYyMmclsfn71VdYeUHxlNrF4/Tf2WC36jRYSbf7+yPV5A2w1bQsS8apuqqGmwn3CrSXD0Q==","shasum":"e0ba696647152235580ffb9db2077136238a1049","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.10.1.tgz","fileCount":519,"unpackedSize":3161360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiKph+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpn7Q//U99seQy6+hdc9HXgWEqPUHWLwHk68CNMkghdYA55THm160mB\r\nIf6U1A+rrdH8N4ZodA9I8KAqR9rIXzNjoGY1XcMpQTaF9iazhqjr9RDZ611X\r\nme68h8Gj8NPih3QQWk3CYu8fymmyTwB046Yrt+nJbwY0VUMBt+14RNU0p5vQ\r\nwk6xeyWTukLMDBzSXLMrBOQV6bgISDglVgCDJ+yCLw9eqUAh8/gWO58X8JiI\r\nbKDO4DXPkI9ENI/HJhhaT2fd3xUY5Sy75sczznj1BgGjH59r9KhlaiA9r1/y\r\n7HuNMbbLrWABFfnxHDN0t0BO+t1dY9zSxYx6nLodGle6iKw8lqdK3zxN1sK9\r\np0vtKhN3D349vkDbCyMaYZWfKjWhwgw/sgM8Eu/QwSHocFbVblGFWR3fJhd+\r\neLU1L5ddfqqbmrS2SnTbLBcFHaQg/TOmoLojhp79zdB67DzJifU7eGYxLP1U\r\npAjMANw9W5P/ZMFeZfFpTX9x6vZTmY6TCjMC5s2Vrhq7XxYjioeRv84nWjo8\r\nL+RjTFGr7ClIhNefK3c8+ee6fl/RnsiGiUPvZkz4ZeQtu6yCUTi9Ur9y2Eb3\r\neB6MrPYNZoxVF35jVF4uw7F5ZZTLMHxnpAo/pN5mhMV49VXkbR6407/cdnuF\r\nu9A8ZxuLJ8DZwdLMpoGE4HTzJ302XlOfTfg=\r\n=tB3R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFIChpROkkqOdlclxBLD+dlI7iyCgJ9OhbwWc//sc8JNAiApRRE//WLICB2OlGWG/vduUIgBGBop6PgN7+RTn46/Qw=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.10.1_1646958718575_0.17455794254536627"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.10.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.10.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.10.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.10.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-oMPABwaWkdMMoYtDmq9PghEju/2Oc3nJx7HTXph/jUujZiew8idzZaMYH8whWObs+NOs8upe/L3yQjV7ZPrNWg==","shasum":"6914ab93fe06acaa388c91c6865ece972fd0489c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.10.2.tgz","fileCount":519,"unpackedSize":3161360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiK+kiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmps8w//fNbTz4hrB1HxVtXltdLEAvbtl5y9+1fU3SL5Q0w/y7+m2E7o\r\nA7oUiSPi+FYbThFay+Lmy3kEzKVGKdF3Y25UinPvOTf6T35wk+PQ+BbZAAuD\r\nWtsS5Aew5Zg5xP700cckQmPBYz7bRD4tjRYIJa3av29eftwm+LET9aIjMIZs\r\ngQSxSsSuHR3HGxTMw5JAyAvslkKdYqp5fWheTgvyMxwf6qPq6HogpsDi9Kxj\r\n3PBgi1hVYWCreiniWrBmzvsTF8/PSHDMlZ14YLJN32AbW8YDvfbIt2jbRVOF\r\nKnGxIuv0/nr7imTrY9lmfVgl5WLZXjUt6KSJrncBreETsbtrZOH2gSzmYhE4\r\nm0zBTnRwoS18Jo0DkyiKmz+aKfGbseCK7BUkKvEqVBdWmQA82RJzjTC7xMhs\r\n1t7uL9GAtUQDiuehlaBWhsNcK/WXNMjmzgQmtorzZUdDeUMQm3edd0B8l8LO\r\nvsUm0wgRBEOwwIlLzR5GGyktdI5Ay0BN7Gk80RSz11O5DoMFlQxb9tsxW12k\r\nGw4NQP2OOnDcIRknL1fvX0HVDjg4Hy29MF0WlMLgIps3XLkdRN7mvXaCybic\r\nQuaUBZV8570aLNxQ2Ey49qgtqUGNhB1sSHD2CVEgp+d+MyDZj09o8ACSFVvO\r\nWtqEgycjdU6ifCfKifk77RzwamLfUuttdDQ=\r\n=TqTk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICTctfOdC3WTWC2vI0Pu8MBncLIMN/rqOJuodWNBSmHvAiEA92cTwaQg3PzCfAAoH9/ZmgvQfLThexUE9cXx3/N+9co="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.10.2_1647044897768_0.31916583299608225"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.10.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.10.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.10.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.10.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-5nt/EBETOmYJLNtzVzTLQcLjFSnHfmsCUYuA0zJ2ZEdlv/o8TenpLRhIXQPxq3RYDrGxPSFkswvCeC5UHMGLlg==","shasum":"8be6fb8e6fb0d6df9b9e75edc975c5683a6f4731","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.10.3.tgz","fileCount":519,"unpackedSize":3161360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiLTpdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoPog/+Li3njiNlWxayTu7rtPbXiihMs0E5JV+av7GhhS5uZJU/Oh7k\r\nJACxvbf7Jc0XYFUksUrPdudpddO5SLY1ICfGYuEY8c65iHMyrRwltOcofMO5\r\n8f1d0ID077v0/Yc0HfUWcsyMEuUMxhGwkSVhvJ9BAptf7axkZa9aJWkliYwp\r\nG6k9qGbYM1PNtaBcXFUdL/3jeVBlyOh6eAb9ZTxuyGucVmlZiQJmG5RJawaI\r\n3wrDaJdatq5MAl8pFWxdFdVSSEUbb8xjuNT2DDq2iMF8JFL43ZxgU4ggLjc4\r\nVIznDg7pWghj80Nc7gr75SEtTtmVNfxDWYFtddfOq7q17vH0tHMIeT4/XvrZ\r\ns/Jp+EFdvRZIp9LD4BJclcpjTc62ZpVsY7SnxSZIFVJWbxGRyV353R80IEcs\r\nXt2xiqYy4IuYuQgolQHVcIYDhGbZKyMK5IndldmEgwF8UIUBERX929TVdu2e\r\n5caXvJ72+SKumsN9Lz1SCo5aOl7l9O5g2t7xSmu+EwsLchyQ6xSkRXi2Xp/Z\r\njocFI7j7mCLEktK2aQ2v3T3gx55GWnTIhhtEWRVsnjV+VoCWtNnG146cFghB\r\nUO50qpIAJuzWtKKP+U2zo1LSDBPdOZJxwlEt0pFdS4QmFTCFacBgUaHssCMs\r\n2j/i+EDdaqNmKCDBI3yKIFJuqXxN2ZWdW1o=\r\n=3183\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGQV+lUaFmdFtwDaBGI1GO2T+Zb6WowbZvbeT111qzk3AiEAvmM3cU/TJ/PD6UKuKr1AbaJZdNEcCeWWXy/YtKyjAiY="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.10.3_1647131229417_0.785957274146434"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.10.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.10.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.10.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.10.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-n09qNZNvRFeX1aoHksMu6tBkM1L9E/utFjC9Mqlw1AxJyOg4mB49O1TyUuC8wLYW05C0XDO4Acr+dwzJpDh4Bg==","shasum":"6c677c44809c1502f4b4c4f9212a760c6a556213","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.10.4.tgz","fileCount":519,"unpackedSize":3161360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiLoy1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoeaw//WVOo3qYoopkpV+M4RP+GRGZ/Zs8btghzNlANSE0cdmjCUBWj\r\nVaCLJqBCg7xseY4A0+GBlAZ08g9JUPlqKozm2yeRLwjQU/Bpo7pn7CWoSpR0\r\no//jiIYnuugf0Vp40UxsGxtiEraKK5NnW2oXy+PisKHlMSYorh7P6g8v8EUf\r\nRVinnYXv5S+mZBcyU/yeWEfcrut5Nck3edxZU4NvEcCnqkI0ZlPakxEl8uDP\r\nYJ8JYakR1Vr6OQF4kyZmIwyrgbB4qzBCKh+yr01cCPc6YaZhrrrRr/JByqxn\r\nLzJU0wBtzmPYqML1pfVXPaOMiAi+EnK4O5LVZcNpluXwaeFABykWQRgWs9wM\r\nDWhflQMwXljNXdmnPbeJdFY7D0VerNoKuYQ23sS0XFDa5QZFD3dq4Vy/SbMf\r\n+sIT8MYq99sG67eXMJhGkkV8Hq/iI6muRxbw3uW2q6kMmBgDUMKBP1eUwYvv\r\n/QwDGCddPZdOYKlyXxjFrh5EGcqzMsx2P5qXtd9+HK4b4rR6RR14YUETJIhG\r\n044Qaebse9AeYcE4TeFQMs0x7qTitgFFQZdBzImCPbIQb8RuL81O8PxcJDvL\r\nJKZXCO4cqPfSncRKhGN1HRVquOANBkBNmcOTzl1lbONw1caE5UcxgU8r79K7\r\n81wwXgXG4062ToeNesav4t+EarQ/H8KByuY=\r\n=6z0J\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCY6vsUdvK6+1wt+GETAu848Tpcv2Jx8aJwnB21/bhHAQIgQKF+DjEEQJSj40XkeyFB+UuiMIozzlLjEXS9PH2D6RE="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.10.4_1647217844830_0.18734825076820072"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.10.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.10.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.10.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.10.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-4nixNNfeXwUHIUXgcQSTeOGt4xLqxw0kcpHxlVmWWVZOpiIQ8FyBJ8Y80REHv/A0WIS6WItUktUpBcrZDvdc1g==","shasum":"dd49cfd3290bbc8a2864ac09cd82cdfbb122e8b9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.10.5.tgz","fileCount":519,"unpackedSize":3161360,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiL95VACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqAmA//RoqRq4yNfCFd0kvaTzLvn437YN2fXGnQDL64E4PhcEMDaBmu\r\n5ZVzOQwGRAZ+X5w2NUx/Uk8B6MnrsYO8XOKAOgR8uoLFl8fa2cwZjVhWyAv6\r\njQwB6d8Gz8QNZr/lz0KrdoAiojrjRxRhyJMPJNn89vVJaRLy+DL89NJGNRvM\r\nzjuig1CavGURH2Hc7l8N+39NNKUhNTrfxI/6Zkog/otIO0nJGhCpZYrJ8t09\r\nuF9EBKYmjPtKrqjofBWZgmas7oJiVgosidavR2V/sGAxcbWRibRzeVylmQS0\r\n+WyxGZjtwrnvmO7f4xA+V2vi5YiVXBm7+B+DgUCU/+OcsoUIv0JGOuFndHNe\r\nDWxt8XI4UwAmRgkh8c9+dcZ5QILHalIjSoSuqa9vE1QZNkhs4WbVQejErgJG\r\n3Ya3MhWsjuEdb3fe1YZ/zk/nWPxD/45mCJazFqluf/8FxGf1/4IRSraNZpM1\r\nfCD7WJ/26zQWnsyiqOAJn4kzxAoSlBphY3vrgmwZ5m818ZfYsiHd43R0bE9G\r\nx0uYf/ca6TJCThqOjYJPD3trlrtzgTpZTbUOCjLyefd07XIct35jcIokk69T\r\nTPZR4dLf3Ys1QHAWrV5r3TUrb1C/y88DoE7KFCf6V/Ss/eHfb4lUamt8QGRQ\r\nellA11b/xbnVxV2QGL1rqmFsdhRT40poaSs=\r\n=cW5j\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICrduSHyaTEdIIwhIoP+oJcxjr2iNHVzjgYV5fcgK+LZAiBR5HOZmf7q6AVnKu3+D8uLxWMyRw3I1CUN1K6VbDvZxg=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.10.5_1647304276705_0.37954874780048264"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.11.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.11.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.11.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.11.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-/slSqs8CqxZ7HoSlQbq9T8OnhePjsMQkBXd1EONqFK1q6+Esn8R9Q+cai6IZ0DxrkkBV0Z6P8k7Vw4Lm/asA6Q==","shasum":"990c74ffae1d7a505d5d1778411a8b390cfcda77","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.11.0.tgz","fileCount":521,"unpackedSize":3171883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMQLvACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmruNRAAgySNkumpH/ZvFGJz99cKnicQG/8q3/ziyXuzc8Kj70tQQvrc\r\nnD6i6KtGNlfhRcnj+OxtTdbSrX66rfJvbLKdzYhI5IM2zT3bSS/KxWOW60N8\r\n2yt1URqAJXZyYIznYVP1tjryGSzfcjFK4KAkwxS+h8n28WlhxMOikRS/2+QP\r\n1b5SsnxROs0E8/2aZ4SgROKJ0siRGYGQUXwz5baKDpxQLetoJO7/a/23VX/X\r\nEtxkK4ZsFcHkRT7+HARjQYIU1Qv1D9Uu9nvA+gK4FuUcYpFOTvAcyWlu106I\r\n8AmDRXsPrNznoibIM+TMjRB6y/XWGKc2PMWeSrgp7wubMwkm2FypWHCrTfkq\r\naZsF9Q6jDxqPyuENXH6r90g/6JeNrC9JgfPugB03rZSFxYufY/JGooaEClJ6\r\nnQAYfczn2ShC6bNTjSZlKNwSvOjoRHYqPB5TLdzv22DjoBCuRovRrm+Bdxxf\r\nSZEZEOEV0fHrC1pXrsr7dcm3z1fNIOAsZWY+H31UBmkuCRtLoN/WSg71u8yR\r\nI7Fy0vzUKz+i0n4Tl+o8whml+ycG8zrtuoNoKR8Oo5oil560Wm3sSra9hUX/\r\nlzNqVrFPEt1cZA5YzWHUVHBAu1K/5ars3EdOwTvYDzc3pyM8xPzUSVqw4U/w\r\n1jvuSj7DyCm0FjtUJly0GPUdcBM2DuxHgqE=\r\n=NnQ3\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBECgTo9RRljoDNhHwPD4itaq+9hFASOiZZ+oZM0LPbyAiAnMRQXmJY5r3D8TekEQTK3+VC906Vs5LaoGBxOVipM6g=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.11.0_1647379182720_0.7473151948420895"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.11.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.0","jsii-diff":"^1.55.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.11.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.11.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.11.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-DCSXVzN69Nw2Qf29mAJnGfsl27PsP3x338bsHLoK2dYRSmvRCSLYsv/KxFxjobw/fZHZWllitncZk9/yJfGfrg==","shasum":"e8d3b74c3d71a5d967fda2099ec01efea752905d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.11.1.tgz","fileCount":521,"unpackedSize":3171883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMS99ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpoHw//aYs4kNs55eY46BkQ4fV/6K7852FTL5bWjHl4pvebbCRIOBOJ\r\n1JJYIzZgp7AUeqHe4rEPdnucwdMMzBkcmtaLQyC1ymzrQQDMeGOZe3qn8Rm4\r\nFihqlkuutZkQYHerXmaC7//YY4NIMmj8EgzUFoah4J7s5T3PZMbn4hBNMd4Q\r\nXfxZBFkLZQuDunFdurDAAyVBnEDhPSXW0PYBz1PFYYbvZ83bOsANQFGzgYKg\r\n0Cndl6G3pDzFLj0rzkBVUFyMI7BmSINA7RlWDbUuRRu1PEGcXIWR14gfJUOC\r\nV5LUgbBpV5oxTLrtOxM9RuD0o+DAuytg3Kv3i0N5jnBPGg6qG+P4ZiXLnrqA\r\n5kJUMzbAOAOHjyAjiOpOVTC6WG+da+AOJUk6TNYTY/oqLwsC/WzyUW0poJfm\r\n/MmlIGa7+wQGG20LyK8fNhaDH+dQrGi6pl8rbtMitQdGchjT8Jfc3EAaIU3I\r\nz2zGs3vJxIYndQwu82xHYONyFvX+yeS3OZr+OfU6bi24ARkTrigDRkMjQ22x\r\nxLcEqAgvazRTNaTXkaZFsYT7hH92XqTeyYTzLcpRIYmGiq93ZcDuAXEYj7kF\r\n3qOM6ubeGN9GspCkD51w4vbJcihJ4BOJmXhZDHHx1XOXXwDHhUgXgO0d8vm3\r\n5oxu/H2b8vEvSCKbxPk5B1n5BsDM5VfNkWk=\r\n=1OY/\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIC0mWKw84lD1xZlD7xWi3W99o77fLH9xncuqjeHqakDwAiB8CAHR56A8OjmXAHWb0d7qFFu8Tvqd08lHOj5f7Q/bYg=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.11.1_1647390588906_0.5485497948020677"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.11.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.11.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.11.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.11.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-kgQukvdCKH6D4sDo7n3vrmFIOwYrSoFpchv0D9sPZi03TWe6mlSfPDyL7zjasdNQIonrJj6jANQD/b8V1SUiSQ==","shasum":"fc52894a74ed1cd4b499ad937fc6e582fee8ef83","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.11.2.tgz","fileCount":521,"unpackedSize":3171883,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiMoEzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo9AQ//RHY7S4vyS8iuluSVtUDkFjuSTLvFJcnTQuM8j5z3Tkvblb9x\r\nDOZUr4tj1Xssa4Dui4DZo/6GTuWArxRV92roUTBtP5pmyfjbGK8qkgHJPiDx\r\nsudFZ7GftcBTZvDgnwO2k1izkMqCTMknAH9ZEnbDv2mhRG5ITUuLr/HYTcbV\r\nG1n+mgf1Qkcx+5AMTXhEXex8YhyR+kbuffVS9salUFVajZfvoAXyQVX6lGR/\r\nJzBkcYereCCRjDHxG+LrA+EsYmMZCVFv6xYrzZCi/T51XGI62XhJ9TDpogUi\r\nSF83V77yeDWLBiY1csJD1SQOdSzgKVlJYw2xnSKMmElacWqv5TyWFuffT88m\r\nFQl0awI5wvwiJ6FGTG5bVwG/uRrgKohSGYZy2IFYXXjNPPnMvPxnL5Ey6fDV\r\nGUt1RugnrZzuCTFpsLMVyaiSzxvUeTZYSF43L955y1ViM3an4HtmV1/fZgQ1\r\nNgi68j6GK6AEt/aT6FGGyowv9F5hz2+4kVZrg/crSVIYZiymZAExLnKURj67\r\nDMhdagJHif1qtxcjriHcpXCXjyObAA7UalGB0XUuNS4CM9uBPzJwsayn/DiG\r\ntj47Pr8i/VRABgtpiWPNaN+HC4DIMPICW0Vg/atXb+F6fXxlktBFImZUHDNS\r\ndHaa+/324FujWg7oIt2bgJA4zvCLheXcLak=\r\n=sOc2\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGw11bno+HJ5Q3fVVZ7Gw5pjVjVx83LNC+HVhzJt/D1mAiEAklULuDp8NWHlclFGM92EQOuC9KwEwatx3xTAQXtqEF0="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.11.2_1647477043760_0.34476474506361243"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.11.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.11.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.11.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.11.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-2d68mc/ezZlqco5q33ANoAYODPlL1tqb6DMKP4XLYCBX8Z2ipnv+5Gwef9qFjzUw5goUW8zpHjYuTGCr8+Jvhg==","shasum":"dac4b2747f3f88962bbba1b2d5ec677a076ec375","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.11.3.tgz","fileCount":521,"unpackedSize":3175214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiM31OACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqGnA//VchstUHYniSmRYpV3ksqSFr46hWBqKiyWIPf9M4yOoU+N0xV\r\nKgadfFAjyZO1pfc+RA8jSaHXpCcFW9CmfXYZVeDZ/BmOGHbj1F5/dp3NH6By\r\nxImACx9Em3DXd4leVpjSFRxRCbXdSYQFZ+3TQvvfxXvpF0NZE0STyP7g+Gxm\r\n4I7B4mttBXdK0ECtXnWVu2l+Qdw6q08SY6itnw9iCMZJ1mXrMnhMiPmMcLAu\r\n+sedQvuv5cFytKYogGsUnMQGKVzB3Vzo9KW++rcBkTwCHXFQhjFkv6vgSXvv\r\nPtTVgKtif9SyYxIR5898k9yE2H+8Xgzg9Jn/AFrfiyXvaHvR16G0OuI0KlSl\r\nDjfhl8b06kIMpwdmzSVMIi1KDXdgQ8c6Qb8vY8xIw2gbWQEDpCJMv137PVvA\r\nkF+lEi1hhBOJlnUtmCi2SQ1/+EgEt56uUpTf7dc6hhd26knWILUgoEmDinYM\r\nlpBBTKDgGrmxiV3F2C0I8aVeQy5QhZc2U+C6dML6CEpmTCgtbxGPv1Rlpw5O\r\n2hwhCC4GJ8AQh6p9s3nrWBMbUcYTItGgiDleSX9k/vz+CcZXTAoe/BCqquyE\r\nCW+YlSRoqbqREAS1wxZ7bmUWDx1fiDkbbuOW5Nz6tNB58W0U6/K8MbJkvIuk\r\n8n1JnhhrI3n6xPEVNOo2P7Jsfz8kAzmjW0c=\r\n=GNDY\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDR+dTXdvpsmyFKp2nTxmyLCiUGQMssOQyKT8oVpZ/BuAIhAJC/0uvFYsIrh97FzJZih0FaNXfFUGTfDPDq7MiOG7yT"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.11.3_1647541582383_0.616953306549622"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.11.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.11.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.11.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.11.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-jcLe/9gOjo8USPT+xdPEoELNBt9nkjME9Vc14DstMoPbdfy+tzwpdkYY2duAFh/hb9ZVuTA7x66khlvG6x8ulg==","shasum":"65ebbdfd350e1a7459ed2da27163de4705fd607d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.11.4.tgz","fileCount":521,"unpackedSize":3175214,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiM9IgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqmxA/+LCCdtpcBUULkTdGS9GUx85xWXC2++ewvV2yt5kkNZxlZnPux\r\ngqXNQ116DvXa6rzbSXnU1ekO7uThlmOrLcX/dJfO/24cGV3bXhZMTQ5x0+rt\r\nHrUH+CIEDvP3/9o3zSUb65DtZ6WyaQpWYVism+eG885Zlcimmes2/AJoNyEc\r\nFYbfwr2c1gdxg8O1xLdSwpsr8vB/r8gu8EoXMdTQHU1yqMIvgQWI1FypMx+k\r\nempY+JGN3f05DkNZTqRujwm0oT+7x/ivi4SRGkAf9PGw7CzC9xtcV2v/W4H5\r\nlH8QmBsg6uBAZk91QeJLyyOtBghI32pMFkxLu3XWjqUc23jEUugOYpN2ek4Z\r\ng8asBf0hIkPJZkNNxTk7srHrEruUSCaR1C5XwYHC0nd2OnLnXkqWd40V8peT\r\navRohvwjI2dcVDj2QE031H47neY1xOmHj6nmZUJyThb6lhUzWOzb7Hi04bGG\r\nRu/mdCFsd+e56EkXeOhN7vSxdMuFkmC1P+nHrmdHx7EvlIgpFTxrXIgJCP0n\r\nHPKiq7M/s6giRqIar5/gtjx2+4a9RdwRaKdfP4FkYRtNMIBRedVSyhsK5taV\r\nKC7MMShxML+5t12sV9BoHYJdK89low4Ze4xHM0RHYVm0b1weKR7U0NFUNfAB\r\nyBpBiSBwtVxbK5zUJe/wuWcx3+smSdn1Uv4=\r\n=a939\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC6fmyAWhYwyO2aohyU31o911ODpLjZI4KZveZVFBlDBAIgdgJZzIUt7YHCFfPmTPCyf10Dky+OY9Ronm0IgIFlh7E="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.11.4_1647563296154_0.5401925189063264"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.5.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.0","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-zdk3uRuKbTayTCSZD+sES5RUppGKSNCFFwMKq9iFdMBCMzKJqNmOQKGWkYGVUiwXTeETexzTB8vOA3FmQ8kyWw==","shasum":"c7749e7a379ad921670cd811862e377f20bee936","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.0.tgz","fileCount":521,"unpackedSize":3177806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPMCeACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq3UxAAgK2InCLtaIsfjSv6f4yAgufY80EwgEk+LWc5Jjg138lr4gH5\r\nefLq1bAbifiLaoB51eLKfVE5kdE5jzZ48MO5b5ZrVzk0hj8p/28BG6j7J6B8\r\nZ3GVgzMqMkqLeeDrE+5ZjRi2D/mSLKokyFTOvrXyYyoDKUpFW0AedxcSFjCu\r\nbFzucOcCNRjxv1ci9lWoQDHdyJ1NANxXI5H2qxfVQQvXKhinisDNI8PQbXUE\r\n1suL/2XYC6IOFl0irdcB1B1E4hj4+Em+P9VkVuKQhtUIkbE4+g+jNcWVlwlt\r\nGXyaEK9+ewxO+ZPY9SBn7WuzRgEDEwP4Z27k+ycIHy+q0QsCAnjzmrSg3bBt\r\n5I0dJ9JKyedeGye5fwSOhavaJYNuFmeCYK7DYzU83DZtactIeDZRZOgyd7m2\r\nrsmyy4yPcQdEHF8vTEu1C5+Cx+WbPeu+Oei8f48Oxmq6DMjhMmvN9N/tQYG5\r\nIb1+k0GHcDfuRCUHrJZ765Uq9LcOpeiJbOWUl9wjZ2ubE0ZWNvdsjnkuFXzW\r\nzvj/YSQa6+8wWyQDhNVcM2suBR32hTFsT8ayvFBXawqIx/8TfeH8CSGZgQfp\r\nE23ldPuxpHTRPxwTq1bRp0lyh19htLUdCSO4ItcX/3YZrY6xyLYUz9aHh5nZ\r\nzyJvYaI8Vlsrl5YHERdgEES30i/s9MPTW18=\r\n=TMoC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDGQt3uyeMGtqaU62BaFqTfO6TyUdMJdD9y0uzWcXiDwQIhAK7H5NFxbpBpJpvTzcWUguUgF+d01ZubSL3icnLDxWgW"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.0_1648148637825_0.735448164872867"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.3","typescript":"^4.6.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.1","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-or6X8ilsaTmerUtdLxYdpQMq7jCAOmoCEvl5Cin/nA2INB8tjenPOxi4toPCslsKQQC8CYhnPR5yx26SL/ZziA==","shasum":"d08e5b889db192e3cf7a6bc1a9629fd050b96c3b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.1.tgz","fileCount":521,"unpackedSize":3177806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPMLHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrtVw/+NNnp4lV1zMhqDtfZdEGwq3E8bl4uAWuKePtM++Koj0I4seeI\r\njfzompPDQa59T3kBP4kEO/LG6Y+9WH9taSAPt2OnaMBT1BO5s8iJGiGGiZ3A\r\nVEDUrbgLFjFDh0+f8vK5NKnnkjuHzMCGuSnUtugprlC4LBVL/3hDrtFfpz74\r\nxANwvvADveXxJEu2ui7UjASyUEX1bfwO5u6zoFINhUhtDyLhZ/wgssbTIjcr\r\nysXGnMVokGoJQQ+SfeNql/fJPSV9oXpIx2BlW0jaTzKiLTWSGi8ISwKwXuWA\r\nmbig2YSZ1rZRCfRxy9BOjKOhCYMKDBzD9NTDA1VRBsfiR9UUWp0TWTdwlcXC\r\n+7s71tnY55PvPFlGdHLIIzxB51APBYzXtGgRlFCXcrGdVZ90a94qU92wWhkX\r\nlnRVR6TeoqWJvziptg3a/dOuBW/IlQvY0l3L5OwaOOC5dMH9eztZQxOPYzrs\r\n9+fyyCGTmyI3J5TLea3P+c53BN7WG5nUx0+xtEUDwVhTZGqcCNR77nW6+bKY\r\ndWeZgYqfHaARnUnciU+LdinDHbMCvXc5qXaoVX6Tcecbmcmiyz6VzQRVHzOh\r\nuG1y3Y6fmXvFpOFHzAKoW+4TVsMoZfc3BJ/9aiznd03yUBG9deQMoL2OJZBr\r\nWzN85jNQJpAD7bdFIEhXGKUmPBxMQcmzoFs=\r\n=DCJn\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCRsXCzmu7cfGnx6nqvTjT6PHYbVSjCCCGZ8gijm2/WxgIhAOQgcf9V6FfF+IAcmASR2N6chWT7qhAK8WitsrNKjEzC"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.1_1648149191141_0.4910072399747216"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.2","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-/IzigMrzZRbgRSu/cCFDQZCfYWmGd2fA8cixyFKPI0QCEXWnuWe8UE6J/fwKa8/4Wy9sqrvDmeqkCt2EhBbxXg==","shasum":"00581e184a1f08bfb0355c32623cf680183cfe1f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.2.tgz","fileCount":521,"unpackedSize":3177806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPQy9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrP9w//eoD90FcM2mferDLMp6ECF5fgPqZceSas5GgwTe1WieVfdht3\r\nPIKr2NFKI1yTeTMPHGS0B3VpnKPcXMTyA7Rij5zK1myogzjptO8tqvXWvUW+\r\nWm8WDMrF4y4qZ6gVcMZFQMMBCL4MkmYI8AUoE0NlgC4RT7ANJEn6h2IoykOj\r\neCJ6EWkucicgm5GK6t2SmlzNVXB1sBKrXfGHOBIP9ZHumGCsI77ETBWFMGmF\r\ndyLV/vgkLMhAVPPkXrh8keyzY7MDzJf4RnS7Pu8KgBs7LKyhwO1qlbvcFr3j\r\njwVYiWL5jiTnQ0V9elT06XOS3SbSr6op7T7Jmn/ygtt1MzcYsonJDHJQMg9X\r\nOBqsxtm7R7Y849eWAaL10KzQWAHm1U1h8TTDA9uzgGzVZdGua1zOaJjNMXvX\r\nskl68Bekj+gjOcGj+EnTwtC1gNQunmYapBvP7C5WCLcFyWnJ/w7mnrVcted4\r\n6CcURe3yhM/ZcfFwiG2tpKxS5W00hd5usc9L1+voNWgzciPBg/8dWFHFEXga\r\nf1HhXNd1npu5CTYh4d/L8dnD4UPateJEP7smvjn6kABUU/dCnS0eYRChBMDR\r\nwleYGZR8ZBGlw91tvWvWJwFtYr5KS2a111afH15qEKT27vmAbgbOPrPWPeHE\r\nSPEaawc4cn68mK0ujZvJvzZy5VCmP0gnYFw=\r\n=MJvV\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDKxH0sjlOvIHJMpriGcUpNck/9+/PF5rzEs2gr/J5HZAIgFRzyff48JK6SCM/ZccSd/RTjm3SdDMq/C7AnqSweg3Y="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.2_1648168125432_0.4110710174660148"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.3","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-A1OW+RCzzCjtySCPooyN13CgZxPP/v6Fx0L++JdztTaSP6fuxe4Z05GwrPk0gVzqdhYH4sM8s4SSEEqk2dyA3Q==","shasum":"14b0fc0f4e8bcb78baf692c5aacb6c0e869d6dc3","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.3.tgz","fileCount":521,"unpackedSize":3177806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiPl4kACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrSKA//c4FarHYlYwNoVPkprV/wAHA/A+P+YcnNFbnqMxTaxksM017+\r\ntLcD18QCxqP0+U9JrOn33Khjl9BLi3/1cAd0UctRms8n7ZPxQvxZU8SpCKqh\r\nFHiNSmKFfs4xuDcPV/uCvqjOTGMJWYsjv3HucLTSHgoJ/HLWZe8AoQIrWmmS\r\n9FIV1kPlVWTnS5q5GWb7tn0jTI4l4Dk7e5R4Qd42oWeJogCfgqx3CAnopNlQ\r\nKOhLzxF8MHgh7hkXQpYGvqnTlN+B5XqKitaiKaOjw+CcmsV8I50Ea/6JcUC3\r\nK4M8FXsBQ9Re1/J2PctO6F+yThCbhGLgWN6g2J6HRk8tmJ5nqhk39OeUXW47\r\nTlfAWykj/ZfPJO4OFcqfL2thu0Ay5MheKvyznGg1X9KKUJJr2YSH4eFNYH8T\r\nCPV8hFyaQ2Yobqoxvg+Xcb5I6cfmDGfvZior0afiydLh4bvLLU/KoUZGgFS6\r\nHH7J7x3vqY9TQMb31H2WLjPCHvtGq/CBkelSvoT64+oEUWvk0lpEDcFs3PTn\r\ntZ4f3ipQrGy3K+ChztlfdfOjmod4V/Lmt2113Nd2s/lU2fSP2EDQDlSs2pKs\r\nXX5fpXZ/Yu4x2Vdg+GccO6kAKMQRQ4B5/wKE5tFXkcD/d5Ih0uJJI/V//HKM\r\nGh8fLY9HMKojbB/kgMGZ/hCMdHWvBJ53rnA=\r\n=VSJk\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFyU6GY2fx4ISF7WO9E1VPMY6fPx9Sm/RCOPjpp8anOCAiAow83c0rYmzGCGPEWOp6PID7h1N7c0slqGSdZ86VVq0g=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.3_1648254500426_0.601512636336025"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.4","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-6CbaA3WQqPJ9/dSYAcR9NuJXsWVzhfQpOezkK8u4fPdc5uDgCzbKPH9JZhFlgrdwkACKRpRxtp5c0H6Q7Ufh7Q==","shasum":"4aeafab9adc37d0bbe2bdd62be9d0259b3614888","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.4.tgz","fileCount":521,"unpackedSize":3178200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiP7DGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpaYw/8CEejW2saHtKTFbi1HwhkUhUCtHHMvPMGeovV9rdQ404aGbgg\r\n8r9/iA6KHSHIlpN9jUOo5/l/06P12zjEB7jZ2MDZMSxg570Ss/EUvTLkmwpG\r\nULztItSDRDvI/IuksQfiApzy8haH3Q1oLiXoN+jBrmmv4sP5aTopciOK8xNI\r\npvebXvSaAek3PeMH74Djnv6YkxFvoduR3gm2HIarqUu3WKNiqLWE49ehYyf9\r\n9FOonTADVsK6Lo9CmzEbjUJYOAzFMl9lskOnPMkycK4ySt5jLyAORN3K08Ce\r\n3CBpBEYM2ImsmNZazIs7cdds+7/5VQGC5iWb3GuV0DmY9VHV25201T9oeicR\r\n4ub4TT/6sJkNJdvWVZplS2LGrFoiyF6jS2T3S2B9cCmYzHcGOmp3++rB6wGN\r\n3/TViZ9Rs4dwP17GrJYWHo0wY8YeXd0qnF0h0I1phQWSBmD+iPRwqreqWbET\r\n60k3mWR6W7pnanSdLe4pCI2N1W7aHXM4ymjuq6TYCriMRPBhIRz9ebW3wVmo\r\n//u6S4ku9VRj/rMPK+H1kFZpZ7cEDSHZRLKAH9nOAyqHYjc6iDGZ27Vu4BTy\r\ngxCh8k7LeATrDJnXrqmRhZwf/9zR5IH8SZQnV5vpICbF08ybZE9nHY0tVgek\r\nXhlj4t3C9YOAM7fy4GkZhSqjsS4HYrcNf4k=\r\n=Kq+y\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAm3u81a7OGpX651qXctesG3vO9lI+lLfpJwEJerjma/AiEAyosqcp/bit6fsFNVEFclZBBR1x8FwWRJQWLKYnCEvVc="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.4_1648341190293_0.36413914153075266"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.5","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-9FjRV2vPhqTFFY1Ort7VEGmAfiPFbzqUdeZ6XZtL6tQ1S32J7j/7Vz8i1gpRJLp1nkweJlf61m1Pb2BmqPty1Q==","shasum":"14cdf67759153cdb8cfc2e02e9d7442c8ec5540c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.5.tgz","fileCount":521,"unpackedSize":3178200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQQD9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq6yw//a8din74y4go8bxRJu82UTwxdn39PC8lIj9+3XCQNvKpKrSQd\r\nyrM4uqgdUPcpus3CXP/O8CuIQ0FeikLrI9TWrlZkhUHmheqy6SyCa0nJ86LK\r\nSmSFUWjHmlEerh5/tl8Zo7/KU2px86+NSrsHBowmMAbsn6fQ1rn1EwXZDCbQ\r\nwMY2iELziOSKZL68W0GPZtuciy9CL04iZc6b7LFDPC65GmzuVvXKRgzoaYik\r\n378fUesSm0U4ar8mPqhDGpaoDQ0FZ4hIHh8PZ2adu8Zd+WO+bb1ManA7XLV4\r\nAFs/wY5BXLAUlPRSBC0AUGl1zc7PE/MDVd0SYdMyl+TbuHg1X2usTkduXGzc\r\n+MExDcL2f4Tvticfbj2rq5wmn5oNeK9N6zVho3eQ5jK8Lpi+nagVQAlQ5Yo9\r\nnWlmymTbtY91XCKhjyuUxv844KrgqoG3PKFXuXBU0G8PGYUTkjLtOD9HQwxI\r\nyKqz7U2xOItcs3MKWGLHwabqTApBAPuXGjPX4lyXDJxvKuOmpG6QlUn3iBIe\r\nlzWasR+Riz/me6UKGMAaW7GeJ9pKIT5t6afwfcr7LB9/VUpiRzpbgVyKR1i8\r\nSewzDXzjLqfWY3MYCfmqiQPBTHuh5lWm59fUdpEeDPdieX6L1Mfta7PtSUeF\r\ni5n/YyFfMubqca+gzH/iZBkFcYy630UIA2U=\r\n=Qb6g\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGDqACrsjzJ60nwY+rOTUiv82ZWL7qQrmExFbHRxmBMZAiB37daYznwJ10I2Vp45yM625hXXYWVX5SM3QbUEW71DmQ=="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.5_1648427261494_0.6843906245428251"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.6","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-9YnNra5KjL+QOY3+6erWHoBLsG79zWKlS+E5iSf+kUbg/5J4n/EA5t/ztKM4bfQuo6MZEg2klTB3qgpkJKEfDg==","shasum":"0cba28f7f11411b2a181d5dfaa577c5b81a7d59e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.6.tgz","fileCount":521,"unpackedSize":3178200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQlNLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXWQ//RE5BM34N15X5oYfprQ01vdXuR1wIZ22MySIG+oNUmEWy7QYL\r\ndsDBpOgIOwPW8PtRLKB4N/6iPhMtz8kshAzA4B9k+O8Z8+x/cfxdlQBx3YyG\r\nNme6Kd3iQEMNON6i+s8+n8UoLi67fhF+x74DPDeI8If/evs60Bc1tWJpvpiu\r\n7VBQEalAAJIDTfOyJ9xiKeVJtaRj3xkVF3VxlmAAz0EJjtH7ieC8/CkbtfRM\r\nQMK0YP7PgRxbbXDQaGdl9JkMGMljE/lLmLkLmoQubUT/B8StqqFDfdzOP75R\r\n4QeLti0O0R/yxQCpIXzQMVUzPzJqPWXAhGL+bVnOeONaBfLYukboSgGzOM3/\r\nb3sJFnv4Ae1S1giZEyBw3Lc2YE+qM4oD5lGv4WW6RYK5oURDusq3NQLAK0dW\r\nrApkc+1/WaSsk9nlG/4Hw3bydmfLgf0oXuFlBX5GphbVZKo02Vt2Vww3Utc4\r\neC1y3eVtUHoxSeQtvgp5ZjbiwUAVMEhgrgPPa8TMcrVSrDrKHA5f98TZdnuu\r\n3swL8eW6T0+tpoO9/0wFNb5FQ8Aqv1vy4KoRrx5SIo15j7pQ2/3hLzgfNE/9\r\nB3A6mObl58vqnkBDHfy53uOvZfNJ20z/YcYcXru0Tub2VOjYNqEtYZZhNaWH\r\nNoGglW7SaxU4TTPRkY4p0/tuiRwFZOdu/w4=\r\n=Vocq\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcsLqo4XseCw+t6Vqw7TKDJGOXd43LZiz8Tt8JB88EMgIgaCE4IY4Ti21qX3wZyGh++tyj0CmZHvQABkylxzNFn9k="}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.6_1648513867496_0.6416985895027758"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.7","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-mDutHvH8YOq4YrDVGUL3X/bVndoEuerj5JpMcolxylfibBSwRUFqtyGRNJu20zsPfZPOpi2T39nGUSb/95yMjQ==","shasum":"d0363530fadeb0f10ca92a8b61298254000c519d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.7.tgz","fileCount":521,"unpackedSize":3178200,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiQ6SAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpAUA/9Gwq2u1/kz/Jbr7EKOGerwj/JKf+u7HzYO0QyL6E/A9IbYAgi\r\n5OoSMUk358XKTyp9Ugx9enzn+4AA0qtSaM9uxrVjmAYBRbTaGc5go5JNItoB\r\n956v7G7cCn6RyI+rUeAv9z+U3Td8ab4fxVqz2ZjWYuJi1mBI82GOnlggNmzB\r\np5dCW6ibd2k35WOHOlPVTmNMwfW68xG7DR2ktu586VT60R3gYcoNlvL1pZ0k\r\nOWC7cbam33UhO0SijfEVSaBub7QWUTbqFHb/6kOAGqn0r28ZZq+bROgf2wXY\r\nBxLPUix64bLh2lsFrKJgexCEJMy1z2ooBGJ8VTF1xOne5Iqtt5FuISiJvKqe\r\nMRjsZE0o2HbeyP4C3z2H8LuaTBiu2cMlu0vmuyo4EvvingORABOrtq0VhFwT\r\nBbWEVmupkLGe+bnTRiXtkiaaU+XqXA/Ct/x7Q6AzgrQPd0bx5TAMi6x5Rp/M\r\nOElmv3WdIf7W/Lk/gMHYf5DvH5QoDDV8dUiTk4c994t/XyXX+CMWvufRVpn+\r\nJyCuKyzVRotwhPBUC1FZKiLBMWKbteBGnRE0UtXftnNYsVQ2AnB0CZ2rvZZ5\r\n84hvZtGpW/ivYz/vnC2dkHQ403KAVMbI2xuaKYCRmM0cKw9mWuTBd4DXY8kV\r\nX5MqOAXw96AWaEbzkxWmOQKfwDTNIioLRFo=\r\n=to+R\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCPc/N6iMPVi/ufvcxn5CT6/74zafdLxekjmIc0sctdNQIhAPh8ULE3i3qzq1uQ9oxMRMgSmcCg+Bn4RsXCng2gQ5KY"}]},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.7_1648600192394_0.314215426251373"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.8.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.8","_nodeVersion":"14.19.0","_npmVersion":"6.14.16","dist":{"integrity":"sha512-rQw60SGkcLiOXjbIFgjoTslCS8Dzpb9oEN5unNx9KTXqybiyN1Eer6lRfL24/ZBvf2mcsCkV0WBFJ088OHOf0Q==","shasum":"0517f2c9ba30f1a55b28919c9ca1ba7625682b90","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.8.tgz","fileCount":521,"unpackedSize":3178200,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCos62PBCnMv5jtIhCZOX3VlbtwPvikVbA4vAf+1Og0ggIhAIjvS3ggdCBxxkX5FB4h1wOM3iymaQ2nM62UXg8+Tybf"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRSC5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo5GhAAn7V30Ih7Zz+sjUModJOiH9sim6REJqp5gDYtOhl7Y3zU9X5J\r\nNuUw4YQd+Zw225LD8AlrB6xBFJ2JdJ0xV44eCIRSfyNUcG7gp9M+34KQ+JFa\r\nixgnIAu3BY4QMFZanlj6P7cssNtsSZEzbq/OyVCn/eHc4Ia4SGAaU9S09Oa3\r\nAp0ZcgBhVC/8ZwJJOopkJ3w53c2zgmQ1iquPdTrutOlzt/sxVPo3Z3pDPlPJ\r\nlKRxW0Upzsc+RRXbLzkBXCc8LFOLtDe8euELWLf4T+9QeqJ+gFpVn/1cFDpp\r\nlmcO2XNzgXkB8xeVN8ss98fWaCIbmW9jQN2Ma0cmq3bpFFtSG6b/Mken9/Ek\r\nKMxhkTPBjX/3gCQbuuzuNG4tTbTwJsHW/rJZeyA+XwkZmWlPfRuPTTDxPY1a\r\n8k17jb1zrRmEvOyDTpholM7rOzXpcze/XQB8+2ZyWv764XD/z5g2DCP73NV0\r\nusuLvOKsy7ooGLV+dAtYT2KTQ1PLKgWwE4TsEwJrqmpcv8vOIcyqG1oGkJRM\r\nJHzzHCzi6Tryxh6YGFmewY3E8mg9JTVQnYm5MBpPd4H4wx8rKTP82MlPB0K9\r\nVBFMWVANszY8JFGWjBulajn8XdidPeyTqf3gwlzCJqj8GtwagWhxI0hbTZ+w\r\nGsdypoq9y955EAV3iL1R9sXN0hCb6z2ykMA=\r\n=V+k8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.8_1648697529555_0.2031769404001047"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.9":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.9","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.9.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.9","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Km/LD1u5cWG7gJg5IYLeEjOfrwtOb0BYZmDghsOCBPAi2D+W6ngvu0LgyFZG2enwPpsGRVnLlTT7kOVLhtBGPQ==","shasum":"af883027416e247581fbb8490054dcd67c57268e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.9.tgz","fileCount":521,"unpackedSize":3178332,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFgoHEjFvHf9RGMll1Dh2uZ5hFK+ZWMjq01yMfPOR1zzAiEAp3ZywRD9H11n6U6iF3xMp0rqg7/ovqzwtLDuqhZUpQ0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRdV3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqdeA//U5pDC/afUMagGJdUEW7gdB553ouecCDaL3GLJcYxIj5S8k9D\r\nwmTFUgM1gK+cn9aS7zU3a80l9iU1vXJeoUtl30OSRVLadf2iCjmpRueOzVDA\r\n+rF+K8paQF/WC/61yHFfsIHiV/vw16zECz4k/c3PyDKMf8Jq/bfw3MJ1yUOJ\r\nF8ynzvYMeYZu6SUy6E4ZTIsnl/2vBiGWsRV56+9gbpoPzJy8b8GSZA2Ynquj\r\ncdieeurf7iyxOSUHbQsiUavW2biyref82VC8d2Xk1SGF9GBk5kDQd9GyRNNt\r\na19AGqQCPszqbV7R7i13Ro1YuWqr3PvcIsAVDQgEIVlZuV9CKjWwxSEY29V/\r\nbmxxQ81WDLaAPZfFh3xlnZG+e0F2fUmaga5dxBDetdS5YmyUkvu4jwwjyhWj\r\nF6hKA58oWf376NqhybaOOAjmUybZqTBQh8BCGg+uU7CJxI8hX26SHJ1lOfw+\r\nbTpKW9ygsblHadJGnixudgxtOxej+VcUdysmL3pfo6NP7oaBM8EqiprL+Lm9\r\nLeSZpjY7Gpz25a4VSJ9UT95IFZyfNpop6voro/pc/ej0cYrnvxZBMGK75y09\r\nr45CQE3NRc4IunfxchM5T8M4LcPuNMLLBje89OaT/n576viLSh1GBhGwz+iQ\r\nEMWe4PVpMScVHlxem94O73qMXGVbJY1RfnE=\r\n=iLaz\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.9_1648743799151_0.5537629083121862"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.10":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.10","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.10.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.10","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Eiyojy73FIvoxfHe6XkR1DNGqABvWUvPmBUvHsKyb2SmrUHJ+T3aoY0dxMZcmZusI1ZK4rcfS/+Q4wVjK6jw8w==","shasum":"35cf5f5ec1e58f23b22a281cdacd56855c6d4c49","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.10.tgz","fileCount":521,"unpackedSize":3178342,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAZDRvbPV/jvL4FJenH9TGn8h/wnts/5V+L5DfafdwC3AiEA5rFGvbe44Dtu7+rxitTtwPVIwtFcgIPCLa2XVPvEfKQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiRkf2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzBw//WbL1IETyq+7KS0+YUyqRzNOL3TGha6L6if49qERyswS2JjxT\r\ndRREvPiicZ3Nyqa6JO+uhptbCdHaWdS7nj/wHPJ1x1lpLQ1snvWEEIDkxt7G\r\nxQwZSbIpHjEJyi69egaC1u+VFyzH7RhQmipeDKwFZYnodScyRvMby0qVgrA+\r\nbJ22xoLLnNZq2qZSKP6suWbwA5cZTwVRWaCv7ciiV7GDFbU+3NJs5U766gzX\r\nnty2zbhO7f9pNixCoOBEtNvJmK0WM0b65YFahj3tpLHGQYTO4hh3VTPI6erL\r\nppQ1i8xr5axvwNCCpUbjP2NdlL48b/I7mcNjKEliYfzJg99nckqy4t/AThaK\r\nuIJNQzWW71t7/yfszEPoxPApD7vbXjqnQbiU5zqVWJheiwrKqpVTsgA2qpK9\r\nay7/6ajktxqWI4DnVSuE+Ky0sWh2guG7ZeUv3gxD/hnBP/8iCkaw3mE1bwir\r\nKHp84pwB4V+ZehaEBPFCN/qqr9xbFkwXfdjXLaRAAgQWeX0z9fF+hkD3lS9h\r\npDVuITxPUSwsfoBcxhZmnnLql6XrBi6lUDNTqDtD7m5D9/5Fh/R3F8yVeoVv\r\neOkOWUynnHUiDANEN8xjjJEfQ6LfpniAfqCNid361NOMuEQzR6zPVIIbEqP1\r\nahHgxsyVMGMeAfhtLaraK//JoCiPMF1A8cE=\r\n=Xklt\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.10_1648773109927_0.08142319308717072"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.11":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.11","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.11.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.11","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-sXLUJsUr57Ija7NGphH+eTiXmlZw6BfMJk/Y765B1tQhy3W+a9yzuM1jaszZDsITteTEE3IM9e/4fQpMeCvI5Q==","shasum":"2fb36ef23b998d2db9021a014ef1cb5503349031","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.11.tgz","fileCount":521,"unpackedSize":3178342,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDy6OlPdNf40j1bM5js6PbxkQQkl+ZtlNPkSEE1CPs3fQIgPfIYSKj2tYz/3q2DsNjq7UBgLM7CBu9ru0CNCBw9Y00="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiR5l3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5Ng//ZIAbYNozleRN/nHwBo97d6V6FLdWCqNf6yX5w2lwi8jzBKEz\r\nyFWZ2RrYJ0ulb6kLSPZ8wGWe2VCc6SoOUXE7X9ZFqLWnkkuNbgmuejC5Jduq\r\nf8cHQKu99G0vo+LWYbpGhhK78nGyUachL9rQZJPLEFkQKYuEHW5YDj+k/sB4\r\nLifP2PKyB8t327elrP+VH807qFiCBHJCis2TkTv4z+jcNzE0Si6OJCNZ7mfV\r\nV6Pxx9SMx0bT+hqL4/LqUZm0B68Y9mBC9EPdcM7/mBVkcJaHsGB9B+krZZLF\r\n/q0sIjU5S/mllbqX5XnaB89mcmpBwMBaiEsyw/Sj0TmQnNfUx5C2Y3s0Na0r\r\nXgMc/1LHhYQnS5b/BxwsYGgZ65AmxtKcZF7ZbrUg8d7PnESBXd/ETpryMws5\r\nw0Bd9BAd7IEXdeopmuJyTC//2keNvDZGttxEhajFmZc/GDgeSs8L0ueT/z8c\r\nnaivPyXd5wO1YBaL3Niaz+T1MOuzJUCQLZ6Nvf0c2GRw+0TgV01j9s7LzDyH\r\nkp/4CGDE0sRGscHlisCs2eGJJvZeqRXzxmL5nVeZqSNmm0G1HX7VqAs46etn\r\no3tv78UVYALUrPRu7kBV83cSRLpUVgRIC6V6uAcvByaNPIQAHCtww8OYs4/V\r\nXszWnug+AYhhAMXhDdYP3vsmtzIY1jfY6Gs=\r\n=gpwO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.11_1648859510816_0.8173548512938269"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.12":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.0","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.12","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.12.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.12","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-OaaiUegNJaxb+7As+CdgZTJpniNJ7KE0Vc4d7vJyrAEqRZl5d7OkOQAuIFlWcQF6TQSvlStX2unvsb1c13nrlQ==","shasum":"57969eab664fd81875a88a77805f614e58765be0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.12.tgz","fileCount":521,"unpackedSize":3178342,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHic4ZK3aILgg/pi31kPCUJSVOoxvw1W5D8Q/lEmXTeIAiEA36eVfERZVA1eWIpL2GAD1uGAMxhzZ3Z3XNHEcnXI1VQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSOrWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrCnBAAmGIM7wZFQ8aQv95IzDmZHm7F4C1Yq9JQ9ZdOaO4G8OGCBRPS\r\nhSyhqfUa2wLq64lOz14lRIE2wnI8tanY8pI1oAUoIZOMLo+V53EviP6YsmoY\r\n65Vz0hvg8ggA2gpXSRNwqfCa88zRWdGrfQSKR9iz8xUjAfEPQn7DiuTksqNe\r\nfsqcpjYtzgKQArm5LPbUbwW339koG85MH1T3Sash8xdoNHu6ouA5wkuRwG+R\r\nbxn3nndqNXyBU8ck2Wo0SRQXlugf1E7UAP3Mqq+6+fkzwf314OmWMwtJssrr\r\nCiZU6M8RVyBFs/mU68EwDg+VcOqAVdlNX3ggsdDcV+91JGp0euiReXyMyA13\r\nS8v3Fk4IIKkV/VRsQpxEvRclhcSRCpoef00QjlS0UmN9QDvicVX9HlvqdLAB\r\nUgcwDh15fphjKYUdTy6bDuHUqW5hBz4vrWOBRs8oIkU5tM50S7ZPTGQUIT8o\r\nXxJM+8tk2fvx9UuiUYEe8tphUHIE7aYK3W5iDYMAerBvBrkLisEB+3asSCVm\r\nswEeiZ/mSDRcy4wHAMDnR2hyjT0ZIGersULIjWd3/O2j0WJB+rm9/RnPV1kI\r\nGkPEHXKN4d9hQKmSeyWO6S+O08vXcgoDqtf6Ci3xVeeJKiU1iXiIaLyobuH3\r\ni7k8F5cHp9trWKbHJ9LfzAaBDEm9dal1S+c=\r\n=ys5u\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.12_1648945877831_0.5496723777670403"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.13":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.13","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.13.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.13","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-OlnjvZ6uovdiTkT0kD9JzIUjYwJA71KeC2kHAfzGdOiagBHzyjTArLa3sMadDhoC/3AE54+0fNU5XzFIXAqSgg==","shasum":"fefe300cb8d321db23262b030a71b309bea6d9e9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.13.tgz","fileCount":521,"unpackedSize":3178342,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDcM4e0inALBJpWTn1Q1MYf7MB/7FFXLPZmIpDU+MuVYQIgOuku3RCmdl9V98+Sn1rAItPHwEz1RJ6RURpJol5CYKc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiSj1AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrbshAAlC2EQ+xD3Q14YLKLZHsf+NxDyB43gvQR+nscmHgFm99eWKIF\r\nJIVgrkx4GFdHXWSbsBZGcwyMvHqbUd3OLf6r/yxME7gMxy/QSce6yB7iz92f\r\nhQc42amHyZfuORwVHncey/gu6pKrTm7ks2ZGsp0PsfMc6dtYWQII9vJl8AUN\r\na5sTx0pa/7mVkc+yVKJRC92MR/vzZBQD2u8LrzCsdJCFdbQvsEn7G5HnixLw\r\nNWe3NJvD2rN1FVONHCP7A1qaFlBDy5Q8TKEPc2qfc4oHyiImDp46pQ8O6nqk\r\n7TN1pIOIHn36769MmbZl1zXUkUHfO5NMjdhV+ilnfswQ7iajWMV6g3SUU8UF\r\nLZYZbtOtm74IrvH7NYh9HPDcxykU533XKjQXl687Ys+x4feX+K/5PFKC2ZZJ\r\no0y69Z8/zbRlfpNs7ZMsyxA19Kx1rJ0Go/HX1TjY/qcciLiHkjexMcOE5Q2w\r\nBS9L/Ec5N7rCVmixyW+DwCLrP3yMc7XCLYcp6HZcpLZ6wc5fuNb/USQSu023\r\n+8YkIcpd12QeKdGQbPzjxYdq1e9dVUrXS5vqLSC4kY6NWNHvSaczRI7uKXvK\r\ndXXHnXC2zLGqcCaTf/RLUHTdBsJLv2o+y22wHEr0/EyVjyFu0rNzU6DI1R1q\r\n9xu4CuBomCPSMxK3jhcB5B9vDTRSTOJz8co=\r\n=fSSU\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.13_1649032512007_0.33446465163213124"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.14":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.14","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.14.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.14","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-tu2zDTAwQ3SzwufFVsvxAbrGYwE5fuOAbcBO5Wo3AkYDJDqR4H436uEfBrm2PvHK1TfKrQDp43oLvg2XLFbcMg==","shasum":"2eb03f31a572582dc15e7601a758df49cbec2c39","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.14.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFPOWct3xAlJXyAtnq+LV2EXiejWYj0jsIzhoJXb9CzcAiEAysV5Me30lQZ3PWIl+gqMifG4TcigdhPTPLsKV2Ri/7w="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiS2R2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrUWg/9HqMvMKA02kwoCeNoOXSY4Aw6kenmiwwp5xsvCSLmvOPXMv+x\r\nkywtbBXVeT69rVcX9eyjcqN2KUbEiLt4KmcCMKdkEMI3h+b91YTbvqdkuWUm\r\nDOTR/L+cgQAJalnAh0zyqlkIK0RL0UiH8JFn/aO0wCMxBKxqoB1s4kcHGanl\r\nQb4XIpgRypfFLpgB/Iz+RE9SSsjKW5auIOeFvAIWBa3C3sAlRuXc0kJNywKb\r\nZKpxJxo2iIL59teHRTgBD4QSr6H9fVT8ZlH5Pp9Bhp5wt38EycEWOH5edF1F\r\n92ZP/+pEF8Ih1nZI2GCMuGikpvOYYQss6E2MPBzadCYsMf1gs7Lnka8+OAp5\r\n72lvW8pZ3BXZZGpuMAUU9r5oqCUtjuJ6lGrgaf+LuNegJTxpSNZ4THmTosvK\r\nFkcJLzqv7/VuHKuxXgOc3yulFjzql2sSvQEZwzGtUtn4XtDJNE56MzCalyFW\r\nmNixiNNvrKhoFdELpQdSxJKKtes/Gqlbgh2q0TnOhDLk1sFAhLQbu7Si2fDY\r\nxokXx0QEIqvyTcJ981x4pGo8NajTAAQVgbP4uwZrDvDvYTTt1MBjQxrLWUuN\r\n7K/iMJ/zHPBZz6fDdh1xgPl1F0cmpQVVWGxlcpgZxt9J23YtWK9Ap68z6EOe\r\nNs9JN5ixlKghte69X/N26dFYqBEj+ll6hnQ=\r\n=T8MZ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.14_1649108085924_0.4224631720141747"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.15":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.25.4","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.15","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.15.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.15","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-P1HivqvxXAa7qr9fyF5gZ9v8rCDqk9ZBWbeAOEYn4GVMdD/O4bkhZPVeFz3BJGGXub//lOHlM8KlMhhPlfoRSg==","shasum":"db7764ed06fe01c0a8de3bd1a1f1e37647866e40","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.15.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCEfP24RnpVevvl0g+cVhyyliHTRBEoSKc3zrimwpzkrAIhAIzaNsAS75BZswQg0l4BP+cMP2r1D0S8eQ463qS31UcF"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiS40cACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr01w//R1O3Zfpa2h7qqe68+hBBY30QR9Soolkr5m7MkJLHPPSM9ilj\r\nIJOrop+DIVs3x3pwkzET3OUkVlUzDIhyPRXbZc0pFFlqc4XXI5TE/1sVYMoY\r\nfB5WajvKKYjZyRExDdbY6rFqLurxKW+JkNekB8QqwPmF9r/HiJW88nLxYbE8\r\nv6RpcjqJnTDWPSPL0X6EjQ6ln5qzI16kKzsREacuz6SDs6m/xb3hunp4BvyS\r\nv7i+gpQGvqHD1Kw4PcgGsjGS+ifNoAfaGmrmkd3z0CWm+OsrJ7Q2ZNO4Ka/S\r\n/YYMH/u4eeWuI731Cg9e9evJpMf30X6s7lH3ueouySKhbEPhJ6vY9VVR/1zp\r\nKnRD/ALfGQPbc0O8Ub0d5DJlM52f9hJ64C4zcXWj1nPrg8NHuk1rnyJzNxIT\r\n2EzwQzwZj3IK8wGm3oWUPeAAl5qQknbEhkd2JE0Z/LxFr+4PUvWzDNsxg5RT\r\nnfm6ltkIG4WYdfoL9Jy7NDFThVg9p8AciY9tPkqPJm2cpzoSNdGlm7ECrG+a\r\npySe1Pi6KHW6/5J2uYQSQ+StgF82A6wci4+s28hc0hMFXSd1zlMIvJ279aH+\r\nygJ32zoP1z1m1FZGR1UsrGKXAIrAZqtN0Z165vMyNSs/AQpoqefKPVl7GP5V\r\nFIA3tkb3ejSYbmRnbMVjUvFriT7bvdY3Bwc=\r\n=yBIp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.15_1649118492109_0.8220981715956102"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.16":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.16","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.16.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.16","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-g3+guBEZXhAaRXr0SeTYa56U/dPhvyd0xyCAX1xlMHumf7p6gQeNoAmhIZEWfaY/aEb7066riY0M1cDfV9eVYQ==","shasum":"591f5695e8ed82fff9854c38d85e740f85d1398f","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.16.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCrRiZ4QFoIaWQX2Xp9hZIsdkgpvAt9iPh6QZF8yvqi0QIhAJ+IrEtCqBUTko5qCY+IvCqgXn7lgrxms9LHNKjjT3zd"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTN8mACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqPiw/+MGa4AsEeARSTZxUtM+c1gJtorhXbuy+nfCnVhjnfzQ/i4twJ\r\nhrwTkK8iaon19KLQ99ly/ondIUxgPEuzzgATIrUS8CnsgEJQjOf0mDxWTaIz\r\nP8dbAa7qCzIp8ouoSyYwCLCvq1cYeGvRsaNFpjs2iQr4eu2ibGkvmuV9eWjh\r\negUer3472eWh5qpcPxWcowb7s9Qc7BuBkhKZc86u1td1EFxd1FBgL85nJs/F\r\n/nk06AZhl/K0WTEBk86MzqwjHDBsFDWQInfObN+f9wrMDbOwO6dnQYPG5YOf\r\nC3xYp6x0DA4uxa6wmvvFt3J+kId17Hgno9QTCbjLOHklDl6SPeKxZnEb1hkP\r\nBYLBBi4HAdz3Tg+SBb47v1ZPLLYFPRvS6lMe4Ci4LLqjGBGkpviP3Q9KJOIT\r\njgB1jZNLukqp1YuuKZDbQMwwSLzTsCPi8JHzxDwL8y1Xx0tVGflYJaE1HAAg\r\naLUxZ0QWHjkU2GLPaxk4C8JOBRYCg05dZ0hS9D2ibZVOSNGhvSU/tUAqVvl6\r\n0k+wcC/uAwdtgKr1heSbiXBw1sHumfbrPPQM4ZcouovB1JEiiZBkV/MScrLw\r\nQRsiwD/K3DAFhWkDl+MQWjuSZ36y1o5h5W+xa4vTy7JWGs43oLdVfZVHWQBi\r\n6EqIrn8kCGbCoKClSrfZVRAtKnsXsf3l8V0=\r\n=nH+L\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.16_1649205030593_0.3191487017287329"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.17":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.17","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.17.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.17","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-colqcta9+84eIE6H8MnXjVVqbDbDHkD8RaJaJUavIE8hXeNasdWDoOAUpPNJnAjgs0ANfIVfH4JYk0ixMmNLug==","shasum":"dbd622b1cc1756cd48019fd2dbc55d797e9c2bf8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.17.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDMRMuwxK999fBY5uXPGGQ6i0pReV247F05Mwpud0S7pwIhAKWhmcMlFz/kYXRHML4NU+HLhYsbts0sfIgZ7zJJ4Nbj"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiTjFiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZaw/+MF2IHktgamFALpxPyPykBQo7byV1jj3BcGLHua3Fsy0F36e5\r\nPLY15ZiTMFNp3/jBfHVUer8kiCkPNt6rFN9HsOBV7UYaKwTegGC5lrLve1bs\r\nu43rwmhnKcJ5W/fGmdri4i14nYHeRPRdYcGeH5sENH1rPLoV9lypJVjDNaUg\r\nBPzMW+JCNNExav+WtWwTubq4spjcejevyFV/E+RII+s4mzgvKDzhwOIn8hIL\r\nG4VuxyYRUhbarBZEdbciQMtvuA9j49ZEOq+BasAjSgvKX+L5xRNxJKj3RIen\r\nsDm5FQYFl6sfXaI9S2DqweAgIkhSBT/uuOPyQWb0PuOuHyb7t/AF3b6B6onk\r\ng4VUyq4z3gpjb+lRnaQ7bb6fs+1xVTj93PYr3pqZQn0DD4gt7IX7+uiqwhqa\r\ndN1vWna7+ZLygs9lzZQAekarRll0d/mDQpk6x4Fnu8mcWKxatWLqGaYaBcya\r\nrJ8QDVPXNObzr84/mRBGhHXYTUC8QeU9Fd6S4lrCWfbqBJlB3y2Lw7/pEqGh\r\nsLSJcc+aG7DaOSntdNeqIRbWkB0VMhQ4OP6hRCiq4gUhFBbKhmV42+qMIksY\r\ntC64CMeo6og3aKFx4iTVCg6jQmUwbWc+WTcxNby/S1+qFvY1bSR1LF5+VDmq\r\np8wGN8xvtoTX6Gw7ElraVgPsXDhB9dYjtNE=\r\n=6k1l\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.17_1649291617805_0.8103505645036808"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.18":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.55.1","jsii-diff":"^1.55.1","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.55.1","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.18","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.18.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.18","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-4TLzoY3qT450DlY8UvCgu2C0m375Z4sQFxfNFAUjHUkhh17p4IrpLRDf9r3G94PCBHbPJSh1je/LSOSWkoRGgw==","shasum":"e64b009b4cb4c769a2459605c8f145c4b289a372","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.18.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICtqmQM5bEOMeFReZSuW2PlfXQiPeEnZ7SXgGmcsD9/DAiEAt8YZXNgKqdnoYauMIla3K7Oi3VYyRKfSkhau3Mnu0HA="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiT4HaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpZxA/+JMo1fuP9xp0zXgwMwEhHVhrJeP9d8Kx12jo/wn7TfIDF6Rd3\r\nhuRLbhe7O6dhkj83FUGq4At+MM7sMHRf6P/ln+lx7M0WBggP2fSEsWyrve8C\r\nWrvLd+SeRD7TGBwyjSZeRTOMyecdR+920PLgJEMDw4AmHyYVMNibcHENx/4w\r\nzZeKbJ2xTYdVGH1Q0bY8xaBF5O9qSMgO0LwRxbB7gN/GmBiXnytCUeaoJmEs\r\nzLzHfdUeE0zwkhB5rC+L+P4ZXSTKnKabeYr0tXlymc0TS0nXRTvuYwhAg5fh\r\nblwLGQ6bhwzwadJFdJVTKePXm3P5eYeNpSXxD4xtA7ixBpo6KNTsa4yIzbTb\r\n2kyRrw0/AlQoNor115WWeJkmnooWUnc7CvEputi3nnPW0GNQMpfUBnoyp2SN\r\nIJZ5oM0AS0ayv0f+wigPcrm7slyHXZcbBk4Hzsqy1As7Wt9yZfCvMTK428MP\r\nVa6w+Pk8oCUVF+yKemwmg5dq0VqOvt8XZLlOQhMYx4+Y1oXkPstsyWzFeicJ\r\nuC8X4wyRbmNF8sFux3/ylTH6gxnrdRzuzCF81ciFhfOtYneLOEqhIPKkYCKn\r\nx2Un9vVgMV/boAPjvKxMwxO/pkprKCJ9C5yXPqBQ546S8HusxfN3Aptu40ys\r\nj9C0H39hnUjuUTgbKvzWWbicjYr1As4ALEc=\r\n=gpYV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.18_1649377754101_0.510168690489607"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.19":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.19","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.19.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.19","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-fP+DGm9UczUdsmFB1kYDfWo7OJuCiFOtqIFvIIcJtmJJJ7bc31mCPkZOF1Br6mfitmZn6FGhphfHd6olIndNQQ==","shasum":"91d3f1964f61e8de1ae2dd10bc008de9a33b99b1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.19.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGsR8omIKoNpLXpARkWKYHa/EUwtRJVrZroNbdA4ucBXAiAkaLMXVr8jOIDTikrTuXaMIzoTxinZDl5lrrtxfsbQPA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUNK9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjYRAAgTDIzECGHVcQ5dSXpoSyXUPuVYWJzorDVELWChYXg77wpqEM\r\nUipuM3Yo73WuoY82JbHqap7iV2u4zrIIWQPSnvywS9i3YBr5w9BDjS8Kx1W7\r\nioqNOA8r048dUsIjdSZ/xeW2NYnQcUEVTTKXF/QyUTZgbfO6a+Thr7ARSZlJ\r\nCZbHLcbZNlZaT0jWi+scFrhdPsNa/WApAgUlgu71w6F9Knv+ZjTp27hPDDl5\r\n3HN7H+RAXJktOxWEw8j2EB96VC7EjzepEvZMPRp9JgdjQlQekoSKwfm7byg7\r\nsvZR/J5ShDOeHmWoXmXgI2l/tX50wj9WUw6OlXBNCIPPAuF4/klYI/qtr0g/\r\ns1+Vzu77a+II51HsB8/+CB4sEWmhs4Led0FLudAGp1Il9QCbSHi4JGDSDP7S\r\n4nadlBAUpn6CGTkbdwOX2hXpUIEkOFsorTRAZ0UX/mjMfvTDETve5oDIikcH\r\nd2rBeOcv3XsKtRibKOOFI4Y/eNOMIk0cgYILCc/OwLkgVD8oOf+WyWZv/UqO\r\nKfBdVTQ3ABwpGhInFDML2Dgx31gmPyGzMRLVqW+/2xSZhwhh6Hy0QL9V8wdc\r\nU9IYkK/xIccjdd2dttJrZLY4Iau1RwDN+TMzhrRKipk82goQJSVYwG/OiKaS\r\nen971ciqXnKw4dnxgwG+2WCy58CkIwhUd6g=\r\n=UjOs\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.19_1649463996883_0.4041674573245515"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.20":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.20","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.20.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.20","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-B1q78PooQLkJTt5s8fUgbNN1CmSaGB2aYuhqVoaRc0+b4c4NjVL+UN1c9AmsIehtTduJsJLdLuLoXUxMWXdBjA==","shasum":"613112c152d1abfc5931cf0373190f841d219db0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.20.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKVsBg4dc8q0NoICHLI4Bepgyt/m9QFmJso7L38e5q9wIhANfnCICfma762zDFtwXMG2/vP4JpG6pt6vfMG5mvbvtj"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiUiU0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqzJBAAiC2YboM67RsY5PsnOqjCdh9jFviArg0t04dsRbty4o6WD+tx\r\nCOXOckcKLkKsPQ3HwQGGXH07Z0yRTqxOmOuv/r0xmaqMFUvzGQ0WFdJK8PeM\r\ni+RBZwC/QlIURl648dAf6zgFcyasxcHyi4TNnHL5b3x0L6BtBAnYp+FVsFFc\r\nOI05Y3pXXQMyjUsqgKIzMO+4a3/EnHUIAsYIHdLXgTm0PeeoJDFx6Ms/Iq0X\r\n8QCCjRI38VmrrTKTu/eb+pgeD0V/crkh3poEAOOqvhHU7RrQdTKl1U+dCQY8\r\ng6EHeBdUru3OQrn9M1i9gO8fXceGPM/Cyd++EPsjtYUFtjDIbbdAohXy0HOR\r\n+g9FjMRmw6mgzzCys+5KRyfMTFBgW9wArIk9AnlXdEFukIGLkfUKPObmYiCd\r\nLH4rb8hz2rQe2kFbl+xLHQiWCDerwucd/XRsXYKcUak0SOMiasEHkcsOHfDf\r\nK9NabQYRe3IOdNqZIsyQ1wVoqmr1rPkubwq9SonCfvoKfw5DAgO5MuNjeQ92\r\nDeQySRMsw+Aewds2KsZV1GsRt5kLmhQOgNtC7H55f/uad8SgjLgFo6Kl5Yi3\r\nXCchwFhJhmAQVhPXmyx2PvMKneLzXutjXELLTHtJyxLh9UHb88iLKid+DPQn\r\ndl7N05ouDaxekKDqUWBw1DSSwQm9Ba2Zrto=\r\n=ksLd\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.20_1649550643870_0.9198668738742655"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.21":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.21","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.21.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.21","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-765PS4hkyhUweCxvGzjBrWJ3fZIWSAbeACKGxsjpXeHJL9yy1F3ypGnrtkCoionjXL4kZiP9DFYU6sxuSclVVw==","shasum":"ddedbfec499daae1c54969777bb71640f6fb982d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.21.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC0pfqsxWl3zfUKwTj2Rzrh2SF2b9slz60OPBNkjgM38QIhAP3VLpkomWzFA38pZBJ8mgO/zbBOkDqopaSVBMuuiNAk"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiU3fLACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr4cQ//e6eEM7mCoOLOvlNZppqUQ3oDQ4S4DM+cCWr2BmeYpT6KLY3+\r\nbBozsAL9x4CjJPkh72jXpo/Pq7RkkuawIGQX4/u5ZcnmHm8NrLS3fDI0P98a\r\njmpJV66uAS4w/BEmBVAW603TidJt82p6R5DpNu3ZPM7ucRwB3H04QyMZ4Ofy\r\nFwEHTDThY64R6fWi/h54wrXO4dmuo4j94MP9MJyWuF/cLmxpJ1cxJZ+QZwk/\r\n/cx9ISN/a/ec5rrjwmUmhEPBTyq6QCqYccx5+enIO9rZLiZlxMw6JmQ5loRr\r\nZyz4SuMVBRUAAxyYMW1dHdboUm9n3aUtqirzhnY9pCrWeCj35z2Fkim/4XbN\r\nJuZKxMpuFVGH1ATP3KGuPfoGH8o4cwyMWK5L+43WyLmUOzgKaHUfsyUxEue1\r\nf8EAtWqT5okdRbNEU1l6RFEk7cczUqURJUY1Cc3pKexGuaHyroMhKGvmoFFR\r\nXpFk2Q4DBGZVywUdOyY/f0XfxaOJFDUA6yyrkfzEip17pMPWYYtfefNnm3VC\r\nBEzOzgOWw/EaEei/8WucHNrmUpWyd4fQP0QI46CPdMSongVATdbhK6YE1P9J\r\nzN/enSOF1gENzbGEdbetbMhl3XU/a2PHt2WVc0fNrj4CKeETRYnlYLP32L9a\r\niS4EXbG8dZ1Dd2yD5Xl33L/lu15Y4XPBkPs=\r\n=hyo/\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.21_1649637323573_0.7102851174081932"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.22":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.22","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.22.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.22","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-PBW7ALzZIJwFXMztYjg1yBayvUVqTTODw/2W6pzYUqK6GSmllN6fT/ikzHucoYYAg4cq8pJBbB8M184964R7hw==","shasum":"49dd423d93c0fe96dea1956c46aa9e3a3c526227","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.22.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD4W/L01q8TGezX906pbjJfDovg8BLtYbgebxj3pcrKMQIhAOcQkuYtc0t6GMS8z7uT4ua2i5gwZGPO0A7aIsue0mCI"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVMeIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrlSQ/9EFCgmn6kKg4Y2D7yb/JiFkO1l72a3NMFjjEE/gWZnHLsHQBU\r\nCG9jk4yVy0rkXR0Fp9qwMgYxL4VXzoeTrFd2dzXJ6jR2BCrWqpqnR9c9z6F7\r\nc64yCz5OlS9cMbb4TSsehTXTfaUQtvBOHW/lsKzL+fRJR4OpOwSu/0OOok5Y\r\nX3wGSMw5m2mM7dJpZ6CtMqOagbo+pPWJQ6SUPp1JGHXCtRy4cA2H/kk3GGmD\r\ni8K8Kop5DzaCWBubVDifxknerofPRKkesmE8Se9k+3QH8daPZs+Nkn4FINBi\r\nvpxowwVB3fChbUxnlTCTrfVwzXn5kwSWUE3X4tNRvilweadUdxYY4Q6zkbEt\r\nLAZg5CNRqK74qAAraGq26WM0tmLeEkzlKwWsK/gt3b0v3Q04kWD07Pgy0/sO\r\nSmxPsAkivS9CG7mZAtZVpKgYMdyAWzgf+S4iKoSLBKSD3b73L4F/FAd4DGKx\r\nfw52uR+GNbxmK6D14CAZL5gRiQwm9HrGWRL35RGxYncJA7926SigaweSQQzr\r\nTptSHHLvfLxuof2Oel1rFD66Y6hZ477+tPDjH0lkDWSHnXZzaKGUPAf8/oCe\r\npm4mjMNhbTYNqvaao0olOmlHg32TMGsy/zdJ09K2oebXoQZ1Owv1Ehy08K2h\r\nyP8q8MpIEYpI2MiU3MdqzjvRnR+lyCfr74k=\r\n=rBkm\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.22_1649723271862_0.28836260649574386"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.23":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.23","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.23.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.23","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-G3/PQSAJYDhHoeZF4X03SrlXdx1duHV1PPYwwfwfFCLdwH4Wb13ObUHKsq4n3fIThy2ZaoGxvueVc6/cnHwzdQ==","shasum":"53cb3f88d0f770fc04299b6fd65a5af87c38eb7c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.23.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBczq70bCt96uF/Y3Z7nMcmysb0gPwEMN6uIVhN3I5gdAiASGrhI61A7ev3tH+L1flW0yi1GfLJF14zxpCJlRUkqMA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVhlXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq9YBAAnmu6D3VkKoWDu0q0bs95ML997nV+j8Bepj/IZkzhG0FiNtzk\r\nPS9au1SJp060Zh686zU39EJYxqmm39E1Iu2Y26MAiqMCvsbBaxenY82YofWK\r\nH3Vfy3AnwdsFNIGzEDUedbhHA/GIxzZlP/5Opj+J//v80f89ZgHDnWlkb22t\r\n64KgFlkKd9EwUabG4pHrdqD0bqdaWIEWT0TXztRIOzdKpS7wzXHSrcL5vd1c\r\nM8F+t50fiej5jQJYmgzhcyu6OYe4k5AEnGhVk1T95y29iix3hlSIrbDzdFST\r\nuLgCHXGMAyB73RwqSi86IveOfl4L07YhuRFkv1YrcA65Dv6eAzLQRwbjSbZM\r\nClwSpJlVP73kVHMY1ZPHbCf9W8y1wo7S1RTizut0Iao1OuiYIXfp3hc9DP/F\r\nL3zy6X8J+Ny3jWX5H5F13Jk8Wi6VyldjqfL0GoXRnukNgLPeb5acdOrHkeMP\r\nE3JKqxQpc1A4lg366gRVOcSgrStV4a/Uqwc/LGX6jKZj0/oLR+PrrZYyCTOP\r\noGCJY0b4+btbUBqK2A4dmjUc/RomOiTXMMRWIUCQS13UIdkhn5jhowNaSM3p\r\nDapJ0eVT5e59qFYbjRggvHPS5Mu6JiruePv9T54qG+wbmvN/OJpjQW0Xb4B+\r\nY4laBV3eicQpc5r7oVASh2GJ4VFM2Ad+U60=\r\n=lSYe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.23_1649809751040_0.9056505288552188"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.24":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.24","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.24.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.24","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-NoX8JuSfZGQeLi9lbl2dc2X37ALmYOtbyHev2vjPXvA60KlhQNOu8T90jQA6atNV5P1EQ5jRB08pdsfmrk/srQ==","shasum":"342ab98a4b3ad6bb515b6fdf3df45d4028c609aa","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.24.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICGKzXhZjgOgYEWbtqnn4wPtb1fyWjU28hW70Hk0hN1OAiEA/7OxoQCkds2o9DoiIcN8ld63nHO5BxsEPWyJzWa8juc="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiV3INACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqGHRAAojrKaUQZ/G5OhK7MO3y5AbxqgFIKXSS7HeLfmwnVXL/aXQQ9\r\nLUAGRyjWiCn70KGpxftv/T+1aWFWm1DZskwex/a52jCpFguduhYf10JvY8VI\r\nBEw8i8pXeQpNYfmVZ1/6RrMWU951kNvEGhekeQDFZ9ScKXXVF1eQPhzdWiaP\r\ntiD9ZQ3FEXdqVNr8QvS1f1Ky/Yfmq4OZ0LVn/meFWGqYvXhrfQQ4mFrwLx0X\r\nSBw8AGCV1c7ohUuSMluLLECgQWgPedZ4o6PsF8UNOtbwHMV9Zz6/Ccc2YyDt\r\niW5ZXsOHcXvjukZ4rLAiIvl0VtIiXeegT2pvorGsWQFKxYcPNtJeBCS6HHEl\r\noD+dA78l/strNspnf6tf4mI/w89ZamyCs7jLoKMOrNmolc+oYWLXOkbafEaQ\r\ncYQxpJPkQF7X5/61DYxpxAtTArLiYn1P0YZhypRpyua24VKR04hqusU5rRcn\r\n3xT8C4ieu1rYbWHK7/dNMw9/SCEn2Qwbxo9oBX7kvuY6nmGuQaLNHyFm459f\r\ntUlEo7Hglk3fq6Sb7LoSJ6g7krxAqvlIXgJhwELu9aMwzgSKouWU2MNLUvHg\r\nLGdEQ8TrANoHWzMOwzh0EiAKHXi5+jh4OulKVltGaYpwCXmLlhVVB0hImT3m\r\nh8/pIJOE99VGpl45xPC9Rf+VIQqVQRsQJ+I=\r\n=ZcxH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.24_1649897997061_0.16695696885210376"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.25":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.25","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.25.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.25","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-62sgUNrEGAtLcuaXT2+SfRx9C4yfVh0kd8yKFogRCt2SKazTbjkdKRUAUv3pe6lqsMRhHp6l3OAVaPphlr2QBg==","shasum":"8b05ebf7d473b670127d04e439e4c0f773a05c27","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.25.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFC1Yyf2CWwi3WVevrptF7f5B32OkKD26BTvNjKE/pSrAiEAvEAwkbwwQ92QlpXBb7Nf6lagwUuUUyZR2rPt/jsA7MQ="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWLxkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrVZBAAmAM8rv3FEA9ZdHrAYEUR3Zj0xPkWHuPETZl7a02PR8wIp5/c\r\nPt4YIYy4oPZ4c/N7kmToe59NUlu8niYxmZV2FLZwVD+olECnwgICrleHfkVV\r\ndss5U7KX4IqtY52nJVH25H6dDIMw5/8J6yMwL8WIrkrqeu6m1UpuzEtO64uG\r\nNJHz48AySBHb8HwWSRWjPhtGXSp/86h0fzqhOwmjvuuoegKiP6AKcMtGvrj/\r\nISr9s4pLHiboBrZ2knB4BbtsoVrQsr/l8Rk9U+791KamyF0XlbIM8eO5+V4m\r\ngOgPs8ySaPw3W6mxu6c8X5wFHHRrawZcV4ZnNPfEJh8/i4v1xlm32lIDU1bQ\r\noMG/0mY0HZ2wnfXPxnbhQYauXBEs512UaWlN+uVyKXvpBtP7va0FQTnoEFVG\r\n9Un5UDKzpO1uQ5qCkJ034CLWzLD4SbB6/68x09p6TuhFVHCLvqIBrUljMOqO\r\nKRgySJTWdzOscFKxjRsaouchrwhmitwXSSm+sAdY+z1w/q5+HRCFOcrOZHfd\r\nTA4rD89zRFYxLocbh8vqHWB4xc/1W3TwTCF7scLjjTGdUU8C1f4eveMxW6yE\r\nzB56+TdUWcdOBnp0yXpoMoo3O2qdsGwAvbHndr0zaPAWR8PZgDya/Tt0OjlI\r\nhq0CuKURPVwIevuiB1+iWrA8xDcEynvM6Z0=\r\n=h4Iv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.25_1649982564124_0.3002696078086189"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.26":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.26","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.26.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.26","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-3u1ZALdoWU4/PsG/HhVhtw2KjXXVeLDuNE7Pu4mYgQTG6lS9JcTtHlnedoEubhTmiAFOPEuZZpjPdL5MLrwibw==","shasum":"0438473d858a214278449936cffe27f9cfe164cc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.26.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB93AiexUWKrfquhLqp/jOX7/BsUaRpu0GBkEsRDUcEaAiEAnGqJw6xfOqdfN5Kljf6Kf+bjo4Y3jjNkeOlQvKaKOPU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWkWEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqO0A//eZRKxC/9uXciRebRBvqoLS8zWVaISiwByW5IzTLkW39Vsdtv\r\nDPq0VRUbfk+BzUPnhFWIVKxK2Qa5bG1yeioH8dRZpBp3molGsaB/skEobbIE\r\nEyz0dyDnN44oQGazTb/SnJlEuwNnoJ4Gm8XW/xvBhLp0pOVsLU83FkLGyh/C\r\nWmdiqqkAf/uNCPEGX24UldPd2k+mwaGiejM6rObauOXqgFP4WhOnr5EGTHJr\r\nMvtOTsNyFqr0XyZXOuGX5DGdNHbnK3l29xYE8k/KB8m24Q0ForWBh+NTwPFm\r\nuf4PWaoowgZ4uY9pf6ayVgh3lwKCWFvXEG4zKDglyh/sFeT/X1xfhdhIX7eX\r\noIzd2zuFsIQY9Krs832rT0EtbLvQUuF6m0PEN9racl2X1S6o7/xvGELmoZfz\r\n0Ar8rzEat0li0dQRJWB+o6600PvagLR7zhb0m3fy8D44D2sRv7FIWtXFJ36w\r\nD1udMroaNEL1JW+yOfZxNXU/UTDquC79eqWrvrbY28VLgQhyUjM6zx1/L8Vb\r\ncqhcLzd3UZ/Gi2yGMCBY1Am8zfmp7uxbwUXCsCJ1zxrjABUu6zTSyDqhOHJB\r\n47eIfDHkE7/gfPh8F1wZEE3JiZ1PtTQdiudyDwOMpCtE+t7qY6OMiZH1A8s8\r\nhoWBTo5y+2wfEKueDVgaV7rcCDi52rYbKqo=\r\n=SlfA\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.26_1650083203800_0.3517552479343462"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.27":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.27","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.27.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.27","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-VCd8yEFUFkK+FDE/quVWhocdpvHvTg5qLXLhzCfmRkM1bDPN5xK1joejACKlE5xRHQQkEG+n+c9/2HxP333HBg==","shasum":"48006371382523cc74ab9d7895a875fd89a3eb07","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.27.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAkdWQik+UvCxTTniwh4KzwJdZnr+TtN3eH44Ru0QBCcAiAvyTbsRD0+lKDPmF1VoDEf8pSdfxU32FXK54xX4X6hqA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiW1/3ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpsHQ/+I06+1guO4XjSYHzNP+GMfEHOyiC74e6XyCBoL5J3HIJ1M46k\r\n/RkEkPOG4lNTKW/DFU8i9FdXERBF0CD+lEG8rVWgc1bfK/v4knnY3vXtHwqE\r\ngEBbVzhPE8v0YdNHsi1hmJEoNlzrhx/5zPjE5MNQ90BSzUGiRUNdlT0NgfyQ\r\ni1GTT8nH6f7P+YwkzNfkOolO87pKA+JOdllxxFg9lGTqe5npznAruHui57YP\r\nncMM7z4juacOyTTArbDzruz/th1cg7KUWC8ld9fiW1o4ZmZctYMFI1yuNu6k\r\n2fuflM32OPjaoKdmey2lBEnGCVrvDhu+KoI5tOWykHjYKv4Nze8p6rezJ1cx\r\nDIGfusUaNAZEFHNCyBGjPl5wrzw+U340t2eBM7VZ+ev9rBk6+UuS81de+oHi\r\nMF3yORnwdMCWFv47E8QuM3tsf2mYJrHj7ljVp+AbY/o5uDtmxwfB4GzoAqDh\r\n1hqija3zf4ZSBAsCqjtWrKNYiQBLbYYf8pnC5nD1gYi+C3WywF9PdAZL4cDV\r\nMABxeyVnF80uBDI+DQ9E5VghgaDR8nojfn6GX/2Hhz38NaEWr63j7tNor9dM\r\nRMhMNZs4dwj76f4dc5aXyS6WiLOlETkthbw6Ko/cd0Qmoqclwot0zdm73lCs\r\nSaUqVRqJOxKRPbkitI4vTW+UuxVdywzbNpM=\r\n=pIHy\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.27_1650155510758_0.9194696722920448"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.28":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.28","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.28.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.28","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-+KJ1PoO3myf9eJdapRxpZWsS/G84VlU7pNbg3/JTcSrKkxYooDCDqYsUbHFn1CTnUO5rPmqENrboaDsNKO+X1A==","shasum":"067dfdc9753f1e2ec21903e12ac185193e77b1ae","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.28.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFlsINDK2YxQBRSOE3Jyp8Vymr+nDY8xPfs7RicOuBXAiBxhEdhRRT2QwOiB+lCpzPw0QEXduQZ9XJgT1ZYaoHuzA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXLCAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp2DBAAjMprMcEow/piBY1o36vpudp92IWi+DpiY2E8ZIIPFOWOGqaQ\r\n285MCX5u3pq28gOdVkzxeP4CpoM7GySKP9KtqERfH+qzL5oDbCQ/WNpPs1pQ\r\nhbKEUCN8QHK8nqw1LjUZII07PT93ESTMrBUPWgMOC2I0eke0wL1TRnyuipua\r\nQcJ7AGlqy+eKzdAJZpIqvIYYhX1MfCQR2N3hlJ85GFPnHjzpiN/iQi7VG1DM\r\nbS1WEVvu2k2jr1NXTtKPHJnCzioBJcDQ6JKMmRyjEHpDYOEl+oj2PSaM7kdn\r\nxsDQEANfQwEJlOR9+ximQdeMzbhdpaIu++vzCszyCoQxv8pE5ZJMjqvk0Akt\r\nFTHaDYayOHDRWi51AIqNB8LcjqAe+P68rI2Sl/O/ucG6wL8NP/6/cw7m58Vg\r\nZx5Vsie3O80uWbvBPIx2IMdYyytfuNuR+7TamqNnXcOl+RG6H58/n1IEbMbk\r\nJqtqAmR8EgT0tu3rEaJ+MSokjjMIr1ejYfHu7ThRTkn2vR00s2wTq2oYB4RN\r\nEfOFfgH/uy/YQIEMSsr8u7FaWF4c4yphyGtoY/cxdiG4bF9yjdha22QKr0ep\r\nSsf1XiA+ywUTwaSJeM30b7vorSaYASrugMxen4nkBzCiJtti2g1DqrKzTaF4\r\nF9eP6QqlrLnOnOozBvaqE8JV4PI84ITfLLo=\r\n=iD/V\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.28_1650241664451_0.02679164142802426"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.29":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.56.0","jsii-diff":"^1.56.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.56.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.29","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.29.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.29","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-GPzaspKIRY35wCn0wUu+53KulhBH7tqx+nfpl25bywBSJThHaoFVh1N/YrrjTsxHy2gmMV8dDGnICtWOw+WZ8Q==","shasum":"e4d8f2126953aa3e81edbc6f660244cb3e268135","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.29.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC3zwhDig/eXXY0AlPHurbOjIMNK/tT3IXRsoGRv2zyUQIhAOtU84c7+C/vWLOhu4zctufPc/D0oCh5qM0txAhKBa1a"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiXgI/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqykw//VasNYEk5Y4sNDyGemqjcBFyAgrTOO3CJg/cSdThJHlnYRuf+\r\nj+j1WIMKEKOA9KAKhLqvwkws0J9sATCbnrMxkEbM9zuN5M3WuRWzqGMNfsux\r\nRUaQfQF8Pm9Gs/mw38ZVHufRTGteCT4GqzGwdCUA8ok2Yy5Ow6PKNuIhcEnG\r\nWMT1vVOWUSokebqQYQPyr91m8uQYxjyR4+2TTYGc++nm1+M2NP1W4nvi9+0d\r\nGfMLKL+epriaHOH47NrtCXyDWcjXGwt8aeJQG/wmUy3ecu9rya57YMZaHthO\r\nu1NLjPppWK17AKKRmsFbehmU+si5+9enz3J7dvgX+fzHghZGXvnf44mZ5KBC\r\nw5TPNpAMv0Y2+kq89zBu9UR+Je13gpTqLasANxZFy/H6dJb7ivhiKDZA/UCU\r\nfn8rvLM4qYfPAJwR80ApiOvGNYty+4XsO2qj0Nhyfym0Zf2nSraRMNP9cuwy\r\n921kwiXmpuoyouC/bSgySXg7ID4A56wYTAyuT1YtNhrkL55VPdiY+7npA91b\r\nl6ojtkiGBUM2maEzXahGh2PFHWACAkmRaUYVDKxfwKagvDZdW+Jzi2y6ueUa\r\nerY6CXA8LaSciZpjangIjnZhcFnvDMeAIGKmKXtWNnXO70n0zojQxks3cDeI\r\ng5HCqypwgMWK9KTKbON/wauU1v8be8gisMw=\r\n=lfWX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.29_1650328126869_0.43021973898742094"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.30":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.30","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.30.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.30","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-IMYtgAVz960ZdWD7WtF7K9IMCdcqymgk0sCyEaQ0XoDzHoqMU1kQQHfu21fG/XKzgEZcrrtnl2cgkdlAzhCiiw==","shasum":"0ebf99be492441fb052e976251803f9d2acbc4a1","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.30.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCw2voqdpd9Lamo6ic0LHoGsZ6erdZYsyiyyW0nlGFtKAIhANWlvSvuAIVLNkyuOvSHPuwNXUTW+T0oHrV12AE2iO0G"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiX1NzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmoi6Q//ZJ9DWfAEpUDIDFez0ZdOEWlkZwy7ZxqXgLH6/fAHHv6ecA0W\r\nRxZC+CaX/iwwim6yy271glRz/Xyx2ptLkFac8d1rlaYpwRjPXfWD6SbdEfOZ\r\nwUWCxzihCOk3vRLuR0nY+f1d9Qt4SggW24ieDc19+V1YqaDKE08FiWMDMfR5\r\nVAHfRI+R1o9GHV9lVJj/MgJ8+4l4BrJeX753dhKBr4GyQZqHtf/sp5+ZrH2F\r\naAQi5mc/yA2wo9uy3LhWlcObecjOZSljl3Esy8TsLnJIxUkKHAB5vQSdnDKA\r\n0ql9cy6P9gSUi1qir/6QZFoSPXHUsWccvOFD/svSk5aGFYTJ8UgG2W72WBuf\r\nU9ZOWImZ4BNt/s8dc8MVYM3NHHJRiLxS9zpD39PIvZ2v6Sdw5qwUMD5d7TXt\r\nCCXEV0VYAVZMTZHeMvIt7L8B+A3zq8YHLtvmMSmSCnFPzjOew0pfNHiajAuQ\r\njGY9AaUSNysQJN3xxFXNZodxKcrjX1KhiMWMIgSm3GFFouqppcn++R07MrMH\r\nmkPDtZ/EOZhGGh2XBowYU7pqk4pmrvd9Xi0RNSBk0V3ZwiFvddDDgeaFJnq1\r\nnl6QKdisVb2VOkWi8sPCR/uogpQ4xzmWWeIO7MApGo5gzFr0oz1S7hSUHqca\r\nALAhf9aMJfsJRMRqMrSb1gwo47UfdLqdpiE=\r\n=8Rsg\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.30_1650414451191_0.7882137386754848"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.31":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.31","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.31.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.31","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-sIOBQe9rHghuBg2ZqiRmHO8ae2Scl/Js7ohkkKhZyHx5xMIcUsGn4gAzZOd7cDnSxbR26DEO15QfKT8sd3pchg==","shasum":"00fa176c21724dea0e321a6f1742899c7dd1ff54","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.31.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzo61Zs3i/uds/hCFknlDLmjkM7OVR0hCnkQzPNnqofAIga/m43E0kDj+hzeX2m4eAYsf55MMtalL27p3FkhUXUwM="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYKTQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpwnhAAjA8qbowWIWFWaCdh1a/nTaMfq/boqtkOesTCL/ZS2EM8f5ax\r\n5+A4aYOTtkHfh4Joe3t5psd3kNU718kv8UTg+gD9yPIVFVCZZtQTlUR6Hl+F\r\nmzRdg8UVjuJ3qGtWQgVCynV+oIoy4N6qf8LvakthPkTemK6Q2+cXjzW9Gtb6\r\nVZAePh+thdkYU05r1UqJ70FPpUmeGjnWxxwmHFhoINztJYzcyF/zCVZ5NI+p\r\nUdWk8W0IZrGFztnZuVud+p/B/t3zoEJ70m40B0rzpylV58bZKZU4Y8a5GZZk\r\ngtwfADKuo3YX8oFRFihWugVyDmIP368eb+enA6/c9co1dpiCJIwpPpzF/oB3\r\nDLvE3DGrGH2APEjMrzNX7jY/Sc7F/MBVLlqwsUtsjSgfbBa2b4xsrnY1B9b5\r\nlKKUehGrER5VYlquCyYneb+mkCQLzL7DxDWMcy2XzK3EqAeSS+0CvVFZeP/L\r\nE3r+DQ2Pja0YcOhwHCWykixHmkziiSlN70yARJTScaRrzROCMOOgbcAc3B7I\r\nIgH22w6lXkKGt9c/h/6IZlXiiuSFRBSG0/Y2UdOCJJQa5VH5aHDeeC8n6aeb\r\n7DY+eY9vL9JOoEL4omnUL40yoKXyKwOvU3obPGzxy/mfwG0PR978PdczIXRP\r\nl5wFgNaIAPTEKlVBTA3vNNVdgYT+nG+c8L8=\r\n=WRom\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.31_1650500816395_0.32300265836289177"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.32":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.32","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.32.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.32","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-15N40OWwA1zIXA5gn5PqrdZCcz3svj5bMID86tyFKyUmKB3odUkllfW8kZMDAd6uwyB91+6B5rFSy5lL0aAprg==","shasum":"8741a1a7c9a1ef14df91d2bcd0209a41bf672ffc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.32.tgz","fileCount":521,"unpackedSize":3182211,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCTjHdXB8fSS+BsjQRGs/u1MYOrUcMEamBdo8JmYPgDFAIhALNx63fTg+omYxgBHyeEKCj182v5tzOeh6a0PDL3S9r8"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYf0MACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoV8g/9Egaa/W0aJpk8pnMqBs6R2R6kOTrmlvvTJrGyDdsPcHefZi/Y\r\nYNFvjQD5Xa7VOfi3y+Ri8N5obse0tVaRvH5VKVSWOtrslNCaQzFp8w5jxpEn\r\nP4KGr9l3/iapqPA0c5xs9EeKpEyiIXGIr//3AFMSMETBePrXVqFDXRqu7nI8\r\n96W105xBFafxTsmd897DaBNSndq10qAUqnClm2EZrmSJ52IKP2I9+DmAhcL9\r\nssONFLoxEMP6wXLMAHVc47fz9tP1AIjt0WOjLyIe9kMXuZAHsXt3n2i0aXxw\r\ncOl6+NNetmNFBVp1ouDnN3+vFGxN1Kyqzn5X3k+D26Nrb8e7xviYfSJcawmc\r\nVS4m22/fx2lxiQMeCoorB0/UvwTap51n+ZxEHB8bqgS6b0kxEWocl4oH+x4P\r\nOWOnCRTrPLrVXptGaxQOKFewVfYjZZdd33rygVT23gy+OsZs6f4rKp69bA/y\r\nBFheDx1lalWuRYAqoZ+O0c41UXSkpe8EseBzF/rXxbnKnNc0Rw8qhZGcpGLX\r\nmAkrWIKWt7Gjlmcvr0qCGUs2BH9xrWAYeA47CKXsew0TTprMGkbqw4Hul4rM\r\ng3uNMxTyoch/w7BePbM5DJOh8ZBTm9HvZbFczR5jbhaW6MBSazyIAaHzesmi\r\n451Jo3GAf1pC5XcGP7/+mGL6L6cH0MIpmBs=\r\n=JBDa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.32_1650588940506_0.43509005595363837"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.33":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.33","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.33.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.33","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-skw49SQg3UtGcaBKw5LeiUyqohopryFTwGxPUwX7Urq74S27LPE0HY+2kEfN55hhhrwnTHqgghqxfah+eLyRjA==","shasum":"4b51e9638d2c002b649c6cbe80c52b4f6ab2e312","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.33.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5L0ipgQka5wtKwlivTSjSI6VRmQS8jTc7VY9KsRkXVQIgZvlAAoarY1zH9Skw50CbfgYEB/65PVAtzBtDVMLdcsg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZFHtACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpWFA/9Hz4HpLBjgkMNdgGYGzHqmOkUY+I2TgPky6CB4hMGKU9m/8aY\r\n5vQurKKjwiVvAs4Z3sN6XOgcVTib6nCSwIwrVBcXzGQ463j4OUAEnFXJlrE3\r\n6j4FtZXaigdrkTkyvIjjUrMzbdzIcAgdwHW/5BB7WzYoha5pKn87lqbZ1Yrc\r\nwOJBXofK932Mhr6sjhbpLskscpjSUYSgDb4EU7TxdVbdXuwlTZFqqqtzofgY\r\n8kiA0IE4KyG/cY0b0X97iBetWE5D6aq2agXv/vgtdaLDYrQSOwHe5umhSBtQ\r\nFIr8IRiTxr0Ae8SxUllJ053mXcFYh6TkEqaVOWlf8kdb5FxGiZg7b+2KALUh\r\n1iWMYPsevQ1lu8s8DuSpQT1g6wunE4HMLrVBvpLvPPeo49KqKkYSgWaMlBdE\r\nadLP9508BgsGNzZ7lNDwKJRo2AS5o8I4lGBL5jHdQKF4IqgLv050t6n8o8VG\r\nTy9X7vzk6rT0HfaxYcK4J/Xyq1ml21yKHdHsKxjsBgOimW7o++SKwGsOzbGD\r\n1XRjhWCTvXtm2HQ+sf7kwlLsJ5zXndtfmeNTJtFOgM3/PkzMElWSdtLy11gN\r\nrX2nhJ00sRnnSYQR8bs2rCQifaaWsksjypNPHS+rIxO0r/JZdSJmYaYvDjMD\r\neszgJKSy62pd80066YIkzNmw0hVgoU2PQHI=\r\n=G5h8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.33_1650741740656_0.4366379568787988"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.34":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.34","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.34.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.34","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-farqmdv5BhR5TfhPQAeGIQA94MO2isc2Wh3j7YfP8L0VLy17cev7hdUFzGHp/8KUw4rCDJBWtz8+KOvx2yT8yQ==","shasum":"27036cb39157a8746cf3fc06a886bfcac95f4283","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.34.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDYVLj/K9yJXnUDvwklIMagAbLshz0aLISV10NqW65A/AIhALtaFm/xKxSG+wA3/8gKw6JG34MLYJD3GcJ6YjObt0zD"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZJphACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoGOw/+LCQ6nNAIMr8RwplEWmShd776/4pe8jp/OXtHT/XZ5ghg/Yhv\r\n+ZC6d8tdybRo2ZII/nm3M47oXRJFg/7Vq07IOKmY/idrrcDKwOAJW/T43bZD\r\nUuiJGr36B2jXkwevLg7uigxPLXRoAlap2J8d78M3aLD0U+juq/Cpg+WFjhcS\r\nan79gDsqIfO4mcrp0djpduA7WzO8rDS+4s8WtzIgPdKfTXTTIZpjJQIPt2Hh\r\nFdhQPYlTpxfHtzJZReHGdEYvBCfeLmQRNxDb3fn+Lzh9e5b3TBHzMs7+5Gx2\r\nU+od27HlHidLTlbgtXBOqWhimJr53K9XwiJdiJkVI6Atvvsv2WBZt0GFHWKe\r\n41C2guTBGvXE4XWUiWZfYWqFeM0c6gfzChEIkZLNaWfobCfKlfxqPMBgZyzN\r\ni4LsHKA0BN8uDn1NOvFjubMewiFJpiXyoY955GrLvx9UooMxeCIGbSLbpPtT\r\n6r5XJKZrNAxJ6Y4aKRbZuahU4jn+uyISVSgB6y6RuadEeipHdizoI1no/Kdr\r\nqvfNCNf34/5JRP/BtQUe51iv+6ki8NdwUj9vzWC95qKeXIXSvXIBVtce0Dms\r\nXjPteIuKdYjrVZ6xkOrDpi/6O5xnt/rqBjwBluo3ITw7yXph2NdUNyDKqGGm\r\n+GbQora7xJVc+YTakcvP7qCzJe8JAtv/hYI=\r\n=AIIk\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.34_1650760289223_0.9093626005662985"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.35":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.35","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.35.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.35","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-TpdQgrhQzie4fBpGofdOUL8FawLJi/VMQoZsamzqpOxjBkR9sN/t8DtYC7sGp4jTC3tVy7RD0k+6RFWUHaiZiQ==","shasum":"c1f9c970c12153ec1b708f6da0e71a66dbbefa5b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.35.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFbfp3ALN7NeGE6aOWU1qPmKCXFy8Ohurh6t+7oAviR1AiEA0Bz6vrhMT7CXp0rt9nXZ7HuTylhSKxsK5ac+0+RLWiE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZeyhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+Nw//fabphly2ac2j7g6SIh20Og4TPq9rFoiQdbbcfSyJD8zt+YzQ\r\nYlAGU3XE9h/eDb7qaxLkXzrpyeyclZL5/Ur0qYOh2RBys+oe0A4NDvMGhPhk\r\nF12w68LSATwz8Zqx6o6MOYuwr5yv6EKO+XB1xH4HwSzuj6R7O6yNPmZ6Lcu7\r\n9UvDr28dNRHEBJS2Qy3aNGLdxS3PpIVZycZwMGjZduNhziMhXLiXCJTsnJM9\r\nvTZShH2TUhq0MhW8Xghn7Q3YqKgVxC17MZlHzwEMlU/lXt8sSCT30bXxhdor\r\nlRNa4dvEMVYxy2xWn/DOv9x2LlkzVOnx+wR6nf7giRfFoBE6B3J5YGgvhtLi\r\nr4ogIZJY7fdfibYlr7v0RUye7bjGmrrdpbvjFh4SwOGNOC0UZR3E8KIGRw9V\r\nPC+7choHI0uaekbFBnLXmMW/zmpLTjz3Py+xtlUr74nmdSTxhozcTugHDKUq\r\nQTyUVPC+vS/bh8cCFMiNCsw28NCQOgdZ8cjvRSN4ljo8t4pb/iQID8Zt2cTb\r\ns3eUhqjZfeX3HHyetYQPliO5mKxOVWWI7nuOvEO+IzX6o/07FpoHFDet1+Cd\r\nS/XM0eVBOvICGxa3vcOBYKcfrmAMC04RXawSeZSrRFYgee3G41xkGKpjJw0/\r\n1CahPxociWmDa1gZJTLEE6Umsk3I5bpEGbE=\r\n=H9I9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.35_1650846881721_0.31526965858127687"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.36":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.36","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.36.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.36","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-eAZKJJK3tfxiK3HIOZ6vSBUOSlJAjaqcFrN4cPSbEoukk/HmXGJt27sc04ueBwOaRcZ2MN/P5WaFm2bXPuP84w==","shasum":"318e599202952c60cf1afff694746bc26314f51a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.36.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmsDsxK4uaF/C2SO7hN2xf45G1id7uMoImnCiqFIhfIQIhAOsIJG5CcrANhfXrApPNF4b9Oa51LdgviWX0n8Z6tyQY"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZz4+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrbXQ//fZteXMqCz3rQYXzv++uKHnXGnhrOFuqU6hFRgoND1JWJDpok\r\nNnqDGU+HZ3OguvvZWoNvy9ex4S2f0U3sxn6pWphwkKsdV3MR3R4Iz0MfH4IR\r\nbl6hfo58HbtCNOMS4HBUeeb2qaftJhxowOrn6+BwYPr5bwPlCTnuxx+/ogQF\r\n7uJoPlKgcBFWstjzvkkZk5OeJ4W5pjmzRjrUxRvJBenrGi5QC7u2nxKHwnTk\r\n3gdCxESxupAr9zRQ0th+UOxjWQuN2d/wIxW6RPFqqjtPixih7FXdRGe1DetH\r\nWAaKtA3bBkUcFU/EPQMhG8ISjFehDI2ZYGx+oFCCyTXmwIFeSPemXAogqOik\r\njUI1bqx9MhwMXxX0RC5pG0aX5iLnGtah8uMgo3IY3/+hdpIrvV4JiyYXjyjY\r\nl4LfpTf5il0R30fufzJPwza71X1tNbvbzIwkIpP6I5sL93E5xouE/sRECOxa\r\nyadDIPkyBumfkMrJtFHeebYauC3st8noFdUZ9KHUjEEyA36eAFpzGsUWaHZq\r\nYNTue2JQLTr+etxxGrxoHkJevfitujLBdhdYIoZoDbFuZYvDcRBfft7tPWs7\r\nezqIZCChb50lNzxrPjL5MeOz2lVdk+gxsvL4woM/iVTJzaqYiKy/ijTa6p8M\r\nSYUD9igJQX4h5vgggoDrkg8dsI3+3OmOA2k=\r\n=njY+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.36_1650933309864_0.02003890523544638"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.37":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.37","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.37.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.37","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-3HhANw3BktQdH/F78lKtDx/H0sNt0rmEhbHdMzb8RHaG7V8JYJq9f39AVtNVY2O3rzmyqXFUCIJT5e6EYUFn0w==","shasum":"d02c5986b81e3c447b5c0a9cc67effc9052cf77c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.37.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHhXJgGOdeDhOV2V06iYRDcrWRKZVl42jSI3HV96ye36AiEA6vDs8pihVJeaS1e4JifYWWolJUSq5oU5fQBj7TrmWHk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaI85ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpY+g/9FhmCyaD5ZFr0rniu/9v90RjV9Xf9yPi67d4X5wI4USU31fRx\r\nycrXkzi7WdStIJ/bZAGZibgnmImCXpNMp7GjzGBvyhI41HgfaIcBiaQN/kCH\r\nXpErJ7aJA92Px5DPn2Vq57aPlaWaSarLFEGheT5STjitCyF/qfgb6aqiJ0GK\r\n2uN8H1vnkXBGmho/3NRzN1S3All2p6wNjIk/M5TtwW97Umi86z7MM+L67IS5\r\naoFLj8xMaIfaRoM/UvgmgRwyIkYQaJ7N7uV4gsOaPiJ7gBSXb2VTY7xhU+B2\r\ndFM3a5rnPhs80GVlYWglPu3MvGp/D1Vh11rAeaivJZFU2/BBb9lSQDywaqmb\r\nqDJfLrhVM0QLpHoZqpqyCL1VQjsYR4WDsK+Jpvmv4ec0Eewd5CmVuK2mHBwY\r\nufduU2s0q7PasFjtAOz8T6aB5Q6TXz/Jz14ODcvCE2OUpNYs3TCoSGp8xhWb\r\nX3oK7KCoQBxysqZzsX9H+LmOJJhhSUI07MJtwWawcfOmKHj25/ckrB5jjrv/\r\nYejHiqVEiYUZX7UPixmQ1ZPld0h+URs2Kk9AeBzlCDvq7DfjVJPUzD9AVU2/\r\nyAcFFxolc58mRmB4JIPUu1Q9saHEvP/lUSSr11H56OYQkJEdTzCNMEiPapIE\r\nbDQRwFQngAI1egDMHSRARiw4tHeNGBlIdkw=\r\n=ltv+\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.37_1651019577185_0.5213971545802534"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.38":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.3"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.38","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.38.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.38","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-oOuYeLPtG047aiF0nxIdCeqNWFqu6PdjcMEQBn2t10EQRwlebomBglWV33s9wiZoBiMKGOg300ophvu3DC4FNQ==","shasum":"99ca6680304ef2666ca64cd775d3fea513ff5b0e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.38.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHm5H9SfWgfPe1BVPGEQyjbY4eD59L3sSUA71+e1uvW2AiBkpCV0HYfAPmTRrGpqCEzQROk/0sSx371MC8zznEpufQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiaeIYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+hQ/+PqYXzJmDN3KqifTVqPYDKAwhAaqBUJvoCH/7i9IAmZ/LXumn\r\nOMflTlAo5WIDoxrz22NG+BSPiYtHpCXQbpXvEDGU0t2GggS0ajMCnVClYAe+\r\nWYS5y5NI33wwHeTklHDelTgxIetEZZqyAnvAyHZ26pIphAeIitgiAg6sMCV7\r\nuMUFRIuc3mMYtTaPCIg89qaG6MEgfdmtaKjpYSJq43ADfqvAn6BaaaPnSzLC\r\nB6IpYqTD7/vrvAz+ANk80R9iXhJa94CkpqmWf8KkR3EdNXTtjWgn8+hC8Rsq\r\nRSccA4GZOw7/MIf47KJrj63gumgKhM1vaRd2+46WfUfxP45U9N8Ss/v6XbPn\r\nbUkM3+x4IwZp8tKGCBE8j077y58oFtdbNNaq3yTSRonP9wlq3F81810SACun\r\nHNH5IHUFmY/0l2dPWUfTEhz9lRaY8S1qy1HU08GepiQVhF+H9aE5N7uL3QPC\r\nfR8QrK34BnRZ5tonUFXkJ4Ob1CmuNzklaQq5cxBIxXPkLlJ8uXv/pYUkN1cj\r\nol+28XqwGaNe1Mr0T9MquSyEnIbSkPMrC52QFahh7QoC49cRKmLZKcszFyrp\r\nY9HG5HwbPNT1zGV5ghL9b7nwnRVK6P0IVkIVpKmxZ3mphK4G94foFNAwoJEH\r\n+iTql43IH51KVFHPhYTC0ub5NjofyAAlTqQ=\r\n=7oHb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.38_1651106327784_0.44569095950212456"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.39":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.39","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.39.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.39","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-ALcm1zA/ZgKpER4oi3M4cRqNeSo23UgiCNXn0eSvmitmn/vJUHaSslPJuvR7n/ju2BppJChIlczv3f4WcCdA1w==","shasum":"336f9f9dd3f614c7f2e40d6bdba53254972320a4","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.39.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH61FcnrZXFfPZBNbSGQ7VxvczhLn/zHUUpZjw63xV+PAiEA7vkz/DuvrTtHrhgDTcLBuvSrIpHjZrbTC0vmsrCoZXs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiazNhACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoXbxAAhBjlWrhSlGDPDUhcLih0MRiehafYJJJtaKh6+wpvnwgTB1eR\r\nw+Ks+i9/efUPp3Ldgi+rNcYr8C4sh70AIHgbUyH70R7Yw3XsglufiFThPJvU\r\nHMUfHobpYo3Mu4rB+2mV7I6gt5fVeQDcD8GcuK+MS/Kxx2UEYEg0Hqsapavy\r\nFEeEaHNfsSLc389jWhXxgb6iKjyUemiUqaTnvMtj4YLWEG8/zDRK+qqy8Tns\r\nmQiMmI8i6q4yGMy3+yuTT9awlVviE+2OnY+pHbsWhSSbz5KUazVbeF46Tqj7\r\nlHsNw5mjy0yvHi7bgFTHG0e9ljP+E3zeVrE+vv99h+x/WmDzgLjVhLCmpQgy\r\nS0f5HCZjz0+Yw2OlSVGEHzbupnJ8gGDhPgMf84AU3ySfDQy2eBUkGu8wfAa4\r\nfWJGtK9krAJ0s2xFmOjSAPjFgKE+xTbRZLPRtBOEiQS6PaHCpmEa5o6Qxx++\r\nUOHWEJMEE7gHAEZh3hndDv8l+kqwWinFyGrN24CRoAot06mHRWg7y1D6AFJk\r\nyl8n669uCfuSg2YKaKatHh3OJ/48h2bIiUT/XzxKRK1Y0IFcPD40Y1m/GrFv\r\nF3hBUtgLUHi4gKImlpToa13pZid4A+itz+bZfjpBGXaf4zGjHbRLz9BI1f+b\r\nWG5hH0EDSIM1mgWmab5fqPermj7v/pCdswU=\r\n=ayHi\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.39_1651192672990_0.4033033585720738"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.40":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.40","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.40.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.40","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-Gkhy7gqsVanbc5ytXLAs34ObAaupKbeSQH1wEtNN2g6Awlymeox8ICWG//bkNDDinytVyZisJ+2eQJ8iRkeo1A==","shasum":"efcc2adb8039c8864fca99db36d988fd6ca1b166","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.40.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDXOxjLCTMLGay1u5LkjT6DmB6ybvSEZX9nE8VufjeuqAiA+2I0KKL+XM8ix+ahCLp07uffgCHV2frHlHHmPm9KC+w=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJibIPBACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJfQ/8CPwm5hyvNcAIiogqXMWPmSgLtc9LhdAaGFv3AcT8VckyW0cf\r\nxsE3/R3HEuYBuwd8LM6FNvsksdodF1Qaaws3JqJx3zOF000PpXIvrIQtsemp\r\nN0SZGHpmEfvYalpmuNPUS8LtiXkcODmnGPPvqF0nQ+XrGHOvSasCY7FsWS+N\r\ngaomeC3CCmEdY8y5EXaq9HYBKLIR5qwvHw+ZQhMO7mhPk9SDW2pxRNIW49ga\r\n0xrR0bFmm2ki52lfLCZYU0GTsFFAdT3/eEpJ7R5jBix/SLN+EM1g6No1Rw0s\r\nyn86Bz7F2YQP/0GOWRG8ndsZhUn56EHV/P4R+0goNOr2GNAVkIe7FeNF67Sr\r\nDtUcz/r8P/JTNrITG2p9Fc1cwoF8uDJ1lDKxprani8bxUL/DUNrloBZZEUHd\r\n+Yqmu3OTQYlVZc07aYX3XofcGnGJPxboexjLadd0WLxah5/Qybb3ZuH1RTQa\r\njFGegViYU+4SThgOKa8Z64axn5/qQ1+cWgJl6kBeVuJItG7JUEGl4XvArmqg\r\nwRJ3bIkXgDG9okTGLIPppKn6sbnSo8g9yB7d6WYnnRToVWqSm4FwFpsC4dwF\r\nAqgo/OZgiLCbuXzZhSmIpnfVJII/0pQcp7jMu1/72uF2hXILvHZYQ/pEIoNa\r\nF56C7W8xhNF3+iqHH13jE6ckCisp8+KfAhQ=\r\n=zXJ2\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.40_1651278785395_0.8650224473444592"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.41":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.41","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.41.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.41","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-P9OSpJBI16xh3JSM1HPcQ3JWMeQqmhYGL45Uu8r5WR9+mt2999ee6rNRdH7rEEi1MNtM9WtAd0Xs8mkIxytxjA==","shasum":"78b934168ba57b02aff59875c388982414fa1426","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.41.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB4umWgjFRhZXFd4tFlwqGmq5zh+3dxWDzFW6treZGc6AiEAn7PN/E4K075LbDWUsmwMkrswoEX1QRkK896R83S99ao="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJibdXkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr2/w/8CQGDX7Mc17aeC2NyoV1CmjszIiiAwtAYDuN5ZOklP0JZRXel\r\nDFIDen0aK0rBgcttCIyoiVBdXSzvbWhJ6E8mGQ7mRgHdVDAFufIM0XFAjFYm\r\nxLHzQsl/JP27g8ZV9qNuiIIQSOqs12d1xblvwlAtDQ0wkyN/r5cVkLPKmjPI\r\nO112gsxFJxmHgmTLCldWk0FfJlJdDonjjDI0YAdm01ovzzS1xZr0vN9CM5Zq\r\ng4h0xFLFRND1z0h6haKd6UAdK5Vg4smgNt5GB+zPokq5YJajM1+hwjpSWTTx\r\nDU85S0fkdOA5I7roUCO4zsUro2YegOFQFDMMj1cRkPiYEXGCjxb6CNz2J5ml\r\naAmfHkR/CjOQJm/woKc3bYJgb39TS7dGGqi4qpQG2iVrHGVp0Qf/pySnD8XE\r\nH4OvlJYv3tkMP4sJ13MBGMyqrpj7FKgrSNz+Lshabd17E5n23oKtcE7Pkiqp\r\nbxgemyC7lGQ3kIE/guRFYY68u5p5VbXVwjFXhZGg4bnWHiAVYLPlyIG884uk\r\npdCGy9qPcS1azf4psLvo0Smc4i8e0uQYlrhpmYJxPy+PrYW+1/J2ccbRgDwQ\r\nC5CKPrS554ZfVrtX+JtNMRqUJ5snafDUpWaqyupDsl2YATwS36lGdYpK+y3S\r\ns20hXnxComFnyy5yw4z+SKZsbKM4xkwJa+M=\r\n=Piq9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.41_1651365348432_0.9725533013705394"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.42":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.4.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.42","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.42.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.42","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-4NfyoPHuQak1ynf8RnZNyo7bpGYj4VQoXE7vrvf5qrirAZlWnE1UX5egMrQjrZ0AO6iK5AwNmRRcqoo+/+3clg==","shasum":"0224b3b1b9935efca44093e21b73e96e4c0cfbc0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.42.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB2qa2CjE5QoGVHjd0pbCQ/RT4oSxNmMw3aAKwp/gESeAiEAwGe/RPGdBRTC6V0et7Ixrp0c+6Ikx+kWTEQHLaOOfeE="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJibyYPACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrhQg//SjDy6zZMdIIVZpFWL2DB23ofDz3XvVuCdIqU0ra8eEsACH81\r\n+TQzSCjrejnFdhtvM6WHJO6o1vW73f0ExIF4bVQZW0sHo1J6/TcB0GbyKJ3l\r\n20ULjnHVnrYHZGDrYPvACQTLgF369scfQjBhpr5q9u0nmEkg5RBJdG2darqB\r\nMOLT2A10TOqd6lTzOCOdfWBW3wEgO0uq+qiimi1exlpXmILbDS4XORvcUTbB\r\nT2xIr7U1/iqfsxNHb1r1QoKxzz1bcKRtRUyh/VjkpVi8R5iQN13jLNYQRSp7\r\n0Wu7ce+rYt6Ge+LC430DtynztCOqrA5OLQD722qdeh1QfJ1HHC3wX3Srp826\r\nqDg7quaE+JdjfD6+sDQPYcPj93Tz1P65tPc8dVYtev5dxeFlOBqRoJNL3JKu\r\njZ06B+2ePbEBHzV4i4rg+wvEvqBAoY/id8F1aokRiY9InWBNWnTe43ra2K7V\r\n8h/deqpYfZy4/rMus+O/qRvAN1YOuNgK0VM0RoXaEccuHVrMXbP5QqB0LtNV\r\nvdsDh5t1ngYphZqbpS55id6PqxFkUlYGBvYtwCf+7V+iyTaJuGYsgiqaY8aH\r\nDT9dCN10//KfYV9DtWnQbgZmpD01VtWcc2k4d/sah+VLU2y61VgaRhXOw/We\r\nUWY9hgN+S0/BnuF9Onk1qe3tkWZKGwLBxtw=\r\n=DgHb\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.42_1651451407282_0.9275385312139712"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.43":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.43","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.43.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.43","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-va1xVtDWY6UXGjPaEU18Z04bwciqzJp4isX0oQ/ya5a89Nf8ici8dMLz1AnNp4R/eOAhMzu3GFQRLRhUdQ4jEw==","shasum":"29e0b1bc524ea150efa31e44fad6232a35758f03","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.43.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCxvxxdskpEKvetL+KsZK1QB6QVgwiponl3OB29E85+DAIgeLb6AI7cqZTuMACcfa/mKiQ2NW6Ebd9/L0fsrnewA1E="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicHaFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJ1Q//dRK4KNahneT7D5Y2hlpeSURdyzLT1vsh96oIIhSIYOdBM3Gf\r\nfHY8t1IP4rCxZO0vPlUeJmkj3uWAwY6/4VP6VOv3yta+Vk8atJX2Vc8Fenq8\r\nXyWEYU4bkS+pEBXD8wf3sK+K1zlf6eFygywyHbD39Ewbr29z/V2xQkhn+0yY\r\n4riIWFsR7YO9nPg0eUrkMK4uk0GXao33o47aSK0fp7OiCboaK8h9td5qjuK+\r\nHF8APf5LxxKAqXQlOpp5nJDWkymRIFFy9wwK8i9sTAgSfr8naOyUz2GyU3Qf\r\nLq2lwLfCOpmeSl1PUNeVZdoU3nIBRpbiEsnwd9GS/MD0A/xY2p4PpFMAiR4I\r\nTN2JupedA3HkYDAZAvv6nnd94SGHf0aDFWPZ2aOtBRcRmd+PQTAirv0UoNMn\r\nW+6eGfA2611BK6LuDtRCcREktHKRSP4Eoqn5HrS7RHNwsLRSJETH+e3fO6YY\r\nNQcm++f/YaA4DUu5eU/KgKMBvCVrglYklzo27TwNeaptyWcMbuAaV8VYW+Xz\r\n9GwZy+z6AS++p3VTnhrVif9BVHK/Gr1UrGFmML3PwbCWZ4gWyo/xtqYJswC8\r\nGZmCdkV7GbsSfgIaBsr/VNzR34+WKGHAGN/dxsYjLQOeLGYOvzZMrPDK5Myo\r\nv9HwDwiaksYD72l0EVptOQ/DooZmb/UeJ84=\r\n=VHTD\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.43_1651537540797_0.7224320602395229"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.44":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.44","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.44.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.44","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-nA1/6yeN8aKMgzGtX6BQbL0O59nrwGm46Knj5+4oAUcrYRoyROungA0NzS3RdjEsgd+9VTellAfOyGKZmBs9Jw==","shasum":"135cfd7298ba36b72d4523b5e646b3fd2e287498","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.44.tgz","fileCount":521,"unpackedSize":3178537,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjfx79dLGQwCEZKABVzySB0dKJu8Qx/HBIu3kMKoqWWwIgbmlGs19VyR7BTRLMwYtqpjR5qgaJqrS/K85lbcRP0Bw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicciTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrHJA/9FzF0ylD3gr07L36ySBLSKcynBaj+i9x6YEkNlwG3y5M0ypfv\r\n/xK4NIL4wb/uYhG/V2M/6yQcSdJ041WdIgPgXtL63I1akf0Ncw4jLGvEXfTh\r\nG123iOj/NFyISXU8PesuULDP97ugvIGt/O4HatoIzqP1acd0yDy3d2W9+VFU\r\nlnvCQIFiYd8yyB5Liq0UndhgoGwLXheH8ypc298PblkJEgCqFAufmmbgowj/\r\njMqyfXfJlA9vqkA6j/K4dawxaCsAHXWa11TJ5nTibZHrjzr8i0OTRk9eEvBV\r\nPC1dsf/jVDhjymurLrqPaHiEghOP/kdB90rduc4ps5twOIEf73mNKbskDeWo\r\nXteKugRF+MrkzLEnxuV4w/0pmtzfYcwS3K6avL8vEOIPTZthtS33JWdGb8iV\r\npBqI54uY/8DsGoV/JEGIWvX+9DuFZrhlvx9rdusGDOuQQFmr9iYRbhvqN4mn\r\nKI1zvmPg+4RhfdP7LK6ssw8bg3TQeGiyQzdCENlye+BX4+G959d0YtTB+cnX\r\nLDFk+BoI5sSXRYNTfVa8ZeCjSGOEn8sJ9sTNFRh+kqDU/A1UxQBfD5rDfp3I\r\n0QwPAMJqy6xCaj0XviO9WeTkfwIYgFNaQoEDVcGSEPulAbTIm6AwEe1PemY/\r\nxMT8ICF6xQrC5Qx5HYPKWPydnzjCdwKZkKk=\r\n=ysk8\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.44_1651624082994_0.3829578188907199"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.45":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.45","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.45.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.45","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-iffrtw5wMDvRZW0T1xMQHClZ/JTl0gT7pb9J0Bii6RWlZ8DQmuc8HYcwg24qx/IyG6KXj+MRzbiTTcfKBVPdmg==","shasum":"d83eb6927d551a63c8ed88228ed771646cb50ea9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.45.tgz","fileCount":521,"unpackedSize":3178915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGEzANQBKnqqR6RxACNNgvAk/BtkVSJbbWvcWes8oIaAAiEAwuFQB6DlOe6BpR2xUNRWWmtAxgid3oicaPwesym992I="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJicxsEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoSMxAAjz9THNn3+DKE+5cE/HgwEFcX7litf4wSyxLloqFsw7iZwH85\r\n1ou3kb+WBqxipQUu0yG4y3h47RsDOpy2TaGcEk1DXMni2q7k/bHyjc8xmWKs\r\nCRn9A7c1n1FLjoSW2aqWRgG66Kbzsox+6IXBV2hRiUHjKImXGCA5X+RiaRJT\r\nb4MvGkSaBuV7WUS70gMZy0Kud9e/iGPDHHs4sVzpxVFnky9nZs2Ecqf8bZ0s\r\nnlBU/qMDu7i6GboBN8BXMQV/4pBH8NM+XVft7XwZqqSjyB9y4I4VBxntg0pO\r\nnS8fLyE04MbZxT1ygUv2rPefhRZSmQKUSKdz63CX9YMH4Uh0vvUyRPbUQ9xW\r\nLi9Tp6dVeWgmPVxAaAzZzf8qPqzWWZFIo3wIYsmnbEwG5gPHUw7pmnirYf+f\r\nrQgsgU+E3foDuduZcJbFlCGd943/QysML8+mPjMDH5liGBlzOzW6KRpCFdlb\r\nVl0gIYdXfgq7vKaqWLb9mFFRQPelZWpmyk6EQ5zA+h/PyrjGw88ZO68rmD8q\r\noGLBsfg5TCuYA0HAEJuYW1eHxx1M4UArZWEy1n2RKfBxipLrBcOpnZUNhr7C\r\nCdS+a7oUcIIiPS5pciIMR65upHv8BAuNh1lsiXU7AHvcvx6594+NO7xZEPMp\r\nmTffNDnxGADY5n1yANlc7O6WVRsELVf//eY=\r\n=waiS\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.45_1651710724575_0.16006731710428435"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.12.46":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.12.46","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.12.46.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.12.46","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-7yMjzAf0lIYIbgytM1DdoNxFA4rmffLMUyHZlBYyVmHl3fZPU97DxWOXKD2p4EEiGMp3ZZA97TXcp6E7VH1p2g==","shasum":"359b5d2db594bc0ac191af203f5bf14251ae565a","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.12.46.tgz","fileCount":521,"unpackedSize":3178915,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCzxxObiCEo2MEwcYGtjHPpxpFbCSQcG9m3Bnm9I/o63QIhAJGCSM/uVptt6RbCob87OLlw8owYIOgSVVkHy+AF2uNq"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidGt7ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmomfg//QPRCG8EwyYWSQPOdXua/gzhTR0GVLfs77krvqkSY3B7tj8UJ\r\nZ/7DlVDN3/hlP/gYcOm3TRGR3EtCIABMvLYeiYCOiT7+Pfs2cy14DZJ/FT/h\r\nkcHLMiBdKb8aAM0BGlBAKdr+9IcSnHjP9NQugJ3D1oj+Pm5+pcarugq69vQG\r\nJc10ESLciyZE7Gyb0fs1tZkydS8bhKgHx1x7G2X9rEDQYpAcZjwi45EQSSxw\r\nbty+Wdq5suRANe0iQ1YWaBjdaH7Emm5zkNr2R8fXX19LaGGe5BKqJUzh6r/x\r\nG5CGrY3mQxm8rgcNQmKOpk0dv94OAQrr/KR9e1PYrDS3VBBJxNZR0ZDXyAtT\r\n0YIvqxjLwDPnNK7yUCl8c1U9+GZgXwNCSrwnD2A43kOaty6UAM7ZuDjj+Q3L\r\nq+6vGXrSkoGYohZ/25q3lEf8TdX6w8nkM5nDHxUytQxSRMjw5cBoSU7cUDEe\r\nW0WHBwF8+4XQTKSUPIssh9cRf0ZlY9BDiMCS0mWQs345nXe4XHj3qJd5D/fT\r\n6fHeMbAWG4c+W5PXrZktZZOW2H1TvUsMQOim0yR9w4JxbDdUMcDMe/qfo8Ph\r\n3H+brojr9uEkGl3trOw3H5g7c4Lga5NAbwjTthee80hPgO4W0acSj+ghxAMj\r\nbkJkEn4ImGz3ttlfpyz1q1hFQaHcib83g9Q=\r\n=LYGQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.12.46_1651796859613_0.2870661411867321"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.57.0","jsii-diff":"^1.57.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.57.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.0","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-euqnVMBoLVV5eEAGgE5V03wX1ultnFFzfVf7lOtEbSIDqSghw0xZxFvwOWFIgRIE+8lLHeYT190FAKLyLyIcog==","shasum":"90a46134ce4d38d86f40e0276fdb2bfff733f219","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.0.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCtm8HjF0BPkwp5aiDyU256voiOldW1tWLgNa+A6PJPEQIhAOMktNssRz0QZJETOFXQ5OIQ400uvKuy4AReFd9hxyVt"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidUdZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoJiA/+N2UJ/96ZTXRuPqKFPNVS5KWrcqZynU7lJtQ/zpvLSngNxnh8\r\nFYQK82MVopOuorXe0hQkjCvvw/bTm+AyXyt440kwlJ2aWI8jAJeEysJ6pCkD\r\n0aBLrQr1SaiQvVI8Ne17dUoqVxBmAZVWKZvUfvLN1pBGtXR1B6r9FAEffPAU\r\nAIAoCl2cEH78L1nxKFwYDnLE4RJRRxzUHKWgHQq4j1ji2Wle0xZ6IW/yeN8Z\r\nR0tdjoUMge8/qSxrXtkksfodFAiUccV3a47YVzgLR0Pr7f/OQHXEL7lVcLSJ\r\n/RbEH92lU1raHrpYnM1mZRysJXKU3v9wghqOjF4OBj6l2oGEDV9vhMzY3Sqz\r\nmvaUMqcyMvJKegCAdxI4hZodbEhlJitW78iHltABCjyQGeF/fPum7ASuWUFb\r\n7Pfik+EZsSDYeukGQg7cRbCPBiUrUAU3o7sxxgaLeSXLovCg2llQ5juCVAlR\r\nPH4FaRUFamIktNch8GyEirbeiesUwDnWbjl6zW2KMOVZ9fKV2rvv2shaBz3/\r\nBssScCHuVerJBBoBHJMjv4ckDWgNHDD+uAnkmeG9OlS6M+6CWiqyxGAL9UOJ\r\nqc0DcZ0zVASEnCRqdx07g/aCJfSDH+YxW7bwtwJh1hPnhzQ5pR05Mb9QnClq\r\nPjzqbiiHIeqXiA2Uc7RD3jjOOT9FzaxOx48=\r\n=FsPn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.0_1651853145037_0.03503643034496995"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.1","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-C1A7mUbaCtfSMYWlvVuKMwNhrwznMm1Kf98cIGS4bj63C4BotsjTRjJSb4aABqeI9pufQ2dUfMlUbVr9VYp5IA==","shasum":"95d9a1f11610ab6856ba424320d6d3f747986f7b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.1.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGHRYSdhLx1tYDN7F/IuJX2w68+RenBmb9WEfE9VkvAxAiEA8Ue3Wzep7ub/sL8WgqDanKLGPwMhVxUq6sxRgSDQ3lw="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidb1hACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpLLw/+Lwqa6rIm0mXe3Xx5jjKm4Uk/sjqK2AWEHWlw/IWZv5H7UqXT\r\nMVcQ1SmPIoGz3SHkKGvUhb1gcVnlFaqnGtpw9Q5G799sanHmpqqVNThugb2p\r\nDS9rQJ7a/LDggx7o4wI1rx33AY06+UFUgUBCXT3bsiutlIZdePYKE+EeAtYI\r\nudlzfwUKjoeH0wu2OZo+wr7UIe5iicFP/YzoKpNpWka4htYjeF2dS7d2fVoV\r\nuqnah1wt02mTxPY9vWkeOjeeOyt6sn8WdAcM01LNMJadBPsmVOpvA0NHGsbp\r\nlyvZ1pONQQaHnDBG7Q8EntdRfXQYJ9nXMePaq8FPvUvUURLmE7+8pDxuuctE\r\ncsz8ksp3R4KOETwVH94FjJsleL6niQhVkMI4CE1j06NsZotsyoD7dqS71S21\r\nbkjsSaqv76RZo30h7HRk07JJ4bMtsN4Bz715uren/OLvDc0lF7ISinMAoSu2\r\nMT0ch5WnV/B1KV0b/aQ0p5L579OnZ590UfWiR9uirPKiMunphzqE/zwyetdo\r\nly0B+uQHuPCzixo4kftPmLPdm6y1C3+352AYCz4rziEtIAZuv5i8u2SA2pd4\r\nyIcKtJYUZdVKAXiBthASpYFNASfw2KPD51cnjsO5FcU/JaP7oEQGgAde6MB6\r\n+xjQxIL74HRq//nSshirao2MwqgHvJBtIIg=\r\n=FI1w\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.1_1651883360948_0.537745049739571"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.2","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-gRWgkY1HQHQO61Ch7WcHYOYo1O2wEh2itkRTrXd6o3m98GTuiRCiXpUo0Rz7vcKl6i9PKuQf+9Um43ssKbZh/g==","shasum":"a50d532c7973b68c1d9bc6a28bb6f93e1c5a760d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.2.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC41R7JU3ibjCQBdmkP3eYSnSf+AaGdSThm+jJGbJj+QgIgfbrUt0qV+ky1NF0gC7Sp70frVuWXeN3jstqKCJLbXPk="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJidxB9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoKUg/7BnkLUPWsx8IK1ViCdy6F1RzEqXKq7RmUM495bqtEPG5bgxVb\r\nMlUiwWEXihqMy5tHW08F+Y0Vu9AgvATKdItD1FYFWl2x/iYdaC+jHaRAns/C\r\ns5WLRa4b4uln4wX0yXwLNqccJGuMq6694p70mdvX0f7w1yMnMTR+EbRGVnz+\r\nGIjNtSJ+RZSUlK7A2K6wkfo274GXaZF/E8okVvouhLDul6dspfTauZ9tqP32\r\nXrLp8iXBDINpMC4/QueH30sW78fs6ZL+WjbGMWiubav0ToJOsfYUgXW3eMe6\r\nxTo608J6Tef/ZzbzDeqlKgsE9f4JgP1/Y4HyEIOip8LrHfF5nynZPMoA/MIF\r\nbCWuPO1OeZtBNqVlhrLRIqpfTAWobTZU3zhH7UWlXt/q5c/UjkANHd+xTL4v\r\ncYs4zxWZr8Fya0exG3g+t6nQ4tJ911QWuFVJP1TgXywa2LngB7GyowIuOwRE\r\noPCkQrUMFQKkPp02FGQqX2F0XwNwVviBfgfjhD/+KG8qb6dnTwhaARMFGi50\r\nsnCLQ2c+vCQJOi9IwwXKw88awXz1kY3b/Yuij/o+iH12lNMWCfiUsbLDWx3S\r\nzliP1zJDg31EI2VVW7e27Y1WQpDlnTQSVlcztKEpb45nBk/xG9kzzpAzWHsy\r\nT0CZeX1E7s4JBp7EYCbMe9Bt/a6Kr+mHgi4=\r\n=uosX\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.2_1651970173202_0.7802899109355192"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.3","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-9V/NrUe3b94C8j3cUfuLizQ7M/vozC8MwsZpIGeD2CFnIKYZHhXru8Xjf1ITAaWj8RWH3ppILB44Y7717F3NGA==","shasum":"bf6f94e1eb30310c6c9cabe99233483705d7b20c","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.3.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDXUWP4bfozFYzOe4gVj5nYpC1kNuRyfQVSe8MA8jYsEAIhALCUVifQ7AusRqSJbgHXsQl6n8MvbIUuzfHuUXkEdTJW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJieGHIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZeA/6AkwlZT8futFbdKJ3VNB76QmmNVkBdhkRuMI+GHew8ZsDcN3g\r\nga4udBHJkmR5aDSqxG+zRlQ7ymUjqa6/oScbLWeOEFBiPOOl27CRYj4zLN3+\r\nzVQtWL0Yd5CM+4kUTcUJto+s21se0hNnwhb868UVgaVyh+bRNFDkX+RP6mp8\r\nREAzLF+b+HX1tZ7N2B5dPIzxWfkC67XMPlXustaj7ijSzp9ZdzenmMoTVAFt\r\ngWRWQeaDoZDhQuUNWNWVDfkVhMRAGwdrnCHDGZTMkqpimXZjO2in/6ONkGcy\r\ncpP4ZsPJLAX+xy3RHyh7oHcqKlrm6oI2xDhHqKHH+DayKfD2KNNxa8upAAyH\r\nfWmGyNMktntb64pN0vd6N/F+usSt/lnZr3NC30sHJYe+0NUamjeL6Ju6Q/To\r\ndg8UuFe9a91QHRsK5oMVvNv2OsbAlhCBauh4YTZJ5Ivw8kIgbk2MYZiQCLOJ\r\nzarF4Yp+ildwelD9l4Wh3RI0ISWBubH89WXC9NdRq1ODA9TZqncX2ccDoO5q\r\nTErKo69QY+JAGhqUHS0spaSFncc4HRKqGhfjc8bPzRwiuE2VxwGUoCDVc3Zs\r\nybSy4qsIeEcugATLn3Veg1XGwW+V/H8N6wM3rihAI0sdvixSakAT1vWO5UlB\r\nKKxSWz/dGVQ53Ql4QNZ+LBu9WoMe9QDiADU=\r\n=dgEn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.3_1652056520182_0.5159088622891608"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.4","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-EA3994kA9z7nCRtHG4GszYOiHipC5NLcGOfO8cFY372P0+WCV8TNGXzdhR3/27e6vphAdPY+ZTGT9UGaiAVP+Q==","shasum":"188ec17c0ec9884c99cc43d210b763b810365924","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.4.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBT+0IH7u0GePb9JqP+4kAF4ruPI7+zFiSbkQcWZonT4AiA6QU6ykacYBHhYkoNLB7RHH9/hn9tsnvgrMW7mmamJkQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiebK2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqifg/+MoQ703Y6Wt16OfOnkb59p7Du6EgXMtpwLF4WZbxFFbD5hwCX\r\nDDhp0pSmYjabfR1SzIPVNQOSLqPOu/GMMvpavf+WdrjIwk/kPH7Mwhyr3cCS\r\nQYvKqENRARqH0Z8e4CyR80my07eWVz1zZ2BQDoW51SElSyROm6/sQiO/Yi6/\r\n0sJvBdstrp2orJ6dh/Fe2YZpAlp1g2aEkUh+xl0DJxyMclsXNbBvTe9TIh99\r\nQza0DYY/McHFr1q4G7rnY0XgW2jakYCEAIlDmKvWbcmnm3khN+2QmqU2cJGy\r\nF6TPmnN/pmRe8nC588doOcoMgAxI7n+bE6RE8qvBKnQrv/C0X/Qr0ySTdv3y\r\nlQgW/XJPC//KtE3lTY/yCjK9ZWEVnzrGpgeNlbJw9s0955sa/MSMndYzLCGu\r\na9TjAnijF+znnCl3wkNCFmlhvc9r/FGY7Rzp62j5GnxzYeynKqzoV0vVUZac\r\nLC0y3COk4Xsd1jZPgjoa3R/UEys8NDqx5GVo5vHm4AlBW6bAl9CDbuY24WnU\r\nizmK7wNtpDZwfgmTFCPtMimch/0/PyIJAqbT3FCb9M/Mu1PtYt94rl4JX0Jn\r\naEFAx9JG+5AJIkHYwNgTTOSeUSVpKA4oAMF0BLibJ0RV4fmTltJXCmUz1YM6\r\nUDFyNMvkrhNtCQuxZbGMToJup1UqmoEX3KI=\r\n=jpXa\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.4_1652142774590_0.21318950618008503"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.0","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.5","_nodeVersion":"14.19.1","_npmVersion":"6.14.16","dist":{"integrity":"sha512-djz8sv1KBJC8k5JsoLnh5cNMHoRsLGOH2VVIFbPMwWIJq9FwG/K3BUT/nAXy/TmsP/w4pFePZ5fMGtpsxLUUIA==","shasum":"be8a07f3e47ce25b3991801adf270fbfc86269ce","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.5.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+Qf+jokF+gn24X40FE1C4oOETlYkEuixN0ZipcRa/tgIgLxb/qhm8UpycH5hc6wcLdJu1nSkuj+Yw/YKe33DiCN0="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiexRGACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo2EQ/+MjoVTnt71ViiqEEr+BAqKHtjit66nC3Eo0JkHnqP39W5qBau\r\nuNGmyUaM6Ruf0eApg8S1Y0ev8xPibRkPgGLsHjSU8ra/wKKdnFWCx3AY1Jv5\r\n04OxBF4riz+CITpE3/b27lYoD8AW/RH00WB9Xsx+GOpsRLEUK7FMTAoRfZOg\r\nfK7hohZSfefmFwOlEGcdBfvhAt6yaCj8DWGzoYW+2ZGBdbFX0PIvwF5C18oK\r\nQrKILqC1Km4LT4ZM1hpTiCqMSqoUZ6kiTvNYfuPYXtA6dDmugdbYxiDGzfRz\r\nssgeDcMUU/9x5agPzbSVi/JK/PbBAaOMLjbpQP5UV/3IYkHFg9akRqwDS/B7\r\nUn1FptyqFFldw5fFzovP3PY4fb1zKoiniyR3W8kfbM4vVKTgka31PWz1A9OQ\r\nCKAAKDJqrGVdwfR+dZRGYOBrWezjlbuT93iUTQplsgqCcOdB5QB362h4pA16\r\nLlC2xuiXtGTX89FM26+4rhFky36vtlytaIcL3ymRf96C0r/R9Ghu0d02xXev\r\nD/m16YJZwdrVSSs6Jie0ysg28SEYaxvpy0SbXHKkWznbwD0yRd+P9QeZRWPu\r\naWUSuIDsGl4vSKR63td0xzcuZQCuGgPEf9spjQh4pSiu//Fu38Y+ImVrQDav\r\nrsoUaG4nVTbdT9ggIZqQ9V+Cj7YPfaxE6i8=\r\n=nI1T\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.5_1652233286048_0.8261791655660722"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.6","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-/GAzulxvVSSevc3Hy1sdgtiCDVz9DJidPGC3ycH1lh+a0cVB7TAmiaA+5lEPw0HfWKSd5UNV7OSp77aHfyhbnw==","shasum":"094cb58caa91a93e0017f37d62f31117259270ce","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.6.tgz","fileCount":521,"unpackedSize":3179756,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDzNVFvFn0aMsAxKLDw498henUqSVVz6nAMdr0qLsxUdQIgDzM9PPyZgyEQG6fXLLrKcvYqWe1bIV2G25+TOrruqTI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifFVcACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeqA/7BqxvP52XgW6KMiOEaCr3SvEQuTDVbPqt9C1xvv8WJP0jo1/G\r\nYjfOl3mnZRbyHXwOF8BOVthJcG/ooJKRhVa0hbp+Ppt5Ofg+t6/b0ia7DqkD\r\nNkgtSJ7mu9pIH9bt9/ruP6HiDFI34sNQTTAjfPBeAjE54MIjHk81j5W4wg4p\r\nBfHDb5YseokS4tkcPQ/IbWxE6lotyo6LdTa1nnAl781rqUn3NPns0+QwspdZ\r\nY2aVlYfX/nnHYK9cr9zUO64qVLgay4vCU1zuVAytoYbo1HjdCtHkA63+5CkN\r\nlqeGUSOcHDTKuzrk+M8ZBllRKMwvwNYNjxAauKNaIT2Qdxz1Pi8A9TEOttgH\r\nry+ZB/f2ELj/J0E9m2oQOELdiM+jtpskEWA02RacEc3IiNMhVlwkzOP/8SNP\r\nhLaFCUHqDMV9nz0EjOPZ4gdX1ncnWWVbTnfCAzyDkAuOpsM1J+oE9vimsU13\r\nD/dvHkn1pMlvZzQkWds2fjl3qP8sLwA2doElh5trhoqN031+P67ufduUGihY\r\nfj7DlqfrY2UgjbpOKrL32wbH3o/5UCSwY3o3pz41YnBAJfXjf8VnsRQyihCi\r\nHAHipY/+OA3gG3CuILjJmQ2suhA/B8AgvKuq09YxFtg93nh5noqXlN0UXsLV\r\nFnZ5atQuqO1iyOM16vkLHPXYPjSzf3Cxolo=\r\n=V4D6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.6_1652315484252_0.6581416121809984"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.13.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.13.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.13.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.13.7","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-45CQFl40I0PBemBrcK+wd4gdZvjTTvhwq0Kr6b+yUohQAHnjupJDaYRETYyoRCxvwKcyvilF6CIHay1SoyFpVQ==","shasum":"d75f1ff923b10d33964de8992c5709bc43cb7e43","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.13.7.tgz","fileCount":521,"unpackedSize":3179788,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIF9Z0TGrZ2gshznP18WwOaGHLHVbTvFvmQNUUSx+a+dNAiEAyZwrwzobbYevRXzKijI4PHb0U6RnOauHGtZMwuwxP4c="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifajdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp35hAApKccbkfJXM2n3ol64SxeDitBxYycnAUUiQ0z10ggXppa2ajz\r\nPIqKDLuSipOq93QTyqsaeX/MITzba5G4RkyVoJoJ/xY8aS3125WIZS2FiBcS\r\nVMQnjiRq9mcX2HLST7QBe+pB91Pq/O9W90na25crmTpKJNs1xv+2v7KGUyRV\r\nUxmFa0HFYtoJ4UxlyNhF0kHGwHFEWJ2ZaXRPu/P6qkaAO8bHsHRGgUJRSu2K\r\nm5S0WP0kq+wSli2awjic/A6XVV9EUE9FsyqWsRjsKaYVVDOfT7D8ZqvWZ2KU\r\njgBKiT04iKv9vFAmEIbI6TBO60fM/7RG0I/oIFnopvxaoXcOqwtwrL/wH5JS\r\ngEDPnmjsVhEeYPtNzAnu+URmfsmEfQ4F2QfwInZqKR7SQKeg7c36fKjvdqrO\r\niobbpZfo4/7y6+yM1xPLInFUN5r++t4JjHhwb+JxhFUgOpKyyuChZPihyOfw\r\nbcevhjHBsWJ8iokovjI9LGMrqNJPt+PdGA9x1qzqkzCaBat+8WIhfrQ2ePrH\r\nBgS8onnk1lNiBI4IrqQ8+zmgrHXjHPncH3Vg6PXeWj5yzC4P/qpkqNGKjmZQ\r\njmB3B6zA89iWvdeuBCLcR5M3N3JEz0Tw4ZM+g9CGS7lOooUtlfuQzCVXgmZw\r\ngg/MD63xMbbjs3SF2qmDAL2PcWR48x+P4vg=\r\n=UxHF\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.13.7_1652402396853_0.24349470221464276"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.0":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.0","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.0.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.0","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-QbO0R/mgvFLhI+jt7zTnYl5osnxlDC8GULrxnNnmE+e+Z1OGE2XgqGMULTwAc/DB14Xf5mvxRQNI3wMVdC0DAQ==","shasum":"ff3e741437e9f03a0cc0df9f9e0968abcc9101b8","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.0.tgz","fileCount":523,"unpackedSize":3191823,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH/hi7ypA1jpOOO2l6jCegfRkMhjKRThLpuicLp2zKxqAiEAu+Gad819O3f1Tv5YbCmOKJ9tQaWAejuUNZ/o2yHW52k="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifa/JACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp5nxAAhoSfjL4anYONuvJ7b++gn44lKTyd+wQU1ODzTdLp5DVdql2I\r\nxFSMelMs2zScU9FmXL9WapnV14zkhQGuUkk5QxU/G0I9ArdMmsBD7MoOxZpM\r\nZoHy6E8B0aYMWpEy4NPXLxxNp6n5cdt/zgINDz4ZDcrg3IKjf/v3juk/WxBW\r\nRXt4ChfWSkzEZQ/LhNm88yaY03teUCV8uC4XwgEuOq0+UZyySXDzkYiPK0y9\r\n/PDqeKNLbaRK9I3w7syzQ/+KSi+B4PGu3B/xh5dj+szT+BJLZMLuHwwEJxDN\r\na47YIL3G2cgPzuMxLcKryxHpOrGw+57D/QeLOz9/E4+isSs3IrACO+C0mKUq\r\nkzaMF+1hVPddZiIuii9avyGy8M4ZD8EbdfiA7W9iWhpee99/vw4qfc0qNugx\r\nvJE8Zfr1ovEafsYi+fMr2pFa7gqMPwNb33AT7HIETN7EvFEMKil/mI1HQ1WY\r\n25Jun4+LL00OuSf0Zzjh8KaY0+mujeEhPIJyVcr335Emp4o0A8hnPwPYPqUc\r\n3Laq4j+UXm6gL4aKKI24X1kGBWu0QPp94IpgQ4qclXUmywcyhs3T+zVPq3bP\r\nicWNDdkncCWp1DmiHro7aO8m8k+PYgq54vE0ATeNVTrgv+k3Y2Lb/6RXCQEQ\r\nSQcoBeM9nSN0lfImfizCvoMvk8PjWk3tVlg=\r\n=VPdH\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.0_1652404169330_0.2444851077394561"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.1":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.1","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.1.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.1","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-wJPP99zY4W0TaKJd8x+q68qmyqVFIs+UQGSwMWOzCXLnJjSJiiY6fRFEuwtTBX1vAiT5hKEZ9EfRe9C1eBZoLA==","shasum":"cfd13080f6bb8478e758a06b224ce859ff46ec6e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.1.tgz","fileCount":523,"unpackedSize":3191823,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDBN71DMJBG7E4qC7AJQ8T8dM1aRpQLHkM0VEjLZ+PxxQIhAMFm/I63895M+Kw+lTFCv+3tQR4ihjQYYbq/gmbA9e//"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJifvmwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrIFhAAi0e52/dPOM4jLPigGM7VQNw3igkguW/HJejKFSN8Xgm4OMtl\r\nPtzMQxIoCVM6ih4hG3DYJK0eqoblBoBg5owK7j9P+U5FgrwUE1bjTq9dBpIQ\r\nEoVLbZtCrbq9XmW9Aea+4tz0mvqZj8/LywlEgQLMSu+sxqarHLeRT4KBIV12\r\nzbZ7zc/gs4PfwEE6uLT7Uhe3u+r8tYEkmP7CVKEN32BLuuH0lHf9K6zSA/oX\r\nxdxxIdWn6wWnRxpsq5SSDh7A8R81oqj2vYzjtVilLfMKyPgEvwrDlWzxO2I/\r\nZfGeafzH9I3fDhGUh8upXJTUm37fIlzGQlbK7an75pivxq8jf6G2qFXavIl0\r\nptGFO8EUX0UnObQZFH6Quxrf9ddVngPBRxGpxpI+OYjatQTKWrhEAz68UY6w\r\nGDCR532+LdxuDoVCes6RpnOkxGcT/hIUMFO9dbxjscTlWjf5wRNap8bVZhTz\r\nSsFLScqS5VgWeWYGxbulGbChI8KMoT6r/R3RqqkpQMaAskLUHx+DKTf8On7p\r\nvBVysZiylbhAzRbkI78kOiTKiNpxTS/GLb+X9/nTXAiEXaZJQNd5qbY2iIMb\r\nGQcBk/2NY5A7V+JAphQ8pzS+pisRGLSQj+y4gWJfKC4SxDZbGl3/ETd47sSi\r\njjkHarOYvhyk0DXiLbAAaZqQdG3m2LgHDPI=\r\n=+qfV\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.1_1652488623967_0.8622361242958743"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.2":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.2","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.2.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.2","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-R+Ddb4+R28mFuyEmdn7bKZinuCA47xKwltrfRdldlTO603G75rz4VntiW2OZIeqGjdWS9UP77FuHWccEXoXKdw==","shasum":"f06f02e8acf94c96b8bad2038b12a6062de4a11b","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.2.tgz","fileCount":523,"unpackedSize":3191823,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVNcyes34Lbyz/E/pOgp/Lj2ugBcAm/9CtVKDIKxj/FAIgYdBw3jZe5/o4fldzUf1xDu9R3pchm3nlEAQfo+eEiLI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigEnIACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr+0g/9HYs7eJQRkwXwOfL6rsb/WTM80WhyGAVwlN3pDV/9N/HO4pSy\r\nvFPbcPFaNfwgMCVbLZlF8EgWZZpwDbRkqtYag/d52FBONBV/vORuiZz9s/n/\r\n3dcNyK8fz0G8v1SEqxtSbcAJU2hmeUECi9TfuoHCW/KKJOE3AMyI9eXFUHfx\r\nj35D7VfkjCj8nCWVtq5+FzZfGB9RAeeGKmP7Uo32qjEsLK5XXq+3Lp0RCJRJ\r\nlw2ZATzW+OIqZjWbIvgAbHpBKdQ2wuPqywQOiEird3Uh9rU6JooegUC8Kc7O\r\nT9pBo3vBA2WgYxqp+uqePPMfKOrXYaV0Fw2auR4kf9PYXWuzSLJ879Rb2A3Q\r\nwcNuqr87zHtpdWHkNiEgyNb/jOzayB2LgdQML5DmH134UaZVVf//UXsIh5US\r\nzBYtJZ2uU4V4NsEq7T6ap2a/jN56QnPvG+/4wIF9TQr/3w1SL5LjNWwrVCby\r\n/BLsrByhCWBww+b4GZmMftBS+0eKYDNVnrofYPDQeJ+uSySLVcqE26cFQg6Z\r\nTcesjlWDTkGlBK3k9F1VCtq+u4Kac5xfpgY6SWb9krmMHqAsc6UGmdhFS9Re\r\ngExQ8SdjWlBVrmP+qt12WvppGsb07Tu81FwoqLcUstMw16xXFGBbboID4F3W\r\niB4JRmcDv9eu8wQjkqvI7EYa88sSwUAnGD8=\r\n=9sJe\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.2_1652574664304_0.12491841735139642"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.3":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.3","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.3.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.3","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-f6lkbwaUuVnbDFDakeWSJ8ccKVGB9l1ZsndzWt6zJeSke1xeQXoehdu0yJS4fvAyhezMuZfMzFk2qku9YmXmoQ==","shasum":"34a264f1f590d1915a22aa57b7b8298832044bf9","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.3.tgz","fileCount":523,"unpackedSize":3191823,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCdMlvR7qrlq6mmaG+iZUfdHq1twIPDEA+tTiiatzz3tAIgfLFu1pmW3Mo/iDNCL/2yJU6g2ToIUkCuZzlDckrCRBg="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigZwRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqO/w//aQLMy0HnZZA8PLXHr05GP2byxN+vAu9MZ7B3cj2rgIpXbu7N\r\nXVBHUaEBH5zrLLZIa9Lgsm0PGrrZ3BCVTchUyGSLs2UkluUtT1NOCcWuLqSC\r\ndpNdg9ABjDpHu5rWn5DHfJUoS1Icm4IBtSolqLCwfSfa8XDDI8XLHlrNgvHZ\r\nPU4XWZ9Kp3Tst5CVLhrPys5BOBKhF31GKf+mpHAuuIWNqyvtcpatEv1w90Zp\r\n8BWY6CcnqSmZPt/JMue6fNFk3MZTL3uJXXgkmpkXi+ttJRQ9F8e+o0ThyKpS\r\nLkVqj4QkaTpaTCYgjxfVCJH4N8fjRaNEil3J1RidPWvs9FV/iQwL0jYLXCYY\r\njQXMcV1+GerbanDlRKXALXcPDd348WCLQ0Jx2iAnmCUp6VXyyW9FOqHs0NTS\r\n6ELI+D45BmWEijarCcgj5D0NaJkRqpHDRR551DfgBVHHqO2y1Ikr2kgg/xz8\r\nZiD4Ko7CJsN/Xz00OAldTF/OQbLAr71jwQZNblOf9xlm4mO99Bdeu9p7p+lc\r\nBGwzGegMO5TNdsQxlDeJLdxwTE4NRwQwbi4Y1OLuYPFW0fwaoVHSTQzHl8Bu\r\nr2ERiV0OY7do3iCtzq12tD+ISwJN4l4vLYUrG+brosW1c0yZFfOmJU4FdXrf\r\n8FZNCYzbne1zZN+Z5HjHaolw9AzLu89b8so=\r\n=NU5X\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.3_1652661265412_0.2781258002959852"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.4":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.58.0","jsii-diff":"^1.58.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.58.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.4","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.4.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.4","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-IG9MssSUUSXrt6fHQiM1IxTXIikIfKME25TnGDh+BttcmduZgS0dywnnXQrzvKbvsrs1P/HLBrG3dfmYIKuV9Q==","shasum":"0a83b83aca3d7479ef4d1cd8fa178f6ff4a0face","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.4.tgz","fileCount":523,"unpackedSize":3191823,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCA2tQneXr0QNK8DndTEW+26cFvnCPxzSRHTg3CAkgHCwIhAJgteLYpDHzh2wKXm8aFvohb/4KyptCHVkvsDcYfaXLW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJigquSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpRQRAAivIoDAlOGJo8qosGwv77IjyVKSdTvDFqaT6EDlDTvvm3E+WJ\r\n8SKAvQsUCB0VuXzIQY3KDnEoJ+SJ8GwXDiknnWIcrBxq5TKLO0aLwfgpFav+\r\nB1gD1EHzNfU5eHJWwBaAwpo/bmI2N04gpue5+8qndRU+kvhqbt2sNCD1dL5C\r\nz+d8I61hE8B/o2bI8uIO88X1KRE8pDD2Ihoylfyx0or8mpUzFjJfFzTBi7I8\r\nVhGHUC7sXVLVAnstN03mkXSdAK0l7W82HZJouxiTnPSyON7Mh9rEtRoPHuT3\r\nAaouteEUScQnvu0jWNewB4Q0p/sRAHFflp4M3Ukn8oMjuLIVhvE22Azl08RS\r\nc4/MdDbrkIDwHXEF4D7b4xYnk6LA8RYacUo5csdPxFVmDPosF359XRdzLgZP\r\n7dx3u7njxbXcs68v+rqLdto+wMVjTNO/pko8AEGh2ULhrve24jIzAKS+NCns\r\nVYY5qIt7C1Xrf6YPajMWPKHUVpEtafCV2/ANMtLmX5eDoUjqjs0bRWrtQyxQ\r\ntPs8ZW+iHd4smwopwhauZoOJhBfIuFHGk883hoZ6d9yfDu0xBgfdM6+l2nmF\r\nLw6KnmoZWP56nrAh2Igbsdre623LIwWoCGucJecVtvFP7F7jDUslIKBaZYqI\r\nE1PcfaYaRDqc7edb00McttbpGUhYe67RbUE=\r\n=ui0w\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.4_1652730770573_0.0011917073062530648"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.5":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.4","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.5","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.5.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.5","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Y4hDkWwhGLN3xrjCt5lFw2swXYaL4D5kSFMDBPTdkEIhKjAQpX1yGLC9gTOB6F3ySCHoUb2Kjqlhm4NUAAPb9w==","shasum":"11db485fa93d8b1691b0c93cbe46608642f56cdc","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.5.tgz","fileCount":777,"unpackedSize":3271145,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBVfAiwPbpPZtDp6sktFFmK06t7eNMpFjaB1+Mgu1CVKAiABqNGZWfXZ+S1MyH/230cy1oYGFV++UR1VTiV90DxGxQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihD72ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqMIw//cV+8Eb/UjVkGVptdMARguF5tNftSqTDHHOgXChhiJXJx3LW0\r\nBl8bmujOX2/r0mPN4L4rcIzO5byxdB31a269Fqt+EHh6qDrp/fuktZ9logDL\r\nS4lKko78xkze9Yu1z2T2XGQxy+FQdYToTF0v0uDZBWQoApjAaZHhpYXBhvD1\r\n/8+vkHwRk5qnv6jbVmesR8aeomDi2wmouintqbeoigmPcz+YptYWqVhLHgMV\r\n5sYtIumJGUwtxd6sYXfMV0J0DkkYFhxK4/0K8b2u7LLRriCm/WA17oEiCr83\r\nfY3zKAd8xj+kDyKNJFoJpumuy7QZXOgkMrpvq/N7K/l+EGN3/x8+++PLMHQT\r\n/JcN2IYgT/wdGXhOjD4SnU2042gF3I22jQh29NT+5tBN70d7pRcN2ux6yUMc\r\n87rAT8OFkSS3bfhoMYu06cUZb5GdXSlgkMItqYXRunpDCeh2zKhPaRgq3Dsd\r\nZgvGxPpOuDp39jMzZoz1e84FE4ZMOWFy0OW2CqWlZdQLh5iudHf6EvBKEWYD\r\nVpFXvCJ90K9X3KXNbvMTpAtlXXtmA9lKuceN0vqESjsj4vAcwOqEqOz8vK16\r\nbRj3nYlG+QfN2fBy2zOazJn9VElThbo1GygchoHghfWs0UHbdiUW7zpJdffT\r\n2gT2dMGAlWU/GtPqjtGELsqQcDrjvlpBZ4U=\r\n=nq20\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.5_1652834038395_0.8763410145480062"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.6":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.6","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.6.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.6","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Rw9AGhZ9uiJDqIxPhZyQrg6u0MDpH67OJP/2FKRaOQOdgdEGelKXnQzKKphz2mo9HZDdMDLoE+2HAcTmuF2Cqg==","shasum":"06c555247ee055d6a946dfc8eccb81ae4e95671e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.6.tgz","fileCount":777,"unpackedSize":3271145,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDqBqXgEGzYBxuS7ojzj985wK6Rd8ADN79nmZrWyLb22gIhALnLLvJIXtB6Uz6EEJiJGqAmG4iA/Pb66JEgRrd4YQfK"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihZDAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmry5Q/+KqY3rSxuZChdYmoWBk6iNl74PpqTfrkSTHsw9RxLxwgwWIiI\r\nnVpV0VGitqzvZRdUvRt0AVj1iT1d1WHEG8qACnL6rXAQj4GOjtOARClq2lmd\r\nu7871XE5DZvYFpLUq0+rTrsgV44av7Z29+YArOdvpR/TOzenqUKiWSvplfwg\r\n69rVzlhhhkCjE8oErMpBg4lmUiOLqqrYyuTuEtb/hYcn3kBPeMrgIz+x7SOs\r\ngorh9DJxqUF8rlqObhle0m88FeKQbM0u4cjZ81ObpxpBK02L49RUGxVDKJTM\r\n98QavraGvvqZFJYjI2HM+eLX+cFPSoC3g7/+6llvcSp+ub/7PBvGZ0x0Hx1h\r\noj2vYTjPK22/Wt36pJ4xtiv/Upp7sg/R9Em0QaYyDRBGQGn2L4h+tjcsM3sT\r\nPCEbeakznxEc+FBxKzt93Gu+vqBepAfmYwffvno2K2d+KI10CMXvh0AV6EAk\r\nl6PuzRKA+5nbkLc/1GVQMGrQ5HkxCBI7qSGWTBCTEYpu1V4GtO+ODEqQag/X\r\nMsejY/t3ML7FzFnjvq1ZRbpJpTBNAphSNR/K3nn2kXDaxvnal5GC1Kf/Kf8K\r\n1cmawAqgyKgBd/hMeLSv0oZpnXMK4pUPu7Ecc5sXS7EKCW9D+yf2WFopOsNr\r\ndjNGvkpNKDTzeZTSokgDHKL4/ZYfAgYYYEc=\r\n=tKr9\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.6_1652920512559_0.7421168091644894"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.7":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.7","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.7.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.7","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-RV80L/9INLIyusORXFVhug70xDZd19WhBZ+6/JxS5cHZz9+Y8dHUI/hGw+UebkihC2+EUkhcYWj6cKhPJZSTvw==","shasum":"78cfc701e1958a1f28dd242c90149f63dedf513d","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.7.tgz","fileCount":777,"unpackedSize":3271145,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDDZva1VfOyQtfZZ6/X0aEwrrKgidOFI2Xn4Es1k1EuOgIhAIfLnlcAvp7/VWVh8LX6RCPp35lUAmQbz2Trhqd2kH1B"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJihuKFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpCYg//bYMK5xxLuj+A3o/gkZt3LrYq0iD7wa3tv682J+vGkkH/ALpO\r\nn2v4gT3PIDRfZ2FVmvJdu9iLMo9fPJAL4lI/JaQcnm1FwVzlPxS81PIWXB3v\r\n2+Yabw8iGA/ODyVrNirJUueUjD80GsV3NgF5vfrtdeEcKvYsLishF05+0elb\r\nUPqhN6QnEKK/4HCBEoV1+VQqvBBGcER/S6zba3v992w60SBVjciE5ADYkmit\r\nv+JABHfwTWcgRZ8M1HcoPOeUqXd46BkXxBuoBpFMbZiwHCOCrETrhkPT2dTk\r\n0kokeb7l01GeEjCxGDVYOd9+ulmz+ypdIOeK4r8qxMc7OAb87rZxPsH6WAaI\r\nFQn0djevkqLgDMiX/LVT+TYv5GDkvamYafv/BS4ObIiThX68gQHw0BcKl5Sh\r\nTc9bLk82bbe6Uf/h35aB9XAVO9d5oyG98OA0wtXUxWYUuzFgijhseKo2TkfF\r\njiNgohywSyac3UAEaSA3sAsR16qtl6HikuHB3ELMk3XZ7rumBJ/hDB5A/JFi\r\ndm0eVyuFsB5nAK6kQxPDhZBFxgZ3ZYHTDggPmPkO1VhhgACKZuJgmUQcj7Gj\r\nv3evaKv1rbvYqqMosh1f24VxLwmjjpD83Wbzf6v+kFsgR8jf5xqykYIdZNnU\r\nz6lW792zZuwoVBw3432fVURXciOgM99gi0o=\r\n=nOqQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.7_1653006981002_0.8558609842788663"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.8":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.8","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.8.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.8","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-4/+im7WBPVfbuJ0FRWgLjwGFs6CuG34CXva99DU2oljbSuRJBn/PxpdyQCa83pnMVMpoofcTDdVtoctyQ7tw0Q==","shasum":"69817c5277ac52f4d5238b74429d4c9b8ce06df0","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.8.tgz","fileCount":777,"unpackedSize":3271145,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBGQCD+HthvNgX/bIz7lvqSmHg8d72QmvVZ2tcJ4g4yTAiEA/LoI2Sndh53AVy8gF8LqabAHP3KgGCoagOszl6IgdRU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiiDOAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmrgjg//Vc2tlOhX8V5SWVltSufBRlFx4mY1qrNBH8mAJAVygMtc+CXs\r\nrLbF6U2jyow8cWvxrkr+dVkv/pkY5ww+1Wu2tGAG3AsiqfCGtrQRwq3mnZYH\r\n2+H12IYP1eSiZreWZ9EkBPdBXmBPl8WzjFynlsApRQlAMxk1I6e5qOgledsY\r\nX5I6jUCM8S6pDksI0LEdWMj/4KKfElx734NxU1q76WSNor5neiMMoQ/9dZFF\r\npuTcWosmOn4RfJEYpZHXUUjvd9rthfYyvnF3/+FbjdHms7vgzB+fqXcOi06F\r\naPn/bE7KuQfTmthecKV5TcXo9KXW1TiWlC3sAYK+iCQfRwfaZSNaxuAjsDfm\r\nTcMUGZ+gnnoOUqom2taEPbHquGAuv7RFzh4rgR1781C4X50sSNMht1sTdn5A\r\nBZBz/JzjB/eGWVbYBo5qh07NEO6pBvsxWLeD1ZfPHVSc9RCta98eQ89bSfYg\r\nzYtZcE1j3dH7E/DVLxdPHe+KZZeMHG+/cW9C63EHD8ki0kJtRbHjkJ6b0gRk\r\nKty1HOzgRpN4N5Qxt+Pi57bXPEyouKe548CzGn4btIkEuCF1kODpZgIeyHdj\r\nbu994NL86dHUTgOaezl7u5MrJ5MIhcQKSzLAn0R0Q6Tgfb6XXPTovayxDfEN\r\nwbqbInQNFfMf0LpC8kCcsvJ3XYPlqXUzSLI=\r\n=VpsO\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.8_1653093248219_0.6194548190828517"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.9":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.9","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.9.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.9","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-3n7Nf1sX95X0EFetbsoSXoq7XQSeJeEjykfTEDbpfqyV6u01A5/cavIefvrUJ62I+SP3+j6RroyaaqT9MizYHg==","shasum":"48f5e77c4a97b613b4fcbdbea880f792d0ed3c52","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.9.tgz","fileCount":777,"unpackedSize":3271503,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDtn42Dp6SNU1zC1S6Tf76SMnXL22M9g6JmLtBK9l9TjQIhAKE6vEYhyRMgr+WajIx2lo30Y1h+AQz0kk0oBds0O+zW"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiiYXzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2dg/+JV7lVecRJQQJ4q0g9rfn5g3ylKg4xkiqz8zAchqlVamqFYhR\r\nJ7bf6JSBlethYQ7hkrUMa3Mtgrxf6+UjfTwQe8+mQy1rlISa+8dRtKWvlaEe\r\nMWugz52oDmMvwMp8cRMFeuv+wl//0+PBjKnOV8ODW2w3sXMBt2XmXJGL03/+\r\nXVwy/NLvS+tjAYW05cz+XqMmT1UlnH7efWYEEOSJ3282iEu+qlvxxdEsux4x\r\nzVp2+aQIQU7eIi5DE2k9KM6CAYduioJf76ERhFL7M16Q4/qHz6EIeNC41hPp\r\nOq6zm1uf2l4prEp41TUd1QQ16LGE8+lz5BrcTfebnOZs1O/TCydFtiX6jPlM\r\nc/bGzDHMXh8dcyUWNZotYiUTfGpbGpWvVdQj+ok0g7zTjgpA/CM+JzItDGNE\r\nbC0kx3IHvlglj9mgdjY58vusK5W3yZthnwCM98BrNghpN/8CVpM3eZb+1Blf\r\n9KYl5y37BM3+knNBlPFY2f1meFaAp6NQcsTncizV2RcGEviFAAY8mAmooHzP\r\nsWC+BWVtCOEcJK6mqcj8ebLSZegnrZfBD/VoMFvPL+aFBdyPK2iM3wxEeEib\r\nMfV7z8qgb0ocIrQ71+pWCarlcrOpHEvo5BfH9vFIXNt+abwBMGrJO+ycUqbx\r\ns7x52bddgiCK/NL7tScoHqCscx+ksp8wTy0=\r\n=/PIv\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.9_1653179891644_0.8679721841337515"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.10":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.10","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.10.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.10","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-kgO/1Jy89d1iO7W9fyA+QhQgMQ7I6UHaJ+sCVYdK5GkWSvjGTcreb23X00ed5VqrwJ/w0Dd2H/rW3dkQlgiWUg==","shasum":"57c19f5812c0e1ded4f0acee4b03b92fa148d675","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.10.tgz","fileCount":777,"unpackedSize":3271513,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDuLfBF5BWwkwRQ842+Yo5ART21NxaPea2f8HMuiR06WwIgMNlE1rB5QbRiTgENweWkmeQiHf6N8P4kw3FTxtZsGJs="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiitc5ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHtw/9GnrsQHI2mqHnUaEmT2YSTHjp7alsE/2uz0WttefyAqmeqOIR\r\nT8mj7yJLtSYyKrTpvDRTHqDPjddlqFjZBsyQSyqmrQfaQi9Cwnj6mhxkO0ap\r\n2SAD6hC67Br/Xq1qR5zdr6Nxiq5ogJnJwKV/0jSIL+C2ZXcLOaPGEOSd1jxr\r\nFOHVCHifJKaQUeC5CPtUMH6ppa+U4GhV2rYJEuGEc5LsnDTKXcEijGXcKHPc\r\nn542aenOm5xUZ37kZ1BpUuwFRAS1aQKEuxOtny1/TW/sr2T4Nk6t7dLPixSo\r\nOKZJ/j727E0k/eZ+EQScZTaiAO2+0Fw6MGBVtqlYDvcCpyTaNX3Pfq9Ezgc3\r\ny11NpJlfrr3bhJPwcUGKoWRuRCZVeUkMbsnKY93+LDKpNKV874pcVXUNFQex\r\nlwKR/ASphcyY1SCTiwer3uTYQ4pFQ3mR+geh+76c66+MMS5xjlAgB8iTUZKM\r\ncq/HfuQMGYieh5mgWjs/wA9ezQk7/inw9BntPwqj5y5UIMGPPxe9vYPcCLGj\r\nuGoMfsgE9HTjF/E89LfeDlPQshWhl61naRJrurZjsBEYAoBDAW48K94m3FQi\r\nY2f/AJ/LdvR+K8FYG/+xyakb2p+iOtjSLqFCeJ7j85QAa/63VF0xnVIENUug\r\nNzbpgMjY00/0ZIqNsKfggCcoXW9L2CWWetQ=\r\n=4vEp\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.10_1653266233367_0.22323081707022152"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.11":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.11","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.11.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.11","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-0NjZZO2+M0MTwffJXFjwJGDXKWvDsfgkNuGU/32YhjpSoTobuoomkoI2aYtTz/XEZFEyGHT/BF5xgIhnMWMCVg==","shasum":"6fc9a01e702333d4caabaa3ae660308559afb335","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.11.tgz","fileCount":777,"unpackedSize":3271513,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHFyy008NI6Kikzm6HwDbGRZFKOGlMQSGTLFtkQUiIklAiB9TFaXy4PydX2+zxB0lZkjwZwzts86BNfjH1sJM7WdOQ=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijCmfACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqj2Q/+OZhoKkAF3u1deDZy+29cQcrPZOcrEiiEIyFoD49+hNV6QRMx\r\nL7zRK0uZuWb4XxFk3r5EcPgwpK5Ku8liea4HxJmGZx2TH0qaBFLmnyxnmYc2\r\nxTgR4i0rGZx6o96vIjjinZoek8ZfSscLvV+b5K/PR/CWqMOS8k8VazJvOA5I\r\n2cWTxt7MsdAC4uRShoN//m2lA5+vAAMHR6WK5Rk/DoAb5HXkU595KCdqIJYR\r\nE/pS7BqMxyai8+xbQ/k5Hswzc5DNs5lgHnOD6esbI8/pzWVk+7anLWbXyMHf\r\nN+33WFdnENJXgP7S9qPs2WfXYmPxFuZi6oeIwyytdGlTVQ/FxsQ2OZ7S+0ar\r\nbdvVFMhyCuHUP4ezODUWOGqNGKPjq+Z+GRBit4ZLZZJppVmJW8racVoRaBkc\r\nDvUAcOorZ/Rrr50KQPpsOVVsnyzPSDsV+BZagRHTaCG4b7pS5KxzTH1KkEYy\r\nK9OQX+dNge4Bg/AnaozM1m/1Q9bMrEICWhl9Sgtzu+vCzYw5ZLUd1IGtyyUd\r\nNuvaHVeMjgnM32BPGC2JsOQ7UU6NLVd7jzVNRbExAyaudpobaTvdAEOt+ti/\r\njt0UyG6+8ATnPsb7kj3237IfdVxsbddTwUxrSriWFrqQ2XHuDZ3disGyYWr9\r\n4JwYXjgtJuKLJgl1CK1/8ho/quXIbDD9hj8=\r\n=Aj0k\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.11_1653352863044_0.065981470781042"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.12":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.6.4"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.12","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.12.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.12","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-7K0Q0ju5WV418vcpIkBxksJ09zseKHuB7id0uv8n8mtrQWYWaMtUCspaK5eegE2G1sCkkj++BSWbsBMNCiXI5Q==","shasum":"ce18166ced9f458352bd43e57594eea0154f4c8e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.12.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHrv50+JdLP5RUAlNz4wJWKcnQWewHiBoU+oIEJdt+LvAiEApDxuU2ux+YCwzRv3WEFasHpy+PC0tjofeYbAw/qO8FY="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijDRNACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpflhAAhrq6iqPYzlxBPRLF7lJKmDkn0a9rA3raVY7yilYcXCHbq+zw\r\nZ95JgsN2pFZJxyVVFV3PV6YmGJrGQPKE4Gk++hLQdK7JCviKQLMRKPKbWF2E\r\noP7531N7PqZOBMhJpxnBJZ6rwpV+8dmeQUEEbR+kczAJ2MyFjhHAKhR9So+P\r\nmJgHaXOJdlDjQnCNA4lHBcjl67uqyp5ix9TNJoKVKBVB0ZlZpAE+nn7VzltX\r\nOPczOCbCIgCqa2OLYHHdW0bMRWXqy+EByDNmmJ0yibHozj4yhayU61m3Q2oR\r\nGDDbIWyhlf5wgl++/qV9+p1/GlIAGiknkp2OAdjvSKcP8bKcw+/4srBg9xj9\r\n11qrJ3M+flvDeIaAPYBiVGnKii+UuJE3q6gVChhWykW1nDaeQmUaVtRcCOk9\r\nL/EoOQ8uO7sGz4OFhB6Faj9zZjyAt71tyc2hiztO2nHda76iPyc9a5w6xXET\r\n4TIbLbTfEuLNsonEu17eXmKa4oqMl4L9WHLx4gW6e1vhDEml0hF/BGJxTlDg\r\nxt4n/4Evb5qKQHKVbWmq4aFRVCn1zsPEESiUh4y1KUJY094O335kjSU26x6J\r\nemGuHcZC0ZBOeff5+K6IR0IArAqGNWM8t5A9RPh+ee34lLtlLhFYe/OTvLiQ\r\n8IVUOhDcCalyEygOc3H5raztftTNBrRMc8s=\r\n=tHra\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.12_1653355597376_0.6536630088147934"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.13":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.13","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.13.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.13","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-7GZQqpu+nrAP9YXzBfEA4Y8DMXvWLUwm2KWKh5LS6x7Eo1E8baBnhT2XTGkohGBtKMpXMt3FZqd9AV1f7TzjvQ==","shasum":"c2cb734d504a619de30726df25e545fb72f03f65","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.13.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICc9jw3gQ8s9rCvTxz7snz1zB6CL/oRDRIi6LPuMOZ60AiEAkJZqenkRO611Yp2vj/RGOGHoQzW0m2UTEK24tGO2a6U="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijXqDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrZ3A/+I8H3ZSrKy/cfyw8QwXlzfaMet16txsBhuyxvS7QxcfJ52zHb\r\ngsit2SDl9TF1Y90efFyEMF3KpGbd9HDcD95qG8P8GijPFNBoH+HGdLg+PKoE\r\nFUI5eqwe0x2IuHv5nwRQVkvArgWm0u2O322yshw/ET6C8nh7q3TM5NetHdAD\r\nkhtDcSpx0B6K7YentbecyR5L3+Q+ovnQmqo6VzPEQ+EtYqMZRrVxCIMZB2rr\r\nnKp0/02ChYiwgdoJdzaL67WBG7W2HYXLXotMmgyVL/85YkcDj2oGJl1UJeWS\r\n7PKITmwlUVjeJ+784KN8teYl2UH36bKn4hXmoBee7nGWnfEHDcHXv6tzGWIH\r\nk0oRmCUs6PBmcmJ/5VrgIRTbmcDlMBZnm7s3GLXD7AaoJiFirjjXe5Hj1Rmx\r\n65ehtt5uczLfVXKnc8mNTxF+o/byr8EIZ7O4pf2V4hLJELKkZTXkSeEZFyld\r\n10AwB+HPHcbyo1mJovcWbKDu4kxjj2V/bGHCpWcyZQMTwSie9T8Rth4uDYy5\r\n66abBcfvOrTrDCMvYYhieKXORlYaIeE07G5fFY8iv6Nb224e6vqjoxDBu/eK\r\niMbqFBnP/HatuAArQAemTVsQ8CvxUudWJoNgPii+pdyJmD+AFwFlAWNq1+Ct\r\nCOJa60dJHFc4DAKL+I10EXNoe7IsOM0gRg8=\r\n=Ayui\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.13_1653439106915_0.876677290384033"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.14":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.14","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.14.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.14","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-1jS17dUK+HcbYaStWy1Ahw29EvHGOHtLYE0HJpe8mdyEneK7/tKF06IJ+yiCRbvLq+k8Hp3oqeofTB+5d3sbNQ==","shasum":"d4f77a31e3d366aa3ec1a1b58845a289fc23eac6","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.14.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDUMzp8xpmeb0NXg+aqdV51o1Y/hbIR+62dI6kIg+JXuAIhAL2VUBbv9mJ/5FfSO0+OaDc5iXYaxzKiQhUO6TKHBkF3"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJijsysACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo0iRAAljY70XR5b0Kqx5s+TzmBtqoTD28HORtHo9N28RsUSVe3lPsT\r\nJBxQYBondIrzCQ8u1uwiMIAwj9++ykjjHNjRs1cQ+lPJvz8xnmfsiRsRo/9S\r\nz5LZnf9OEMyxh1FopF3N9+V3luoyjUUMfHX/y7QKFp68n8P4awAZW2EqfoC3\r\nhM20LNYstleGFF+hFIUEvyDNRLbWH4F2e+crbOMyo+JePU9t7IxyvXlHgBTT\r\n5N3FjSwiZ4uQxt+ifR31BiBE5NEUbuTUmwkuTXcoPY8wziylWYOBo44axT5K\r\ncEQG4plRsXj4BIfliorrlGLCpKV+7UMKDYl6DF0bGKiKIWyq9Qw1jxIPfnwT\r\n7v1r2uJGJ0U9hejJhBLdmyQm6tlc8nW7cPy+qS3jQ0TSzE8z875J+cujcjNN\r\nr432V1VlBalj2idWwKpJObHWMgnxC8Y+0CrfsrzmQv56M5Oif7b3qf7Yotcm\r\n3kKZisClBGbSvZCib9MCDv2Rv3fkLacbWrmsZC8rSTewXE/6UE5P8LxhhEbT\r\n7YXitabqQBCBal2/1KHCoh2Arjm1bxJwGo9A+Gsho0SY6xbFN9oDUhh73KeO\r\nQG6LkHpCU9UOarANLs9gb6LGPiRlnq/wQKQJ4lAEZcfV1DaGP1+Ym5hLI9oJ\r\ndUsz0BR7vQeU8vBWW1FC/7yRlQy1/hYDebI=\r\n=ACy6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.14_1653525676154_0.33289414638127734"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.15":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.15","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.15.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.15","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-IzYaGvp8AU79MZtjXyjTdsMfNizkE+gKllUaxa9AGPmVLVLK7szN8uL+SiHaTmaUNJu57rYzV+6p22b2k5GxQg==","shasum":"ebe6f5340dd7689164e5113aeb725af1afb826ec","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.15.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAG0gMjEkbBKKA60gc6op8olNrnK85RoYr4BjjUNzbTPAiEA4n5zhX7P1NMz5904W8oh+JJw/Zp1L0pDuVBIoI13tQI="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikNuEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp0MA/+I8F5/8q9p+sPdstJX0ypJ/kAcrq2It+MebX4Hs0O4luipXJ5\r\nW/nJz0sz50G/9OXjFr8RtAMjzt+yPUWMprmtiJmMjNO7DP/YiPN5f/Vsr5mh\r\nfL4vWCE01YHzBtmt5mDyde+uxLCsFnuEY24l8VBkMdp8m7srbPZu1siEy2E4\r\n+egKTRJP18FbL2NMtH1arudtNZgfA+g6ikey38CFax4SIc1Utfjj07tm9+3s\r\noRD+k66nG89l+0ZlsaDPM1I6258Ybd0Htr5ynSP/KuDivbqWOn6T806U2dQg\r\n+8d8ydK2DTUHO4Nx0ejho5GYJHn8DdJ+dqaeXi16OKA/tZxRt5TDtMmOVEAH\r\nvD5ih3TPF5xjCBmmHHAzXOa1DDQzuY5ukAE8EmJlMf793iFfw597U9xsEkiZ\r\n4XLU+gFINHZ/xyVlQDktB1KEbsCaWSIXySoiXbUGTNh8O5sAylQUOwWchURc\r\nXlonm7oLCiZ+Ftdv6wy/6nFXE1R6G8HXr2yraYGP2QRaSbUfKfloZlO5cxza\r\n28g+954tg/Wli8ohDvtB5sEuoA67FU3GlZnmkNgNmpvaFF1ZOlXdWMgyvbaf\r\n9eEzEiub1NOabhrc9J7/p4QYGA1N+INwSZyimT/9JEszr4yW8ckgpA8iEb0m\r\nkS3Xe/tfKkf34bK6EfsdnwwSDms4Xd4yong=\r\n=1QV6\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.15_1653660547716_0.7425775444975526"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.16":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.16","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.16.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.16","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-fkajjRbVPSWeWB0pqTE7Q6dSCCLZB6mJR79CAWyexjX5QNvvG+YWU8zLoNUEJlLxNJwvBc+qfa9SDS++XBFg/A==","shasum":"a603fffa929f2cf668c63b8d23811afd401f2a47","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.16.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIC+2lqPQjhv1JdGtFz9HbSGgixYO37AUDryBj0WTm45cAiEA7Q8eoxduC6afnLELjy4vefc5fQAH/FYCBDln2pJ/aDo="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikW7sACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrnYhAAhp4lBlsFVFt+VDk6cUzZVdiKRhSPoIZzjKD1znWMaJQ9HJPg\r\nypaIxktpAGFA2ubkkBONzqUCTYjPoVSI7KNZNnqeJ8a554zJUx+8xQpkpcOk\r\n6am9oAD3G5bobM3xsl+obgOGG/8oIZZBoFKRwEXDliSGMlL+w7vY+6je6ZES\r\nuC6UbGaZdDho2ehHpK2iBJ9yMiOwPIjvuPOzlY1wzn8n+v1Z6GtY2e8G+T+j\r\nFpVHmvRAU8BdDG22gQ5JV518S6bXYINkO87aO1fDE23pMmI483lExAybrme0\r\nRsW/ZYUc1TsmQQuH3Q5/zkhr+tjhofnyxo7wGMVu6J8f794VOssOwMFpw8YM\r\nnCSHg2g5RlTxqEfbmmb3L/gVso360Uwwb4IaMgxHw07KRxCfbm8gcb1SQ83U\r\nHRBPEO/g0TRM0xR+vkLGd5LgTxs4MPyUBwp5E6xd84arnRLlaBYxSzFkZGNW\r\nX90S6Z117AjIiI8N2tJS0iYQ8+FkSIkpAyF23Ni3UPKbT1xc+yg8FHnCKEmM\r\nRzXZLJbJMwgU0CDzjGygWX/oF4Lixv3F/g79isOkAJVc/tn00qqWdcwgPBjO\r\nttK87fNS5PrHgcgpvF+FPwu3/hI42qS+rOqkKWcnFCQtU5W7SlhwanjLBATx\r\nz6V2xj9FmQubGbeC8GDWEXoYuLllA/LhliY=\r\n=IKhn\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.16_1653698284559_0.721937019201019"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.17":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.17","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.17.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.17","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-Zg4YY3JNR+8xkgvvCK039N/L1a2+seJuN2NEcmpjJFAlpClmqFFxm0Zz1hEGl5mfHjXONv2nlOLaIIj97BdluA==","shasum":"51862d0dfd6b2175c11b709c4a3192a7323f195e","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.17.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBaqtHEuUhsNnSyUrvZPT6O4eE8eBXLESRasNfpYUDknAiEAyyhkTIdZTET0FQnUva76GVmY8WL37/WBYPiYbvTaPj8="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJikr/ZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmovMBAAir/UIMN8LyEHu6B5PssKS7rHe14Z4S0vzG5RmcjrnfwwsFv2\r\nCrWU082oq2dEQrkw8E1C8gopidO9MFGLv/1oiN2OIOBiVSvhq1JwhUKHT1na\r\nbCAx1EIcZdQG27RLXzE/K+asH8dbc99UI/FtNz4vlDQLDjZAvcNMffH+ZHY2\r\nNx997w9ri9z+ceCJLQLmN2Ng+resV31xR5eh5vufwqi7CS+ca2V5+STuyv+5\r\nEHnEjwTVAcgY0CRTvZb0HhneiWUOnjJBhk+1FNPlsjv6FY0O55+//p/z8NmK\r\nBY+J8Emrcibyjo9xQXKgCCE6AcmelTsVguMxpLTHhKF+NP2eZO+0qhEy5yko\r\nhZ4OwcyFS18PaZgCLSs0lnrrzUby9VvvwBCi/jujAKnR7+Un6j5/ilVPQvHH\r\nqlEIUFztp8nwLNaryOMthRPcb1VkT9rJGyCdo/sYlXg6UeSkERhF/1LiKO1U\r\nrPLODd5A99mIoBYvF+S7AYZ5uo6OeF+yXnm70QJK5LzRwomS0YjLWvxcna/B\r\n/g8C8oPKOczP/Vc6hMV4N6Cki4Gp5Dk4dvrGFICNcWNldNApKim4sn5dx8AO\r\nxE0T2z1Cfvx497SrEcI6jI6kmPvscShWDrEE9BHywPmoGtwtEiiHV/3l316J\r\nK0yVU7b366YChY3iqSmxFbJTd72EtdaApJo=\r\n=d5oQ\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.17_1653784537449_0.8232216249706432"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.18":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.18","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.18.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.18","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-paSatb2sT6uHpytfqslltmWDra2DhqLQmDSZ5W4k9ooTcHK5XlsTL38BHtyNoR8oTNWyTDKGIqFKxWcKC2JmQg==","shasum":"c1371336bf0908dc8541f0e80b099e9a42f8a6a2","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.18.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDwvW1E+oL43o5xkADLDXtoRsj/kD7esYE/z4CM5vmfIAIhAMczeujZORSYIaIdv4mQ/zyah8Ol1obom7jvzQs4c7Qz"}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilBGzACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpomA/8CSOo0k70WDOvXeMt+1EFCXkPUMaSHry6SJJa6YbcBoQU5HFf\r\nKyI0cl6UBPCcSWQmJOHh2hXDnid9/aOOguTO3AS9HtJzSRDQEMMMor2dwdfs\r\nyROg57AsqSIMD7djG8Uf1DDycipPe73rhUhTmvKuxBd+IpELg4H49R6oNBl6\r\n2+GaaY98vQuDwOAaHBUYCRnGwbdx31nUeh1bU5SEwxksN9lStJ8F/Pq9j5mo\r\naCvOavF0xAqTdNQ3N6rj3rtZbEGShAcg3itwUZeYaQIv5nGj/BXxN9cHzebj\r\nD+d7ThVMYMVXqzsmTG5UdOAnpxXeSzC6YeB0/bWGLB9Gg6RYZCXqCes20l2Z\r\n/L0kPUIIms9DkNsA+F5hohSg7qkixmysbCAAYvRXGsolBfQ3YmDbCWYpOB7Z\r\nBz4cyngAPGi96WHyISyz+0PwTayEG6MVlzC6nSI51lWBRQfq65kqbZbdN+am\r\nYAi9TT4OdayQIsM3u52VWFjr9Z1QklapvEfgk4sjslKkEOW1ahCQHLO8fQ2r\r\nPTTymvcKKiZzgLKvj1AeGqGU8XFFdQJFWMDB4jW/EEu+3AP9itds+AminBTx\r\nuttSvWDj7jFAMTN3CNUoZ6nFRSaDqo4tDWAlBROc0jPdoxofDdXdJ6X1Guhr\r\niZOHffOZV/RFAZs3KlyVOs5LFEEbepTePyY=\r\n=y7AI\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.18_1653871027133_0.28622284909683726"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"},"1.14.19":{"name":"monocdk-nag","description":"Check CDK applications for best practices using a combination on available rule packs.","repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"scripts":{"build":"npx projen build","bump":"npx projen bump","clobber":"npx projen clobber","compat":"npx projen compat","compile":"npx projen compile","default":"npx projen default","docgen":"npx projen docgen","eslint":"npx projen eslint","package":"npx projen package","post-compile":"npx projen post-compile","pre-compile":"npx projen pre-compile","release":"npx projen release","test":"npx projen test","test:update":"npx projen test:update","test:watch":"npx projen test:watch","unbump":"npx projen unbump","upgrade":"npx projen upgrade","upgrade-projen":"npx projen upgrade-projen","watch":"npx projen watch","projen":"npx projen"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"devDependencies":{"@monocdk-experiment/assert":"^1.123.0","@types/jest":"^27.5.1","@types/node":"^12","@typescript-eslint/eslint-plugin":"^5","@typescript-eslint/parser":"^5","constructs":"^3.2.27","eslint":"^8","eslint-import-resolver-node":"^0.3.6","eslint-import-resolver-typescript":"^2.7.1","eslint-plugin-import":"^2.26.0","jest":"^27.5.1","jest-junit":"^13","jsii":"^1.59.0","jsii-diff":"^1.59.0","jsii-docgen":"^4.2.44","jsii-pacmak":"^1.59.0","json-schema":"^0.4.0","npm-check-updates":"^12","projen":"0.45.4","standard-version":"^9","ts-jest":"^27.1.5","typescript":"^4.7.2"},"peerDependencies":{"constructs":"^3.2.27","monocdk":"^1.123.0"},"dependencies":{"monocdk":"^1.123.0"},"keywords":["cdk"],"main":"lib/index.js","license":"Apache-2.0","version":"1.14.19","jest":{"testMatch":["**/__tests__/**/*.ts?(x)","**/?(*.)+(spec|test).ts?(x)"],"clearMocks":true,"collectCoverage":true,"coverageReporters":["json","lcov","clover","text"],"coverageDirectory":"coverage","coveragePathIgnorePatterns":["/node_modules/"],"testPathIgnorePatterns":["/node_modules/"],"watchPathIgnorePatterns":["/node_modules/"],"reporters":["default",["jest-junit",{"outputDirectory":"test-reports"}]],"preset":"ts-jest","globals":{"ts-jest":{"tsconfig":"tsconfig.dev.json"}}},"types":"lib/index.d.ts","stability":"stable","jsii":{"outdir":"dist","targets":{"java":{"package":"io.github.cdklabs.monocdknag","maven":{"groupId":"io.github.cdklabs","artifactId":"monocdknag"}},"python":{"distName":"monocdk-nag","module":"monocdk_nag"},"dotnet":{"namespace":"Cdklabs.MonocdkNag","packageId":"Cdklabs.MonocdkNag"}},"tsc":{"outDir":"lib","rootDir":"src"}},"resolutions":{"ansi-regex":"^5.0.1","json-schema":"^0.4.0","@types/prettier":"2.6.0"},"//":"~~ Generated by projen. To modify, edit .projenrc.js and run \"npx projen\".","_resolved":"","_integrity":"","_from":"file:dist/js/monocdk-nag@1.14.19.jsii.tgz","bundleDependencies":[],"readme":"<!--\nCopyright Amazon.com, Inc. or its affiliates. All Rights Reserved.\nSPDX-License-Identifier: Apache-2.0\n-->\n\n# cdk-nag\n\n| Language   | cdk-nag                                                                                                                         | monocdk-nag                                                                                                                             |\n| ---------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |\n| Python     | [![PyPI version](https://img.shields.io/pypi/v/cdk-nag)](https://pypi.org/project/cdk-nag/)                                     | [![PyPI version](https://img.shields.io/pypi/v/monocdk-nag)](https://pypi.org/project/monocdk-nag/)                                     |\n| TypeScript | [![npm version](https://img.shields.io/npm/v/cdk-nag)](https://www.npmjs.com/package/cdk-nag)                                   | [![npm version](https://img.shields.io/npm/v/monocdk-nag/latest-1?label=npm)](https://www.npmjs.com/package/monocdk-nag)                |\n| Java       | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/cdknag)](https://search.maven.org/search?q=a:cdknag) | [![Maven version](https://img.shields.io/maven-central/v/io.github.cdklabs/monocdknag)](https://search.maven.org/search?q=a:monocdknag) |\n| .NET       | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.CdkNag)](https://www.nuget.org/packages/Cdklabs.CdkNag)                | [![NuGet version](https://img.shields.io/nuget/v/Cdklabs.MonocdkNag)](https://www.nuget.org/packages/Cdklabs.MonocdkNag)                |\n\n- If your project uses cdk version **1.x.x** use `cdk-nag` **^1.0.0**\n- If your project uses cdk version **2.x.x** use `cdk-nag` **^2.0.0**\n- If your project uses monocdk use `monocdk-nag` **^1.0.0**\n\nCheck CDK applications or [CloudFormation templates](#using-on-cloudformation-templates) for best practices using a combination of available rule packs. Inspired by [cfn_nag](https://github.com/stelligent/cfn_nag)\n\n![](cdk_nag.gif)\n\n## Available Packs\n\nSee [RULES](./RULES.md) for more information on all the available packs.\n\n1. [AWS Solutions](./RULES.md#awssolutions)\n2. [HIPAA Security](./RULES.md#hipaa-security)\n3. [NIST 800-53 rev 4](./RULES.md#nist-800-53-rev-4)\n4. [NIST 800-53 rev 5](./RULES.md#nist-800-53-rev-5)\n5. [PCI DSS 3.2.1](./RULES.md#pci-dss-321)\n\nRead the [NagPack developer docs](./docs/NagPack.md) if you are interested in creating your own pack.\n\n## Usage\n\nFor a full list of options See `NagPackProps` in the [API.md](./API.md#struct-nagpackprops)\n\n<details>\n<summary>cdk</summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>cdk v2</summary>\n\n```typescript\nimport { App, Aspects } from 'aws-cdk-lib';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n<details>\n<summary>monocdk</summary>\n\n```typescript\nimport { App, Aspects } from 'monocdk';\nimport { CdkTestStack } from '../lib/my-stack';\nimport { AwsSolutionsChecks } from 'monocdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\n// Simple rule informational messages\nAspects.of(app).add(new AwsSolutionsChecks());\n// Additional explanations on the purpose of triggered rules\n// Aspects.of(stack).add(new AwsSolutionsChecks({ verbose: true }));\n```\n\n</details>\n\n## Suppressing a Rule\n\n<details>\n  <summary>Example 1) Default Construct</summary>\n\n```typescript\nimport { SecurityGroup, Vpc, Peer, Port } from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const test = new SecurityGroup(this, 'test', {\n      vpc: new Vpc(this, 'vpc'),\n    });\n    test.addIngressRule(Peer.anyIpv4(), Port.allTraffic());\n    NagSuppressions.addResourceSuppressions(test, [\n      { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n    ]);\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) Child Constructs</summary>\n\n```typescript\nimport { User, PolicyStatement } from '@aws-cdk/aws-iam';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const user = new User(this, 'rUser');\n    user.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:PutObject'],\n        resources: ['arn:aws:s3:::bucket_name/*'],\n      })\n    );\n    // Enable adding suppressions to child constructs\n    NagSuppressions.addResourceSuppressions(\n      user,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'lorem ipsum',\n          appliesTo: ['Resource::arn:aws:s3:::bucket_name/*'], // optional\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 3) Stack Level </summary>\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks, NagSuppressions } from 'cdk-nag';\n\nconst app = new App();\nconst stack = new CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\nNagSuppressions.addStackSuppressions(stack, [\n  { id: 'AwsSolutions-EC23', reason: 'lorem ipsum' },\n]);\n```\n\n</details>\n\n<details>\n  <summary>Example 4) Construct path</summary>\n\nIf you received the following error on synth/deploy\n\n```bash\n[Error at /StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource] AwsSolutions-IAM4: The IAM user, role, or group uses AWS managed policies\n```\n\n```typescript\nimport { Bucket } from '@aws-cdk/aws-s3';\nimport { BucketDeployment } from '@aws-cdk/aws-s3-deployment';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new BucketDeployment(this, 'rDeployment', {\n      sources: [],\n      destinationBucket: Bucket.fromBucketName(this, 'rBucket', 'foo'),\n    });\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/StackName/Custom::CDKBucketDeployment8675309/ServiceRole/Resource',\n      [{ id: 'AwsSolutions-IAM4', reason: 'at least 10 characters' }]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 5) Granular Suppressions of findings</summary>\n\nCertain rules support granular suppressions of `findings`. If you received the following errors on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Action::s3:*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n[Error at /StackName/rSecondUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\nBy applying the following suppressions\n\n```typescript\nimport { User } from '@aws-cdk/aws-iam';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const firstUser = new User(this, 'rFirstUser');\n    firstUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const secondUser = new User(this, 'rSecondUser');\n    secondUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['s3:*'],\n        resources: ['*'],\n      })\n    );\n    const thirdUser = new User(this, 'rSecondUser');\n    thirdUser.addToPolicy(\n      new PolicyStatement({\n        actions: ['sqs:CreateQueue'],\n        resources: [`arn:aws:sqs:${this.region}:${this.account}:*`],\n      })\n    );\n    NagSuppressions.addResourceSuppressions(\n      firstUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason:\n            \"Only suppress AwsSolutions-IAM5 's3:*' finding on First User.\",\n          appliesTo: ['Action::s3:*'],\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      secondUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress all AwsSolutions-IAM5 findings on Second User.',\n        },\n      ],\n      true\n    );\n    NagSuppressions.addResourceSuppressions(\n      thirdUser,\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Suppress AwsSolutions-IAM5 on the SQS resource.',\n          appliesTo: [\n            {\n              regex: '/^Resource::arn:aws:sqs:(.*):\\\\*$/g',\n            },\n          ],\n        },\n      ],\n      true\n    );\n  }\n}\n```\n\nYou would see the following error on synth/deploy\n\n```bash\n[Error at /StackName/rFirstUser/DefaultPolicy/Resource] AwsSolutions-IAM5[Resource::*]: The IAM entity contains wildcard permissions and does not have a cdk_nag rule suppression with evidence for those permission.\n```\n\n</details>\n\n## Rules and Property Overrides\n\nIn some cases L2 Constructs do not have a native option to remediate an issue and must be fixed via [Raw Overrides](https://docs.aws.amazon.com/cdk/latest/guide/cfn_layer.html#cfn_layer_raw). Since raw overrides take place after template synthesis these fixes are not caught by the cdk_nag. In this case you should remediate the issue and suppress the issue like in the following example.\n\n<details>\n  <summary>Example) Property Overrides</summary>\n\n```typescript\nimport {\n  Instance,\n  InstanceType,\n  InstanceClass,\n  MachineImage,\n  Vpc,\n  CfnInstance,\n} from '@aws-cdk/aws-ec2';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\nimport { NagSuppressions } from 'cdk-nag';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    const instance = new Instance(this, 'rInstance', {\n      vpc: new Vpc(this, 'rVpc'),\n      instanceType: new InstanceType(InstanceClass.T3),\n      machineImage: MachineImage.latestAmazonLinux(),\n    });\n    const cfnIns = instance.node.defaultChild as CfnInstance;\n    cfnIns.addPropertyOverride('DisableApiTermination', true);\n    NagSuppressions.addResourceSuppressions(instance, [\n      {\n        id: 'AwsSolutions-EC29',\n        reason: 'Remediated through property override.',\n      },\n    ]);\n  }\n}\n```\n\n</details>\n\n## Using on CloudFormation templates\n\nYou can use cdk-nag on existing CloudFormation templates by using the [cloudformation-include](https://docs.aws.amazon.com/cdk/latest/guide/use_cfn_template.html#use_cfn_template_install) module.\n\n<details>\n  <summary>Example 1) CloudFormation template with suppression</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"rBucket\": {\n      \"Type\": \"AWS::S3::Bucket\",\n      \"Properties\": {\n        \"BucketName\": \"some-bucket-name\"\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-S1\",\n              \"reason\": \"at least 10 characters\"\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/rBucket',\n      [\n        {\n          id: 'AwsSolutions-S2',\n          reason: 'at least 10 characters',\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n<details>\n  <summary>Example 2) CloudFormation template with granular suppressions</summary>\n\nSample CloudFormation template with suppression\n\n```json\n{\n  \"Resources\": {\n    \"myPolicy\": {\n      \"Type\": \"AWS::IAM::Policy\",\n      \"Properties\": {\n        \"PolicyDocument\": {\n          \"Statement\": [\n            {\n              \"Action\": [\n                \"kms:Decrypt\",\n                \"kms:DescribeKey\",\n                \"kms:Encrypt\",\n                \"kms:ReEncrypt*\",\n                \"kms:GenerateDataKey*\"\n              ],\n              \"Effect\": \"Allow\",\n              \"Resource\": [\"some-key-arn\"]\n            }\n          ],\n          \"Version\": \"2012-10-17\"\n        }\n      },\n      \"Metadata\": {\n        \"cdk_nag\": {\n          \"rules_to_suppress\": [\n            {\n              \"id\": \"AwsSolutions-IAM5\",\n              \"reason\": \"Allow key data access\",\n              \"applies_to\": [\n                \"Action::kms:ReEncrypt*\",\n                \"Action::kms:GenerateDataKey*\"\n              ]\n            }\n          ]\n        }\n      }\n    }\n  }\n}\n```\n\nSample App\n\n```typescript\nimport { App, Aspects } from '@aws-cdk/core';\nimport { CdkTestStack } from '../lib/cdk-test-stack';\nimport { AwsSolutionsChecks } from 'cdk-nag';\n\nconst app = new App();\nnew CdkTestStack(app, 'CdkNagDemo');\nAspects.of(app).add(new AwsSolutionsChecks());\n```\n\nSample Stack with imported template\n\n```typescript\nimport { CfnInclude } from '@aws-cdk/cloudformation-include';\nimport { NagSuppressions } from 'cdk-nag';\nimport { Construct, Stack, StackProps } from '@aws-cdk/core';\n\nexport class CdkTestStack extends Stack {\n  constructor(scope: Construct, id: string, props?: StackProps) {\n    super(scope, id, props);\n    new CfnInclude(this, 'Template', {\n      templateFile: 'my-template.json',\n    });\n    // Add any additional suppressions\n    NagSuppressions.addResourceSuppressionsByPath(\n      this,\n      '/CdkNagDemo/Template/myPolicy',\n      [\n        {\n          id: 'AwsSolutions-IAM5',\n          reason: 'Allow key data access',\n          appliesTo: ['Action::kms:ReEncrypt*', 'Action::kms:GenerateDataKey*'],\n        },\n      ]\n    );\n  }\n}\n```\n\n</details>\n\n## Contributing\n\nSee [CONTRIBUTING](./CONTRIBUTING.md) for more information.\n\n## License\n\nThis project is licensed under the Apache-2.0 License.\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"homepage":"https://github.com/cdklabs/cdk-nag#readme","_id":"monocdk-nag@1.14.19","_nodeVersion":"14.19.2","_npmVersion":"6.14.17","dist":{"integrity":"sha512-XMxEx3Tj5kascWXBS2R8VTAOfUTpO+trItooNhE69f9XVQTWgsh6i9XQUedTSY0tYXry71GRZWRU+dAYWOqAcg==","shasum":"8844cb9979e81e85c2e9f682789eefef1ac4cc38","tarball":"https://registry.npmjs.org/monocdk-nag/-/monocdk-nag-1.14.19.tgz","fileCount":777,"unpackedSize":3271768,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDUnLibrNM3N1T3jDgkqx9QiCXWbRaRc1VMayeVzzwc5gIgNbmhTERcBAnlIYsPkij4L/TP1Eky/BZ/aFvcVBWjNkU="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilWIZACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrATw//fCJs+nV09x2jXGSVH2aLDOE8OPTz/mvc1LWSeUqZyf9MePlx\r\nDK8MOZy3C7dUiQ1ZV/QCCONLu7yeOkLF2BfChWHKiXmvyKq7Qm4D+qvKQegv\r\nMyKUeVEeH4o/JAf+2ML2+4+v3XcWnozhlR782QBBhCtVaSZkXE4jjrp5hvyg\r\njDD80n2d5qBCJbAquCCTLMJ38wIw9bxfa49SfbiU7fye7ERsYwfvQiYizVdv\r\nKPbTpnYH4XPrytg4B22PPtULNhbBMJpC8Ar3An2YtdcSCjd3QCUVlf+p1njd\r\nHU5upHA5D7+bpmb9UgekMIYtyafe+K/EEyWCRAZ4BiAkZx9ipJTq5dAY5aLn\r\nRN6VoWaMsdX8HO89g88T0HZKJAFYJwyBpJLn89iI2/cr0wNBviToqQcX+aZf\r\nR3Kg9qfHOFmvpb6I6Rsq74XxX0a1f2fMln3OhSF2wxB5gG74Cs79P8yx/8Jr\r\nYZpz7q/lJe03izGwOnq+e0Uf00HAuFZcV9gdZ3K6xaGSBiiXN3IY35nRU4VW\r\nnGvLZLFNWrC6M8iw2DSxtfLhfh9XV5SloadCTFiRztfITHn/r8DqI8F3IftM\r\neU09zn96fJ6HIPHKKSPmwe7dmCOL9843+Sn5ajZy2As2dCOriGD7UmwqK+3N\r\nfN/K4A41RFwm4Kq2ah7IK0ctSJtbsU4n8KE=\r\n=rk64\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},"directories":{},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/monocdk-nag_1.14.19_1653957145640_0.0009279079322566108"},"_hasShrinkwrap":false,"deprecated":"This package will no longer receive updates. Consider migrating to AWS CDK version 2 and using 'cdk-nag' version 2. See https://github.com/cdklabs/cdk-nag/issues/814"}},"time":{"created":"2021-07-20T23:06:30.339Z","0.0.0":"2021-07-20T23:06:30.567Z","modified":"2022-05-31T17:32:03.320Z","0.0.1":"2021-07-21T01:36:54.977Z","0.0.2":"2021-07-21T20:59:46.211Z","0.0.3":"2021-07-22T03:08:11.663Z","0.0.4":"2021-07-22T19:54:01.808Z","0.0.5":"2021-07-23T00:26:31.907Z","0.0.6":"2021-07-23T20:16:43.414Z","0.0.7":"2021-07-24T00:26:03.240Z","0.0.8":"2021-07-25T00:25:47.971Z","0.0.9":"2021-07-26T00:27:15.340Z","0.0.10":"2021-07-27T00:25:29.984Z","0.0.11":"2021-07-29T00:26:35.851Z","0.0.12":"2021-07-29T16:05:26.860Z","0.0.13":"2021-07-30T00:25:15.083Z","0.0.14":"2021-07-30T22:21:51.649Z","0.0.15":"2021-07-31T00:26:25.692Z","0.0.16":"2021-08-01T00:25:46.261Z","0.0.17":"2021-08-02T00:26:36.685Z","0.0.18":"2021-08-03T00:26:34.916Z","0.0.19":"2021-08-04T00:31:24.047Z","0.0.20":"2021-08-04T18:07:19.954Z","0.0.21":"2021-08-05T00:27:55.394Z","0.0.22":"2021-08-05T20:47:30.196Z","0.0.23":"2021-08-06T00:27:00.450Z","0.0.24":"2021-08-07T00:10:01.995Z","0.0.25":"2021-08-07T00:27:03.534Z","0.0.26":"2021-08-08T00:29:13.939Z","0.0.34":"2021-08-13T00:35:43.004Z","0.0.35":"2021-08-14T00:30:29.078Z","0.0.36":"2021-08-15T00:28:31.662Z","0.0.37":"2021-08-16T00:29:58.913Z","0.0.38":"2021-08-17T00:31:24.033Z","0.0.39":"2021-08-17T18:21:14.373Z","0.0.40":"2021-08-17T19:40:00.193Z","0.0.41":"2021-08-18T00:27:52.492Z","0.0.42":"2021-08-19T14:57:10.773Z","0.0.43":"2021-08-19T20:04:31.745Z","0.0.44":"2021-08-20T00:31:39.537Z","0.0.45":"2021-08-20T19:41:13.787Z","0.0.46":"2021-08-21T00:28:48.951Z","0.0.47":"2021-08-22T00:27:36.054Z","0.0.48":"2021-08-23T00:29:08.778Z","0.0.49":"2021-08-23T16:29:40.133Z","0.0.50":"2021-08-24T00:29:06.831Z","0.0.51":"2021-08-25T00:30:14.777Z","0.0.52":"2021-08-25T15:33:39.915Z","0.0.53":"2021-08-25T16:15:29.676Z","0.0.54":"2021-08-26T00:28:02.932Z","0.0.55":"2021-08-26T17:39:46.379Z","0.0.56":"2021-08-27T00:32:28.397Z","0.0.57":"2021-08-28T00:29:19.323Z","0.0.58":"2021-08-29T00:30:25.335Z","0.0.59":"2021-08-30T00:32:53.600Z","0.0.60":"2021-08-30T09:34:33.269Z","0.0.61":"2021-08-31T00:31:20.563Z","0.0.62":"2021-09-01T00:31:34.407Z","0.0.63":"2021-09-02T00:29:16.456Z","0.0.64":"2021-09-03T00:28:17.676Z","0.0.65":"2021-09-07T13:22:26.578Z","0.0.66":"2021-09-07T23:09:10.498Z","0.0.67":"2021-09-08T00:29:32.915Z","0.0.68":"2021-09-09T00:31:34.159Z","0.0.69":"2021-09-09T19:58:44.753Z","0.0.70":"2021-09-10T14:11:45.656Z","0.0.71":"2021-09-11T00:29:40.682Z","0.0.72":"2021-09-11T01:35:22.007Z","0.0.73":"2021-09-11T01:47:06.037Z","0.0.74":"2021-09-11T01:55:32.725Z","0.0.75":"2021-09-13T13:46:52.964Z","0.0.76":"2021-09-14T00:16:21.916Z","0.0.77":"2021-09-14T00:24:32.079Z","0.0.78":"2021-09-14T00:37:02.217Z","0.0.79":"2021-09-14T00:49:55.805Z","0.0.80":"2021-09-14T01:18:12.068Z","0.0.81":"2021-09-14T01:31:51.134Z","0.0.82":"2021-09-14T23:06:48.306Z","0.0.83":"2021-09-15T00:31:24.061Z","0.0.84":"2021-09-15T00:45:57.405Z","0.0.85":"2021-09-16T00:30:04.260Z","0.0.86":"2021-09-17T00:34:07.507Z","0.0.87":"2021-09-18T00:32:28.884Z","0.0.88":"2021-09-19T00:34:37.258Z","0.0.89":"2021-09-20T15:43:20.777Z","0.0.90":"2021-09-21T00:32:33.384Z","0.0.91":"2021-09-21T19:29:57.286Z","0.0.92":"2021-09-22T00:35:00.011Z","0.0.93":"2021-09-22T20:52:50.837Z","0.0.94":"2021-09-23T00:35:18.953Z","0.0.95":"2021-09-23T01:06:18.518Z","0.0.96":"2021-09-24T00:32:39.801Z","0.0.97":"2021-09-24T11:24:01.097Z","0.0.98":"2021-09-24T12:00:22.260Z","0.0.99":"2021-09-25T00:36:36.475Z","0.0.100":"2021-09-25T08:11:53.624Z","0.0.101":"2021-09-25T08:21:33.315Z","0.0.102":"2021-09-25T08:31:03.295Z","0.0.103":"2021-09-25T08:51:16.146Z","0.0.104":"2021-09-25T09:06:56.953Z","0.0.105":"2021-09-25T10:15:42.420Z","0.0.106":"2021-09-25T10:30:21.744Z","0.0.107":"2021-09-25T10:43:05.139Z","0.0.108":"2021-09-25T11:08:48.873Z","0.0.109":"2021-09-25T11:35:25.275Z","0.0.110":"2021-09-26T00:39:17.459Z","0.0.111":"2021-09-27T00:36:19.121Z","0.0.112":"2021-09-28T00:38:02.392Z","0.0.113":"2021-09-29T00:37:00.314Z","0.0.114":"2021-09-30T00:36:13.116Z","0.0.115":"2021-10-01T00:34:39.369Z","0.0.116":"2021-10-02T00:38:17.632Z","0.0.117":"2021-10-06T18:53:34.183Z","0.0.118":"2021-10-07T00:28:28.872Z","0.0.119":"2021-10-07T00:56:59.531Z","0.0.120":"2021-10-08T00:27:55.086Z","0.0.121":"2021-10-08T13:47:36.961Z","0.0.122":"2021-10-08T20:28:12.948Z","0.0.123":"2021-10-09T00:25:45.327Z","0.0.124":"2021-10-10T00:25:33.286Z","0.0.125":"2021-10-11T00:27:07.166Z","0.0.126":"2021-10-12T00:31:23.339Z","0.0.127":"2021-10-13T00:27:53.936Z","0.0.128":"2021-10-14T00:24:44.141Z","0.0.129":"2021-10-14T16:36:57.527Z","0.0.130":"2021-10-15T00:37:34.634Z","0.0.131":"2021-10-15T17:17:55.434Z","0.0.132":"2021-10-15T18:17:19.929Z","0.1.0":"2021-10-15T20:00:30.404Z","0.1.1":"2021-10-16T00:28:21.094Z","0.1.2":"2021-10-17T00:28:18.395Z","0.1.3":"2021-10-18T00:31:38.306Z","0.1.4":"2021-10-19T00:24:43.960Z","0.1.5":"2021-10-20T00:26:14.038Z","0.1.6":"2021-10-21T00:28:31.495Z","0.1.7":"2021-10-21T18:04:34.782Z","0.1.8":"2021-10-22T00:29:35.847Z","0.1.9":"2021-10-25T17:56:57.746Z","0.1.10":"2021-10-26T00:29:31.457Z","0.1.11":"2021-10-26T20:23:43.826Z","0.1.12":"2021-10-27T00:39:35.945Z","0.1.13":"2021-10-28T00:38:03.519Z","0.1.14":"2021-10-29T00:34:42.097Z","0.1.15":"2021-10-29T19:16:24.792Z","0.1.16":"2021-10-30T00:35:34.610Z","0.1.17":"2021-10-31T00:36:57.754Z","0.1.18":"2021-11-01T00:36:01.466Z","0.1.19":"2021-11-02T00:35:24.917Z","0.1.20":"2021-11-03T00:35:09.871Z","0.1.21":"2021-11-04T00:34:02.150Z","0.1.22":"2021-11-05T00:36:36.945Z","0.1.23":"2021-11-06T00:37:27.985Z","0.1.24":"2021-11-06T18:48:43.245Z","0.1.25":"2021-11-07T00:36:10.771Z","0.1.26":"2021-11-07T18:29:58.527Z","0.1.27":"2021-11-08T00:40:15.832Z","0.1.28":"2021-11-08T15:49:26.270Z","0.1.29":"2021-11-09T00:40:12.625Z","0.1.30":"2021-11-09T23:40:15.686Z","0.1.31":"2021-11-10T00:41:41.148Z","0.1.32":"2021-11-10T17:27:23.097Z","0.1.33":"2021-11-11T00:47:27.057Z","0.1.34":"2021-11-12T00:40:30.440Z","0.1.35":"2021-11-13T00:42:59.620Z","0.1.36":"2021-11-14T00:35:41.041Z","0.1.37":"2021-11-15T00:41:29.948Z","0.1.38":"2021-11-16T00:42:51.642Z","0.1.39":"2021-11-17T00:39:52.084Z","0.2.0":"2021-11-17T03:14:31.818Z","0.2.1":"2021-11-18T00:27:59.960Z","0.2.2":"2021-11-19T00:26:40.708Z","1.0.0":"2021-11-19T21:23:09.648Z","1.0.1":"2021-11-20T01:31:44.571Z","1.0.2":"2021-11-21T00:25:21.859Z","1.0.3":"2021-11-22T00:26:56.794Z","1.0.4":"2021-11-23T00:25:29.821Z","1.0.5":"2021-11-24T00:28:30.516Z","1.1.0":"2021-11-24T14:53:22.126Z","1.2.0":"2021-11-24T17:55:48.114Z","1.3.0":"2021-11-24T21:09:40.334Z","1.3.1":"2021-11-25T00:25:38.240Z","1.3.2":"2021-11-26T00:24:04.062Z","1.3.3":"2021-11-30T00:28:09.424Z","1.3.4":"2021-11-30T23:17:53.307Z","1.3.5":"2021-12-01T00:26:32.250Z","1.3.6":"2021-12-02T00:44:02.875Z","1.4.0":"2021-12-02T14:26:31.326Z","1.4.1":"2021-12-03T00:35:41.901Z","1.4.2":"2021-12-03T17:34:16.911Z","1.4.3":"2021-12-04T00:25:29.800Z","1.4.4":"2021-12-05T00:26:41.611Z","1.4.5":"2021-12-07T22:16:37.251Z","1.4.6":"2021-12-13T17:11:42.388Z","1.4.7":"2021-12-14T00:37:47.185Z","1.4.8":"2021-12-15T00:40:35.521Z","1.4.9":"2021-12-16T00:39:27.074Z","1.4.10":"2021-12-17T00:41:11.433Z","1.4.11":"2021-12-18T00:34:47.299Z","1.4.12":"2021-12-19T00:39:44.057Z","1.4.13":"2021-12-20T00:33:50.911Z","1.4.14":"2021-12-21T00:40:26.124Z","1.4.15":"2021-12-22T00:39:49.769Z","1.4.16":"2021-12-23T00:35:39.630Z","1.4.17":"2021-12-24T00:38:23.660Z","1.4.18":"2021-12-25T00:24:20.956Z","1.4.19":"2021-12-26T00:25:19.601Z","1.4.20":"2022-01-04T19:01:09.803Z","1.4.21":"2022-01-05T00:27:43.731Z","1.4.22":"2022-01-06T00:23:11.234Z","1.4.23":"2022-01-07T00:25:38.508Z","1.4.24":"2022-01-08T00:27:39.554Z","1.4.25":"2022-01-09T00:26:37.357Z","1.4.26":"2022-01-19T16:07:11.045Z","1.4.27":"2022-01-20T04:18:03.649Z","1.4.28":"2022-01-21T01:42:32.039Z","1.4.29":"2022-01-22T00:24:26.810Z","1.4.30":"2022-01-23T00:24:07.709Z","1.4.31":"2022-01-24T00:22:46.208Z","1.4.32":"2022-01-25T00:29:29.410Z","1.4.33":"2022-01-26T00:26:55.805Z","1.4.34":"2022-01-27T00:28:13.859Z","1.4.35":"2022-01-28T00:33:08.154Z","1.4.36":"2022-01-29T00:28:43.978Z","1.4.37":"2022-01-30T00:26:24.959Z","1.4.38":"2022-01-31T00:25:31.117Z","1.4.39":"2022-02-01T00:30:12.042Z","1.4.40":"2022-02-02T00:33:45.290Z","1.4.41":"2022-02-02T16:36:19.781Z","1.4.42":"2022-02-03T00:26:37.020Z","1.4.43":"2022-02-04T00:26:48.718Z","1.4.44":"2022-02-05T00:35:01.862Z","1.4.45":"2022-02-06T01:01:35.271Z","1.4.46":"2022-02-07T00:24:08.554Z","1.4.47":"2022-02-08T00:30:43.397Z","1.4.48":"2022-02-09T00:24:47.518Z","1.4.49":"2022-02-10T00:40:20.657Z","1.4.50":"2022-02-11T00:27:18.567Z","1.5.0":"2022-02-11T23:54:18.303Z","1.5.1":"2022-02-12T00:26:28.349Z","1.5.2":"2022-02-13T00:28:28.485Z","1.5.3":"2022-02-13T18:04:32.644Z","1.5.4":"2022-02-14T00:27:50.775Z","1.5.5":"2022-02-14T23:41:35.681Z","1.5.6":"2022-02-15T00:26:28.457Z","1.5.7":"2022-02-16T00:23:17.653Z","1.6.0":"2022-02-16T20:18:07.546Z","1.6.1":"2022-02-17T00:23:22.798Z","1.6.2":"2022-02-18T00:26:30.828Z","1.6.3":"2022-02-19T00:24:48.698Z","1.6.4":"2022-02-20T00:23:35.417Z","1.6.5":"2022-02-21T00:27:19.655Z","1.6.6":"2022-02-22T00:24:39.358Z","1.6.7":"2022-02-23T00:29:12.921Z","1.6.8":"2022-02-24T00:23:54.713Z","1.7.0":"2022-02-24T19:46:40.318Z","1.7.1":"2022-02-25T00:25:23.501Z","1.7.2":"2022-02-26T00:25:20.907Z","1.7.3":"2022-02-27T00:26:10.961Z","1.7.4":"2022-02-28T00:23:51.078Z","1.7.5":"2022-03-01T00:38:29.349Z","1.7.6":"2022-03-01T22:37:52.677Z","1.7.7":"2022-03-01T23:29:17.549Z","1.7.8":"2022-03-02T01:02:04.990Z","1.7.9":"2022-03-02T15:39:32.069Z","1.7.10":"2022-03-02T20:59:51.646Z","1.7.11":"2022-03-02T22:37:16.864Z","1.8.0":"2022-03-02T23:17:08.944Z","1.8.1":"2022-03-03T00:52:07.979Z","1.9.0":"2022-03-03T21:15:58.926Z","1.9.1":"2022-03-04T00:32:52.114Z","1.9.2":"2022-03-05T00:30:30.062Z","1.9.3":"2022-03-06T00:33:27.042Z","1.9.4":"2022-03-07T00:29:49.028Z","1.9.5":"2022-03-08T00:32:44.247Z","1.9.6":"2022-03-09T00:28:53.584Z","1.9.7":"2022-03-10T00:29:49.196Z","1.10.0":"2022-03-10T22:25:02.449Z","1.10.1":"2022-03-11T00:31:58.807Z","1.10.2":"2022-03-12T00:28:18.034Z","1.10.3":"2022-03-13T00:27:09.599Z","1.10.4":"2022-03-14T00:30:45.074Z","1.10.5":"2022-03-15T00:31:17.022Z","1.11.0":"2022-03-15T21:19:43.019Z","1.11.1":"2022-03-16T00:29:49.197Z","1.11.2":"2022-03-17T00:30:43.996Z","1.11.3":"2022-03-17T18:26:22.818Z","1.11.4":"2022-03-18T00:28:16.432Z","1.12.0":"2022-03-24T19:03:58.133Z","1.12.1":"2022-03-24T19:13:11.363Z","1.12.2":"2022-03-25T00:28:45.685Z","1.12.3":"2022-03-26T00:28:20.694Z","1.12.4":"2022-03-27T00:33:10.834Z","1.12.5":"2022-03-28T00:27:41.696Z","1.12.6":"2022-03-29T00:31:07.736Z","1.12.7":"2022-03-30T00:29:52.698Z","1.12.8":"2022-03-31T03:32:09.758Z","1.12.9":"2022-03-31T16:23:19.352Z","1.12.10":"2022-04-01T00:31:50.110Z","1.12.11":"2022-04-02T00:31:51.079Z","1.12.12":"2022-04-03T00:31:18.168Z","1.12.13":"2022-04-04T00:35:12.286Z","1.12.14":"2022-04-04T21:34:46.314Z","1.12.15":"2022-04-05T00:28:12.330Z","1.12.16":"2022-04-06T00:30:30.851Z","1.12.17":"2022-04-07T00:33:38.024Z","1.12.18":"2022-04-08T00:29:14.368Z","1.12.19":"2022-04-09T00:26:37.306Z","1.12.20":"2022-04-10T00:30:44.083Z","1.12.21":"2022-04-11T00:35:23.741Z","1.12.22":"2022-04-12T00:27:52.105Z","1.12.23":"2022-04-13T00:29:11.335Z","1.12.24":"2022-04-14T00:59:57.344Z","1.12.25":"2022-04-15T00:29:24.410Z","1.12.26":"2022-04-16T04:26:44.058Z","1.12.27":"2022-04-17T00:31:51.024Z","1.12.28":"2022-04-18T00:27:44.720Z","1.12.29":"2022-04-19T00:28:47.132Z","1.12.30":"2022-04-20T00:27:31.478Z","1.12.31":"2022-04-21T00:26:56.675Z","1.12.32":"2022-04-22T00:55:40.873Z","1.12.33":"2022-04-23T19:22:20.981Z","1.12.34":"2022-04-24T00:31:29.498Z","1.12.35":"2022-04-25T00:34:41.953Z","1.12.36":"2022-04-26T00:35:10.109Z","1.12.37":"2022-04-27T00:32:57.483Z","1.12.38":"2022-04-28T00:38:48.103Z","1.12.39":"2022-04-29T00:37:53.209Z","1.12.40":"2022-04-30T00:33:05.669Z","1.12.41":"2022-05-01T00:35:48.666Z","1.12.42":"2022-05-02T00:30:07.539Z","1.12.43":"2022-05-03T00:25:41.125Z","1.12.44":"2022-05-04T00:28:03.288Z","1.12.45":"2022-05-05T00:32:04.845Z","1.12.46":"2022-05-06T00:27:39.912Z","1.13.0":"2022-05-06T16:05:45.302Z","1.13.1":"2022-05-07T00:29:21.192Z","1.13.2":"2022-05-08T00:36:13.456Z","1.13.3":"2022-05-09T00:35:20.456Z","1.13.4":"2022-05-10T00:32:54.881Z","1.13.5":"2022-05-11T01:41:26.387Z","1.13.6":"2022-05-12T00:31:24.543Z","1.13.7":"2022-05-13T00:39:57.196Z","1.14.0":"2022-05-13T01:09:29.627Z","1.14.1":"2022-05-14T00:37:04.215Z","1.14.2":"2022-05-15T00:31:04.672Z","1.14.3":"2022-05-16T00:34:25.634Z","1.14.4":"2022-05-16T19:52:50.764Z","1.14.5":"2022-05-18T00:33:58.714Z","1.14.6":"2022-05-19T00:35:12.864Z","1.14.7":"2022-05-20T00:36:21.232Z","1.14.8":"2022-05-21T00:34:08.514Z","1.14.9":"2022-05-22T00:38:11.865Z","1.14.10":"2022-05-23T00:37:13.641Z","1.14.11":"2022-05-24T00:41:03.391Z","1.14.12":"2022-05-24T01:26:37.621Z","1.14.13":"2022-05-25T00:38:27.149Z","1.14.14":"2022-05-26T00:41:16.352Z","1.14.15":"2022-05-27T14:09:07.978Z","1.14.16":"2022-05-28T00:38:04.812Z","1.14.17":"2022-05-29T00:35:37.680Z","1.14.18":"2022-05-30T00:37:07.345Z","1.14.19":"2022-05-31T00:32:25.939Z"},"maintainers":[{"name":"amzn-oss","email":"osa-3p@amazon.com"},{"name":"cdklabs-automation","email":"aws-cdk-dev+cdklabs@amazon.com"},{"name":"donti-aws","email":"donti@amazon.com"}],"description":"Check CDK applications for best practices using a combination on available rule packs.","homepage":"https://github.com/cdklabs/cdk-nag#readme","keywords":["cdk"],"repository":{"type":"git","url":"git+https://github.com/cdklabs/cdk-nag.git"},"author":{"name":"Arun Donti","email":"donti@amazon.com"},"bugs":{"url":"https://github.com/cdklabs/cdk-nag/issues"},"license":"Apache-2.0","readme":"","readmeFilename":""}