@actsecurity/iam-lens 0.1.156
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE.txt +661 -0
- package/README.md +203 -0
- package/dist/cjs/cli.d.ts +3 -0
- package/dist/cjs/cli.d.ts.map +1 -0
- package/dist/cjs/cli.js +206 -0
- package/dist/cjs/cli.js.map +1 -0
- package/dist/cjs/collect/client.d.ts +550 -0
- package/dist/cjs/collect/client.d.ts.map +1 -0
- package/dist/cjs/collect/client.js +1119 -0
- package/dist/cjs/collect/client.js.map +1 -0
- package/dist/cjs/collect/collect.d.ts +44 -0
- package/dist/cjs/collect/collect.d.ts.map +1 -0
- package/dist/cjs/collect/collect.js +55 -0
- package/dist/cjs/collect/collect.js.map +1 -0
- package/dist/cjs/collect/inMemoryClient.d.ts +6 -0
- package/dist/cjs/collect/inMemoryClient.d.ts.map +1 -0
- package/dist/cjs/collect/inMemoryClient.js +11 -0
- package/dist/cjs/collect/inMemoryClient.js.map +1 -0
- package/dist/cjs/index.d.ts +13 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +28 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/principalCan/permission.d.ts +125 -0
- package/dist/cjs/principalCan/permission.d.ts.map +1 -0
- package/dist/cjs/principalCan/permission.js +1229 -0
- package/dist/cjs/principalCan/permission.js.map +1 -0
- package/dist/cjs/principalCan/permissionSet.d.ts +140 -0
- package/dist/cjs/principalCan/permissionSet.d.ts.map +1 -0
- package/dist/cjs/principalCan/permissionSet.js +437 -0
- package/dist/cjs/principalCan/permissionSet.js.map +1 -0
- package/dist/cjs/principalCan/principalCan.d.ts +26 -0
- package/dist/cjs/principalCan/principalCan.d.ts.map +1 -0
- package/dist/cjs/principalCan/principalCan.js +195 -0
- package/dist/cjs/principalCan/principalCan.js.map +1 -0
- package/dist/cjs/principalCan/principalConstraints.d.ts +147 -0
- package/dist/cjs/principalCan/principalConstraints.d.ts.map +1 -0
- package/dist/cjs/principalCan/principalConstraints.js +472 -0
- package/dist/cjs/principalCan/principalConstraints.js.map +1 -0
- package/dist/cjs/principalCan/resources/actions.d.ts +9 -0
- package/dist/cjs/principalCan/resources/actions.d.ts.map +1 -0
- package/dist/cjs/principalCan/resources/actions.js +27 -0
- package/dist/cjs/principalCan/resources/actions.js.map +1 -0
- package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.d.ts +31 -0
- package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.d.ts.map +1 -0
- package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.js +114 -0
- package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.js.map +1 -0
- package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.d.ts +30 -0
- package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.d.ts.map +1 -0
- package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.js +110 -0
- package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.js.map +1 -0
- package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.d.ts +18 -0
- package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.d.ts.map +1 -0
- package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.js +123 -0
- package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.js.map +1 -0
- package/dist/cjs/principalCan/resources/statements.d.ts +27 -0
- package/dist/cjs/principalCan/resources/statements.d.ts.map +1 -0
- package/dist/cjs/principalCan/resources/statements.js +119 -0
- package/dist/cjs/principalCan/resources/statements.js.map +1 -0
- package/dist/cjs/principalIndex/makePrincipalIndex.d.ts +8 -0
- package/dist/cjs/principalIndex/makePrincipalIndex.d.ts.map +1 -0
- package/dist/cjs/principalIndex/makePrincipalIndex.js +105 -0
- package/dist/cjs/principalIndex/makePrincipalIndex.js.map +1 -0
- package/dist/cjs/principals.d.ts +54 -0
- package/dist/cjs/principals.d.ts.map +1 -0
- package/dist/cjs/principals.js +143 -0
- package/dist/cjs/principals.js.map +1 -0
- package/dist/cjs/resources.d.ts +32 -0
- package/dist/cjs/resources.d.ts.map +1 -0
- package/dist/cjs/resources.js +71 -0
- package/dist/cjs/resources.js.map +1 -0
- package/dist/cjs/simulate/contextKeys.d.ts +68 -0
- package/dist/cjs/simulate/contextKeys.d.ts.map +1 -0
- package/dist/cjs/simulate/contextKeys.js +293 -0
- package/dist/cjs/simulate/contextKeys.js.map +1 -0
- package/dist/cjs/simulate/simulate.d.ts +72 -0
- package/dist/cjs/simulate/simulate.d.ts.map +1 -0
- package/dist/cjs/simulate/simulate.js +296 -0
- package/dist/cjs/simulate/simulate.js.map +1 -0
- package/dist/cjs/test-datasets/testClient.d.ts +17 -0
- package/dist/cjs/test-datasets/testClient.d.ts.map +1 -0
- package/dist/cjs/test-datasets/testClient.js +58 -0
- package/dist/cjs/test-datasets/testClient.js.map +1 -0
- package/dist/cjs/utils/arn.d.ts +22 -0
- package/dist/cjs/utils/arn.d.ts.map +1 -0
- package/dist/cjs/utils/arn.js +49 -0
- package/dist/cjs/utils/arn.js.map +1 -0
- package/dist/cjs/utils/bitset.d.ts +45 -0
- package/dist/cjs/utils/bitset.d.ts.map +1 -0
- package/dist/cjs/utils/bitset.js +149 -0
- package/dist/cjs/utils/bitset.js.map +1 -0
- package/dist/cjs/utils/dynamicImport.d.ts +31 -0
- package/dist/cjs/utils/dynamicImport.d.ts.map +1 -0
- package/dist/cjs/utils/dynamicImport.js +64 -0
- package/dist/cjs/utils/dynamicImport.js.map +1 -0
- package/dist/cjs/utils/packageVersion.d.ts +5 -0
- package/dist/cjs/utils/packageVersion.d.ts.map +1 -0
- package/dist/cjs/utils/packageVersion.js +25 -0
- package/dist/cjs/utils/packageVersion.js.map +1 -0
- package/dist/cjs/utils/readPackageFile.d.ts +3 -0
- package/dist/cjs/utils/readPackageFile.d.ts.map +1 -0
- package/dist/cjs/utils/readPackageFile.js +16 -0
- package/dist/cjs/utils/readPackageFile.js.map +1 -0
- package/dist/cjs/utils/s3Abac.d.ts +3 -0
- package/dist/cjs/utils/s3Abac.d.ts.map +1 -0
- package/dist/cjs/utils/s3Abac.js +5 -0
- package/dist/cjs/utils/s3Abac.js.map +1 -0
- package/dist/cjs/utils/stringOrFileArgument.d.ts +9 -0
- package/dist/cjs/utils/stringOrFileArgument.d.ts.map +1 -0
- package/dist/cjs/utils/stringOrFileArgument.js +25 -0
- package/dist/cjs/utils/stringOrFileArgument.js.map +1 -0
- package/dist/cjs/utils/sts.d.ts +2 -0
- package/dist/cjs/utils/sts.d.ts.map +1 -0
- package/dist/cjs/utils/sts.js +9 -0
- package/dist/cjs/utils/sts.js.map +1 -0
- package/dist/cjs/utils/testUtils.d.ts +56 -0
- package/dist/cjs/utils/testUtils.d.ts.map +1 -0
- package/dist/cjs/utils/testUtils.js +95 -0
- package/dist/cjs/utils/testUtils.js.map +1 -0
- package/dist/cjs/utils/workerScript.d.ts +8 -0
- package/dist/cjs/utils/workerScript.d.ts.map +1 -0
- package/dist/cjs/utils/workerScript.js +23 -0
- package/dist/cjs/utils/workerScript.js.map +1 -0
- package/dist/cjs/whoCan/WhoCanMainThreadWorker.d.ts +73 -0
- package/dist/cjs/whoCan/WhoCanMainThreadWorker.d.ts.map +1 -0
- package/dist/cjs/whoCan/WhoCanMainThreadWorker.js +80 -0
- package/dist/cjs/whoCan/WhoCanMainThreadWorker.js.map +1 -0
- package/dist/cjs/whoCan/WhoCanProcessor.d.ts +400 -0
- package/dist/cjs/whoCan/WhoCanProcessor.d.ts.map +1 -0
- package/dist/cjs/whoCan/WhoCanProcessor.js +1088 -0
- package/dist/cjs/whoCan/WhoCanProcessor.js.map +1 -0
- package/dist/cjs/whoCan/WhoCanWorker.d.ts +87 -0
- package/dist/cjs/whoCan/WhoCanWorker.d.ts.map +1 -0
- package/dist/cjs/whoCan/WhoCanWorker.js +201 -0
- package/dist/cjs/whoCan/WhoCanWorker.js.map +1 -0
- package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.d.ts +2 -0
- package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.d.ts.map +1 -0
- package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.js +189 -0
- package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.js.map +1 -0
- package/dist/cjs/whoCan/principalArnFilter.d.ts +84 -0
- package/dist/cjs/whoCan/principalArnFilter.d.ts.map +1 -0
- package/dist/cjs/whoCan/principalArnFilter.js +258 -0
- package/dist/cjs/whoCan/principalArnFilter.js.map +1 -0
- package/dist/cjs/whoCan/principalScope.d.ts +35 -0
- package/dist/cjs/whoCan/principalScope.d.ts.map +1 -0
- package/dist/cjs/whoCan/principalScope.js +104 -0
- package/dist/cjs/whoCan/principalScope.js.map +1 -0
- package/dist/cjs/whoCan/requestAnalysis.d.ts +73 -0
- package/dist/cjs/whoCan/requestAnalysis.d.ts.map +1 -0
- package/dist/cjs/whoCan/requestAnalysis.js +87 -0
- package/dist/cjs/whoCan/requestAnalysis.js.map +1 -0
- package/dist/cjs/whoCan/untrustingActions.d.ts +7 -0
- package/dist/cjs/whoCan/untrustingActions.d.ts.map +1 -0
- package/dist/cjs/whoCan/untrustingActions.js +30 -0
- package/dist/cjs/whoCan/untrustingActions.js.map +1 -0
- package/dist/cjs/whoCan/whoCan.d.ts +295 -0
- package/dist/cjs/whoCan/whoCan.d.ts.map +1 -0
- package/dist/cjs/whoCan/whoCan.js +574 -0
- package/dist/cjs/whoCan/whoCan.js.map +1 -0
- package/dist/cjs/whoCan/workerBootstrapPlugin.d.ts +17 -0
- package/dist/cjs/whoCan/workerBootstrapPlugin.d.ts.map +1 -0
- package/dist/cjs/whoCan/workerBootstrapPlugin.js +3 -0
- package/dist/cjs/whoCan/workerBootstrapPlugin.js.map +1 -0
- package/dist/cjs/workers/ArrayStreamingWorkQueue.d.ts +15 -0
- package/dist/cjs/workers/ArrayStreamingWorkQueue.d.ts.map +1 -0
- package/dist/cjs/workers/ArrayStreamingWorkQueue.js +35 -0
- package/dist/cjs/workers/ArrayStreamingWorkQueue.js.map +1 -0
- package/dist/cjs/workers/JobRunner.d.ts +47 -0
- package/dist/cjs/workers/JobRunner.d.ts.map +1 -0
- package/dist/cjs/workers/JobRunner.js +101 -0
- package/dist/cjs/workers/JobRunner.js.map +1 -0
- package/dist/cjs/workers/RingQueue.d.ts +14 -0
- package/dist/cjs/workers/RingQueue.d.ts.map +1 -0
- package/dist/cjs/workers/RingQueue.js +43 -0
- package/dist/cjs/workers/RingQueue.js.map +1 -0
- package/dist/cjs/workers/SharedArrayBufferMainCache.d.ts +10 -0
- package/dist/cjs/workers/SharedArrayBufferMainCache.d.ts.map +1 -0
- package/dist/cjs/workers/SharedArrayBufferMainCache.js +37 -0
- package/dist/cjs/workers/SharedArrayBufferMainCache.js.map +1 -0
- package/dist/cjs/workers/SharedArrayBufferWorkerCache.d.ts +10 -0
- package/dist/cjs/workers/SharedArrayBufferWorkerCache.d.ts.map +1 -0
- package/dist/cjs/workers/SharedArrayBufferWorkerCache.js +49 -0
- package/dist/cjs/workers/SharedArrayBufferWorkerCache.js.map +1 -0
- package/dist/cjs/workers/StreamingWorkQueue.d.ts +18 -0
- package/dist/cjs/workers/StreamingWorkQueue.d.ts.map +1 -0
- package/dist/cjs/workers/StreamingWorkQueue.js +67 -0
- package/dist/cjs/workers/StreamingWorkQueue.js.map +1 -0
- package/dist/cjs/workers/buffers.d.ts +4 -0
- package/dist/cjs/workers/buffers.d.ts.map +1 -0
- package/dist/cjs/workers/buffers.js +26 -0
- package/dist/cjs/workers/buffers.js.map +1 -0
- package/dist/esm/cli.d.ts +3 -0
- package/dist/esm/cli.d.ts.map +1 -0
- package/dist/esm/cli.js +204 -0
- package/dist/esm/cli.js.map +1 -0
- package/dist/esm/collect/client.d.ts +550 -0
- package/dist/esm/collect/client.d.ts.map +1 -0
- package/dist/esm/collect/client.js +1114 -0
- package/dist/esm/collect/client.js.map +1 -0
- package/dist/esm/collect/collect.d.ts +44 -0
- package/dist/esm/collect/collect.d.ts.map +1 -0
- package/dist/esm/collect/collect.js +51 -0
- package/dist/esm/collect/collect.js.map +1 -0
- package/dist/esm/collect/inMemoryClient.d.ts +6 -0
- package/dist/esm/collect/inMemoryClient.d.ts.map +1 -0
- package/dist/esm/collect/inMemoryClient.js +8 -0
- package/dist/esm/collect/inMemoryClient.js.map +1 -0
- package/dist/esm/index.d.ts +13 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +11 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/principalCan/permission.d.ts +125 -0
- package/dist/esm/principalCan/permission.d.ts.map +1 -0
- package/dist/esm/principalCan/permission.js +1212 -0
- package/dist/esm/principalCan/permission.js.map +1 -0
- package/dist/esm/principalCan/permissionSet.d.ts +140 -0
- package/dist/esm/principalCan/permissionSet.d.ts.map +1 -0
- package/dist/esm/principalCan/permissionSet.js +429 -0
- package/dist/esm/principalCan/permissionSet.js.map +1 -0
- package/dist/esm/principalCan/principalCan.d.ts +26 -0
- package/dist/esm/principalCan/principalCan.d.ts.map +1 -0
- package/dist/esm/principalCan/principalCan.js +193 -0
- package/dist/esm/principalCan/principalCan.js.map +1 -0
- package/dist/esm/principalCan/principalConstraints.d.ts +147 -0
- package/dist/esm/principalCan/principalConstraints.d.ts.map +1 -0
- package/dist/esm/principalCan/principalConstraints.js +456 -0
- package/dist/esm/principalCan/principalConstraints.js.map +1 -0
- package/dist/esm/principalCan/resources/actions.d.ts +9 -0
- package/dist/esm/principalCan/resources/actions.d.ts.map +1 -0
- package/dist/esm/principalCan/resources/actions.js +24 -0
- package/dist/esm/principalCan/resources/actions.js.map +1 -0
- package/dist/esm/principalCan/resources/resourceTypes/iamRoles.d.ts +31 -0
- package/dist/esm/principalCan/resources/resourceTypes/iamRoles.d.ts.map +1 -0
- package/dist/esm/principalCan/resources/resourceTypes/iamRoles.js +110 -0
- package/dist/esm/principalCan/resources/resourceTypes/iamRoles.js.map +1 -0
- package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.d.ts +30 -0
- package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.d.ts.map +1 -0
- package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.js +106 -0
- package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.js.map +1 -0
- package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.d.ts +18 -0
- package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.d.ts.map +1 -0
- package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.js +120 -0
- package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.js.map +1 -0
- package/dist/esm/principalCan/resources/statements.d.ts +27 -0
- package/dist/esm/principalCan/resources/statements.d.ts.map +1 -0
- package/dist/esm/principalCan/resources/statements.js +117 -0
- package/dist/esm/principalCan/resources/statements.js.map +1 -0
- package/dist/esm/principalIndex/makePrincipalIndex.d.ts +8 -0
- package/dist/esm/principalIndex/makePrincipalIndex.d.ts.map +1 -0
- package/dist/esm/principalIndex/makePrincipalIndex.js +104 -0
- package/dist/esm/principalIndex/makePrincipalIndex.js.map +1 -0
- package/dist/esm/principals.d.ts +54 -0
- package/dist/esm/principals.d.ts.map +1 -0
- package/dist/esm/principals.js +133 -0
- package/dist/esm/principals.js.map +1 -0
- package/dist/esm/resources.d.ts +32 -0
- package/dist/esm/resources.d.ts.map +1 -0
- package/dist/esm/resources.js +69 -0
- package/dist/esm/resources.js.map +1 -0
- package/dist/esm/simulate/contextKeys.d.ts +68 -0
- package/dist/esm/simulate/contextKeys.d.ts.map +1 -0
- package/dist/esm/simulate/contextKeys.js +287 -0
- package/dist/esm/simulate/contextKeys.js.map +1 -0
- package/dist/esm/simulate/simulate.d.ts +72 -0
- package/dist/esm/simulate/simulate.d.ts.map +1 -0
- package/dist/esm/simulate/simulate.js +295 -0
- package/dist/esm/simulate/simulate.js.map +1 -0
- package/dist/esm/test-datasets/testClient.d.ts +17 -0
- package/dist/esm/test-datasets/testClient.d.ts.map +1 -0
- package/dist/esm/test-datasets/testClient.js +56 -0
- package/dist/esm/test-datasets/testClient.js.map +1 -0
- package/dist/esm/utils/arn.d.ts +22 -0
- package/dist/esm/utils/arn.d.ts.map +1 -0
- package/dist/esm/utils/arn.js +43 -0
- package/dist/esm/utils/arn.js.map +1 -0
- package/dist/esm/utils/bitset.d.ts +45 -0
- package/dist/esm/utils/bitset.d.ts.map +1 -0
- package/dist/esm/utils/bitset.js +141 -0
- package/dist/esm/utils/bitset.js.map +1 -0
- package/dist/esm/utils/dynamicImport.d.ts +31 -0
- package/dist/esm/utils/dynamicImport.d.ts.map +1 -0
- package/dist/esm/utils/dynamicImport.js +60 -0
- package/dist/esm/utils/dynamicImport.js.map +1 -0
- package/dist/esm/utils/packageVersion.d.ts +5 -0
- package/dist/esm/utils/packageVersion.d.ts.map +1 -0
- package/dist/esm/utils/packageVersion.js +22 -0
- package/dist/esm/utils/packageVersion.js.map +1 -0
- package/dist/esm/utils/readPackageFile.d.ts +3 -0
- package/dist/esm/utils/readPackageFile.d.ts.map +1 -0
- package/dist/esm/utils/readPackageFile.js +15 -0
- package/dist/esm/utils/readPackageFile.js.map +1 -0
- package/dist/esm/utils/readPackageFileEsm.d.ts.map +1 -0
- package/dist/esm/utils/s3Abac.d.ts +3 -0
- package/dist/esm/utils/s3Abac.d.ts.map +1 -0
- package/dist/esm/utils/s3Abac.js +2 -0
- package/dist/esm/utils/s3Abac.js.map +1 -0
- package/dist/esm/utils/stringOrFileArgument.d.ts +9 -0
- package/dist/esm/utils/stringOrFileArgument.d.ts.map +1 -0
- package/dist/esm/utils/stringOrFileArgument.js +22 -0
- package/dist/esm/utils/stringOrFileArgument.js.map +1 -0
- package/dist/esm/utils/sts.d.ts +2 -0
- package/dist/esm/utils/sts.d.ts.map +1 -0
- package/dist/esm/utils/sts.js +6 -0
- package/dist/esm/utils/sts.js.map +1 -0
- package/dist/esm/utils/testUtils.d.ts +56 -0
- package/dist/esm/utils/testUtils.d.ts.map +1 -0
- package/dist/esm/utils/testUtils.js +90 -0
- package/dist/esm/utils/testUtils.js.map +1 -0
- package/dist/esm/utils/workerScript.d.ts +8 -0
- package/dist/esm/utils/workerScript.d.ts.map +1 -0
- package/dist/esm/utils/workerScript.js +18 -0
- package/dist/esm/utils/workerScript.js.map +1 -0
- package/dist/esm/utils/workerScriptEsm.d.ts.map +1 -0
- package/dist/esm/whoCan/WhoCanMainThreadWorker.d.ts +73 -0
- package/dist/esm/whoCan/WhoCanMainThreadWorker.d.ts.map +1 -0
- package/dist/esm/whoCan/WhoCanMainThreadWorker.js +81 -0
- package/dist/esm/whoCan/WhoCanMainThreadWorker.js.map +1 -0
- package/dist/esm/whoCan/WhoCanProcessor.d.ts +400 -0
- package/dist/esm/whoCan/WhoCanProcessor.d.ts.map +1 -0
- package/dist/esm/whoCan/WhoCanProcessor.js +1080 -0
- package/dist/esm/whoCan/WhoCanProcessor.js.map +1 -0
- package/dist/esm/whoCan/WhoCanWorker.d.ts +87 -0
- package/dist/esm/whoCan/WhoCanWorker.d.ts.map +1 -0
- package/dist/esm/whoCan/WhoCanWorker.js +198 -0
- package/dist/esm/whoCan/WhoCanWorker.js.map +1 -0
- package/dist/esm/whoCan/WhoCanWorkerThreadWorker.d.ts +2 -0
- package/dist/esm/whoCan/WhoCanWorkerThreadWorker.d.ts.map +1 -0
- package/dist/esm/whoCan/WhoCanWorkerThreadWorker.js +193 -0
- package/dist/esm/whoCan/WhoCanWorkerThreadWorker.js.map +1 -0
- package/dist/esm/whoCan/principalArnFilter.d.ts +84 -0
- package/dist/esm/whoCan/principalArnFilter.d.ts.map +1 -0
- package/dist/esm/whoCan/principalArnFilter.js +253 -0
- package/dist/esm/whoCan/principalArnFilter.js.map +1 -0
- package/dist/esm/whoCan/principalScope.d.ts +35 -0
- package/dist/esm/whoCan/principalScope.d.ts.map +1 -0
- package/dist/esm/whoCan/principalScope.js +102 -0
- package/dist/esm/whoCan/principalScope.js.map +1 -0
- package/dist/esm/whoCan/requestAnalysis.d.ts +73 -0
- package/dist/esm/whoCan/requestAnalysis.d.ts.map +1 -0
- package/dist/esm/whoCan/requestAnalysis.js +83 -0
- package/dist/esm/whoCan/requestAnalysis.js.map +1 -0
- package/dist/esm/whoCan/untrustingActions.d.ts +7 -0
- package/dist/esm/whoCan/untrustingActions.d.ts.map +1 -0
- package/dist/esm/whoCan/untrustingActions.js +27 -0
- package/dist/esm/whoCan/untrustingActions.js.map +1 -0
- package/dist/esm/whoCan/whoCan.d.ts +295 -0
- package/dist/esm/whoCan/whoCan.d.ts.map +1 -0
- package/dist/esm/whoCan/whoCan.js +571 -0
- package/dist/esm/whoCan/whoCan.js.map +1 -0
- package/dist/esm/whoCan/workerBootstrapPlugin.d.ts +17 -0
- package/dist/esm/whoCan/workerBootstrapPlugin.d.ts.map +1 -0
- package/dist/esm/whoCan/workerBootstrapPlugin.js +2 -0
- package/dist/esm/whoCan/workerBootstrapPlugin.js.map +1 -0
- package/dist/esm/workers/ArrayStreamingWorkQueue.d.ts +15 -0
- package/dist/esm/workers/ArrayStreamingWorkQueue.d.ts.map +1 -0
- package/dist/esm/workers/ArrayStreamingWorkQueue.js +31 -0
- package/dist/esm/workers/ArrayStreamingWorkQueue.js.map +1 -0
- package/dist/esm/workers/JobRunner.d.ts +47 -0
- package/dist/esm/workers/JobRunner.d.ts.map +1 -0
- package/dist/esm/workers/JobRunner.js +94 -0
- package/dist/esm/workers/JobRunner.js.map +1 -0
- package/dist/esm/workers/RingQueue.d.ts +14 -0
- package/dist/esm/workers/RingQueue.d.ts.map +1 -0
- package/dist/esm/workers/RingQueue.js +36 -0
- package/dist/esm/workers/RingQueue.js.map +1 -0
- package/dist/esm/workers/SharedArrayBufferMainCache.d.ts +10 -0
- package/dist/esm/workers/SharedArrayBufferMainCache.d.ts.map +1 -0
- package/dist/esm/workers/SharedArrayBufferMainCache.js +34 -0
- package/dist/esm/workers/SharedArrayBufferMainCache.js.map +1 -0
- package/dist/esm/workers/SharedArrayBufferWorkerCache.d.ts +10 -0
- package/dist/esm/workers/SharedArrayBufferWorkerCache.d.ts.map +1 -0
- package/dist/esm/workers/SharedArrayBufferWorkerCache.js +46 -0
- package/dist/esm/workers/SharedArrayBufferWorkerCache.js.map +1 -0
- package/dist/esm/workers/StreamingWorkQueue.d.ts +18 -0
- package/dist/esm/workers/StreamingWorkQueue.d.ts.map +1 -0
- package/dist/esm/workers/StreamingWorkQueue.js +61 -0
- package/dist/esm/workers/StreamingWorkQueue.js.map +1 -0
- package/dist/esm/workers/buffers.d.ts +4 -0
- package/dist/esm/workers/buffers.d.ts.map +1 -0
- package/dist/esm/workers/buffers.js +21 -0
- package/dist/esm/workers/buffers.js.map +1 -0
- package/package.json +132 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { expandIamActions } from '@actsecurity/iam-expand';
|
|
2
|
+
import { isValidatedPolicy, loadPolicy } from '@actsecurity/iam-policy';
|
|
3
|
+
import { splitArnParts } from '@actsecurity/iam-utils';
|
|
4
|
+
import { IamCollectClient } from '../../../collect/client.js';
|
|
5
|
+
import { Permission } from '../../permission.js';
|
|
6
|
+
import { addStatementToPermissionSet, PermissionSet } from '../../permissionSet.js';
|
|
7
|
+
import { statementAppliesToPrincipal } from '../statements.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get the list of IAM Actions to assume a role.
|
|
10
|
+
*
|
|
11
|
+
* @returns the list of IAM Actions to assume a role
|
|
12
|
+
*/
|
|
13
|
+
export async function stsRoleActions() {
|
|
14
|
+
const serviceActions = await expandIamActions('sts:AssumeRole*');
|
|
15
|
+
const actions = serviceActions.map((a) => a.split(':').at(1));
|
|
16
|
+
return [...actions, 'SetContext', 'TagSession', 'SetSourceIdentity'];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Get the permission sets for all IAM roles to assume a role.
|
|
20
|
+
*
|
|
21
|
+
* @returns the permission sets for all IAM roles to assume a role
|
|
22
|
+
*/
|
|
23
|
+
export async function allIamRolesAssumeRolePermissionSets() {
|
|
24
|
+
const assumeRoleActions = await stsRoleActions();
|
|
25
|
+
const allowPerimeter = new PermissionSet('Allow');
|
|
26
|
+
const denyPerimeter = new PermissionSet('Deny');
|
|
27
|
+
for (const action of assumeRoleActions) {
|
|
28
|
+
allowPerimeter.addPermission(new Permission('Allow', 'sts', action, ['*'], undefined, undefined));
|
|
29
|
+
denyPerimeter.addPermission(new Permission('Deny', 'sts', action, ['*'], undefined, undefined));
|
|
30
|
+
}
|
|
31
|
+
return { roleAllows: allowPerimeter, roleDenies: denyPerimeter };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the permissions a principal has to assume roles in the same account.
|
|
35
|
+
* This will only return permissions for sts:AssumeRole and not other assume role actions.
|
|
36
|
+
*
|
|
37
|
+
* @param collectClient the client to use to collect IAM information
|
|
38
|
+
* @param principal the principal to check permissions for
|
|
39
|
+
* @returns the permissions the principal has to assume roles in the same account
|
|
40
|
+
*/
|
|
41
|
+
export async function iamRolesSameAccount(collectClient, principal) {
|
|
42
|
+
const principalArnParts = splitArnParts(principal);
|
|
43
|
+
const principalAccountId = principalArnParts.accountId;
|
|
44
|
+
const assumeRoleActions = ['AssumeRole', 'SetContext', 'TagSession', 'SetSourceIdentity'];
|
|
45
|
+
const allRoles = await collectClient.listResources(principalAccountId, 'iam', 'role', undefined);
|
|
46
|
+
const accountAllows = [];
|
|
47
|
+
const principalAllows = [];
|
|
48
|
+
const denies = [];
|
|
49
|
+
for (const roleArn of allRoles) {
|
|
50
|
+
const rawPolicy = await collectClient.getResourcePolicyForArn(roleArn, principalAccountId);
|
|
51
|
+
if (!rawPolicy) {
|
|
52
|
+
continue;
|
|
53
|
+
}
|
|
54
|
+
const allowPerimeter = new PermissionSet('Allow');
|
|
55
|
+
const denyPerimeter = new PermissionSet('Deny');
|
|
56
|
+
for (const action of assumeRoleActions) {
|
|
57
|
+
allowPerimeter.addPermission(new Permission('Allow', 'sts', action, [roleArn], undefined, undefined));
|
|
58
|
+
denyPerimeter.addPermission(new Permission('Deny', 'sts', action, [roleArn], undefined, undefined));
|
|
59
|
+
}
|
|
60
|
+
const roleAcctAllow = new PermissionSet('Allow');
|
|
61
|
+
const rolePrincipalAllow = new PermissionSet('Allow');
|
|
62
|
+
const roleDeny = new PermissionSet('Deny');
|
|
63
|
+
addRoleArnToStatements(rawPolicy, roleArn);
|
|
64
|
+
const trustPolicy = loadPolicy(rawPolicy);
|
|
65
|
+
for (const statement of trustPolicy.statements()) {
|
|
66
|
+
const applies = await statementAppliesToPrincipal(statement, principal, collectClient);
|
|
67
|
+
if (applies === 'PrincipalMatch') {
|
|
68
|
+
if (statement.isAllow()) {
|
|
69
|
+
await addStatementToPermissionSet(statement, rolePrincipalAllow);
|
|
70
|
+
}
|
|
71
|
+
else {
|
|
72
|
+
await addStatementToPermissionSet(statement, roleDeny);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else if (applies === 'AccountMatch' && statement.isAllow()) {
|
|
76
|
+
await addStatementToPermissionSet(statement, roleAcctAllow);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const effectivePrincipalAllow = rolePrincipalAllow.intersection(allowPerimeter);
|
|
80
|
+
const effectiveAccountAllow = roleAcctAllow.intersection(allowPerimeter);
|
|
81
|
+
const effectiveDeny = roleDeny.intersection(denyPerimeter);
|
|
82
|
+
if (!effectivePrincipalAllow.isEmpty()) {
|
|
83
|
+
principalAllows.push(effectivePrincipalAllow);
|
|
84
|
+
}
|
|
85
|
+
if (!effectiveAccountAllow.isEmpty()) {
|
|
86
|
+
accountAllows.push(effectiveAccountAllow);
|
|
87
|
+
}
|
|
88
|
+
if (!effectiveDeny.isEmpty()) {
|
|
89
|
+
denies.push(effectiveDeny);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return {
|
|
93
|
+
accountAllows,
|
|
94
|
+
principalAllows,
|
|
95
|
+
denies
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function addRoleArnToStatements(policy, roleArn) {
|
|
99
|
+
const policyDoc = isValidatedPolicy(policy) ? policy.policyDocument : policy;
|
|
100
|
+
const statement = policyDoc.Statement;
|
|
101
|
+
if (Array.isArray(statement)) {
|
|
102
|
+
for (const stmt of statement) {
|
|
103
|
+
stmt.Resource = [roleArn];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
else if (statement) {
|
|
107
|
+
statement.Resource = [roleArn];
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=iamRoles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"iamRoles.js","sourceRoot":"","sources":["../../../../../src/principalCan/resources/resourceTypes/iamRoles.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { IamCollectClient } from '../../../collect/client.js';
|
|
2
|
+
import { PermissionSet } from '../../permissionSet.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the list of KMS actions.
|
|
5
|
+
*
|
|
6
|
+
* @returns All options available for KMS keys.
|
|
7
|
+
*/
|
|
8
|
+
export declare function kmsKeyActions(): Promise<string[]>;
|
|
9
|
+
/**
|
|
10
|
+
* Create permission sets that include all KMS key actions on all resources.
|
|
11
|
+
*
|
|
12
|
+
* @returns Permission sets that include all KMS key actions on all resources both for Allow and Deny.
|
|
13
|
+
*/
|
|
14
|
+
export declare function allKmsKeysAllActionsPermissionSets(): Promise<{
|
|
15
|
+
keyAllows: PermissionSet;
|
|
16
|
+
keyDenies: PermissionSet;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Get the permissions a principal has on KMS keys in the same account.
|
|
20
|
+
*
|
|
21
|
+
* @param collectClient the IAM collect client to use for retrieving policies.
|
|
22
|
+
* @param principal the principal to check permissions for.
|
|
23
|
+
* @returns the permissions the principal has on KMS keys in the same account.
|
|
24
|
+
*/
|
|
25
|
+
export declare function kmsKeysSameAccount(collectClient: IamCollectClient, principal: string): Promise<{
|
|
26
|
+
accountAllows: PermissionSet[];
|
|
27
|
+
principalAllows: PermissionSet[];
|
|
28
|
+
denies: PermissionSet[];
|
|
29
|
+
}>;
|
|
30
|
+
//# sourceMappingURL=kmsKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kmsKeys.d.ts","sourceRoot":"","sources":["../../../../../src/principalCan/resources/resourceTypes/kmsKeys.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,EAA+B,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAInF;;;;GAIG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAEvD;AAED;;;;GAIG;AACH,wBAAsB,kCAAkC,IAAI,OAAO,CAAC;IAClE,SAAS,EAAE,aAAa,CAAA;IACxB,SAAS,EAAE,aAAa,CAAA;CACzB,CAAC,CAYD;AAED;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IACT,aAAa,EAAE,aAAa,EAAE,CAAA;IAC9B,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,MAAM,EAAE,aAAa,EAAE,CAAA;CACxB,CAAC,CAsED"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { loadPolicy } from '@actsecurity/iam-policy';
|
|
2
|
+
import { splitArnParts } from '@actsecurity/iam-utils';
|
|
3
|
+
import { IamCollectClient } from '../../../collect/client.js';
|
|
4
|
+
import { Permission } from '../../permission.js';
|
|
5
|
+
import { addStatementToPermissionSet, PermissionSet } from '../../permissionSet.js';
|
|
6
|
+
import { actionsForResourceType } from '../actions.js';
|
|
7
|
+
import { statementAppliesToPrincipal } from '../statements.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get the list of KMS actions.
|
|
10
|
+
*
|
|
11
|
+
* @returns All options available for KMS keys.
|
|
12
|
+
*/
|
|
13
|
+
export async function kmsKeyActions() {
|
|
14
|
+
return actionsForResourceType('kms', 'key');
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Create permission sets that include all KMS key actions on all resources.
|
|
18
|
+
*
|
|
19
|
+
* @returns Permission sets that include all KMS key actions on all resources both for Allow and Deny.
|
|
20
|
+
*/
|
|
21
|
+
export async function allKmsKeysAllActionsPermissionSets() {
|
|
22
|
+
const keyActions = await kmsKeyActions();
|
|
23
|
+
const allowPerimeter = new PermissionSet('Allow');
|
|
24
|
+
const denyPerimeter = new PermissionSet('Deny');
|
|
25
|
+
for (const action of keyActions) {
|
|
26
|
+
allowPerimeter.addPermission(new Permission('Allow', 'kms', action, ['*'], undefined, undefined));
|
|
27
|
+
denyPerimeter.addPermission(new Permission('Deny', 'kms', action, ['*'], undefined, undefined));
|
|
28
|
+
}
|
|
29
|
+
return { keyAllows: allowPerimeter, keyDenies: denyPerimeter };
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Get the permissions a principal has on KMS keys in the same account.
|
|
33
|
+
*
|
|
34
|
+
* @param collectClient the IAM collect client to use for retrieving policies.
|
|
35
|
+
* @param principal the principal to check permissions for.
|
|
36
|
+
* @returns the permissions the principal has on KMS keys in the same account.
|
|
37
|
+
*/
|
|
38
|
+
export async function kmsKeysSameAccount(collectClient, principal) {
|
|
39
|
+
const principalArnParts = splitArnParts(principal);
|
|
40
|
+
const principalAccountId = principalArnParts.accountId;
|
|
41
|
+
const keyActions = await kmsKeyActions();
|
|
42
|
+
const allKeys = await collectClient.listResources(principalAccountId, 'kms', 'key', '*');
|
|
43
|
+
const accountAllows = [];
|
|
44
|
+
const principalAllows = [];
|
|
45
|
+
const denies = [];
|
|
46
|
+
for (const keyArn of allKeys) {
|
|
47
|
+
const rawKeyPolicy = await collectClient.getResourcePolicyForArn(keyArn, principalAccountId);
|
|
48
|
+
if (!rawKeyPolicy) {
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const allowPerimeter = new PermissionSet('Allow');
|
|
52
|
+
const denyPerimeter = new PermissionSet('Deny');
|
|
53
|
+
for (const action of keyActions) {
|
|
54
|
+
allowPerimeter.addPermission(new Permission('Allow', 'kms', action, [keyArn], undefined, undefined));
|
|
55
|
+
denyPerimeter.addPermission(new Permission('Deny', 'kms', action, [keyArn], undefined, undefined));
|
|
56
|
+
}
|
|
57
|
+
const keyAcctAllow = new PermissionSet('Allow');
|
|
58
|
+
const keyPrincipalAllow = new PermissionSet('Allow');
|
|
59
|
+
const keyDeny = new PermissionSet('Deny');
|
|
60
|
+
const keyPolicy = loadPolicy(rawKeyPolicy);
|
|
61
|
+
for (const statement of keyPolicy.statements()) {
|
|
62
|
+
const applies = await statementAppliesToPrincipal(statement, principal, collectClient);
|
|
63
|
+
const hasViaService = statementHasViaServiceCondition(statement);
|
|
64
|
+
if (applies === 'PrincipalMatch') {
|
|
65
|
+
if (statement.isAllow()) {
|
|
66
|
+
if (!hasViaService) {
|
|
67
|
+
await addStatementToPermissionSet(statement, keyPrincipalAllow);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
await addStatementToPermissionSet(statement, keyDeny);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (applies === 'AccountMatch' && statement.isAllow() && !hasViaService) {
|
|
75
|
+
await addStatementToPermissionSet(statement, keyAcctAllow);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
const effectivePrincipalAllow = keyPrincipalAllow.intersection(allowPerimeter);
|
|
79
|
+
const effectiveAccountAllow = keyAcctAllow.intersection(allowPerimeter);
|
|
80
|
+
const effectiveDeny = keyDeny.intersection(denyPerimeter);
|
|
81
|
+
if (!effectivePrincipalAllow.isEmpty()) {
|
|
82
|
+
principalAllows.push(effectivePrincipalAllow);
|
|
83
|
+
}
|
|
84
|
+
if (!effectiveAccountAllow.isEmpty()) {
|
|
85
|
+
accountAllows.push(effectiveAccountAllow);
|
|
86
|
+
}
|
|
87
|
+
if (!effectiveDeny.isEmpty()) {
|
|
88
|
+
denies.push(effectiveDeny);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
accountAllows,
|
|
93
|
+
principalAllows,
|
|
94
|
+
denies
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Check if the statement has the condition key kms:ViaService.
|
|
99
|
+
*
|
|
100
|
+
* @param statement the statement to check
|
|
101
|
+
* @returns true if the statement has a kms:ViaService condition, false otherwise
|
|
102
|
+
*/
|
|
103
|
+
function statementHasViaServiceCondition(statement) {
|
|
104
|
+
return statement.conditions().some((c) => c.conditionKey().toLowerCase() === 'kms:viaservice');
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=kmsKeys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kmsKeys.js","sourceRoot":"","sources":["../../../../../src/principalCan/resources/resourceTypes/kmsKeys.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { IamCollectClient } from '../../../collect/client.js';
|
|
2
|
+
import { PermissionSet } from '../../permissionSet.js';
|
|
3
|
+
/**
|
|
4
|
+
* Get the permission sets for S3 buckets in the same account as the principal.
|
|
5
|
+
*
|
|
6
|
+
* @param collectClient the IAM collect client to use for retrieving policies and resources
|
|
7
|
+
* @param principal the ARN of the principal to check
|
|
8
|
+
* @returns the Allow and Deny permission sets for S3 buckets in the same account as the principal
|
|
9
|
+
*/
|
|
10
|
+
export declare function s3BucketsSameAccount(collectClient: IamCollectClient, principal: string): Promise<{
|
|
11
|
+
allows: PermissionSet[];
|
|
12
|
+
denies: PermissionSet[];
|
|
13
|
+
}>;
|
|
14
|
+
export declare function s3BucketsCrossAccount(collectClient: IamCollectClient, accountId: string, rcpDenies: PermissionSet, principal: string): Promise<{
|
|
15
|
+
allows: PermissionSet[];
|
|
16
|
+
denies: PermissionSet[];
|
|
17
|
+
}>;
|
|
18
|
+
//# sourceMappingURL=s3Buckets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3Buckets.d.ts","sourceRoot":"","sources":["../../../../../src/principalCan/resources/resourceTypes/s3Buckets.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,EAA+B,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAInF;;;;;;GAMG;AACH,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CA+D/D;AAED,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,gBAAgB,EAC/B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,aAAa,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAA;CAAE,CAAC,CAyE/D"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { loadPolicy } from '@actsecurity/iam-policy';
|
|
2
|
+
import { splitArnParts } from '@actsecurity/iam-utils';
|
|
3
|
+
import { IamCollectClient } from '../../../collect/client.js';
|
|
4
|
+
import { Permission } from '../../permission.js';
|
|
5
|
+
import { addStatementToPermissionSet, PermissionSet } from '../../permissionSet.js';
|
|
6
|
+
import { actionsForResourceType } from '../actions.js';
|
|
7
|
+
import { statementAppliesToPrincipal } from '../statements.js';
|
|
8
|
+
/**
|
|
9
|
+
* Get the permission sets for S3 buckets in the same account as the principal.
|
|
10
|
+
*
|
|
11
|
+
* @param collectClient the IAM collect client to use for retrieving policies and resources
|
|
12
|
+
* @param principal the ARN of the principal to check
|
|
13
|
+
* @returns the Allow and Deny permission sets for S3 buckets in the same account as the principal
|
|
14
|
+
*/
|
|
15
|
+
export async function s3BucketsSameAccount(collectClient, principal) {
|
|
16
|
+
const principalArnParts = splitArnParts(principal);
|
|
17
|
+
const principalAccountId = principalArnParts.accountId;
|
|
18
|
+
const allBuckets = await collectClient.listResources(principalAccountId, 's3', 'bucket', undefined);
|
|
19
|
+
const bucketActions = await actionsForResourceType('s3', 'bucket');
|
|
20
|
+
const objectActions = await actionsForResourceType('s3', 'object');
|
|
21
|
+
const s3Actions = [...bucketActions, ...objectActions];
|
|
22
|
+
const bucketAllowPermissionSets = [];
|
|
23
|
+
const bucketDenyPermissionSets = [];
|
|
24
|
+
for (const bucket of allBuckets) {
|
|
25
|
+
const bucketPolicy = await collectClient.getResourcePolicyForArn(bucket, principalAccountId);
|
|
26
|
+
if (bucketPolicy) {
|
|
27
|
+
const loadedPolicy = loadPolicy(bucketPolicy);
|
|
28
|
+
if (loadedPolicy) {
|
|
29
|
+
const bucketArns = [bucket, `${bucket}/*`];
|
|
30
|
+
const bucketAllowPerimeter = new PermissionSet('Allow');
|
|
31
|
+
const bucketDenyPerimeter = new PermissionSet('Deny');
|
|
32
|
+
for (const action of s3Actions) {
|
|
33
|
+
bucketAllowPerimeter.addPermission(new Permission('Allow', 's3', action, bucketArns, undefined, undefined));
|
|
34
|
+
bucketDenyPerimeter.addPermission(new Permission('Deny', 's3', action, bucketArns, undefined, undefined));
|
|
35
|
+
}
|
|
36
|
+
const allowPermissionSet = new PermissionSet('Allow');
|
|
37
|
+
const denyPermissionSet = new PermissionSet('Deny');
|
|
38
|
+
for (const statement of loadedPolicy.statements()) {
|
|
39
|
+
const applies = await statementAppliesToPrincipal(statement, principal, collectClient);
|
|
40
|
+
if (applies === 'PrincipalMatch') {
|
|
41
|
+
if (statement.isAllow()) {
|
|
42
|
+
await addStatementToPermissionSet(statement, allowPermissionSet);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
await addStatementToPermissionSet(statement, denyPermissionSet);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const effectiveAllows = allowPermissionSet.intersection(bucketAllowPerimeter);
|
|
50
|
+
const effectiveDenies = denyPermissionSet.intersection(bucketDenyPerimeter);
|
|
51
|
+
if (!effectiveAllows.isEmpty()) {
|
|
52
|
+
bucketAllowPermissionSets.push(effectiveAllows);
|
|
53
|
+
}
|
|
54
|
+
if (!effectiveDenies.isEmpty()) {
|
|
55
|
+
bucketDenyPermissionSets.push(effectiveDenies);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return { allows: bucketAllowPermissionSets, denies: bucketDenyPermissionSets };
|
|
61
|
+
}
|
|
62
|
+
export async function s3BucketsCrossAccount(collectClient, accountId, rcpDenies, principal) {
|
|
63
|
+
// For every account:
|
|
64
|
+
// List the buckets
|
|
65
|
+
// Get the allow statements in the account buckets intersected with the bucket perimeter
|
|
66
|
+
// Collect all the deny statements intersected with the bucket perimeter
|
|
67
|
+
// Intersect the allow statements with the account RCPs
|
|
68
|
+
const bucketActions = await actionsForResourceType('s3', 'bucket');
|
|
69
|
+
const objectActions = await actionsForResourceType('s3', 'object');
|
|
70
|
+
const s3Actions = [...bucketActions, ...objectActions];
|
|
71
|
+
const bucketAllowPermissionSets = [];
|
|
72
|
+
const bucketDenyPermissionSets = [];
|
|
73
|
+
const allBuckets = await collectClient.listResources(accountId, 's3', 'bucket', undefined);
|
|
74
|
+
for (const bucket of allBuckets) {
|
|
75
|
+
const bucketPolicy = await collectClient.getResourcePolicyForArn(bucket, accountId);
|
|
76
|
+
if (!bucketPolicy) {
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
const loadedPolicy = loadPolicy(bucketPolicy);
|
|
80
|
+
const bucketArns = [bucket, `${bucket}/*`];
|
|
81
|
+
const bucketAllowPerimeter = new PermissionSet('Allow');
|
|
82
|
+
const bucketDenyPerimeter = new PermissionSet('Deny');
|
|
83
|
+
for (const action of s3Actions) {
|
|
84
|
+
bucketAllowPerimeter.addPermission(new Permission('Allow', 's3', action, bucketArns, undefined, undefined));
|
|
85
|
+
bucketDenyPerimeter.addPermission(new Permission('Deny', 's3', action, bucketArns, undefined, undefined));
|
|
86
|
+
}
|
|
87
|
+
const allowPermissionSet = new PermissionSet('Allow');
|
|
88
|
+
const denyPermissionSet = new PermissionSet('Deny');
|
|
89
|
+
for (const statement of loadedPolicy.statements()) {
|
|
90
|
+
const applies = await statementAppliesToPrincipal(statement, principal, collectClient);
|
|
91
|
+
if (applies === 'PrincipalMatch' || applies === 'AccountMatch') {
|
|
92
|
+
if (statement.isAllow()) {
|
|
93
|
+
await addStatementToPermissionSet(statement, allowPermissionSet);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
await addStatementToPermissionSet(statement, denyPermissionSet);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Intersect the allows with the perimeter and subtract RCP denies
|
|
101
|
+
// Intersect the RCP denies with the perimeter
|
|
102
|
+
let { allow: effectiveAllows, deny: effectiveDenies } = allowPermissionSet
|
|
103
|
+
.intersection(bucketAllowPerimeter)
|
|
104
|
+
.subtract(rcpDenies.intersection(bucketDenyPerimeter));
|
|
105
|
+
const maximumDenies = denyPermissionSet.intersection(bucketDenyPerimeter);
|
|
106
|
+
const afterDenies = effectiveAllows.subtract(maximumDenies);
|
|
107
|
+
effectiveAllows = afterDenies.allow;
|
|
108
|
+
effectiveDenies.addAll(afterDenies.deny);
|
|
109
|
+
// For cross account only, we only add denies if there was a corresponding allow
|
|
110
|
+
if (!effectiveAllows.isEmpty()) {
|
|
111
|
+
bucketAllowPermissionSets.push(effectiveAllows);
|
|
112
|
+
// For cross account only, we only add denies if there was a corresponding allow
|
|
113
|
+
if (!effectiveDenies.isEmpty()) {
|
|
114
|
+
bucketDenyPermissionSets.push(effectiveDenies);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return { allows: bucketAllowPermissionSets, denies: bucketDenyPermissionSets };
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=s3Buckets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"s3Buckets.js","sourceRoot":"","sources":["../../../../../src/principalCan/resources/resourceTypes/s3Buckets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type Policy, type Statement } from '@actsecurity/iam-policy';
|
|
2
|
+
import { IamCollectClient } from '../../collect/client.js';
|
|
3
|
+
export type StatementPrincipalMatchType = 'PrincipalMatch' | 'AccountMatch' | 'NoMatch';
|
|
4
|
+
/**
|
|
5
|
+
* Checks to see if a statement applies to a principal by running a simulation.
|
|
6
|
+
*
|
|
7
|
+
* If the principal is a match return 'PrincipalMatch'
|
|
8
|
+
* If the account is a match return 'AccountMatch'
|
|
9
|
+
* Otherwise return 'NoMatch'
|
|
10
|
+
*
|
|
11
|
+
* @param statement the statement to check
|
|
12
|
+
* @param principalArn the arn of the principal to check
|
|
13
|
+
* @param client the IAM collect client to use for retrieving principal information
|
|
14
|
+
* @returns Whether the statement applies to the principal
|
|
15
|
+
*/
|
|
16
|
+
export declare function statementAppliesToPrincipal(statement: Statement, principalArn: string, client: IamCollectClient): Promise<StatementPrincipalMatchType>;
|
|
17
|
+
/**
|
|
18
|
+
* Makes a policy that captures the principal and principal conditions from a statement
|
|
19
|
+
* and allows all actions on all resources.
|
|
20
|
+
*
|
|
21
|
+
* The conditions returned are only those that relate to the principal.
|
|
22
|
+
*
|
|
23
|
+
* @param statement the statement to extract the principal from
|
|
24
|
+
* @returns
|
|
25
|
+
*/
|
|
26
|
+
export declare function makePrincipalOnlyPolicyFromStatement(statement: Statement): Policy;
|
|
27
|
+
//# sourceMappingURL=statements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../../../src/principalCan/resources/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAGjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAI1D,MAAM,MAAM,2BAA2B,GAAG,gBAAgB,GAAG,cAAc,GAAG,SAAS,CAAA;AAEvF;;;;;;;;;;;GAWG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,2BAA2B,CAAC,CAkDtC;AAgBD;;;;;;;;GAQG;AACH,wBAAgB,oCAAoC,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM,CAiCjF"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { loadPolicy } from '@actsecurity/iam-policy';
|
|
2
|
+
import { runSimulation } from '@actsecurity/iam-simulate';
|
|
3
|
+
import { splitArnParts } from '@actsecurity/iam-utils';
|
|
4
|
+
import { IamCollectClient } from '../../collect/client.js';
|
|
5
|
+
import { createContextKeys } from '../../simulate/contextKeys.js';
|
|
6
|
+
import {} from '../../simulate/simulate.js';
|
|
7
|
+
/**
|
|
8
|
+
* Checks to see if a statement applies to a principal by running a simulation.
|
|
9
|
+
*
|
|
10
|
+
* If the principal is a match return 'PrincipalMatch'
|
|
11
|
+
* If the account is a match return 'AccountMatch'
|
|
12
|
+
* Otherwise return 'NoMatch'
|
|
13
|
+
*
|
|
14
|
+
* @param statement the statement to check
|
|
15
|
+
* @param principalArn the arn of the principal to check
|
|
16
|
+
* @param client the IAM collect client to use for retrieving principal information
|
|
17
|
+
* @returns Whether the statement applies to the principal
|
|
18
|
+
*/
|
|
19
|
+
export async function statementAppliesToPrincipal(statement, principalArn, client) {
|
|
20
|
+
const principalAccount = splitArnParts(principalArn).accountId;
|
|
21
|
+
const resourcePolicy = makePrincipalOnlyPolicyFromStatement(statement);
|
|
22
|
+
const simulationRequest = {
|
|
23
|
+
principal: principalArn,
|
|
24
|
+
action: 'kms:DescribeKey',
|
|
25
|
+
resourceAccount: principalAccount,
|
|
26
|
+
resourceArn: undefined,
|
|
27
|
+
customContextKeys: {},
|
|
28
|
+
simulationMode: 'Strict'
|
|
29
|
+
};
|
|
30
|
+
// We use KMS, so we get kms:CallerAccount context key support
|
|
31
|
+
const { contextKeys } = await createContextKeys(client, simulationRequest, 'kms', {});
|
|
32
|
+
const request = {
|
|
33
|
+
action: 'kms:DescribeKey',
|
|
34
|
+
resource: {
|
|
35
|
+
resource: 'arn:aws:kms:us-east-1:123456789012:key/abcd1234-ab12-cd34-ef23-456789abcdef',
|
|
36
|
+
accountId: principalAccount
|
|
37
|
+
},
|
|
38
|
+
principal: principalArn,
|
|
39
|
+
contextVariables: contextKeys
|
|
40
|
+
};
|
|
41
|
+
const simulation = {
|
|
42
|
+
request,
|
|
43
|
+
identityPolicies: [],
|
|
44
|
+
resourcePolicy: resourcePolicy.toJSON(),
|
|
45
|
+
serviceControlPolicies: [],
|
|
46
|
+
resourceControlPolicies: []
|
|
47
|
+
};
|
|
48
|
+
const result = await runSimulation(simulation, {
|
|
49
|
+
simulationMode: simulationRequest.simulationMode
|
|
50
|
+
});
|
|
51
|
+
if (result.resultType === 'error') {
|
|
52
|
+
return 'NoMatch';
|
|
53
|
+
}
|
|
54
|
+
const analysis = result.resultType === 'single' ? result.result.analysis : undefined;
|
|
55
|
+
if (analysis?.result === 'Allowed') {
|
|
56
|
+
return 'PrincipalMatch';
|
|
57
|
+
}
|
|
58
|
+
if (analysis?.resourceAnalysis?.result === 'AllowedForAccount') {
|
|
59
|
+
return 'AccountMatch';
|
|
60
|
+
}
|
|
61
|
+
return 'NoMatch';
|
|
62
|
+
}
|
|
63
|
+
const principalKeys = new Set([
|
|
64
|
+
'aws:PrincipalArn',
|
|
65
|
+
'aws:PrincipalAccount',
|
|
66
|
+
'aws:PrincipalOrgId',
|
|
67
|
+
'aws:PrincipalOrgPaths',
|
|
68
|
+
'aws:PrincipalType',
|
|
69
|
+
'aws:userid',
|
|
70
|
+
'aws:username',
|
|
71
|
+
'aws:PrincipalIsAWSService',
|
|
72
|
+
'kms:CallerAccount'
|
|
73
|
+
].map((k) => k.toLowerCase()));
|
|
74
|
+
/**
|
|
75
|
+
* Makes a policy that captures the principal and principal conditions from a statement
|
|
76
|
+
* and allows all actions on all resources.
|
|
77
|
+
*
|
|
78
|
+
* The conditions returned are only those that relate to the principal.
|
|
79
|
+
*
|
|
80
|
+
* @param statement the statement to extract the principal from
|
|
81
|
+
* @returns
|
|
82
|
+
*/
|
|
83
|
+
export function makePrincipalOnlyPolicyFromStatement(statement) {
|
|
84
|
+
const rawStatement = structuredClone(statement.toJSON());
|
|
85
|
+
const rawStatementValues = {};
|
|
86
|
+
if (statement.isPrincipalStatement()) {
|
|
87
|
+
rawStatementValues.Principal = rawStatement.Principal;
|
|
88
|
+
}
|
|
89
|
+
else if (statement.isNotPrincipalStatement()) {
|
|
90
|
+
rawStatementValues.NotPrincipal = rawStatement.NotPrincipal;
|
|
91
|
+
}
|
|
92
|
+
if (rawStatement.Condition) {
|
|
93
|
+
for (const operator of Object.keys(rawStatement.Condition)) {
|
|
94
|
+
for (const key of Object.keys(rawStatement.Condition[operator])) {
|
|
95
|
+
if (!principalKeys.has(key.toLowerCase())) {
|
|
96
|
+
delete rawStatement.Condition[operator][key];
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
if (Object.keys(rawStatement.Condition[operator]).length === 0) {
|
|
100
|
+
delete rawStatement.Condition[operator];
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (Object.keys(rawStatement.Condition).length > 0) {
|
|
104
|
+
rawStatementValues.Condition = rawStatement.Condition;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return loadPolicy({
|
|
108
|
+
Version: '2012-10-17',
|
|
109
|
+
Statement: {
|
|
110
|
+
Effect: 'Allow',
|
|
111
|
+
Resource: '*',
|
|
112
|
+
Action: '*',
|
|
113
|
+
...rawStatementValues
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=statements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"statements.js","sourceRoot":"","sources":["../../../../src/principalCan/resources/statements.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { IamCollectClient } from '../collect/client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Make a principal index for all principals in the collect client
|
|
4
|
+
*
|
|
5
|
+
* @param collectClient the collect client to use
|
|
6
|
+
*/
|
|
7
|
+
export declare function makePrincipalIndex(collectClient: IamCollectClient): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=makePrincipalIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makePrincipalIndex.d.ts","sourceRoot":"","sources":["../../../src/principalIndex/makePrincipalIndex.ts"],"names":[],"mappings":"AAEA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAG5E;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,gBAAgB,iBAgDvE"}
|