@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 @@
|
|
|
1
|
+
{"version":3,"file":"permission.js","sourceRoot":"","sources":["../../../src/principalCan/permission.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { type Policy, type Statement } from '@actsecurity/iam-policy';
|
|
2
|
+
import { Permission, type PermissionEffect } from './permission.js';
|
|
3
|
+
/**
|
|
4
|
+
* A permission set will be a collection of permissions for a specific effect (Allow or Deny).
|
|
5
|
+
* So this will be used to represent things like "all the allowed permissions in a set of SCPs"
|
|
6
|
+
* and "all the deny's that apply to a principal"
|
|
7
|
+
*/
|
|
8
|
+
export declare class PermissionSet {
|
|
9
|
+
readonly effect: PermissionEffect;
|
|
10
|
+
private permissions;
|
|
11
|
+
constructor(effect: PermissionEffect);
|
|
12
|
+
/**
|
|
13
|
+
* Add a new permission to the set. If the new permission overlaps with an existing one,
|
|
14
|
+
* they will be unioned together to avoid redundancy.
|
|
15
|
+
*
|
|
16
|
+
* @param newPermission the permission to add
|
|
17
|
+
*/
|
|
18
|
+
addPermission(newPermission: Permission): void;
|
|
19
|
+
/**
|
|
20
|
+
* Get the permissions for a specific service and action.
|
|
21
|
+
*
|
|
22
|
+
* @param service the service to get permissions for
|
|
23
|
+
* @param action the action to get permissions for
|
|
24
|
+
* @returns the permissions that match the service and action
|
|
25
|
+
*/
|
|
26
|
+
getPermissions(service: string, action: string): Permission[];
|
|
27
|
+
/**
|
|
28
|
+
* Check if the permission set has any permissions for a specific service
|
|
29
|
+
*
|
|
30
|
+
* @param service the service to check permissions for
|
|
31
|
+
* @returns true if the permission set has permissions for the service, false otherwise
|
|
32
|
+
*/
|
|
33
|
+
hasService(service: string): boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Check if the permission set has any permissions for a specific action
|
|
36
|
+
*
|
|
37
|
+
* @param service the service the action belongs to
|
|
38
|
+
* @param action the action to check permissions for
|
|
39
|
+
* @returns true if the permission set has permissions for the action, false otherwise
|
|
40
|
+
*/
|
|
41
|
+
hasAction(service: string, action: string): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Check if the permission set is empty (has no permissions)
|
|
44
|
+
* @returns true if the permission set is empty, false otherwise
|
|
45
|
+
*/
|
|
46
|
+
isEmpty(): boolean;
|
|
47
|
+
/**
|
|
48
|
+
* Get all the permissions in the permission set
|
|
49
|
+
*
|
|
50
|
+
* @returns a copy of all the permissions in the permission set
|
|
51
|
+
*/
|
|
52
|
+
getAllPermissions(): Permission[];
|
|
53
|
+
/**
|
|
54
|
+
* Return a new PermissionSet containing the intersection of this set and another.
|
|
55
|
+
* Only permissions that overlap (same effect, service, action, and intersecting resources/conditions)
|
|
56
|
+
* will be included.
|
|
57
|
+
*
|
|
58
|
+
* @param other The other PermissionSet to intersect with.
|
|
59
|
+
* @returns A new PermissionSet containing the intersecting permissions.
|
|
60
|
+
* @throws Error if the effects of the two PermissionSets do not match.
|
|
61
|
+
*/
|
|
62
|
+
intersection(other: PermissionSet): PermissionSet;
|
|
63
|
+
/**
|
|
64
|
+
* Subtract a Deny PermissionSet from this Allow PermissionSet.
|
|
65
|
+
*
|
|
66
|
+
* Returns two PermissionSets: one with the remaining Allow permissions,
|
|
67
|
+
* and one with any Deny permissions that were created as a result of the subtraction.
|
|
68
|
+
*
|
|
69
|
+
* @param deny the Deny PermissionSet to subtract
|
|
70
|
+
* @returns an object containing the resulting Allow and Deny PermissionSets
|
|
71
|
+
*/
|
|
72
|
+
subtract(deny: PermissionSet): {
|
|
73
|
+
allow: PermissionSet;
|
|
74
|
+
deny: PermissionSet;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Add all permissions from another PermissionSet to this one.
|
|
78
|
+
*
|
|
79
|
+
* @param others the other PermissionSet (or array of PermissionSets) to add permissions from
|
|
80
|
+
* @throws Error if the effects of the two PermissionSets do not match
|
|
81
|
+
*/
|
|
82
|
+
addAll(others: PermissionSet[] | PermissionSet): void;
|
|
83
|
+
/**
|
|
84
|
+
* Deep clones the PermissionSet.
|
|
85
|
+
*
|
|
86
|
+
* @returns a new PermissionSet instance with the same permissions.
|
|
87
|
+
*/
|
|
88
|
+
clone(): PermissionSet;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Given an array of IAM Policy objects, extract every "Allow" statement
|
|
92
|
+
* and load it into a PermissionSet. Each AWS action is split into its
|
|
93
|
+
* service ("s3", "ec2", etc.) and the individual action name ("GetObject", "StartInstances", etc.).
|
|
94
|
+
*
|
|
95
|
+
* Assumptions:
|
|
96
|
+
* 1. The Policy type comes from `@actsecurity/iam-policy`. Each Policy has a `.statements` array.
|
|
97
|
+
* 2. Each Statement has at least these fields (per AWS IAM JSON):
|
|
98
|
+
* - Effect: "Allow" | "Deny"
|
|
99
|
+
* - Action: string | string[]
|
|
100
|
+
* - Resource?: string | string[]
|
|
101
|
+
* - NotResource?: string | string[]
|
|
102
|
+
* - Condition?: Record<string, Record<string, string | string[]>>
|
|
103
|
+
*
|
|
104
|
+
* 3. We ignore any statements whose Effect ≠ "Allow".
|
|
105
|
+
* 4. We do not expand wildcards here—if a statement’s Action is "s3:*",
|
|
106
|
+
* we leave it as the pattern "s3:*". (If you want to expand all wildcards,
|
|
107
|
+
* run these policies through iam-expand first, then call this function.)
|
|
108
|
+
*
|
|
109
|
+
* Returns a PermissionSet containing one Permission object for each (service, action, resource, notResource, condition)
|
|
110
|
+
* triple where Effect == "Allow".
|
|
111
|
+
*/
|
|
112
|
+
export interface AddStatementToPermissionSetOptions {
|
|
113
|
+
/** Preserve Principal and NotPrincipal values from statements when converting to permissions. */
|
|
114
|
+
includePrincipals?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Resource ARN(s) to use for resource-policy statements that do not contain Resource or
|
|
117
|
+
* NotResource, such as IAM role trust policies. Explicit Resource and NotResource values
|
|
118
|
+
* always take precedence.
|
|
119
|
+
*/
|
|
120
|
+
implicitResources?: string[];
|
|
121
|
+
}
|
|
122
|
+
export declare function buildPermissionSetFromPolicies(effect: PermissionEffect, policies: Policy[], options?: AddStatementToPermissionSetOptions): Promise<PermissionSet>;
|
|
123
|
+
export declare function addPoliciesToPermissionSet(permissionSet: PermissionSet, effect: PermissionEffect, policies: Policy[], options?: AddStatementToPermissionSetOptions): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Add a single Statement to a PermissionSet, expanding it into one or more Permissions as needed.
|
|
126
|
+
*
|
|
127
|
+
* @param statement the IAM policy statement to add
|
|
128
|
+
* @param permissionSet the PermissionSet to add the statement to
|
|
129
|
+
* @param options conversion options controlling principal and implicit resource handling
|
|
130
|
+
* @returns nothing; the PermissionSet is modified in place
|
|
131
|
+
*/
|
|
132
|
+
export declare function addStatementToPermissionSet(statement: Statement, permissionSet: PermissionSet, options?: AddStatementToPermissionSetOptions): Promise<void>;
|
|
133
|
+
/**
|
|
134
|
+
* Convert a PermissionSet into an array of IAM policy statements.
|
|
135
|
+
*
|
|
136
|
+
* @param set the PermissionSet to convert
|
|
137
|
+
* @returns an array of IAM policy statements
|
|
138
|
+
*/
|
|
139
|
+
export declare function toPolicyStatements(set: PermissionSet): any;
|
|
140
|
+
//# sourceMappingURL=permissionSet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissionSet.d.ts","sourceRoot":"","sources":["../../../src/principalCan/permissionSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAA6B,MAAM,iBAAiB,CAAA;AAO9F;;;;GAIG;AACH,qBAAa,aAAa;aAGI,MAAM,EAAE,gBAAgB;IAFpD,OAAO,CAAC,WAAW,CAAmD;gBAE1C,MAAM,EAAE,gBAAgB;IAEpD;;;;;OAKG;IACI,aAAa,CAAC,aAAa,EAAE,UAAU,GAAG,IAAI;IA0DrD;;;;;;OAMG;IACI,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE;IAOpE;;;;;OAKG;IACI,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAI3C;;;;;;OAMG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAI1D;;;OAGG;IACI,OAAO,IAAI,OAAO;IAIzB;;;;OAIG;IACI,iBAAiB,IAAI,UAAU,EAAE;IAUxC;;;;;;;;OAQG;IACI,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,aAAa;IA8BxD;;;;;;;;OAQG;IACI,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG;QAAE,KAAK,EAAE,aAAa,CAAC;QAAC,IAAI,EAAE,aAAa,CAAA;KAAE;IAyDnF;;;;;OAKG;IACI,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,aAAa,GAAG,IAAI;IAkB5D;;;;OAIG;IACH,KAAK,IAAI,aAAa;CAUvB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,WAAW,kCAAkC;IACjD,iGAAiG;IACjG,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;CAC7B;AAED,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,aAAa,CAAC,CAKxB;AAED,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EAAE,EAClB,OAAO,GAAE,kCAAuC,GAC/C,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,kCAAuC,iBA0CjD;AA0ED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,aAAa,GAAG,GAAG,CA8D1D"}
|
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import { expandIamActions, invertIamActions } from '@actsecurity/iam-expand';
|
|
2
|
+
import {} from '@actsecurity/iam-policy';
|
|
3
|
+
import { Permission } from './permission.js';
|
|
4
|
+
import { canonicalPrincipal, principalsFromRawPolicyValue, principalsToPolicyValue } from './principalConstraints.js';
|
|
5
|
+
/**
|
|
6
|
+
* A permission set will be a collection of permissions for a specific effect (Allow or Deny).
|
|
7
|
+
* So this will be used to represent things like "all the allowed permissions in a set of SCPs"
|
|
8
|
+
* and "all the deny's that apply to a principal"
|
|
9
|
+
*/
|
|
10
|
+
export class PermissionSet {
|
|
11
|
+
constructor(effect) {
|
|
12
|
+
this.effect = effect;
|
|
13
|
+
this.permissions = {};
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Add a new permission to the set. If the new permission overlaps with an existing one,
|
|
17
|
+
* they will be unioned together to avoid redundancy.
|
|
18
|
+
*
|
|
19
|
+
* @param newPermission the permission to add
|
|
20
|
+
*/
|
|
21
|
+
addPermission(newPermission) {
|
|
22
|
+
if (newPermission.effect !== this.effect) {
|
|
23
|
+
throw new Error(`Permission effect ${newPermission.effect} does not match PermissionSet effect ${this.effect}`);
|
|
24
|
+
}
|
|
25
|
+
const service = newPermission.service;
|
|
26
|
+
const action = newPermission.action;
|
|
27
|
+
if (!this.permissions[service]) {
|
|
28
|
+
this.permissions[service] = {};
|
|
29
|
+
}
|
|
30
|
+
if (!this.permissions[service][action]) {
|
|
31
|
+
this.permissions[service][action] = [];
|
|
32
|
+
}
|
|
33
|
+
const existingPermissions = this.permissions[service][action];
|
|
34
|
+
if (existingPermissions.length === 0) {
|
|
35
|
+
existingPermissions.push(newPermission);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let replacesExisting = false;
|
|
39
|
+
let mergedWithExisting = false;
|
|
40
|
+
let first = existingPermissions[0];
|
|
41
|
+
let rest = existingPermissions.slice(1);
|
|
42
|
+
const newPermissions = [];
|
|
43
|
+
while (first) {
|
|
44
|
+
const unionResult = first.union(newPermission);
|
|
45
|
+
if (unionResult.length === 1) {
|
|
46
|
+
const unionedPermission = unionResult[0];
|
|
47
|
+
if (unionedPermission == first) {
|
|
48
|
+
// The new permission is included in the existing permission, so we don't need to add it
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (unionedPermission == newPermission) {
|
|
52
|
+
replacesExisting = true;
|
|
53
|
+
// The existing permission is included in the new permission, so we can replace it
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
// The unioned permission is a net new permission, so we can add it
|
|
57
|
+
newPermissions.push(unionedPermission);
|
|
58
|
+
mergedWithExisting = true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
newPermissions.push(first);
|
|
63
|
+
}
|
|
64
|
+
first = rest.shift();
|
|
65
|
+
}
|
|
66
|
+
if (replacesExisting && !mergedWithExisting) {
|
|
67
|
+
// If we didn't replace or merge with any existing permissions, just add the new permission
|
|
68
|
+
newPermissions.push(newPermission);
|
|
69
|
+
}
|
|
70
|
+
else if (!replacesExisting && !mergedWithExisting) {
|
|
71
|
+
// If we didn't replace or merge with any existing permissions, just add the new permission
|
|
72
|
+
newPermissions.push(newPermission);
|
|
73
|
+
}
|
|
74
|
+
this.permissions[service][action] = newPermissions;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Get the permissions for a specific service and action.
|
|
78
|
+
*
|
|
79
|
+
* @param service the service to get permissions for
|
|
80
|
+
* @param action the action to get permissions for
|
|
81
|
+
* @returns the permissions that match the service and action
|
|
82
|
+
*/
|
|
83
|
+
getPermissions(service, action) {
|
|
84
|
+
if (!this.permissions[service] || !this.permissions[service][action]) {
|
|
85
|
+
return [];
|
|
86
|
+
}
|
|
87
|
+
return this.permissions[service][action];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Check if the permission set has any permissions for a specific service
|
|
91
|
+
*
|
|
92
|
+
* @param service the service to check permissions for
|
|
93
|
+
* @returns true if the permission set has permissions for the service, false otherwise
|
|
94
|
+
*/
|
|
95
|
+
hasService(service) {
|
|
96
|
+
return !!this.permissions[service];
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Check if the permission set has any permissions for a specific action
|
|
100
|
+
*
|
|
101
|
+
* @param service the service the action belongs to
|
|
102
|
+
* @param action the action to check permissions for
|
|
103
|
+
* @returns true if the permission set has permissions for the action, false otherwise
|
|
104
|
+
*/
|
|
105
|
+
hasAction(service, action) {
|
|
106
|
+
return !!(this.permissions[service] && this.permissions[service][action]);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Check if the permission set is empty (has no permissions)
|
|
110
|
+
* @returns true if the permission set is empty, false otherwise
|
|
111
|
+
*/
|
|
112
|
+
isEmpty() {
|
|
113
|
+
return Object.keys(this.permissions).length === 0;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Get all the permissions in the permission set
|
|
117
|
+
*
|
|
118
|
+
* @returns a copy of all the permissions in the permission set
|
|
119
|
+
*/
|
|
120
|
+
getAllPermissions() {
|
|
121
|
+
const allPermissions = [];
|
|
122
|
+
for (const service in this.permissions) {
|
|
123
|
+
for (const action in this.permissions[service]) {
|
|
124
|
+
allPermissions.push(...this.permissions[service][action]);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return allPermissions;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Return a new PermissionSet containing the intersection of this set and another.
|
|
131
|
+
* Only permissions that overlap (same effect, service, action, and intersecting resources/conditions)
|
|
132
|
+
* will be included.
|
|
133
|
+
*
|
|
134
|
+
* @param other The other PermissionSet to intersect with.
|
|
135
|
+
* @returns A new PermissionSet containing the intersecting permissions.
|
|
136
|
+
* @throws Error if the effects of the two PermissionSets do not match.
|
|
137
|
+
*/
|
|
138
|
+
intersection(other) {
|
|
139
|
+
if (this.effect !== other.effect) {
|
|
140
|
+
throw new Error('Cannot intersect PermissionSets with different effects');
|
|
141
|
+
}
|
|
142
|
+
const result = new PermissionSet(this.effect);
|
|
143
|
+
for (const service of Object.keys(this.permissions)) {
|
|
144
|
+
if (!other.hasService(service))
|
|
145
|
+
continue;
|
|
146
|
+
for (const action of Object.keys(this.permissions[service])) {
|
|
147
|
+
if (!other.hasAction(service, action))
|
|
148
|
+
continue;
|
|
149
|
+
const thisPermissions = this.getPermissions(service, action);
|
|
150
|
+
const otherPermissions = other.getPermissions(service, action);
|
|
151
|
+
for (const thisPermission of thisPermissions) {
|
|
152
|
+
for (const otherPermission of otherPermissions) {
|
|
153
|
+
const intersections = thisPermission.intersections(otherPermission);
|
|
154
|
+
for (const ix of intersections) {
|
|
155
|
+
result.addPermission(ix);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Subtract a Deny PermissionSet from this Allow PermissionSet.
|
|
165
|
+
*
|
|
166
|
+
* Returns two PermissionSets: one with the remaining Allow permissions,
|
|
167
|
+
* and one with any Deny permissions that were created as a result of the subtraction.
|
|
168
|
+
*
|
|
169
|
+
* @param deny the Deny PermissionSet to subtract
|
|
170
|
+
* @returns an object containing the resulting Allow and Deny PermissionSets
|
|
171
|
+
*/
|
|
172
|
+
subtract(deny) {
|
|
173
|
+
if (this.effect !== 'Allow' || deny.effect !== 'Deny') {
|
|
174
|
+
throw new Error('Can only subtract a Deny PermissionSet from an Allow PermissionSet');
|
|
175
|
+
}
|
|
176
|
+
const allowSet = new PermissionSet('Allow');
|
|
177
|
+
const denySet = new PermissionSet('Deny');
|
|
178
|
+
for (const service of Object.keys(this.permissions)) {
|
|
179
|
+
if (!deny.hasService(service)) {
|
|
180
|
+
// allowSet.permissions[service] = this.permissions[service]
|
|
181
|
+
// If the other set doesn't have this service, we can keep all permissions
|
|
182
|
+
allowSet.permissions[service] = allowSet.permissions[service] || {};
|
|
183
|
+
for (const action of Object.keys(this.permissions[service])) {
|
|
184
|
+
allowSet.permissions[service][action] = [...this.getPermissions(service, action)];
|
|
185
|
+
}
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
for (const action of Object.keys(this.permissions[service])) {
|
|
189
|
+
if (!deny.hasAction(service, action)) {
|
|
190
|
+
if (!allowSet.permissions[service]) {
|
|
191
|
+
allowSet.permissions[service] = {};
|
|
192
|
+
}
|
|
193
|
+
// If the other set doesn't have this action, we can keep all permissions
|
|
194
|
+
// allowSet.permissions[service] = allowSet.permissions[service] || {}
|
|
195
|
+
allowSet.permissions[service][action] = [...this.getPermissions(service, action)];
|
|
196
|
+
continue;
|
|
197
|
+
}
|
|
198
|
+
let thisPermissions = this.getPermissions(service, action);
|
|
199
|
+
const denyPermissions = deny.getPermissions(service, action);
|
|
200
|
+
// We need to iteratively from each set of permissions, taking the result of each subtraction and feeding it into the next one.
|
|
201
|
+
for (const denyPermission of denyPermissions) {
|
|
202
|
+
const newPermissions = [];
|
|
203
|
+
for (const thisPermission of thisPermissions) {
|
|
204
|
+
const difference = thisPermission.subtract(denyPermission);
|
|
205
|
+
for (const diff of difference) {
|
|
206
|
+
if (diff.effect === 'Allow') {
|
|
207
|
+
newPermissions.push(diff);
|
|
208
|
+
}
|
|
209
|
+
else {
|
|
210
|
+
denySet.addPermission(diff);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
thisPermissions = newPermissions;
|
|
215
|
+
}
|
|
216
|
+
for (const perm of thisPermissions) {
|
|
217
|
+
allowSet.addPermission(perm);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return { allow: allowSet, deny: denySet };
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Add all permissions from another PermissionSet to this one.
|
|
225
|
+
*
|
|
226
|
+
* @param others the other PermissionSet (or array of PermissionSets) to add permissions from
|
|
227
|
+
* @throws Error if the effects of the two PermissionSets do not match
|
|
228
|
+
*/
|
|
229
|
+
addAll(others) {
|
|
230
|
+
if (!Array.isArray(others)) {
|
|
231
|
+
others = [others];
|
|
232
|
+
}
|
|
233
|
+
for (const other of others) {
|
|
234
|
+
if (other.effect !== this.effect) {
|
|
235
|
+
throw new Error('Cannot add PermissionSets with different effects');
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
for (const other of others) {
|
|
239
|
+
for (const perm of other.getAllPermissions()) {
|
|
240
|
+
this.addPermission(perm);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Deep clones the PermissionSet.
|
|
246
|
+
*
|
|
247
|
+
* @returns a new PermissionSet instance with the same permissions.
|
|
248
|
+
*/
|
|
249
|
+
clone() {
|
|
250
|
+
const clone = new PermissionSet(this.effect);
|
|
251
|
+
for (const service in this.permissions) {
|
|
252
|
+
clone.permissions[service] = {};
|
|
253
|
+
for (const action in this.permissions[service]) {
|
|
254
|
+
clone.permissions[service][action] = [...this.permissions[service][action]];
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
return clone;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
export async function buildPermissionSetFromPolicies(effect, policies, options = {}) {
|
|
261
|
+
// We'll collect all "Allow" statements across all policies
|
|
262
|
+
const permissionSet = new PermissionSet(effect);
|
|
263
|
+
await addPoliciesToPermissionSet(permissionSet, effect, policies, options);
|
|
264
|
+
return permissionSet;
|
|
265
|
+
}
|
|
266
|
+
export async function addPoliciesToPermissionSet(permissionSet, effect, policies, options = {}) {
|
|
267
|
+
for (const policy of policies) {
|
|
268
|
+
// Each Policy object has a `.statements` array of raw Statement JSON
|
|
269
|
+
for (const stmt of policy.statements()) {
|
|
270
|
+
if (effect === 'Allow' && !stmt.isAllow()) {
|
|
271
|
+
continue; // skip Deny or any other non-Allow effect
|
|
272
|
+
}
|
|
273
|
+
else if (effect === 'Deny' && !stmt.isDeny()) {
|
|
274
|
+
continue; // skip Allow statements if we're building a Deny set
|
|
275
|
+
}
|
|
276
|
+
await addStatementToPermissionSet(stmt, permissionSet, options);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Add a single Statement to a PermissionSet, expanding it into one or more Permissions as needed.
|
|
282
|
+
*
|
|
283
|
+
* @param statement the IAM policy statement to add
|
|
284
|
+
* @param permissionSet the PermissionSet to add the statement to
|
|
285
|
+
* @param options conversion options controlling principal and implicit resource handling
|
|
286
|
+
* @returns nothing; the PermissionSet is modified in place
|
|
287
|
+
*/
|
|
288
|
+
export async function addStatementToPermissionSet(statement, permissionSet, options = {}) {
|
|
289
|
+
const effect = statement.effect();
|
|
290
|
+
let statementActions;
|
|
291
|
+
if (statement.isActionStatement()) {
|
|
292
|
+
const allActions = statement.actions().map((a) => a.value());
|
|
293
|
+
statementActions = await expandIamActions(allActions, { expandAsterisk: true });
|
|
294
|
+
}
|
|
295
|
+
else if (statement.isNotActionStatement()) {
|
|
296
|
+
statementActions = await invertIamActions(statement.notActions().map((a) => a.value()));
|
|
297
|
+
}
|
|
298
|
+
else {
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
for (const fullAction of statementActions) {
|
|
302
|
+
const [service, actionName] = fullAction.split(':');
|
|
303
|
+
if (!service || !actionName)
|
|
304
|
+
continue;
|
|
305
|
+
let resource = undefined;
|
|
306
|
+
let notResource = undefined;
|
|
307
|
+
if (statement.isResourceStatement()) {
|
|
308
|
+
resource = statement.resources().map((r) => r.value());
|
|
309
|
+
}
|
|
310
|
+
else if (statement.isNotResourceStatement()) {
|
|
311
|
+
notResource = statement.notResources().map((r) => r.value());
|
|
312
|
+
}
|
|
313
|
+
else if (!!options.implicitResources?.length) {
|
|
314
|
+
resource = options.implicitResources;
|
|
315
|
+
}
|
|
316
|
+
const { principal, notPrincipal } = principalFieldsFromStatement(statement, options);
|
|
317
|
+
permissionSet.addPermission(new Permission(effect, service, actionName, resource, notResource, statement.conditionMap(), principal, notPrincipal));
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Extract opt-in Principal or NotPrincipal fields from a statement.
|
|
322
|
+
*
|
|
323
|
+
* @param statement the statement to inspect
|
|
324
|
+
* @param options conversion options controlling principal preservation
|
|
325
|
+
* @returns principal fields for a Permission constructor
|
|
326
|
+
*/
|
|
327
|
+
function principalFieldsFromStatement(statement, options) {
|
|
328
|
+
if (!options.includePrincipals) {
|
|
329
|
+
return { principal: undefined, notPrincipal: undefined };
|
|
330
|
+
}
|
|
331
|
+
const rawStatement = statement.toJSON();
|
|
332
|
+
if (statement.isPrincipalStatement()) {
|
|
333
|
+
return {
|
|
334
|
+
principal: statement.hasSingleWildcardPrincipal()
|
|
335
|
+
? { wildcard: true }
|
|
336
|
+
: principalsFromRawPolicyValue(rawStatement.Principal),
|
|
337
|
+
notPrincipal: undefined
|
|
338
|
+
};
|
|
339
|
+
}
|
|
340
|
+
if (statement.isNotPrincipalStatement()) {
|
|
341
|
+
return {
|
|
342
|
+
principal: undefined,
|
|
343
|
+
notPrincipal: statement.hasSingleWildcardNotPrincipal()
|
|
344
|
+
? { wildcard: true }
|
|
345
|
+
: principalsFromRawPolicyValue(rawStatement.NotPrincipal)
|
|
346
|
+
};
|
|
347
|
+
}
|
|
348
|
+
return { principal: undefined, notPrincipal: undefined };
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Create a consistent key for any permission
|
|
352
|
+
*
|
|
353
|
+
* @param p the permission to create a key for
|
|
354
|
+
* @returns a string key that uniquely identifies the permission's resources and conditions
|
|
355
|
+
*/
|
|
356
|
+
function canonicalKey(p) {
|
|
357
|
+
// Sort resource arrays so ["B","A"] == ["A","B"]
|
|
358
|
+
const resources = p.resource?.slice().sort() ?? null;
|
|
359
|
+
const notResource = p.notResource?.slice().sort() ?? null;
|
|
360
|
+
// Canonicalize the condition map (lower-case keys already).
|
|
361
|
+
// We stringify with sorted keys so structurally-equal maps hash the same.
|
|
362
|
+
const canonicalCond = p.conditions
|
|
363
|
+
? JSON.stringify(Object.fromEntries(Object.entries(p.conditions)
|
|
364
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
365
|
+
.map(([op, kv]) => [
|
|
366
|
+
op,
|
|
367
|
+
Object.fromEntries(Object.entries(kv)
|
|
368
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
369
|
+
.map(([k, v]) => [k, [...v].sort()]))
|
|
370
|
+
])))
|
|
371
|
+
: null;
|
|
372
|
+
const principal = canonicalPrincipal(p.principal);
|
|
373
|
+
const notPrincipal = canonicalPrincipal(p.notPrincipal);
|
|
374
|
+
// Effect is fixed for the whole PermissionSet, so not needed in the key.
|
|
375
|
+
return JSON.stringify({ resources, notResource, principal, notPrincipal, canonicalCond });
|
|
376
|
+
}
|
|
377
|
+
/**
|
|
378
|
+
* Convert a PermissionSet into an array of IAM policy statements.
|
|
379
|
+
*
|
|
380
|
+
* @param set the PermissionSet to convert
|
|
381
|
+
* @returns an array of IAM policy statements
|
|
382
|
+
*/
|
|
383
|
+
export function toPolicyStatements(set) {
|
|
384
|
+
const buckets = new Map();
|
|
385
|
+
for (const perm of set.getAllPermissions()) {
|
|
386
|
+
const key = canonicalKey(perm);
|
|
387
|
+
const bucket = buckets.get(key) ?? {
|
|
388
|
+
res: perm.resource ? [...perm.resource] : undefined,
|
|
389
|
+
notRes: perm.notResource ? [...perm.notResource] : undefined,
|
|
390
|
+
principal: perm.principal,
|
|
391
|
+
notPrincipal: perm.notPrincipal,
|
|
392
|
+
cond: perm.conditions ? perm.conditions : undefined,
|
|
393
|
+
actions: []
|
|
394
|
+
};
|
|
395
|
+
bucket.actions.push(`${perm.service}:${perm.action}`);
|
|
396
|
+
buckets.set(key, bucket);
|
|
397
|
+
}
|
|
398
|
+
// De-duplicate and sort Actions inside each bucket
|
|
399
|
+
const statements = [...buckets.values()].map((b) => {
|
|
400
|
+
const value = {
|
|
401
|
+
Effect: set.effect,
|
|
402
|
+
Action: b.actions.length === 1 ? b.actions[0] : [...new Set(b.actions)].sort()
|
|
403
|
+
};
|
|
404
|
+
if (b.principal && b.notPrincipal) {
|
|
405
|
+
throw new Error('Permission cannot have both Principal and NotPrincipal defined');
|
|
406
|
+
}
|
|
407
|
+
if (b.principal) {
|
|
408
|
+
value['Principal'] = principalsToPolicyValue(b.principal);
|
|
409
|
+
}
|
|
410
|
+
else if (b.notPrincipal) {
|
|
411
|
+
value['NotPrincipal'] = principalsToPolicyValue(b.notPrincipal);
|
|
412
|
+
}
|
|
413
|
+
if (b.cond) {
|
|
414
|
+
value['Condition'] = b.cond;
|
|
415
|
+
}
|
|
416
|
+
if (b.res && b.notRes) {
|
|
417
|
+
throw new Error('Permission cannot have both Resource and NotResource defined');
|
|
418
|
+
}
|
|
419
|
+
if (b.res) {
|
|
420
|
+
value['Resource'] = b.res;
|
|
421
|
+
}
|
|
422
|
+
else if (b.notRes) {
|
|
423
|
+
value['NotResource'] = b.notRes;
|
|
424
|
+
}
|
|
425
|
+
return value;
|
|
426
|
+
});
|
|
427
|
+
return statements;
|
|
428
|
+
}
|
|
429
|
+
//# sourceMappingURL=permissionSet.js.map
|