@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.
Files changed (383) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +203 -0
  3. package/dist/cjs/cli.d.ts +3 -0
  4. package/dist/cjs/cli.d.ts.map +1 -0
  5. package/dist/cjs/cli.js +206 -0
  6. package/dist/cjs/cli.js.map +1 -0
  7. package/dist/cjs/collect/client.d.ts +550 -0
  8. package/dist/cjs/collect/client.d.ts.map +1 -0
  9. package/dist/cjs/collect/client.js +1119 -0
  10. package/dist/cjs/collect/client.js.map +1 -0
  11. package/dist/cjs/collect/collect.d.ts +44 -0
  12. package/dist/cjs/collect/collect.d.ts.map +1 -0
  13. package/dist/cjs/collect/collect.js +55 -0
  14. package/dist/cjs/collect/collect.js.map +1 -0
  15. package/dist/cjs/collect/inMemoryClient.d.ts +6 -0
  16. package/dist/cjs/collect/inMemoryClient.d.ts.map +1 -0
  17. package/dist/cjs/collect/inMemoryClient.js +11 -0
  18. package/dist/cjs/collect/inMemoryClient.js.map +1 -0
  19. package/dist/cjs/index.d.ts +13 -0
  20. package/dist/cjs/index.d.ts.map +1 -0
  21. package/dist/cjs/index.js +28 -0
  22. package/dist/cjs/index.js.map +1 -0
  23. package/dist/cjs/package.json +3 -0
  24. package/dist/cjs/principalCan/permission.d.ts +125 -0
  25. package/dist/cjs/principalCan/permission.d.ts.map +1 -0
  26. package/dist/cjs/principalCan/permission.js +1229 -0
  27. package/dist/cjs/principalCan/permission.js.map +1 -0
  28. package/dist/cjs/principalCan/permissionSet.d.ts +140 -0
  29. package/dist/cjs/principalCan/permissionSet.d.ts.map +1 -0
  30. package/dist/cjs/principalCan/permissionSet.js +437 -0
  31. package/dist/cjs/principalCan/permissionSet.js.map +1 -0
  32. package/dist/cjs/principalCan/principalCan.d.ts +26 -0
  33. package/dist/cjs/principalCan/principalCan.d.ts.map +1 -0
  34. package/dist/cjs/principalCan/principalCan.js +195 -0
  35. package/dist/cjs/principalCan/principalCan.js.map +1 -0
  36. package/dist/cjs/principalCan/principalConstraints.d.ts +147 -0
  37. package/dist/cjs/principalCan/principalConstraints.d.ts.map +1 -0
  38. package/dist/cjs/principalCan/principalConstraints.js +472 -0
  39. package/dist/cjs/principalCan/principalConstraints.js.map +1 -0
  40. package/dist/cjs/principalCan/resources/actions.d.ts +9 -0
  41. package/dist/cjs/principalCan/resources/actions.d.ts.map +1 -0
  42. package/dist/cjs/principalCan/resources/actions.js +27 -0
  43. package/dist/cjs/principalCan/resources/actions.js.map +1 -0
  44. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.d.ts +31 -0
  45. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.d.ts.map +1 -0
  46. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.js +114 -0
  47. package/dist/cjs/principalCan/resources/resourceTypes/iamRoles.js.map +1 -0
  48. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.d.ts +30 -0
  49. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.d.ts.map +1 -0
  50. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.js +110 -0
  51. package/dist/cjs/principalCan/resources/resourceTypes/kmsKeys.js.map +1 -0
  52. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.d.ts +18 -0
  53. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.d.ts.map +1 -0
  54. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.js +123 -0
  55. package/dist/cjs/principalCan/resources/resourceTypes/s3Buckets.js.map +1 -0
  56. package/dist/cjs/principalCan/resources/statements.d.ts +27 -0
  57. package/dist/cjs/principalCan/resources/statements.d.ts.map +1 -0
  58. package/dist/cjs/principalCan/resources/statements.js +119 -0
  59. package/dist/cjs/principalCan/resources/statements.js.map +1 -0
  60. package/dist/cjs/principalIndex/makePrincipalIndex.d.ts +8 -0
  61. package/dist/cjs/principalIndex/makePrincipalIndex.d.ts.map +1 -0
  62. package/dist/cjs/principalIndex/makePrincipalIndex.js +105 -0
  63. package/dist/cjs/principalIndex/makePrincipalIndex.js.map +1 -0
  64. package/dist/cjs/principals.d.ts +54 -0
  65. package/dist/cjs/principals.d.ts.map +1 -0
  66. package/dist/cjs/principals.js +143 -0
  67. package/dist/cjs/principals.js.map +1 -0
  68. package/dist/cjs/resources.d.ts +32 -0
  69. package/dist/cjs/resources.d.ts.map +1 -0
  70. package/dist/cjs/resources.js +71 -0
  71. package/dist/cjs/resources.js.map +1 -0
  72. package/dist/cjs/simulate/contextKeys.d.ts +68 -0
  73. package/dist/cjs/simulate/contextKeys.d.ts.map +1 -0
  74. package/dist/cjs/simulate/contextKeys.js +293 -0
  75. package/dist/cjs/simulate/contextKeys.js.map +1 -0
  76. package/dist/cjs/simulate/simulate.d.ts +72 -0
  77. package/dist/cjs/simulate/simulate.d.ts.map +1 -0
  78. package/dist/cjs/simulate/simulate.js +296 -0
  79. package/dist/cjs/simulate/simulate.js.map +1 -0
  80. package/dist/cjs/test-datasets/testClient.d.ts +17 -0
  81. package/dist/cjs/test-datasets/testClient.d.ts.map +1 -0
  82. package/dist/cjs/test-datasets/testClient.js +58 -0
  83. package/dist/cjs/test-datasets/testClient.js.map +1 -0
  84. package/dist/cjs/utils/arn.d.ts +22 -0
  85. package/dist/cjs/utils/arn.d.ts.map +1 -0
  86. package/dist/cjs/utils/arn.js +49 -0
  87. package/dist/cjs/utils/arn.js.map +1 -0
  88. package/dist/cjs/utils/bitset.d.ts +45 -0
  89. package/dist/cjs/utils/bitset.d.ts.map +1 -0
  90. package/dist/cjs/utils/bitset.js +149 -0
  91. package/dist/cjs/utils/bitset.js.map +1 -0
  92. package/dist/cjs/utils/dynamicImport.d.ts +31 -0
  93. package/dist/cjs/utils/dynamicImport.d.ts.map +1 -0
  94. package/dist/cjs/utils/dynamicImport.js +64 -0
  95. package/dist/cjs/utils/dynamicImport.js.map +1 -0
  96. package/dist/cjs/utils/packageVersion.d.ts +5 -0
  97. package/dist/cjs/utils/packageVersion.d.ts.map +1 -0
  98. package/dist/cjs/utils/packageVersion.js +25 -0
  99. package/dist/cjs/utils/packageVersion.js.map +1 -0
  100. package/dist/cjs/utils/readPackageFile.d.ts +3 -0
  101. package/dist/cjs/utils/readPackageFile.d.ts.map +1 -0
  102. package/dist/cjs/utils/readPackageFile.js +16 -0
  103. package/dist/cjs/utils/readPackageFile.js.map +1 -0
  104. package/dist/cjs/utils/s3Abac.d.ts +3 -0
  105. package/dist/cjs/utils/s3Abac.d.ts.map +1 -0
  106. package/dist/cjs/utils/s3Abac.js +5 -0
  107. package/dist/cjs/utils/s3Abac.js.map +1 -0
  108. package/dist/cjs/utils/stringOrFileArgument.d.ts +9 -0
  109. package/dist/cjs/utils/stringOrFileArgument.d.ts.map +1 -0
  110. package/dist/cjs/utils/stringOrFileArgument.js +25 -0
  111. package/dist/cjs/utils/stringOrFileArgument.js.map +1 -0
  112. package/dist/cjs/utils/sts.d.ts +2 -0
  113. package/dist/cjs/utils/sts.d.ts.map +1 -0
  114. package/dist/cjs/utils/sts.js +9 -0
  115. package/dist/cjs/utils/sts.js.map +1 -0
  116. package/dist/cjs/utils/testUtils.d.ts +56 -0
  117. package/dist/cjs/utils/testUtils.d.ts.map +1 -0
  118. package/dist/cjs/utils/testUtils.js +95 -0
  119. package/dist/cjs/utils/testUtils.js.map +1 -0
  120. package/dist/cjs/utils/workerScript.d.ts +8 -0
  121. package/dist/cjs/utils/workerScript.d.ts.map +1 -0
  122. package/dist/cjs/utils/workerScript.js +23 -0
  123. package/dist/cjs/utils/workerScript.js.map +1 -0
  124. package/dist/cjs/whoCan/WhoCanMainThreadWorker.d.ts +73 -0
  125. package/dist/cjs/whoCan/WhoCanMainThreadWorker.d.ts.map +1 -0
  126. package/dist/cjs/whoCan/WhoCanMainThreadWorker.js +80 -0
  127. package/dist/cjs/whoCan/WhoCanMainThreadWorker.js.map +1 -0
  128. package/dist/cjs/whoCan/WhoCanProcessor.d.ts +400 -0
  129. package/dist/cjs/whoCan/WhoCanProcessor.d.ts.map +1 -0
  130. package/dist/cjs/whoCan/WhoCanProcessor.js +1088 -0
  131. package/dist/cjs/whoCan/WhoCanProcessor.js.map +1 -0
  132. package/dist/cjs/whoCan/WhoCanWorker.d.ts +87 -0
  133. package/dist/cjs/whoCan/WhoCanWorker.d.ts.map +1 -0
  134. package/dist/cjs/whoCan/WhoCanWorker.js +201 -0
  135. package/dist/cjs/whoCan/WhoCanWorker.js.map +1 -0
  136. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.d.ts +2 -0
  137. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.d.ts.map +1 -0
  138. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.js +189 -0
  139. package/dist/cjs/whoCan/WhoCanWorkerThreadWorker.js.map +1 -0
  140. package/dist/cjs/whoCan/principalArnFilter.d.ts +84 -0
  141. package/dist/cjs/whoCan/principalArnFilter.d.ts.map +1 -0
  142. package/dist/cjs/whoCan/principalArnFilter.js +258 -0
  143. package/dist/cjs/whoCan/principalArnFilter.js.map +1 -0
  144. package/dist/cjs/whoCan/principalScope.d.ts +35 -0
  145. package/dist/cjs/whoCan/principalScope.d.ts.map +1 -0
  146. package/dist/cjs/whoCan/principalScope.js +104 -0
  147. package/dist/cjs/whoCan/principalScope.js.map +1 -0
  148. package/dist/cjs/whoCan/requestAnalysis.d.ts +73 -0
  149. package/dist/cjs/whoCan/requestAnalysis.d.ts.map +1 -0
  150. package/dist/cjs/whoCan/requestAnalysis.js +87 -0
  151. package/dist/cjs/whoCan/requestAnalysis.js.map +1 -0
  152. package/dist/cjs/whoCan/untrustingActions.d.ts +7 -0
  153. package/dist/cjs/whoCan/untrustingActions.d.ts.map +1 -0
  154. package/dist/cjs/whoCan/untrustingActions.js +30 -0
  155. package/dist/cjs/whoCan/untrustingActions.js.map +1 -0
  156. package/dist/cjs/whoCan/whoCan.d.ts +295 -0
  157. package/dist/cjs/whoCan/whoCan.d.ts.map +1 -0
  158. package/dist/cjs/whoCan/whoCan.js +574 -0
  159. package/dist/cjs/whoCan/whoCan.js.map +1 -0
  160. package/dist/cjs/whoCan/workerBootstrapPlugin.d.ts +17 -0
  161. package/dist/cjs/whoCan/workerBootstrapPlugin.d.ts.map +1 -0
  162. package/dist/cjs/whoCan/workerBootstrapPlugin.js +3 -0
  163. package/dist/cjs/whoCan/workerBootstrapPlugin.js.map +1 -0
  164. package/dist/cjs/workers/ArrayStreamingWorkQueue.d.ts +15 -0
  165. package/dist/cjs/workers/ArrayStreamingWorkQueue.d.ts.map +1 -0
  166. package/dist/cjs/workers/ArrayStreamingWorkQueue.js +35 -0
  167. package/dist/cjs/workers/ArrayStreamingWorkQueue.js.map +1 -0
  168. package/dist/cjs/workers/JobRunner.d.ts +47 -0
  169. package/dist/cjs/workers/JobRunner.d.ts.map +1 -0
  170. package/dist/cjs/workers/JobRunner.js +101 -0
  171. package/dist/cjs/workers/JobRunner.js.map +1 -0
  172. package/dist/cjs/workers/RingQueue.d.ts +14 -0
  173. package/dist/cjs/workers/RingQueue.d.ts.map +1 -0
  174. package/dist/cjs/workers/RingQueue.js +43 -0
  175. package/dist/cjs/workers/RingQueue.js.map +1 -0
  176. package/dist/cjs/workers/SharedArrayBufferMainCache.d.ts +10 -0
  177. package/dist/cjs/workers/SharedArrayBufferMainCache.d.ts.map +1 -0
  178. package/dist/cjs/workers/SharedArrayBufferMainCache.js +37 -0
  179. package/dist/cjs/workers/SharedArrayBufferMainCache.js.map +1 -0
  180. package/dist/cjs/workers/SharedArrayBufferWorkerCache.d.ts +10 -0
  181. package/dist/cjs/workers/SharedArrayBufferWorkerCache.d.ts.map +1 -0
  182. package/dist/cjs/workers/SharedArrayBufferWorkerCache.js +49 -0
  183. package/dist/cjs/workers/SharedArrayBufferWorkerCache.js.map +1 -0
  184. package/dist/cjs/workers/StreamingWorkQueue.d.ts +18 -0
  185. package/dist/cjs/workers/StreamingWorkQueue.d.ts.map +1 -0
  186. package/dist/cjs/workers/StreamingWorkQueue.js +67 -0
  187. package/dist/cjs/workers/StreamingWorkQueue.js.map +1 -0
  188. package/dist/cjs/workers/buffers.d.ts +4 -0
  189. package/dist/cjs/workers/buffers.d.ts.map +1 -0
  190. package/dist/cjs/workers/buffers.js +26 -0
  191. package/dist/cjs/workers/buffers.js.map +1 -0
  192. package/dist/esm/cli.d.ts +3 -0
  193. package/dist/esm/cli.d.ts.map +1 -0
  194. package/dist/esm/cli.js +204 -0
  195. package/dist/esm/cli.js.map +1 -0
  196. package/dist/esm/collect/client.d.ts +550 -0
  197. package/dist/esm/collect/client.d.ts.map +1 -0
  198. package/dist/esm/collect/client.js +1114 -0
  199. package/dist/esm/collect/client.js.map +1 -0
  200. package/dist/esm/collect/collect.d.ts +44 -0
  201. package/dist/esm/collect/collect.d.ts.map +1 -0
  202. package/dist/esm/collect/collect.js +51 -0
  203. package/dist/esm/collect/collect.js.map +1 -0
  204. package/dist/esm/collect/inMemoryClient.d.ts +6 -0
  205. package/dist/esm/collect/inMemoryClient.d.ts.map +1 -0
  206. package/dist/esm/collect/inMemoryClient.js +8 -0
  207. package/dist/esm/collect/inMemoryClient.js.map +1 -0
  208. package/dist/esm/index.d.ts +13 -0
  209. package/dist/esm/index.d.ts.map +1 -0
  210. package/dist/esm/index.js +11 -0
  211. package/dist/esm/index.js.map +1 -0
  212. package/dist/esm/package.json +3 -0
  213. package/dist/esm/principalCan/permission.d.ts +125 -0
  214. package/dist/esm/principalCan/permission.d.ts.map +1 -0
  215. package/dist/esm/principalCan/permission.js +1212 -0
  216. package/dist/esm/principalCan/permission.js.map +1 -0
  217. package/dist/esm/principalCan/permissionSet.d.ts +140 -0
  218. package/dist/esm/principalCan/permissionSet.d.ts.map +1 -0
  219. package/dist/esm/principalCan/permissionSet.js +429 -0
  220. package/dist/esm/principalCan/permissionSet.js.map +1 -0
  221. package/dist/esm/principalCan/principalCan.d.ts +26 -0
  222. package/dist/esm/principalCan/principalCan.d.ts.map +1 -0
  223. package/dist/esm/principalCan/principalCan.js +193 -0
  224. package/dist/esm/principalCan/principalCan.js.map +1 -0
  225. package/dist/esm/principalCan/principalConstraints.d.ts +147 -0
  226. package/dist/esm/principalCan/principalConstraints.d.ts.map +1 -0
  227. package/dist/esm/principalCan/principalConstraints.js +456 -0
  228. package/dist/esm/principalCan/principalConstraints.js.map +1 -0
  229. package/dist/esm/principalCan/resources/actions.d.ts +9 -0
  230. package/dist/esm/principalCan/resources/actions.d.ts.map +1 -0
  231. package/dist/esm/principalCan/resources/actions.js +24 -0
  232. package/dist/esm/principalCan/resources/actions.js.map +1 -0
  233. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.d.ts +31 -0
  234. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.d.ts.map +1 -0
  235. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.js +110 -0
  236. package/dist/esm/principalCan/resources/resourceTypes/iamRoles.js.map +1 -0
  237. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.d.ts +30 -0
  238. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.d.ts.map +1 -0
  239. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.js +106 -0
  240. package/dist/esm/principalCan/resources/resourceTypes/kmsKeys.js.map +1 -0
  241. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.d.ts +18 -0
  242. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.d.ts.map +1 -0
  243. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.js +120 -0
  244. package/dist/esm/principalCan/resources/resourceTypes/s3Buckets.js.map +1 -0
  245. package/dist/esm/principalCan/resources/statements.d.ts +27 -0
  246. package/dist/esm/principalCan/resources/statements.d.ts.map +1 -0
  247. package/dist/esm/principalCan/resources/statements.js +117 -0
  248. package/dist/esm/principalCan/resources/statements.js.map +1 -0
  249. package/dist/esm/principalIndex/makePrincipalIndex.d.ts +8 -0
  250. package/dist/esm/principalIndex/makePrincipalIndex.d.ts.map +1 -0
  251. package/dist/esm/principalIndex/makePrincipalIndex.js +104 -0
  252. package/dist/esm/principalIndex/makePrincipalIndex.js.map +1 -0
  253. package/dist/esm/principals.d.ts +54 -0
  254. package/dist/esm/principals.d.ts.map +1 -0
  255. package/dist/esm/principals.js +133 -0
  256. package/dist/esm/principals.js.map +1 -0
  257. package/dist/esm/resources.d.ts +32 -0
  258. package/dist/esm/resources.d.ts.map +1 -0
  259. package/dist/esm/resources.js +69 -0
  260. package/dist/esm/resources.js.map +1 -0
  261. package/dist/esm/simulate/contextKeys.d.ts +68 -0
  262. package/dist/esm/simulate/contextKeys.d.ts.map +1 -0
  263. package/dist/esm/simulate/contextKeys.js +287 -0
  264. package/dist/esm/simulate/contextKeys.js.map +1 -0
  265. package/dist/esm/simulate/simulate.d.ts +72 -0
  266. package/dist/esm/simulate/simulate.d.ts.map +1 -0
  267. package/dist/esm/simulate/simulate.js +295 -0
  268. package/dist/esm/simulate/simulate.js.map +1 -0
  269. package/dist/esm/test-datasets/testClient.d.ts +17 -0
  270. package/dist/esm/test-datasets/testClient.d.ts.map +1 -0
  271. package/dist/esm/test-datasets/testClient.js +56 -0
  272. package/dist/esm/test-datasets/testClient.js.map +1 -0
  273. package/dist/esm/utils/arn.d.ts +22 -0
  274. package/dist/esm/utils/arn.d.ts.map +1 -0
  275. package/dist/esm/utils/arn.js +43 -0
  276. package/dist/esm/utils/arn.js.map +1 -0
  277. package/dist/esm/utils/bitset.d.ts +45 -0
  278. package/dist/esm/utils/bitset.d.ts.map +1 -0
  279. package/dist/esm/utils/bitset.js +141 -0
  280. package/dist/esm/utils/bitset.js.map +1 -0
  281. package/dist/esm/utils/dynamicImport.d.ts +31 -0
  282. package/dist/esm/utils/dynamicImport.d.ts.map +1 -0
  283. package/dist/esm/utils/dynamicImport.js +60 -0
  284. package/dist/esm/utils/dynamicImport.js.map +1 -0
  285. package/dist/esm/utils/packageVersion.d.ts +5 -0
  286. package/dist/esm/utils/packageVersion.d.ts.map +1 -0
  287. package/dist/esm/utils/packageVersion.js +22 -0
  288. package/dist/esm/utils/packageVersion.js.map +1 -0
  289. package/dist/esm/utils/readPackageFile.d.ts +3 -0
  290. package/dist/esm/utils/readPackageFile.d.ts.map +1 -0
  291. package/dist/esm/utils/readPackageFile.js +15 -0
  292. package/dist/esm/utils/readPackageFile.js.map +1 -0
  293. package/dist/esm/utils/readPackageFileEsm.d.ts.map +1 -0
  294. package/dist/esm/utils/s3Abac.d.ts +3 -0
  295. package/dist/esm/utils/s3Abac.d.ts.map +1 -0
  296. package/dist/esm/utils/s3Abac.js +2 -0
  297. package/dist/esm/utils/s3Abac.js.map +1 -0
  298. package/dist/esm/utils/stringOrFileArgument.d.ts +9 -0
  299. package/dist/esm/utils/stringOrFileArgument.d.ts.map +1 -0
  300. package/dist/esm/utils/stringOrFileArgument.js +22 -0
  301. package/dist/esm/utils/stringOrFileArgument.js.map +1 -0
  302. package/dist/esm/utils/sts.d.ts +2 -0
  303. package/dist/esm/utils/sts.d.ts.map +1 -0
  304. package/dist/esm/utils/sts.js +6 -0
  305. package/dist/esm/utils/sts.js.map +1 -0
  306. package/dist/esm/utils/testUtils.d.ts +56 -0
  307. package/dist/esm/utils/testUtils.d.ts.map +1 -0
  308. package/dist/esm/utils/testUtils.js +90 -0
  309. package/dist/esm/utils/testUtils.js.map +1 -0
  310. package/dist/esm/utils/workerScript.d.ts +8 -0
  311. package/dist/esm/utils/workerScript.d.ts.map +1 -0
  312. package/dist/esm/utils/workerScript.js +18 -0
  313. package/dist/esm/utils/workerScript.js.map +1 -0
  314. package/dist/esm/utils/workerScriptEsm.d.ts.map +1 -0
  315. package/dist/esm/whoCan/WhoCanMainThreadWorker.d.ts +73 -0
  316. package/dist/esm/whoCan/WhoCanMainThreadWorker.d.ts.map +1 -0
  317. package/dist/esm/whoCan/WhoCanMainThreadWorker.js +81 -0
  318. package/dist/esm/whoCan/WhoCanMainThreadWorker.js.map +1 -0
  319. package/dist/esm/whoCan/WhoCanProcessor.d.ts +400 -0
  320. package/dist/esm/whoCan/WhoCanProcessor.d.ts.map +1 -0
  321. package/dist/esm/whoCan/WhoCanProcessor.js +1080 -0
  322. package/dist/esm/whoCan/WhoCanProcessor.js.map +1 -0
  323. package/dist/esm/whoCan/WhoCanWorker.d.ts +87 -0
  324. package/dist/esm/whoCan/WhoCanWorker.d.ts.map +1 -0
  325. package/dist/esm/whoCan/WhoCanWorker.js +198 -0
  326. package/dist/esm/whoCan/WhoCanWorker.js.map +1 -0
  327. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.d.ts +2 -0
  328. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.d.ts.map +1 -0
  329. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.js +193 -0
  330. package/dist/esm/whoCan/WhoCanWorkerThreadWorker.js.map +1 -0
  331. package/dist/esm/whoCan/principalArnFilter.d.ts +84 -0
  332. package/dist/esm/whoCan/principalArnFilter.d.ts.map +1 -0
  333. package/dist/esm/whoCan/principalArnFilter.js +253 -0
  334. package/dist/esm/whoCan/principalArnFilter.js.map +1 -0
  335. package/dist/esm/whoCan/principalScope.d.ts +35 -0
  336. package/dist/esm/whoCan/principalScope.d.ts.map +1 -0
  337. package/dist/esm/whoCan/principalScope.js +102 -0
  338. package/dist/esm/whoCan/principalScope.js.map +1 -0
  339. package/dist/esm/whoCan/requestAnalysis.d.ts +73 -0
  340. package/dist/esm/whoCan/requestAnalysis.d.ts.map +1 -0
  341. package/dist/esm/whoCan/requestAnalysis.js +83 -0
  342. package/dist/esm/whoCan/requestAnalysis.js.map +1 -0
  343. package/dist/esm/whoCan/untrustingActions.d.ts +7 -0
  344. package/dist/esm/whoCan/untrustingActions.d.ts.map +1 -0
  345. package/dist/esm/whoCan/untrustingActions.js +27 -0
  346. package/dist/esm/whoCan/untrustingActions.js.map +1 -0
  347. package/dist/esm/whoCan/whoCan.d.ts +295 -0
  348. package/dist/esm/whoCan/whoCan.d.ts.map +1 -0
  349. package/dist/esm/whoCan/whoCan.js +571 -0
  350. package/dist/esm/whoCan/whoCan.js.map +1 -0
  351. package/dist/esm/whoCan/workerBootstrapPlugin.d.ts +17 -0
  352. package/dist/esm/whoCan/workerBootstrapPlugin.d.ts.map +1 -0
  353. package/dist/esm/whoCan/workerBootstrapPlugin.js +2 -0
  354. package/dist/esm/whoCan/workerBootstrapPlugin.js.map +1 -0
  355. package/dist/esm/workers/ArrayStreamingWorkQueue.d.ts +15 -0
  356. package/dist/esm/workers/ArrayStreamingWorkQueue.d.ts.map +1 -0
  357. package/dist/esm/workers/ArrayStreamingWorkQueue.js +31 -0
  358. package/dist/esm/workers/ArrayStreamingWorkQueue.js.map +1 -0
  359. package/dist/esm/workers/JobRunner.d.ts +47 -0
  360. package/dist/esm/workers/JobRunner.d.ts.map +1 -0
  361. package/dist/esm/workers/JobRunner.js +94 -0
  362. package/dist/esm/workers/JobRunner.js.map +1 -0
  363. package/dist/esm/workers/RingQueue.d.ts +14 -0
  364. package/dist/esm/workers/RingQueue.d.ts.map +1 -0
  365. package/dist/esm/workers/RingQueue.js +36 -0
  366. package/dist/esm/workers/RingQueue.js.map +1 -0
  367. package/dist/esm/workers/SharedArrayBufferMainCache.d.ts +10 -0
  368. package/dist/esm/workers/SharedArrayBufferMainCache.d.ts.map +1 -0
  369. package/dist/esm/workers/SharedArrayBufferMainCache.js +34 -0
  370. package/dist/esm/workers/SharedArrayBufferMainCache.js.map +1 -0
  371. package/dist/esm/workers/SharedArrayBufferWorkerCache.d.ts +10 -0
  372. package/dist/esm/workers/SharedArrayBufferWorkerCache.d.ts.map +1 -0
  373. package/dist/esm/workers/SharedArrayBufferWorkerCache.js +46 -0
  374. package/dist/esm/workers/SharedArrayBufferWorkerCache.js.map +1 -0
  375. package/dist/esm/workers/StreamingWorkQueue.d.ts +18 -0
  376. package/dist/esm/workers/StreamingWorkQueue.d.ts.map +1 -0
  377. package/dist/esm/workers/StreamingWorkQueue.js +61 -0
  378. package/dist/esm/workers/StreamingWorkQueue.js.map +1 -0
  379. package/dist/esm/workers/buffers.d.ts +4 -0
  380. package/dist/esm/workers/buffers.d.ts.map +1 -0
  381. package/dist/esm/workers/buffers.js +21 -0
  382. package/dist/esm/workers/buffers.js.map +1 -0
  383. package/package.json +132 -0
