@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,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makePrincipalIndex = makePrincipalIndex;
|
|
4
|
+
const bitset_1 = require("bitset");
|
|
5
|
+
const bitset_js_1 = require("../utils/bitset.js");
|
|
6
|
+
/**
|
|
7
|
+
* Make a principal index for all principals in the collect client
|
|
8
|
+
*
|
|
9
|
+
* @param collectClient the collect client to use
|
|
10
|
+
*/
|
|
11
|
+
async function makePrincipalIndex(collectClient) {
|
|
12
|
+
const principalIndex = {
|
|
13
|
+
prefix: 'arn:aws:iam::',
|
|
14
|
+
principals: [],
|
|
15
|
+
accounts: {},
|
|
16
|
+
action: {},
|
|
17
|
+
notAction: {}
|
|
18
|
+
};
|
|
19
|
+
const allAccounts = await collectClient.allAccounts();
|
|
20
|
+
let globalIndex = 0;
|
|
21
|
+
for (const accountId of allAccounts) {
|
|
22
|
+
const accountBitSet = new bitset_1.default();
|
|
23
|
+
const principals = await collectClient.getAllPrincipalsInAccount(accountId);
|
|
24
|
+
const accountStart = globalIndex;
|
|
25
|
+
for (const principalArn of principals) {
|
|
26
|
+
principalIndex.principals.push((0, bitset_js_1.compressPrincipalString)(principalArn));
|
|
27
|
+
accountBitSet.set(globalIndex, 1);
|
|
28
|
+
const allowPolicies = await collectClient.getAllowPoliciesForPrincipal(principalArn);
|
|
29
|
+
addPoliciesToCache(allowPolicies, principalIndex, globalIndex);
|
|
30
|
+
globalIndex++;
|
|
31
|
+
}
|
|
32
|
+
const accountEnd = globalIndex - 1;
|
|
33
|
+
principalIndex.accounts[accountId] = [accountStart, accountEnd];
|
|
34
|
+
}
|
|
35
|
+
for (const type of ['action', 'notAction']) {
|
|
36
|
+
for (const [, actions] of Object.entries(principalIndex[type])) {
|
|
37
|
+
for (const [action, bitset] of Object.entries(actions)) {
|
|
38
|
+
actions[action] = (0, bitset_js_1.encodeBitSet)(bitset);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
delete principalIndex.notAction['*'];
|
|
43
|
+
await collectClient.savePrincipalIndex('principals', {
|
|
44
|
+
principals: principalIndex.principals,
|
|
45
|
+
prefix: principalIndex.prefix
|
|
46
|
+
});
|
|
47
|
+
await collectClient.savePrincipalIndex('accounts', principalIndex.accounts);
|
|
48
|
+
await collectClient.savePrincipalIndex('not-actions', principalIndex.notAction);
|
|
49
|
+
for (const [service, serviceIndex] of Object.entries(principalIndex.action)) {
|
|
50
|
+
const serviceKey = service === '*' ? 'wildcard' : service;
|
|
51
|
+
await collectClient.savePrincipalIndex(`actions-${serviceKey}`, serviceIndex);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Add policies to the existing cache
|
|
56
|
+
*
|
|
57
|
+
* @param policies the policies to add
|
|
58
|
+
* @param existingCache the existing cache
|
|
59
|
+
* @param principalIndex the index of the principal to add
|
|
60
|
+
*/
|
|
61
|
+
function addPoliciesToCache(policies, existingCache, principalIndex) {
|
|
62
|
+
for (const policy of policies) {
|
|
63
|
+
for (const statement of policy.statements()) {
|
|
64
|
+
if (statement.isAllow()) {
|
|
65
|
+
if (statement.isActionStatement()) {
|
|
66
|
+
for (const action of statement.actions()) {
|
|
67
|
+
setCacheAction(existingCache.action, action, principalIndex);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else if (statement.isNotActionStatement()) {
|
|
71
|
+
for (const action of statement.notActions()) {
|
|
72
|
+
setCacheAction(existingCache.notAction, action, principalIndex);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Sets an action for a principal in a cache.
|
|
81
|
+
*
|
|
82
|
+
* @param cache The cache to update.
|
|
83
|
+
* @param action The action to set.
|
|
84
|
+
* @param principalIndex The index of the principal.
|
|
85
|
+
*/
|
|
86
|
+
function setCacheAction(cache, action, principalIndex) {
|
|
87
|
+
if (action.isWildcardAction()) {
|
|
88
|
+
if (!cache['*']) {
|
|
89
|
+
cache['*'] = { '*': new bitset_1.default() };
|
|
90
|
+
}
|
|
91
|
+
cache['*']['*'].set(principalIndex, 1);
|
|
92
|
+
}
|
|
93
|
+
else if (action.isServiceAction()) {
|
|
94
|
+
const service = action.service().toLowerCase();
|
|
95
|
+
const serviceAction = action.action().toLowerCase();
|
|
96
|
+
if (!cache[service]) {
|
|
97
|
+
cache[service] = {};
|
|
98
|
+
}
|
|
99
|
+
if (!cache[service][serviceAction]) {
|
|
100
|
+
cache[service][serviceAction] = new bitset_1.default();
|
|
101
|
+
}
|
|
102
|
+
cache[service][serviceAction].set(principalIndex, 1);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=makePrincipalIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"makePrincipalIndex.js","sourceRoot":"","sources":["../../../src/principalIndex/makePrincipalIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { IamCollectClient, type InlinePolicy, type ManagedPolicy, type SimulationOrgPolicies } from './collect/client.js';
|
|
2
|
+
export interface PrincipalPolicies {
|
|
3
|
+
managedPolicies: ManagedPolicy[];
|
|
4
|
+
inlinePolicies: InlinePolicy[];
|
|
5
|
+
permissionBoundary: ManagedPolicy | undefined;
|
|
6
|
+
scps: SimulationOrgPolicies[];
|
|
7
|
+
rcps: SimulationOrgPolicies[];
|
|
8
|
+
groupPolicies?: {
|
|
9
|
+
group: string;
|
|
10
|
+
managedPolicies: ManagedPolicy[];
|
|
11
|
+
inlinePolicies: InlinePolicy[];
|
|
12
|
+
}[];
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Get all the IAM policies for a user, including managed and inline policies, permission boundaries, and group policies.
|
|
16
|
+
*
|
|
17
|
+
* @param collectClient the IAM collect client to use for retrieving policies
|
|
18
|
+
* @param principalArn the ARN of the user to get policies for
|
|
19
|
+
* @returns an object containing the managed policies, inline policies, permission boundary, and group policies
|
|
20
|
+
*/
|
|
21
|
+
export declare function getAllPoliciesForUser(collectClient: IamCollectClient, principalArn: string): Promise<PrincipalPolicies>;
|
|
22
|
+
/**
|
|
23
|
+
* Get all the IAM policies for a role, including managed and inline policies and permission boundaries.
|
|
24
|
+
*
|
|
25
|
+
* @param collectClient the IAM collect client to use for retrieving policies
|
|
26
|
+
* @param principalArn the ARN of the role to get policies for
|
|
27
|
+
* @returns an object containing the managed policies, inline policies, and permission boundary
|
|
28
|
+
*/
|
|
29
|
+
export declare function getAllPoliciesForRole(collectClient: IamCollectClient, principalArn: string): Promise<PrincipalPolicies>;
|
|
30
|
+
/**
|
|
31
|
+
* Get all IAM policies for a supported principal.
|
|
32
|
+
*
|
|
33
|
+
* IAM role and assumed-role principals are resolved to their canonical stored ARN before
|
|
34
|
+
* loading policies so pathless STS session principals can use path-qualified IAM role data.
|
|
35
|
+
*
|
|
36
|
+
* @param collectClient the IAM collect client to use for retrieving policies
|
|
37
|
+
* @param principalArn the ARN or service principal to get policies for
|
|
38
|
+
* @returns all policies that apply directly to the principal
|
|
39
|
+
*/
|
|
40
|
+
export declare function getAllPoliciesForPrincipal(collectClient: IamCollectClient, principalArn: string): Promise<PrincipalPolicies>;
|
|
41
|
+
export declare function isArnPrincipal(principal: string): boolean;
|
|
42
|
+
export declare function isServicePrincipal(principal: string): boolean;
|
|
43
|
+
export declare function isServiceLinkedRole(principal: string): boolean;
|
|
44
|
+
export declare function isOidcPrincipal(principal: string): boolean;
|
|
45
|
+
export declare function isSamlPrincipal(principal: string): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Check to see if a principal exists or is an AWS service principal.
|
|
48
|
+
*
|
|
49
|
+
* @param principal the principal to check
|
|
50
|
+
* @param collectClient the IAM collect client to use for checking existence
|
|
51
|
+
* @returns true if the principal exists or is a service principal, false otherwise
|
|
52
|
+
*/
|
|
53
|
+
export declare function principalExists(principal: string, collectClient: IamCollectClient): Promise<boolean>;
|
|
54
|
+
//# sourceMappingURL=principals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principals.d.ts","sourceRoot":"","sources":["../../src/principals.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,aAAa,EAAE,CAAA;IAChC,cAAc,EAAE,YAAY,EAAE,CAAA;IAC9B,kBAAkB,EAAE,aAAa,GAAG,SAAS,CAAA;IAC7C,IAAI,EAAE,qBAAqB,EAAE,CAAA;IAC7B,IAAI,EAAE,qBAAqB,EAAE,CAAA;IAC7B,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,MAAM,CAAA;QACb,eAAe,EAAE,aAAa,EAAE,CAAA;QAChC,cAAc,EAAE,YAAY,EAAE,CAAA;KAC/B,EAAE,CAAA;CACJ;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,gBAAgB,EAC/B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA2B5B;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CACzC,aAAa,EAAE,gBAAgB,EAC/B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED;;;;;;;;;GASG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,gBAAgB,EAC/B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,iBAAiB,CAAC,CA4B5B;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAG9D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED;;;;;;GAMG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAMlB"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAllPoliciesForUser = getAllPoliciesForUser;
|
|
4
|
+
exports.getAllPoliciesForRole = getAllPoliciesForRole;
|
|
5
|
+
exports.getAllPoliciesForPrincipal = getAllPoliciesForPrincipal;
|
|
6
|
+
exports.isArnPrincipal = isArnPrincipal;
|
|
7
|
+
exports.isServicePrincipal = isServicePrincipal;
|
|
8
|
+
exports.isServiceLinkedRole = isServiceLinkedRole;
|
|
9
|
+
exports.isOidcPrincipal = isOidcPrincipal;
|
|
10
|
+
exports.isSamlPrincipal = isSamlPrincipal;
|
|
11
|
+
exports.principalExists = principalExists;
|
|
12
|
+
const iam_utils_1 = require("@actsecurity/iam-utils");
|
|
13
|
+
/**
|
|
14
|
+
* Get all the IAM policies for a user, including managed and inline policies, permission boundaries, and group policies.
|
|
15
|
+
*
|
|
16
|
+
* @param collectClient the IAM collect client to use for retrieving policies
|
|
17
|
+
* @param principalArn the ARN of the user to get policies for
|
|
18
|
+
* @returns an object containing the managed policies, inline policies, permission boundary, and group policies
|
|
19
|
+
*/
|
|
20
|
+
async function getAllPoliciesForUser(collectClient, principalArn) {
|
|
21
|
+
const accountId = (0, iam_utils_1.splitArnParts)(principalArn).accountId;
|
|
22
|
+
const managedPolicies = await collectClient.getManagedPoliciesForUser(principalArn);
|
|
23
|
+
const inlinePolicies = await collectClient.getInlinePoliciesForUser(principalArn);
|
|
24
|
+
const permissionBoundary = await collectClient.getPermissionsBoundaryForUser(principalArn);
|
|
25
|
+
const groups = await collectClient.getGroupsForUser(principalArn);
|
|
26
|
+
const scps = await collectClient.getScpHierarchyForAccount(accountId);
|
|
27
|
+
const rcps = await collectClient.getRcpHierarchyForAccount(accountId);
|
|
28
|
+
const groupPolicies = [];
|
|
29
|
+
for (const group of groups) {
|
|
30
|
+
const groupManagedPolicies = await collectClient.getManagedPoliciesForGroup(group);
|
|
31
|
+
const groupInlinePolicies = await collectClient.getInlinePoliciesForGroup(group);
|
|
32
|
+
groupPolicies.push({
|
|
33
|
+
group,
|
|
34
|
+
managedPolicies: groupManagedPolicies,
|
|
35
|
+
inlinePolicies: groupInlinePolicies
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
scps,
|
|
40
|
+
rcps,
|
|
41
|
+
managedPolicies,
|
|
42
|
+
inlinePolicies,
|
|
43
|
+
permissionBoundary,
|
|
44
|
+
groupPolicies
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get all the IAM policies for a role, including managed and inline policies and permission boundaries.
|
|
49
|
+
*
|
|
50
|
+
* @param collectClient the IAM collect client to use for retrieving policies
|
|
51
|
+
* @param principalArn the ARN of the role to get policies for
|
|
52
|
+
* @returns an object containing the managed policies, inline policies, and permission boundary
|
|
53
|
+
*/
|
|
54
|
+
async function getAllPoliciesForRole(collectClient, principalArn) {
|
|
55
|
+
const accountId = (0, iam_utils_1.splitArnParts)(principalArn).accountId;
|
|
56
|
+
const managedPolicies = await collectClient.getManagedPoliciesForRole(principalArn);
|
|
57
|
+
const inlinePolicies = await collectClient.getInlinePoliciesForRole(principalArn);
|
|
58
|
+
const permissionBoundary = await collectClient.getPermissionsBoundaryForRole(principalArn);
|
|
59
|
+
const scps = await collectClient.getScpHierarchyForAccount(accountId);
|
|
60
|
+
const rcps = await collectClient.getRcpHierarchyForAccount(accountId);
|
|
61
|
+
return {
|
|
62
|
+
scps,
|
|
63
|
+
rcps,
|
|
64
|
+
managedPolicies,
|
|
65
|
+
inlinePolicies,
|
|
66
|
+
permissionBoundary
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get all IAM policies for a supported principal.
|
|
71
|
+
*
|
|
72
|
+
* IAM role and assumed-role principals are resolved to their canonical stored ARN before
|
|
73
|
+
* loading policies so pathless STS session principals can use path-qualified IAM role data.
|
|
74
|
+
*
|
|
75
|
+
* @param collectClient the IAM collect client to use for retrieving policies
|
|
76
|
+
* @param principalArn the ARN or service principal to get policies for
|
|
77
|
+
* @returns all policies that apply directly to the principal
|
|
78
|
+
*/
|
|
79
|
+
async function getAllPoliciesForPrincipal(collectClient, principalArn) {
|
|
80
|
+
if (isServicePrincipal(principalArn) ||
|
|
81
|
+
isSamlPrincipal(principalArn) ||
|
|
82
|
+
isOidcPrincipal(principalArn)) {
|
|
83
|
+
return {
|
|
84
|
+
scps: [],
|
|
85
|
+
rcps: [],
|
|
86
|
+
managedPolicies: [],
|
|
87
|
+
inlinePolicies: [],
|
|
88
|
+
permissionBoundary: undefined,
|
|
89
|
+
groupPolicies: []
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
if ((0, iam_utils_1.isIamUserArn)(principalArn)) {
|
|
93
|
+
return getAllPoliciesForUser(collectClient, principalArn);
|
|
94
|
+
}
|
|
95
|
+
else if ((0, iam_utils_1.isIamRoleArn)(principalArn)) {
|
|
96
|
+
const roleArn = (await collectClient.resolvePrincipalArn(principalArn)) ?? principalArn;
|
|
97
|
+
return getAllPoliciesForRole(collectClient, roleArn);
|
|
98
|
+
}
|
|
99
|
+
else if ((0, iam_utils_1.isAssumedRoleArn)(principalArn)) {
|
|
100
|
+
const roleArn = (await collectClient.resolvePrincipalArn(principalArn)) ??
|
|
101
|
+
(0, iam_utils_1.convertAssumedRoleArnToRoleArn)(principalArn);
|
|
102
|
+
return getAllPoliciesForRole(collectClient, roleArn);
|
|
103
|
+
}
|
|
104
|
+
throw new Error(`Unsupported principal type: ${principalArn}`);
|
|
105
|
+
}
|
|
106
|
+
function isArnPrincipal(principal) {
|
|
107
|
+
return principal.startsWith('arn:');
|
|
108
|
+
}
|
|
109
|
+
function isServicePrincipal(principal) {
|
|
110
|
+
return !isArnPrincipal(principal) && principal.endsWith('amazonaws.com');
|
|
111
|
+
}
|
|
112
|
+
function isServiceLinkedRole(principal) {
|
|
113
|
+
const arnParts = (0, iam_utils_1.splitArnParts)(principal);
|
|
114
|
+
return isArnPrincipal(principal) && !!arnParts.resourcePath?.startsWith('aws-service-role/');
|
|
115
|
+
}
|
|
116
|
+
function isOidcPrincipal(principal) {
|
|
117
|
+
if (!isArnPrincipal(principal)) {
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const parts = (0, iam_utils_1.splitArnParts)(principal);
|
|
121
|
+
return parts.service === 'iam' && parts.resourceType === 'oidc-provider';
|
|
122
|
+
}
|
|
123
|
+
function isSamlPrincipal(principal) {
|
|
124
|
+
if (!isArnPrincipal(principal)) {
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
const parts = (0, iam_utils_1.splitArnParts)(principal);
|
|
128
|
+
return parts.service === 'iam' && parts.resourceType === 'saml-provider';
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Check to see if a principal exists or is an AWS service principal.
|
|
132
|
+
*
|
|
133
|
+
* @param principal the principal to check
|
|
134
|
+
* @param collectClient the IAM collect client to use for checking existence
|
|
135
|
+
* @returns true if the principal exists or is a service principal, false otherwise
|
|
136
|
+
*/
|
|
137
|
+
async function principalExists(principal, collectClient) {
|
|
138
|
+
if (isServicePrincipal(principal)) {
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
return collectClient.principalExists(principal);
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=principals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"principals.js","sourceRoot":"","sources":["../../src/principals.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ValidatedPolicy } from '@actsecurity/iam-policy';
|
|
2
|
+
import { type Simulation } from '@actsecurity/iam-simulate';
|
|
3
|
+
import { IamCollectClient } from './collect/client.js';
|
|
4
|
+
/**
|
|
5
|
+
* Get the account ID for a given resource ARN. Lookup index if necessary to find the account ID.
|
|
6
|
+
*
|
|
7
|
+
* @param collectClient the IAM collect client to use for retrieving the account ID
|
|
8
|
+
* @param resourceArn the ARN of the resource to get the account ID for
|
|
9
|
+
* @returns the account ID for the specified resource, or undefined if not found
|
|
10
|
+
*/
|
|
11
|
+
export declare function getAccountIdForResource(collectClient: IamCollectClient, resourceArn: string): Promise<string | undefined>;
|
|
12
|
+
/**
|
|
13
|
+
* Get the resource control policies (RCPs) for a given resource ARN.
|
|
14
|
+
*
|
|
15
|
+
* @param collectClient the IAM collect client to use for retrieving RCPs
|
|
16
|
+
* @param resourceArn the ARN of the resource to get RCPs for
|
|
17
|
+
* @param resourceAccount the account ID of the resource, if known
|
|
18
|
+
* @returns an array of resource control policies for the specified resource
|
|
19
|
+
*/
|
|
20
|
+
export declare function getRcpsForResource(collectClient: IamCollectClient, resourceArn: string, resourceAccount: string | undefined): Promise<Simulation['resourceControlPolicies']>;
|
|
21
|
+
/**
|
|
22
|
+
* Get the resource policy for a resource, if any.
|
|
23
|
+
*
|
|
24
|
+
* @param collectClient the IAM collect client to use for retrieving the resource policy
|
|
25
|
+
* @param resourceArn the ARN of the resource to get the policy for
|
|
26
|
+
* @param resourceAccount the account ID of the resource, if known
|
|
27
|
+
* @returns the resource policy for the specified resource, or undefined if not found
|
|
28
|
+
*/
|
|
29
|
+
export declare function getResourcePolicyForResource(collectClient: IamCollectClient, resourceArn: string, resourceAccount: string | undefined): Promise<ValidatedPolicy<{
|
|
30
|
+
name: string;
|
|
31
|
+
}> | undefined>;
|
|
32
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAA;AAE3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,gBAAgB,EAC/B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgB7B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,gBAAgB,EAC/B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,OAAO,CAAC,UAAU,CAAC,yBAAyB,CAAC,CAAC,CAMhD;AAED;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAChD,aAAa,EAAE,gBAAgB,EAC/B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,MAAM,GAAG,SAAS,GAClC,OAAO,CAAC,eAAe,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,SAAS,CAAC,CAiBxD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAccountIdForResource = getAccountIdForResource;
|
|
4
|
+
exports.getRcpsForResource = getRcpsForResource;
|
|
5
|
+
exports.getResourcePolicyForResource = getResourcePolicyForResource;
|
|
6
|
+
const iam_utils_1 = require("@actsecurity/iam-utils");
|
|
7
|
+
/**
|
|
8
|
+
* Get the account ID for a given resource ARN. Lookup index if necessary to find the account ID.
|
|
9
|
+
*
|
|
10
|
+
* @param collectClient the IAM collect client to use for retrieving the account ID
|
|
11
|
+
* @param resourceArn the ARN of the resource to get the account ID for
|
|
12
|
+
* @returns the account ID for the specified resource, or undefined if not found
|
|
13
|
+
*/
|
|
14
|
+
async function getAccountIdForResource(collectClient, resourceArn) {
|
|
15
|
+
if (!resourceArn.startsWith('arn:')) {
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
const arnParts = (0, iam_utils_1.splitArnParts)(resourceArn);
|
|
19
|
+
let accountId = arnParts.accountId;
|
|
20
|
+
if (accountId && accountId !== 'aws') {
|
|
21
|
+
return accountId;
|
|
22
|
+
}
|
|
23
|
+
if (arnParts.service === 's3' && arnParts.resourceType === '') {
|
|
24
|
+
const bucketName = arnParts.resourcePath.split('/')[0];
|
|
25
|
+
return collectClient.getAccountIdForBucket(bucketName);
|
|
26
|
+
}
|
|
27
|
+
else if (arnParts.service === 'apigateway' && arnParts.resourceType === 'restapis') {
|
|
28
|
+
return collectClient.getAccountIdForRestApi(resourceArn);
|
|
29
|
+
}
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get the resource control policies (RCPs) for a given resource ARN.
|
|
34
|
+
*
|
|
35
|
+
* @param collectClient the IAM collect client to use for retrieving RCPs
|
|
36
|
+
* @param resourceArn the ARN of the resource to get RCPs for
|
|
37
|
+
* @param resourceAccount the account ID of the resource, if known
|
|
38
|
+
* @returns an array of resource control policies for the specified resource
|
|
39
|
+
*/
|
|
40
|
+
async function getRcpsForResource(collectClient, resourceArn, resourceAccount) {
|
|
41
|
+
const accountId = resourceAccount || (await getAccountIdForResource(collectClient, resourceArn));
|
|
42
|
+
if (!accountId) {
|
|
43
|
+
throw new Error(`Unable to determine account ID for resource ARN: ${resourceArn}`);
|
|
44
|
+
}
|
|
45
|
+
return collectClient.getRcpHierarchyForAccount(accountId);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the resource policy for a resource, if any.
|
|
49
|
+
*
|
|
50
|
+
* @param collectClient the IAM collect client to use for retrieving the resource policy
|
|
51
|
+
* @param resourceArn the ARN of the resource to get the policy for
|
|
52
|
+
* @param resourceAccount the account ID of the resource, if known
|
|
53
|
+
* @returns the resource policy for the specified resource, or undefined if not found
|
|
54
|
+
*/
|
|
55
|
+
async function getResourcePolicyForResource(collectClient, resourceArn, resourceAccount) {
|
|
56
|
+
const accountId = resourceAccount || (await getAccountIdForResource(collectClient, resourceArn));
|
|
57
|
+
if (!accountId) {
|
|
58
|
+
throw new Error(`Unable to determine account ID for resource ARN: ${resourceArn}`);
|
|
59
|
+
}
|
|
60
|
+
const resourcePolicy = await collectClient.getResourcePolicyForArn(resourceArn, accountId);
|
|
61
|
+
if (resourcePolicy) {
|
|
62
|
+
return resourcePolicy;
|
|
63
|
+
}
|
|
64
|
+
const ramPolicy = await collectClient.getRamSharePolicyForArn(resourceArn, accountId);
|
|
65
|
+
if (ramPolicy) {
|
|
66
|
+
return ramPolicy;
|
|
67
|
+
}
|
|
68
|
+
//TODO: there should be more here for things like glue resources
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/resources.ts"],"names":[],"mappings":";;AAYA,0DAmBC;AAUD,gDAUC;AAUD,oEAqBC;AAhFD,sDAAsD;AAGtD;;;;;;GAMG;AACI,KAAK,UAAU,uBAAuB,CAC3C,aAA+B,EAC/B,WAAmB;IAEnB,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACpC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAA,yBAAa,EAAC,WAAW,CAAC,CAAA;IAC3C,IAAI,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAA;IAClC,IAAI,SAAS,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;QACrC,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,QAAQ,CAAC,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,YAAY,KAAK,EAAE,EAAE,CAAC;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,YAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;QACvD,OAAO,aAAa,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;IACxD,CAAC;SAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,YAAY,IAAI,QAAQ,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;QACrF,OAAO,aAAa,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAA;IAC1D,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,kBAAkB,CACtC,aAA+B,EAC/B,WAAmB,EACnB,eAAmC;IAEnC,MAAM,SAAS,GAAG,eAAe,IAAI,CAAC,MAAM,uBAAuB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;IAChG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,WAAW,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,OAAO,aAAa,CAAC,yBAAyB,CAAC,SAAS,CAAC,CAAA;AAC3D,CAAC;AAED;;;;;;;GAOG;AACI,KAAK,UAAU,4BAA4B,CAChD,aAA+B,EAC/B,WAAmB,EACnB,eAAmC;IAEnC,MAAM,SAAS,GAAG,eAAe,IAAI,CAAC,MAAM,uBAAuB,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC,CAAA;IAChG,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,oDAAoD,WAAW,EAAE,CAAC,CAAA;IACpF,CAAC;IACD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IAC1F,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAA;IACvB,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,uBAAuB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;IACrF,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,gEAAgE;IAChE,OAAO,SAAS,CAAA;AAClB,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { IamCollectClient } from '../collect/client.js';
|
|
2
|
+
import { type SimulationRequest } from './simulate.js';
|
|
3
|
+
/**
|
|
4
|
+
* Context keys for IAM simulation requests.
|
|
5
|
+
*
|
|
6
|
+
* These keys are used to provide additional context for the simulation, such as
|
|
7
|
+
* the principal making the request, the resource being accessed, and any additional
|
|
8
|
+
* context keys that may be required for the simulation.
|
|
9
|
+
*/
|
|
10
|
+
export type ContextKeys = Record<string, string | string[]>;
|
|
11
|
+
export declare const knownContextKeys: readonly string[];
|
|
12
|
+
export declare const CONTEXT_KEYS: {
|
|
13
|
+
assumedRoot: string;
|
|
14
|
+
userId: string;
|
|
15
|
+
vpc: string;
|
|
16
|
+
vpcEndpointId: string;
|
|
17
|
+
vpcEndpointAccount: string;
|
|
18
|
+
vpcEndpointOrgId: string;
|
|
19
|
+
vpcEndpointOrgPaths: string;
|
|
20
|
+
vpcArn: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Checks if a context has a specific key (case-insensitive).
|
|
24
|
+
*
|
|
25
|
+
* @param context - The context to check.
|
|
26
|
+
* @param key - The key to check for.
|
|
27
|
+
* @returns True if the context has the key, false otherwise.
|
|
28
|
+
*/
|
|
29
|
+
export declare function contextHasKey(context: ContextKeys, key: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Get the value of a context key (case-insensitive).
|
|
32
|
+
*
|
|
33
|
+
* @param context - The context to check.
|
|
34
|
+
* @param key - The key to get the value for.
|
|
35
|
+
* @returns The value of the context key, or undefined if it doesn't exist.
|
|
36
|
+
*/
|
|
37
|
+
export declare function contextValue(context: ContextKeys, key: string): string | string[] | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Get the context keys for a simulation request.
|
|
40
|
+
*
|
|
41
|
+
* @param collectClient the collect client to use for fetching data
|
|
42
|
+
* @param simulationRequest the simulation request to create context keys for
|
|
43
|
+
* @param service the service the request is for
|
|
44
|
+
* @param contextKeyOverrides the context key overrides to apply
|
|
45
|
+
* @param resolvedPrincipalArnForContext canonical principal ARN to use for role-backed context keys
|
|
46
|
+
* @returns a promise that resolves to the context keys for the simulation request
|
|
47
|
+
*/
|
|
48
|
+
export declare function createContextKeys(collectClient: IamCollectClient, simulationRequest: SimulationRequest, service: string, contextKeyOverrides: ContextKeys, resolvedPrincipalArnForContext?: string): Promise<{
|
|
49
|
+
resourceTagsAreKnown: boolean;
|
|
50
|
+
contextKeys: ContextKeys;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Get the VPC keys that should be added to the context for a simulation.
|
|
54
|
+
*
|
|
55
|
+
* @param context the existing context
|
|
56
|
+
* @param service the service the request is for
|
|
57
|
+
* @param collectClient the IAM collect client
|
|
58
|
+
* @returns a record of VPC context keys
|
|
59
|
+
*/
|
|
60
|
+
export declare function getVpcKeys(context: ContextKeys, service: string, collectClient: IamCollectClient): Promise<ContextKeys>;
|
|
61
|
+
/**
|
|
62
|
+
* Check if a service supports extra VPC endpoint data.
|
|
63
|
+
*
|
|
64
|
+
* @param service the service to check
|
|
65
|
+
* @returns true if the service supports extra VPC endpoint data, false otherwise
|
|
66
|
+
*/
|
|
67
|
+
export declare function serviceSupportsExtraVpcEndpointData(service: string): boolean;
|
|
68
|
+
//# sourceMappingURL=contextKeys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"contextKeys.d.ts","sourceRoot":"","sources":["../../../src/simulate/contextKeys.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAEvD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;AAE3D,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAyB7C,CAAA;AAED,eAAO,MAAM,YAAY;;;;;;;;;CASxB,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAExE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAK7F;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,gBAAgB,EAC/B,iBAAiB,EAAE,iBAAiB,EACpC,OAAO,EAAE,MAAM,EACf,mBAAmB,EAAE,WAAW,EAChC,8BAA8B,CAAC,EAAE,MAAM,GACtC,OAAO,CAAC;IAAE,oBAAoB,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,WAAW,CAAA;CAAE,CAAC,CAoItE;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAC9B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,gBAAgB,GAC9B,OAAO,CAAC,WAAW,CAAC,CAgEtB;AAyCD;;;;;GAKG;AACH,wBAAgB,mCAAmC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAE5E"}
|