@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,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toLightRequestAnalysis = toLightRequestAnalysis;
|
|
4
|
+
exports.convertToDenialDetails = convertToDenialDetails;
|
|
5
|
+
const iam_simulate_1 = require("@actsecurity/iam-simulate");
|
|
6
|
+
/**
|
|
7
|
+
* Convert a RequestAnalysis to a LightResourceAnalysis.
|
|
8
|
+
*
|
|
9
|
+
* @param analysis - The full RequestAnalysis to convert
|
|
10
|
+
* @returns A LightResourceAnalysis with only the essential result fields
|
|
11
|
+
*/
|
|
12
|
+
function toLightResourceAnalysis(analysis) {
|
|
13
|
+
return {
|
|
14
|
+
result: analysis.result,
|
|
15
|
+
sameAccount: analysis.sameAccount,
|
|
16
|
+
identityAnalysis: analysis.identityAnalysis
|
|
17
|
+
? { result: analysis.identityAnalysis.result }
|
|
18
|
+
: undefined,
|
|
19
|
+
resourceAnalysis: analysis.resourceAnalysis
|
|
20
|
+
? { result: analysis.resourceAnalysis.result }
|
|
21
|
+
: undefined,
|
|
22
|
+
scpAnalysis: analysis.scpAnalysis ? { result: analysis.scpAnalysis.result } : undefined,
|
|
23
|
+
rcpAnalysis: analysis.rcpAnalysis ? { result: analysis.rcpAnalysis.result } : undefined,
|
|
24
|
+
permissionBoundaryAnalysis: analysis.permissionBoundaryAnalysis
|
|
25
|
+
? { result: analysis.permissionBoundaryAnalysis.result }
|
|
26
|
+
: undefined,
|
|
27
|
+
blockedBy: new Set(analysis.blockedBy)
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Convert a full RequestAnalysis to a LightRequestAnalysis.
|
|
32
|
+
*
|
|
33
|
+
* @param executionResult - The denied execution result containing the RequestAnalysis to convert
|
|
34
|
+
* @returns A LightRequestAnalysis with only the essential fields
|
|
35
|
+
*/
|
|
36
|
+
function toLightRequestAnalysis(executionResult) {
|
|
37
|
+
if (executionResult.type === 'denied_single') {
|
|
38
|
+
return {
|
|
39
|
+
type: 'single',
|
|
40
|
+
overallResult: executionResult.analysis.result,
|
|
41
|
+
...toLightResourceAnalysis(executionResult.analysis)
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
// Wildcard case
|
|
45
|
+
const patterns = executionResult.deniedPatterns.map((details) => ({
|
|
46
|
+
pattern: details.pattern,
|
|
47
|
+
resourceType: details.resourceType,
|
|
48
|
+
...toLightResourceAnalysis(details.analysis)
|
|
49
|
+
}));
|
|
50
|
+
return {
|
|
51
|
+
type: 'wildcard',
|
|
52
|
+
overallResult: executionResult.overallResult,
|
|
53
|
+
patterns
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Gets the denial reasons for a denied SimulationResult.
|
|
58
|
+
*
|
|
59
|
+
* @param executionResult - The denied execution result containing the RequestAnalysis with denial reasons
|
|
60
|
+
* @returns A WhoCanDenyDetail object containing the denial reasons and other details to be returned to the user
|
|
61
|
+
*/
|
|
62
|
+
function convertToDenialDetails(executionResult) {
|
|
63
|
+
const { principal, action } = executionResult.workItem;
|
|
64
|
+
const [service, actionName] = action.split(':');
|
|
65
|
+
if (executionResult.type === 'denied_single') {
|
|
66
|
+
return {
|
|
67
|
+
type: 'single',
|
|
68
|
+
principal,
|
|
69
|
+
service,
|
|
70
|
+
action: actionName,
|
|
71
|
+
details: (0, iam_simulate_1.getDenialReasons)(executionResult.analysis)
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
// Wildcard case
|
|
75
|
+
return {
|
|
76
|
+
type: 'wildcard',
|
|
77
|
+
principal,
|
|
78
|
+
service,
|
|
79
|
+
action: actionName,
|
|
80
|
+
deniedResources: executionResult.deniedPatterns.map((pattern) => ({
|
|
81
|
+
pattern: pattern.pattern,
|
|
82
|
+
resourceType: pattern.resourceType,
|
|
83
|
+
details: (0, iam_simulate_1.getDenialReasons)(pattern.analysis)
|
|
84
|
+
}))
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=requestAnalysis.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requestAnalysis.js","sourceRoot":"","sources":["../../../src/whoCan/requestAnalysis.ts"],"names":[],"mappings":";;AA0GA,wDAuBC;AAQD,wDA4BC;AArKD,4DAKkC;AAsElC;;;;;GAKG;AACH,SAAS,uBAAuB,CAAC,QAAyB;IACxD,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;YACzC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC9C,CAAC,CAAC,SAAS;QACb,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;YACzC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAC9C,CAAC,CAAC,SAAS;QACb,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;QACvF,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS;QACvF,0BAA0B,EAAE,QAAQ,CAAC,0BAA0B;YAC7D,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,0BAA0B,CAAC,MAAM,EAAE;YACxD,CAAC,CAAC,SAAS;QACb,SAAS,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC;KACvC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,eAAuD;IAEvD,IAAI,eAAe,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,aAAa,EAAE,eAAe,CAAC,QAAQ,CAAC,MAAM;YAC9C,GAAG,uBAAuB,CAAC,eAAe,CAAC,QAAQ,CAAC;SACrD,CAAA;IACH,CAAC;IAED,gBAAgB;IAChB,MAAM,QAAQ,GAAG,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,GAAG,uBAAuB,CAAC,OAAO,CAAC,QAAQ,CAAC;KAC7C,CAAC,CAAC,CAAA;IAEH,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,eAAe,CAAC,aAAa;QAC5C,QAAQ;KACT,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAgB,sBAAsB,CACpC,eAAuD;IAEvD,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,QAAQ,CAAA;IACtD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAE/C,IAAI,eAAe,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;QAC7C,OAAO;YACL,IAAI,EAAE,QAAQ;YACd,SAAS;YACT,OAAO;YACP,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,IAAA,+BAAgB,EAAC,eAAe,CAAC,QAAQ,CAAC;SACpD,CAAA;IACH,CAAC;IAED,gBAAgB;IAChB,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,SAAS;QACT,OAAO;QACP,MAAM,EAAE,UAAU;QAClB,eAAe,EAAE,eAAe,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChE,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,OAAO,EAAE,IAAA,+BAAgB,EAAC,OAAO,CAAC,QAAQ,CAAC;SAC5C,CAAC,CAAC;KACJ,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get a set of actions that do not automatically trust the current account, in all lower case.
|
|
3
|
+
*
|
|
4
|
+
* @returns the set of actions that do not automatically trust the current account in all lower case
|
|
5
|
+
*/
|
|
6
|
+
export declare function actionsThatDoNotAutomaticallyTrustTheCurrentAccount(): Promise<Set<string>>;
|
|
7
|
+
//# sourceMappingURL=untrustingActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"untrustingActions.d.ts","sourceRoot":"","sources":["../../../src/whoCan/untrustingActions.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAsB,mDAAmD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAmBhG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.actionsThatDoNotAutomaticallyTrustTheCurrentAccount = actionsThatDoNotAutomaticallyTrustTheCurrentAccount;
|
|
4
|
+
const iam_data_1 = require("@actsecurity/iam-data");
|
|
5
|
+
const kms = 'kms';
|
|
6
|
+
const kmsKey = 'key';
|
|
7
|
+
const stsAssumeRole = 'sts:AssumeRole';
|
|
8
|
+
let cachedActions = undefined;
|
|
9
|
+
/**
|
|
10
|
+
* Get a set of actions that do not automatically trust the current account, in all lower case.
|
|
11
|
+
*
|
|
12
|
+
* @returns the set of actions that do not automatically trust the current account in all lower case
|
|
13
|
+
*/
|
|
14
|
+
async function actionsThatDoNotAutomaticallyTrustTheCurrentAccount() {
|
|
15
|
+
if (cachedActions) {
|
|
16
|
+
return cachedActions;
|
|
17
|
+
}
|
|
18
|
+
const kmsActions = await (0, iam_data_1.iamActionsForService)(kms);
|
|
19
|
+
const allActions = new Set([stsAssumeRole.toLowerCase()]);
|
|
20
|
+
for (const action of kmsActions) {
|
|
21
|
+
const details = await (0, iam_data_1.iamActionDetails)(kms, action);
|
|
22
|
+
if (details.resourceTypes.length === 1 &&
|
|
23
|
+
details.resourceTypes.some((rt) => rt.name === kmsKey)) {
|
|
24
|
+
allActions.add(`${kms}:${action.toLowerCase()}`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
cachedActions = allActions;
|
|
28
|
+
return allActions;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=untrustingActions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"untrustingActions.js","sourceRoot":"","sources":["../../../src/whoCan/untrustingActions.ts"],"names":[],"mappings":";;AAaA,kHAmBC;AAhCD,oDAA8E;AAE9E,MAAM,GAAG,GAAG,KAAK,CAAA;AACjB,MAAM,MAAM,GAAG,KAAK,CAAA;AACpB,MAAM,aAAa,GAAG,gBAAgB,CAAA;AAEtC,IAAI,aAAa,GAA4B,SAAS,CAAA;AAEtD;;;;GAIG;AACI,KAAK,UAAU,mDAAmD;IACvE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,IAAA,+BAAoB,EAAC,GAAG,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IACjE,KAAK,MAAM,MAAM,IAAI,UAAU,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM,IAAA,2BAAgB,EAAC,GAAG,EAAE,MAAM,CAAC,CAAA;QACnD,IACE,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC;YAClC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,EACtD,CAAC;YACD,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QAClD,CAAC;IACH,CAAC;IAED,aAAa,GAAG,UAAU,CAAA;IAC1B,OAAO,UAAU,CAAA;AACnB,CAAC"}
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { type TopLevelConfig } from '@actsecurity/iam-collect';
|
|
2
|
+
import { IamCollectClient } from '../collect/client.js';
|
|
3
|
+
import { type ClientFactoryPlugin } from '../collect/collect.js';
|
|
4
|
+
import { type ResourceType } from '@actsecurity/iam-data';
|
|
5
|
+
import { type AllowedConditionExpression, type IgnoredConditions, type RequestDenial, type RequestGrant } from '@actsecurity/iam-simulate';
|
|
6
|
+
import { type S3AbacOverride } from '../utils/s3Abac.js';
|
|
7
|
+
import { type LightRequestAnalysis } from './requestAnalysis.js';
|
|
8
|
+
import { type WorkerBootstrapPlugin } from './WhoCanProcessor.js';
|
|
9
|
+
/**
|
|
10
|
+
* Limits the set of principals that `whoCan` tests. The scope is a union of
|
|
11
|
+
* principal ARNs, account IDs, and OU paths. It is **intersected** with the
|
|
12
|
+
* resource-policy-derived scope so that principals outside the resource
|
|
13
|
+
* policy's reach are still excluded.
|
|
14
|
+
*/
|
|
15
|
+
export interface WhoCanPrincipalScope {
|
|
16
|
+
/** Exact principal ARNs to test individually (does NOT expand to whole-account search). */
|
|
17
|
+
principals?: string[];
|
|
18
|
+
/** Account IDs — test all principals in these accounts. */
|
|
19
|
+
accounts?: string[];
|
|
20
|
+
/** OU paths — test all principals in accounts under these OUs. Each string is a slash-separated path like `o-aaa/r-bbb/ou-ccc`, matching the format used by `aws:PrincipalOrgPaths` and `specificOrganizationalUnits`. */
|
|
21
|
+
ous?: string[];
|
|
22
|
+
}
|
|
23
|
+
export interface ResourceAccessRequest {
|
|
24
|
+
/**
|
|
25
|
+
* The ARN of the resource to check access for. If not provided, actions must be specified.
|
|
26
|
+
*/
|
|
27
|
+
resource?: string;
|
|
28
|
+
/**
|
|
29
|
+
* The account ID the resource belongs to.
|
|
30
|
+
* By default this will be looked up based on the resource ARN, but that may
|
|
31
|
+
* not be possible for all actions, such as wildcard actions like `s3:ListAllMyBuckets`.
|
|
32
|
+
*/
|
|
33
|
+
resourceAccount?: string;
|
|
34
|
+
/**
|
|
35
|
+
* The actions to check access for. If not provided, actions will be looked up based on the resource ARN.
|
|
36
|
+
*/
|
|
37
|
+
actions: string[];
|
|
38
|
+
/**
|
|
39
|
+
* Whether to sort the results for consistent output.
|
|
40
|
+
*/
|
|
41
|
+
sort?: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* An override for S3 ABAC being enabled when checking access to S3 Bucket resources.
|
|
44
|
+
*/
|
|
45
|
+
s3AbacOverride?: S3AbacOverride;
|
|
46
|
+
/**
|
|
47
|
+
* The number of worker threads to use for simulations beyond the main thread.
|
|
48
|
+
* If not provided, defaults to number of CPUs - 1.
|
|
49
|
+
*/
|
|
50
|
+
workerThreads?: number;
|
|
51
|
+
/**
|
|
52
|
+
* Deny details callback for simulations. If the callback returns true, deny details will be included for that simulation.
|
|
53
|
+
*/
|
|
54
|
+
denyDetailsCallback?: (details: LightRequestAnalysis) => boolean;
|
|
55
|
+
/**
|
|
56
|
+
* If true, grant details will be collected for allowed simulations.
|
|
57
|
+
*/
|
|
58
|
+
collectGrantDetails?: boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Optional context keys to consider strict when running simulations for this whoCan request.
|
|
61
|
+
* These will be added to the simulation strict context keys used by default.
|
|
62
|
+
*/
|
|
63
|
+
strictContextKeys?: string[];
|
|
64
|
+
/**
|
|
65
|
+
* Optional plugin to wrap the collect client with a custom implementation.
|
|
66
|
+
* Used for scenario testing where a layered client needs to be used in worker threads.
|
|
67
|
+
*/
|
|
68
|
+
clientFactoryPlugin?: ClientFactoryPlugin;
|
|
69
|
+
/**
|
|
70
|
+
* Optional plugin that runs once per worker thread at startup before any work
|
|
71
|
+
* is processed. Use this for loading instrumentation, initializing logging
|
|
72
|
+
* context, or other worker-lifetime setup.
|
|
73
|
+
*/
|
|
74
|
+
workerBootstrapPlugin?: WorkerBootstrapPlugin;
|
|
75
|
+
/**
|
|
76
|
+
* Optional scope to limit the set of principals tested. When provided, the
|
|
77
|
+
* scope is intersected with the resource-policy-derived scope to narrow the
|
|
78
|
+
* search space.
|
|
79
|
+
*/
|
|
80
|
+
principalScope?: WhoCanPrincipalScope;
|
|
81
|
+
/**
|
|
82
|
+
* Whether to ignore an existing principal index. This is for testing purposes.
|
|
83
|
+
*/
|
|
84
|
+
ignorePrincipalIndex?: boolean;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Represents a resource pattern that is allowed for a principal, used when wildcards
|
|
88
|
+
* are in the simulation request.
|
|
89
|
+
*/
|
|
90
|
+
export interface WhoCanAllowedResourcePattern {
|
|
91
|
+
/**
|
|
92
|
+
* The resource pattern that allows access.
|
|
93
|
+
*/
|
|
94
|
+
pattern: string;
|
|
95
|
+
/**
|
|
96
|
+
* The resource type for the pattern.
|
|
97
|
+
*/
|
|
98
|
+
resourceType: string;
|
|
99
|
+
/**
|
|
100
|
+
* The structured expression describing the conditions under which access is allowed
|
|
101
|
+
* for this pattern. Undefined when access is unconditional.
|
|
102
|
+
*/
|
|
103
|
+
conditions?: AllowedConditionExpression;
|
|
104
|
+
/**
|
|
105
|
+
* Discovery-mode condition diagnostics that were ignored while determining this
|
|
106
|
+
* pattern could be allowed. This was returned in `conditions` in earlier versions.
|
|
107
|
+
*/
|
|
108
|
+
ignoredConditions?: IgnoredConditions;
|
|
109
|
+
/**
|
|
110
|
+
* If true, access is only allowed when the session has a specific session name.
|
|
111
|
+
*/
|
|
112
|
+
dependsOnSessionName?: boolean;
|
|
113
|
+
/**
|
|
114
|
+
* The policy statements that granted access for this resource pattern.
|
|
115
|
+
*/
|
|
116
|
+
details?: RequestGrant[];
|
|
117
|
+
}
|
|
118
|
+
export interface WhoCanAllowed {
|
|
119
|
+
principal: string;
|
|
120
|
+
service: string;
|
|
121
|
+
action: string;
|
|
122
|
+
level: string;
|
|
123
|
+
/**
|
|
124
|
+
* The structured expression describing the conditions under which access is allowed.
|
|
125
|
+
* This will be undefined if access is allowed unconditionally or if `allowedPatterns`
|
|
126
|
+
* are provided.
|
|
127
|
+
*/
|
|
128
|
+
conditions?: AllowedConditionExpression;
|
|
129
|
+
/**
|
|
130
|
+
* Discovery-mode condition diagnostics that were ignored while determining access
|
|
131
|
+
* could be allowed. This was returned in `conditions` in earlier versions.
|
|
132
|
+
*/
|
|
133
|
+
ignoredConditions?: IgnoredConditions;
|
|
134
|
+
/**
|
|
135
|
+
* The resource type for the allowed action. This will be undefined if `allowedPatterns` are provided,
|
|
136
|
+
* since those patterns specify the resource type directly.
|
|
137
|
+
*/
|
|
138
|
+
resourceType?: string;
|
|
139
|
+
/**
|
|
140
|
+
* If true, indicates that access is only allowed when the session has a specific session name.
|
|
141
|
+
* This will be false or undefined if `allowedPatterns` are provided, since those patterns would specify the session name condition directly.
|
|
142
|
+
*/
|
|
143
|
+
dependsOnSessionName?: boolean;
|
|
144
|
+
/**
|
|
145
|
+
* If there are multiple "allowed" patterns for a single principal because of wildcards
|
|
146
|
+
* in the simulation request, this array will contain the different resource patterns that allow access.
|
|
147
|
+
*/
|
|
148
|
+
allowedPatterns?: WhoCanAllowedResourcePattern[];
|
|
149
|
+
/**
|
|
150
|
+
* The policy statements that granted access for this result.
|
|
151
|
+
* Only populated for single resource simulations. For wildcard
|
|
152
|
+
* simulations, see `details` on each entry in `allowedPatterns`.
|
|
153
|
+
*/
|
|
154
|
+
details?: RequestGrant[];
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Base type for WhoCanDenyDetails
|
|
158
|
+
*/
|
|
159
|
+
interface BaseWhoCanDenyDetail {
|
|
160
|
+
/**
|
|
161
|
+
* The principal that was denied
|
|
162
|
+
*/
|
|
163
|
+
principal: string;
|
|
164
|
+
/**
|
|
165
|
+
* The service the denied action belongs to
|
|
166
|
+
*/
|
|
167
|
+
service: string;
|
|
168
|
+
/**
|
|
169
|
+
* The action that was denied, without the service prefix (e.g. "GetObject" instead of "s3:GetObject")
|
|
170
|
+
*/
|
|
171
|
+
action: string;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Denial details for a single resource request.
|
|
175
|
+
*/
|
|
176
|
+
export interface SingleWhoCanDenyDetail extends BaseWhoCanDenyDetail {
|
|
177
|
+
type: 'single';
|
|
178
|
+
/**
|
|
179
|
+
* The specific details of why the request was denied
|
|
180
|
+
*/
|
|
181
|
+
details: RequestDenial[];
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Denial details for a wildcard resource request that may have matched multiple patterns.
|
|
185
|
+
*/
|
|
186
|
+
export interface WildcardWhoCanDenyDetail extends BaseWhoCanDenyDetail {
|
|
187
|
+
type: 'wildcard';
|
|
188
|
+
/**
|
|
189
|
+
* The resource patterns that were denied. Could be empty if there
|
|
190
|
+
* were no patterns found that matched the resource for the principal and action.
|
|
191
|
+
*
|
|
192
|
+
* The same pattern can be returned multiple times if there are multiple resource
|
|
193
|
+
* types for that pattern/action combination.
|
|
194
|
+
*/
|
|
195
|
+
deniedResources: {
|
|
196
|
+
/**
|
|
197
|
+
* The pattern tested in the simulation that resulted in a denial.
|
|
198
|
+
*/
|
|
199
|
+
pattern: string;
|
|
200
|
+
/**
|
|
201
|
+
* The resource type the pattern was tested against.
|
|
202
|
+
*/
|
|
203
|
+
resourceType: string;
|
|
204
|
+
/**
|
|
205
|
+
* The specific details of why the request was denied for this pattern.
|
|
206
|
+
*/
|
|
207
|
+
details: RequestDenial[];
|
|
208
|
+
}[];
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Details on why a principal was denied access to a resource for a specific action, including the specific patterns that were tested and resulted in denials.
|
|
212
|
+
*/
|
|
213
|
+
export type WhoCanDenyDetail = SingleWhoCanDenyDetail | WildcardWhoCanDenyDetail;
|
|
214
|
+
export interface WhoCanResponse {
|
|
215
|
+
simulationCount: number;
|
|
216
|
+
allowed: WhoCanAllowed[];
|
|
217
|
+
allAccountsChecked: boolean;
|
|
218
|
+
accountsNotFound: string[];
|
|
219
|
+
organizationsNotFound: string[];
|
|
220
|
+
organizationalUnitsNotFound: string[];
|
|
221
|
+
principalsNotFound: string[];
|
|
222
|
+
denyDetails?: WhoCanDenyDetail[] | undefined;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Processes a single whoCan request by creating a temporary WhoCanProcessor,
|
|
226
|
+
* enqueuing the request, waiting for it to settle, and shutting down. This
|
|
227
|
+
* preserves the original one-shot behavior where workers and cache are created
|
|
228
|
+
* and destroyed per call.
|
|
229
|
+
*
|
|
230
|
+
* For better performance when running multiple requests, use WhoCanProcessor
|
|
231
|
+
* directly to keep workers and cache alive across calls.
|
|
232
|
+
*
|
|
233
|
+
* @param collectConfigs the collect configurations for loading IAM data
|
|
234
|
+
* @param partition the AWS partition (e.g. 'aws', 'aws-cn')
|
|
235
|
+
* @param request the whoCan request parameters
|
|
236
|
+
* @returns the whoCan response with allowed principals and optional deny details
|
|
237
|
+
*/
|
|
238
|
+
export declare function whoCan(collectConfigs: TopLevelConfig[], partition: string, request: ResourceAccessRequest): Promise<WhoCanResponse>;
|
|
239
|
+
export declare function uniqueAccountsToCheck(collectClient: IamCollectClient, accountsToCheck: AccountsToCheck): Promise<{
|
|
240
|
+
accountsNotFound: string[];
|
|
241
|
+
organizationsNotFound: string[];
|
|
242
|
+
organizationalUnitsNotFound: string[];
|
|
243
|
+
accounts: string[];
|
|
244
|
+
}>;
|
|
245
|
+
export interface AccountsToCheck {
|
|
246
|
+
allAccounts: boolean;
|
|
247
|
+
specificAccounts: string[];
|
|
248
|
+
specificPrincipals: string[];
|
|
249
|
+
specificOrganizations: string[];
|
|
250
|
+
specificOrganizationalUnits: string[];
|
|
251
|
+
checkAnonymous: boolean;
|
|
252
|
+
/**
|
|
253
|
+
* Whether every principal from the resource account should be checked.
|
|
254
|
+
*/
|
|
255
|
+
checkAllFromResourceAccount: boolean;
|
|
256
|
+
/**
|
|
257
|
+
* Whether the resource policy explicitly grants access to principals in the
|
|
258
|
+
* resource account. This is true when:
|
|
259
|
+
* - The policy has no narrowing conditions (open wildcard or NotPrincipal), or
|
|
260
|
+
* - The policy conditions explicitly reference the resource account, or
|
|
261
|
+
* - The policy narrows to orgs/OUs (which may include the resource account).
|
|
262
|
+
*/
|
|
263
|
+
resourceAccountTrustedByPolicy: boolean;
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Derives the accounts and specific principals that should be considered from a resource policy.
|
|
267
|
+
*
|
|
268
|
+
* Specific STS session principals are resolved through collect data so account-enumeration
|
|
269
|
+
* paths can de-duplicate path-qualified roles that resolve from pathless session ARNs.
|
|
270
|
+
*
|
|
271
|
+
* @param resourcePolicy The resource policy document to inspect.
|
|
272
|
+
* @param resourceAccount The account ID that owns the resource, when known.
|
|
273
|
+
* @param collectClient The collect client used to resolve canonical principal ARNs.
|
|
274
|
+
* @returns The accounts, principals, organizations, and related flags to consider for whoCan.
|
|
275
|
+
*/
|
|
276
|
+
export declare function accountsToCheckBasedOnResourcePolicy(resourcePolicy: any, resourceAccount: string | undefined, collectClient: IamCollectClient): Promise<AccountsToCheck>;
|
|
277
|
+
export declare function actionsForWhoCan(request: Pick<ResourceAccessRequest, 'actions' | 'resource'>): Promise<string[]>;
|
|
278
|
+
/**
|
|
279
|
+
* Get the the possible resource types for an action and resource
|
|
280
|
+
*
|
|
281
|
+
* @param service the service the action belongs to
|
|
282
|
+
* @param action the action to get the resource type for
|
|
283
|
+
* @param resourceArn the resource type matching the action, if any
|
|
284
|
+
* @throws an error if the service or action does not exist, or if the action is a wildcard only action
|
|
285
|
+
*/
|
|
286
|
+
export declare function lookupActionsForResourceArn(resourceArn: string): Promise<string[]>;
|
|
287
|
+
export declare function findResourceTypeForArn(resourceArn: string): Promise<[string, ResourceType]>;
|
|
288
|
+
/**
|
|
289
|
+
* Sort the results in a WhoCanResponse in place for consistent output
|
|
290
|
+
*
|
|
291
|
+
* @param whoCanResponse the WhoCanResponse to sort
|
|
292
|
+
*/
|
|
293
|
+
export declare function sortWhoCanResults(whoCanResponse: WhoCanResponse): void;
|
|
294
|
+
export {};
|
|
295
|
+
//# sourceMappingURL=whoCan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoCan.d.ts","sourceRoot":"","sources":["../../../src/whoCan/whoCan.ts"],"names":[],"mappings":"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"}
|