@@ -0,0 +1,104 @@
1
+ import {} from '@actsecurity/iam-policy';
2
+ import BitSet from 'bitset';
3
+ import { IamCollectClient } from '../collect/client.js';
4
+ import { compressPrincipalString, encodeBitSet } from '../utils/bitset.js';
5
+ /**
6
+ * Make a principal index for all principals in the collect client
7
+ *
8
+ * @param collectClient the collect client to use
9
+ */
10
+ export async function makePrincipalIndex(collectClient) {
11
+ const principalIndex = {
12
+ prefix: 'arn:aws:iam::',
13
+ principals: [],
14
+ accounts: {},
15
+ action: {},
16
+ notAction: {}
17
+ };
18
+ const allAccounts = await collectClient.allAccounts();
19
+ let globalIndex = 0;
20
+ for (const accountId of allAccounts) {
21
+ const accountBitSet = new BitSet();
22
+ const principals = await collectClient.getAllPrincipalsInAccount(accountId);
23
+ const accountStart = globalIndex;
24
+ for (const principalArn of principals) {
25
+ principalIndex.principals.push(compressPrincipalString(principalArn));
26
+ accountBitSet.set(globalIndex, 1);
27
+ const allowPolicies = await collectClient.getAllowPoliciesForPrincipal(principalArn);
28
+ addPoliciesToCache(allowPolicies, principalIndex, globalIndex);
29
+ globalIndex++;
30
+ }
31
+ const accountEnd = globalIndex - 1;
32
+ principalIndex.accounts[accountId] = [accountStart, accountEnd];
33
+ }
34
+ for (const type of ['action', 'notAction']) {
35
+ for (const [, actions] of Object.entries(principalIndex[type])) {
36
+ for (const [action, bitset] of Object.entries(actions)) {
37
+ actions[action] = encodeBitSet(bitset);
38
+ }
39
+ }
40
+ }
41
+ delete principalIndex.notAction['*'];
42
+ await collectClient.savePrincipalIndex('principals', {
43
+ principals: principalIndex.principals,
44
+ prefix: principalIndex.prefix
45
+ });
46
+ await collectClient.savePrincipalIndex('accounts', principalIndex.accounts);
47
+ await collectClient.savePrincipalIndex('not-actions', principalIndex.notAction);
48
+ for (const [service, serviceIndex] of Object.entries(principalIndex.action)) {
49
+ const serviceKey = service === '*' ? 'wildcard' : service;
50
+ await collectClient.savePrincipalIndex(`actions-${serviceKey}`, serviceIndex);
51
+ }
52
+ }
53
+ /**
54
+ * Add policies to the existing cache
55
+ *
56
+ * @param policies the policies to add
57
+ * @param existingCache the existing cache
58
+ * @param principalIndex the index of the principal to add
59
+ */
60
+ function addPoliciesToCache(policies, existingCache, principalIndex) {
61
+ for (const policy of policies) {
62
+ for (const statement of policy.statements()) {
63
+ if (statement.isAllow()) {
64
+ if (statement.isActionStatement()) {
65
+ for (const action of statement.actions()) {
66
+ setCacheAction(existingCache.action, action, principalIndex);
67
+ }
68
+ }
69
+ else if (statement.isNotActionStatement()) {
70
+ for (const action of statement.notActions()) {
71
+ setCacheAction(existingCache.notAction, action, principalIndex);
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ }
78
+ /**
79
+ * Sets an action for a principal in a cache.
80
+ *
81
+ * @param cache The cache to update.
82
+ * @param action The action to set.
83
+ * @param principalIndex The index of the principal.
84
+ */
85
+ function setCacheAction(cache, action, principalIndex) {
86
+ if (action.isWildcardAction()) {
87
+ if (!cache['*']) {
88
+ cache['*'] = { '*': new BitSet() };
89
+ }
90
+ cache['*']['*'].set(principalIndex, 1);
91
+ }
92
+ else if (action.isServiceAction()) {
93
+ const service = action.service().toLowerCase();
94
+ const serviceAction = action.action().toLowerCase();
95
+ if (!cache[service]) {
96
+ cache[service] = {};
97
+ }
98
+ if (!cache[service][serviceAction]) {
99
+ cache[service][serviceAction] = new BitSet();
100
+ }
101
+ cache[service][serviceAction].set(principalIndex, 1);
102
+ }
103
+ }
104
+ //# 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,133 @@
1
+ import { convertAssumedRoleArnToRoleArn, isAssumedRoleArn, isIamRoleArn, isIamUserArn, splitArnParts } from '@actsecurity/iam-utils';
2
+ import { IamCollectClient } from './collect/client.js';
3
+ /**
4
+ * Get all the IAM policies for a user, including managed and inline policies, permission boundaries, and group policies.
5
+ *
6
+ * @param collectClient the IAM collect client to use for retrieving policies
7
+ * @param principalArn the ARN of the user to get policies for
8
+ * @returns an object containing the managed policies, inline policies, permission boundary, and group policies
9
+ */
10
+ export async function getAllPoliciesForUser(collectClient, principalArn) {
11
+ const accountId = splitArnParts(principalArn).accountId;
12
+ const managedPolicies = await collectClient.getManagedPoliciesForUser(principalArn);
13
+ const inlinePolicies = await collectClient.getInlinePoliciesForUser(principalArn);
14
+ const permissionBoundary = await collectClient.getPermissionsBoundaryForUser(principalArn);
15
+ const groups = await collectClient.getGroupsForUser(principalArn);
16
+ const scps = await collectClient.getScpHierarchyForAccount(accountId);
17
+ const rcps = await collectClient.getRcpHierarchyForAccount(accountId);
18
+ const groupPolicies = [];
19
+ for (const group of groups) {
20
+ const groupManagedPolicies = await collectClient.getManagedPoliciesForGroup(group);
21
+ const groupInlinePolicies = await collectClient.getInlinePoliciesForGroup(group);
22
+ groupPolicies.push({
23
+ group,
24
+ managedPolicies: groupManagedPolicies,
25
+ inlinePolicies: groupInlinePolicies
26
+ });
27
+ }
28
+ return {
29
+ scps,
30
+ rcps,
31
+ managedPolicies,
32
+ inlinePolicies,
33
+ permissionBoundary,
34
+ groupPolicies
35
+ };
36
+ }
37
+ /**
38
+ * Get all the IAM policies for a role, including managed and inline policies and permission boundaries.
39
+ *
40
+ * @param collectClient the IAM collect client to use for retrieving policies
41
+ * @param principalArn the ARN of the role to get policies for
42
+ * @returns an object containing the managed policies, inline policies, and permission boundary
43
+ */
44
+ export async function getAllPoliciesForRole(collectClient, principalArn) {
45
+ const accountId = splitArnParts(principalArn).accountId;
46
+ const managedPolicies = await collectClient.getManagedPoliciesForRole(principalArn);
47
+ const inlinePolicies = await collectClient.getInlinePoliciesForRole(principalArn);
48
+ const permissionBoundary = await collectClient.getPermissionsBoundaryForRole(principalArn);
49
+ const scps = await collectClient.getScpHierarchyForAccount(accountId);
50
+ const rcps = await collectClient.getRcpHierarchyForAccount(accountId);
51
+ return {
52
+ scps,
53
+ rcps,
54
+ managedPolicies,
55
+ inlinePolicies,
56
+ permissionBoundary
57
+ };
58
+ }
59
+ /**
60
+ * Get all IAM policies for a supported principal.
61
+ *
62
+ * IAM role and assumed-role principals are resolved to their canonical stored ARN before
63
+ * loading policies so pathless STS session principals can use path-qualified IAM role data.
64
+ *
65
+ * @param collectClient the IAM collect client to use for retrieving policies
66
+ * @param principalArn the ARN or service principal to get policies for
67
+ * @returns all policies that apply directly to the principal
68
+ */
69
+ export async function getAllPoliciesForPrincipal(collectClient, principalArn) {
70
+ if (isServicePrincipal(principalArn) ||
71
+ isSamlPrincipal(principalArn) ||
72
+ isOidcPrincipal(principalArn)) {
73
+ return {
74
+ scps: [],
75
+ rcps: [],
76
+ managedPolicies: [],
77
+ inlinePolicies: [],
78
+ permissionBoundary: undefined,
79
+ groupPolicies: []
80
+ };
81
+ }
82
+ if (isIamUserArn(principalArn)) {
83
+ return getAllPoliciesForUser(collectClient, principalArn);
84
+ }
85
+ else if (isIamRoleArn(principalArn)) {
86
+ const roleArn = (await collectClient.resolvePrincipalArn(principalArn)) ?? principalArn;
87
+ return getAllPoliciesForRole(collectClient, roleArn);
88
+ }
89
+ else if (isAssumedRoleArn(principalArn)) {
90
+ const roleArn = (await collectClient.resolvePrincipalArn(principalArn)) ??
91
+ convertAssumedRoleArnToRoleArn(principalArn);
92
+ return getAllPoliciesForRole(collectClient, roleArn);
93
+ }
94
+ throw new Error(`Unsupported principal type: ${principalArn}`);
95
+ }
96
+ export function isArnPrincipal(principal) {
97
+ return principal.startsWith('arn:');
98
+ }
99
+ export function isServicePrincipal(principal) {
100
+ return !isArnPrincipal(principal) && principal.endsWith('amazonaws.com');
101
+ }
102
+ export function isServiceLinkedRole(principal) {
103
+ const arnParts = splitArnParts(principal);
104
+ return isArnPrincipal(principal) && !!arnParts.resourcePath?.startsWith('aws-service-role/');
105
+ }
106
+ export function isOidcPrincipal(principal) {
107
+ if (!isArnPrincipal(principal)) {
108
+ return false;
109
+ }
110
+ const parts = splitArnParts(principal);
111
+ return parts.service === 'iam' && parts.resourceType === 'oidc-provider';
112
+ }
113
+ export function isSamlPrincipal(principal) {
114
+ if (!isArnPrincipal(principal)) {
115
+ return false;
116
+ }
117
+ const parts = splitArnParts(principal);
118
+ return parts.service === 'iam' && parts.resourceType === 'saml-provider';
119
+ }
120
+ /**
121
+ * Check to see if a principal exists or is an AWS service principal.
122
+ *
123
+ * @param principal the principal to check
124
+ * @param collectClient the IAM collect client to use for checking existence
125
+ * @returns true if the principal exists or is a service principal, false otherwise
126
+ */
127
+ export async function principalExists(principal, collectClient) {
128
+ if (isServicePrincipal(principal)) {
129
+ return true;
130
+ }
131
+ return collectClient.principalExists(principal);
132
+ }
133
+ //# 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,69 @@
1
+ import {} from '@actsecurity/iam-policy';
2
+ import {} from '@actsecurity/iam-simulate';
3
+ import { splitArnParts } from '@actsecurity/iam-utils';
4
+ import { IamCollectClient } from './collect/client.js';
5
+ /**
6
+ * Get the account ID for a given resource ARN. Lookup index if necessary to find the account ID.
7
+ *
8
+ * @param collectClient the IAM collect client to use for retrieving the account ID
9
+ * @param resourceArn the ARN of the resource to get the account ID for
10
+ * @returns the account ID for the specified resource, or undefined if not found
11
+ */
12
+ export async function getAccountIdForResource(collectClient, resourceArn) {
13
+ if (!resourceArn.startsWith('arn:')) {
14
+ return undefined;
15
+ }
16
+ const arnParts = splitArnParts(resourceArn);
17
+ let accountId = arnParts.accountId;
18
+ if (accountId && accountId !== 'aws') {
19
+ return accountId;
20
+ }
21
+ if (arnParts.service === 's3' && arnParts.resourceType === '') {
22
+ const bucketName = arnParts.resourcePath.split('/')[0];
23
+ return collectClient.getAccountIdForBucket(bucketName);
24
+ }
25
+ else if (arnParts.service === 'apigateway' && arnParts.resourceType === 'restapis') {
26
+ return collectClient.getAccountIdForRestApi(resourceArn);
27
+ }
28
+ return undefined;
29
+ }
30
+ /**
31
+ * Get the resource control policies (RCPs) for a given resource ARN.
32
+ *
33
+ * @param collectClient the IAM collect client to use for retrieving RCPs
34
+ * @param resourceArn the ARN of the resource to get RCPs for
35
+ * @param resourceAccount the account ID of the resource, if known
36
+ * @returns an array of resource control policies for the specified resource
37
+ */
38
+ export async function getRcpsForResource(collectClient, resourceArn, resourceAccount) {
39
+ const accountId = resourceAccount || (await getAccountIdForResource(collectClient, resourceArn));
40
+ if (!accountId) {
41
+ throw new Error(`Unable to determine account ID for resource ARN: ${resourceArn}`);
42
+ }
43
+ return collectClient.getRcpHierarchyForAccount(accountId);
44
+ }
45
+ /**
46
+ * Get the resource policy for a resource, if any.
47
+ *
48
+ * @param collectClient the IAM collect client to use for retrieving the resource policy
49
+ * @param resourceArn the ARN of the resource to get the policy for
50
+ * @param resourceAccount the account ID of the resource, if known
51
+ * @returns the resource policy for the specified resource, or undefined if not found
52
+ */
53
+ export async function getResourcePolicyForResource(collectClient, resourceArn, resourceAccount) {
54
+ const accountId = resourceAccount || (await getAccountIdForResource(collectClient, resourceArn));
55
+ if (!accountId) {
56
+ throw new Error(`Unable to determine account ID for resource ARN: ${resourceArn}`);
57
+ }
58
+ const resourcePolicy = await collectClient.getResourcePolicyForArn(resourceArn, accountId);
59
+ if (resourcePolicy) {
60
+ return resourcePolicy;
61
+ }
62
+ const ramPolicy = await collectClient.getRamSharePolicyForArn(resourceArn, accountId);
63
+ if (ramPolicy) {
64
+ return ramPolicy;
65
+ }
66
+ //TODO: there should be more here for things like glue resources
67
+ return undefined;
68
+ }
69
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAmB,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,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,aAAa,CAAC,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;AACH,MAAM,CAAC,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;AACH,MAAM,CAAC,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"}