@actsecurity/iam-simulate 0.1.173

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 (597) hide show
  1. package/LICENSE.txt +661 -0
  2. package/README.md +257 -0
  3. package/dist/cjs/StatementAnalysis.d.ts +63 -0
  4. package/dist/cjs/StatementAnalysis.d.ts.map +1 -0
  5. package/dist/cjs/StatementAnalysis.js +48 -0
  6. package/dist/cjs/StatementAnalysis.js.map +1 -0
  7. package/dist/cjs/action/action.d.ts +37 -0
  8. package/dist/cjs/action/action.d.ts.map +1 -0
  9. package/dist/cjs/action/action.js +102 -0
  10. package/dist/cjs/action/action.js.map +1 -0
  11. package/dist/cjs/analysis/allowedConditions.d.ts +61 -0
  12. package/dist/cjs/analysis/allowedConditions.d.ts.map +1 -0
  13. package/dist/cjs/analysis/allowedConditions.js +395 -0
  14. package/dist/cjs/analysis/allowedConditions.js.map +1 -0
  15. package/dist/cjs/analysis/analyzeResults.d.ts +99 -0
  16. package/dist/cjs/analysis/analyzeResults.d.ts.map +1 -0
  17. package/dist/cjs/analysis/analyzeResults.js +187 -0
  18. package/dist/cjs/analysis/analyzeResults.js.map +1 -0
  19. package/dist/cjs/condition/BaseConditionOperator.d.ts +13 -0
  20. package/dist/cjs/condition/BaseConditionOperator.d.ts.map +1 -0
  21. package/dist/cjs/condition/BaseConditionOperator.js +3 -0
  22. package/dist/cjs/condition/BaseConditionOperator.js.map +1 -0
  23. package/dist/cjs/condition/arn/ArnEquals.d.ts +3 -0
  24. package/dist/cjs/condition/arn/ArnEquals.d.ts.map +1 -0
  25. package/dist/cjs/condition/arn/ArnEquals.js +12 -0
  26. package/dist/cjs/condition/arn/ArnEquals.js.map +1 -0
  27. package/dist/cjs/condition/arn/ArnLike.d.ts +3 -0
  28. package/dist/cjs/condition/arn/ArnLike.d.ts.map +1 -0
  29. package/dist/cjs/condition/arn/ArnLike.js +18 -0
  30. package/dist/cjs/condition/arn/ArnLike.js.map +1 -0
  31. package/dist/cjs/condition/arn/ArnNotEquals.d.ts +3 -0
  32. package/dist/cjs/condition/arn/ArnNotEquals.d.ts.map +1 -0
  33. package/dist/cjs/condition/arn/ArnNotEquals.js +12 -0
  34. package/dist/cjs/condition/arn/ArnNotEquals.js.map +1 -0
  35. package/dist/cjs/condition/arn/ArnNotLike.d.ts +3 -0
  36. package/dist/cjs/condition/arn/ArnNotLike.d.ts.map +1 -0
  37. package/dist/cjs/condition/arn/ArnNotLike.js +18 -0
  38. package/dist/cjs/condition/arn/ArnNotLike.js.map +1 -0
  39. package/dist/cjs/condition/arn/arn.d.ts +12 -0
  40. package/dist/cjs/condition/arn/arn.d.ts.map +1 -0
  41. package/dist/cjs/condition/arn/arn.js +71 -0
  42. package/dist/cjs/condition/arn/arn.js.map +1 -0
  43. package/dist/cjs/condition/binary/BinaryEquals.d.ts +7 -0
  44. package/dist/cjs/condition/binary/BinaryEquals.d.ts.map +1 -0
  45. package/dist/cjs/condition/binary/BinaryEquals.js +28 -0
  46. package/dist/cjs/condition/binary/BinaryEquals.js.map +1 -0
  47. package/dist/cjs/condition/boolean/Bool.d.ts +3 -0
  48. package/dist/cjs/condition/boolean/Bool.d.ts.map +1 -0
  49. package/dist/cjs/condition/boolean/Bool.js +54 -0
  50. package/dist/cjs/condition/boolean/Bool.js.map +1 -0
  51. package/dist/cjs/condition/condition.d.ts +26 -0
  52. package/dist/cjs/condition/condition.d.ts.map +1 -0
  53. package/dist/cjs/condition/condition.js +665 -0
  54. package/dist/cjs/condition/condition.js.map +1 -0
  55. package/dist/cjs/condition/conditionUtil.d.ts +10 -0
  56. package/dist/cjs/condition/conditionUtil.d.ts.map +1 -0
  57. package/dist/cjs/condition/conditionUtil.js +19 -0
  58. package/dist/cjs/condition/conditionUtil.js.map +1 -0
  59. package/dist/cjs/condition/date/DateEquals.d.ts +3 -0
  60. package/dist/cjs/condition/date/DateEquals.d.ts.map +1 -0
  61. package/dist/cjs/condition/date/DateEquals.js +22 -0
  62. package/dist/cjs/condition/date/DateEquals.js.map +1 -0
  63. package/dist/cjs/condition/date/DateGreaterThan.d.ts +3 -0
  64. package/dist/cjs/condition/date/DateGreaterThan.d.ts.map +1 -0
  65. package/dist/cjs/condition/date/DateGreaterThan.js +22 -0
  66. package/dist/cjs/condition/date/DateGreaterThan.js.map +1 -0
  67. package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts +3 -0
  68. package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
  69. package/dist/cjs/condition/date/DateGreaterThanEquals.js +22 -0
  70. package/dist/cjs/condition/date/DateGreaterThanEquals.js.map +1 -0
  71. package/dist/cjs/condition/date/DateLessThan.d.ts +3 -0
  72. package/dist/cjs/condition/date/DateLessThan.d.ts.map +1 -0
  73. package/dist/cjs/condition/date/DateLessThan.js +22 -0
  74. package/dist/cjs/condition/date/DateLessThan.js.map +1 -0
  75. package/dist/cjs/condition/date/DateLessThanEquals.d.ts +3 -0
  76. package/dist/cjs/condition/date/DateLessThanEquals.d.ts.map +1 -0
  77. package/dist/cjs/condition/date/DateLessThanEquals.js +22 -0
  78. package/dist/cjs/condition/date/DateLessThanEquals.js.map +1 -0
  79. package/dist/cjs/condition/date/DateNotEquals.d.ts +3 -0
  80. package/dist/cjs/condition/date/DateNotEquals.d.ts.map +1 -0
  81. package/dist/cjs/condition/date/DateNotEquals.js +22 -0
  82. package/dist/cjs/condition/date/DateNotEquals.js.map +1 -0
  83. package/dist/cjs/condition/date/date.d.ts +18 -0
  84. package/dist/cjs/condition/date/date.d.ts.map +1 -0
  85. package/dist/cjs/condition/date/date.js +57 -0
  86. package/dist/cjs/condition/date/date.js.map +1 -0
  87. package/dist/cjs/condition/ipaddress/IpAddress.d.ts +3 -0
  88. package/dist/cjs/condition/ipaddress/IpAddress.d.ts.map +1 -0
  89. package/dist/cjs/condition/ipaddress/IpAddress.js +20 -0
  90. package/dist/cjs/condition/ipaddress/IpAddress.js.map +1 -0
  91. package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts +3 -0
  92. package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
  93. package/dist/cjs/condition/ipaddress/NotIpAddress.js +20 -0
  94. package/dist/cjs/condition/ipaddress/NotIpAddress.js.map +1 -0
  95. package/dist/cjs/condition/ipaddress/ip.d.ts +11 -0
  96. package/dist/cjs/condition/ipaddress/ip.d.ts.map +1 -0
  97. package/dist/cjs/condition/ipaddress/ip.js +70 -0
  98. package/dist/cjs/condition/ipaddress/ip.js.map +1 -0
  99. package/dist/cjs/condition/ipaddress/ipv4.d.ts +24 -0
  100. package/dist/cjs/condition/ipaddress/ipv4.d.ts.map +1 -0
  101. package/dist/cjs/condition/ipaddress/ipv4.js +59 -0
  102. package/dist/cjs/condition/ipaddress/ipv4.js.map +1 -0
  103. package/dist/cjs/condition/ipaddress/ipv6.d.ts +24 -0
  104. package/dist/cjs/condition/ipaddress/ipv6.d.ts.map +1 -0
  105. package/dist/cjs/condition/ipaddress/ipv6.js +111 -0
  106. package/dist/cjs/condition/ipaddress/ipv6.js.map +1 -0
  107. package/dist/cjs/condition/numeric/NumericEquals.d.ts +3 -0
  108. package/dist/cjs/condition/numeric/NumericEquals.d.ts.map +1 -0
  109. package/dist/cjs/condition/numeric/NumericEquals.js +22 -0
  110. package/dist/cjs/condition/numeric/NumericEquals.js.map +1 -0
  111. package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts +3 -0
  112. package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
  113. package/dist/cjs/condition/numeric/NumericGreaterThan.js +22 -0
  114. package/dist/cjs/condition/numeric/NumericGreaterThan.js.map +1 -0
  115. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
  116. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
  117. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js +22 -0
  118. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
  119. package/dist/cjs/condition/numeric/NumericLessThan.d.ts +3 -0
  120. package/dist/cjs/condition/numeric/NumericLessThan.d.ts.map +1 -0
  121. package/dist/cjs/condition/numeric/NumericLessThan.js +22 -0
  122. package/dist/cjs/condition/numeric/NumericLessThan.js.map +1 -0
  123. package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts +3 -0
  124. package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
  125. package/dist/cjs/condition/numeric/NumericLessThanEquals.js +22 -0
  126. package/dist/cjs/condition/numeric/NumericLessThanEquals.js.map +1 -0
  127. package/dist/cjs/condition/numeric/NumericNotEquals.d.ts +3 -0
  128. package/dist/cjs/condition/numeric/NumericNotEquals.d.ts.map +1 -0
  129. package/dist/cjs/condition/numeric/NumericNotEquals.js +22 -0
  130. package/dist/cjs/condition/numeric/NumericNotEquals.js.map +1 -0
  131. package/dist/cjs/condition/numeric/numeric.d.ts +18 -0
  132. package/dist/cjs/condition/numeric/numeric.d.ts.map +1 -0
  133. package/dist/cjs/condition/numeric/numeric.js +56 -0
  134. package/dist/cjs/condition/numeric/numeric.js.map +1 -0
  135. package/dist/cjs/condition/string/StringEquals.d.ts +3 -0
  136. package/dist/cjs/condition/string/StringEquals.d.ts.map +1 -0
  137. package/dist/cjs/condition/string/StringEquals.js +35 -0
  138. package/dist/cjs/condition/string/StringEquals.js.map +1 -0
  139. package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
  140. package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
  141. package/dist/cjs/condition/string/StringEqualsIgnoreCase.js +35 -0
  142. package/dist/cjs/condition/string/StringEqualsIgnoreCase.js.map +1 -0
  143. package/dist/cjs/condition/string/StringLike.d.ts +3 -0
  144. package/dist/cjs/condition/string/StringLike.d.ts.map +1 -0
  145. package/dist/cjs/condition/string/StringLike.js +35 -0
  146. package/dist/cjs/condition/string/StringLike.js.map +1 -0
  147. package/dist/cjs/condition/string/StringNotEquals.d.ts +3 -0
  148. package/dist/cjs/condition/string/StringNotEquals.d.ts.map +1 -0
  149. package/dist/cjs/condition/string/StringNotEquals.js +35 -0
  150. package/dist/cjs/condition/string/StringNotEquals.js.map +1 -0
  151. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
  152. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
  153. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js +35 -0
  154. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
  155. package/dist/cjs/condition/string/StringNotLike.d.ts +3 -0
  156. package/dist/cjs/condition/string/StringNotLike.d.ts.map +1 -0
  157. package/dist/cjs/condition/string/StringNotLike.js +35 -0
  158. package/dist/cjs/condition/string/StringNotLike.js.map +1 -0
  159. package/dist/cjs/context_keys/contextKeyTypes.d.ts +19 -0
  160. package/dist/cjs/context_keys/contextKeyTypes.d.ts.map +1 -0
  161. package/dist/cjs/context_keys/contextKeyTypes.js +27 -0
  162. package/dist/cjs/context_keys/contextKeyTypes.js.map +1 -0
  163. package/dist/cjs/context_keys/contextKeys.d.ts +24 -0
  164. package/dist/cjs/context_keys/contextKeys.d.ts.map +1 -0
  165. package/dist/cjs/context_keys/contextKeys.js +121 -0
  166. package/dist/cjs/context_keys/contextKeys.js.map +1 -0
  167. package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
  168. package/dist/cjs/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
  169. package/dist/cjs/context_keys/discoveryContextKeyConstraints.js +153 -0
  170. package/dist/cjs/context_keys/discoveryContextKeyConstraints.js.map +1 -0
  171. package/dist/cjs/context_keys/findContextKeys.d.ts +19 -0
  172. package/dist/cjs/context_keys/findContextKeys.d.ts.map +1 -0
  173. package/dist/cjs/context_keys/findContextKeys.js +58 -0
  174. package/dist/cjs/context_keys/findContextKeys.js.map +1 -0
  175. package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts +134 -0
  176. package/dist/cjs/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
  177. package/dist/cjs/core_engine/CoreSimulatorEngine.js +444 -0
  178. package/dist/cjs/core_engine/CoreSimulatorEngine.js.map +1 -0
  179. package/dist/cjs/evaluate.d.ts +199 -0
  180. package/dist/cjs/evaluate.d.ts.map +1 -0
  181. package/dist/cjs/evaluate.js +3 -0
  182. package/dist/cjs/evaluate.js.map +1 -0
  183. package/dist/cjs/explain/displayExplainCli.d.ts +3 -0
  184. package/dist/cjs/explain/displayExplainCli.d.ts.map +1 -0
  185. package/dist/cjs/explain/displayExplainCli.js +260 -0
  186. package/dist/cjs/explain/displayExplainCli.js.map +1 -0
  187. package/dist/cjs/explain/statementExplain.d.ts +161 -0
  188. package/dist/cjs/explain/statementExplain.d.ts.map +1 -0
  189. package/dist/cjs/explain/statementExplain.js +33 -0
  190. package/dist/cjs/explain/statementExplain.js.map +1 -0
  191. package/dist/cjs/global_conditions/globalConditionKeys.d.ts +3 -0
  192. package/dist/cjs/global_conditions/globalConditionKeys.d.ts.map +1 -0
  193. package/dist/cjs/global_conditions/globalConditionKeys.js +12 -0
  194. package/dist/cjs/global_conditions/globalConditionKeys.js.map +1 -0
  195. package/dist/cjs/index.d.ts +16 -0
  196. package/dist/cjs/index.d.ts.map +1 -0
  197. package/dist/cjs/index.js +25 -0
  198. package/dist/cjs/index.js.map +1 -0
  199. package/dist/cjs/package.json +3 -0
  200. package/dist/cjs/policyType.d.ts +13 -0
  201. package/dist/cjs/policyType.d.ts.map +1 -0
  202. package/dist/cjs/policyType.js +3 -0
  203. package/dist/cjs/policyType.js.map +1 -0
  204. package/dist/cjs/principal/principal.d.ts +61 -0
  205. package/dist/cjs/principal/principal.d.ts.map +1 -0
  206. package/dist/cjs/principal/principal.js +357 -0
  207. package/dist/cjs/principal/principal.js.map +1 -0
  208. package/dist/cjs/request/request.d.ts +66 -0
  209. package/dist/cjs/request/request.d.ts.map +1 -0
  210. package/dist/cjs/request/request.js +42 -0
  211. package/dist/cjs/request/request.js.map +1 -0
  212. package/dist/cjs/request/requestAction.d.ts +27 -0
  213. package/dist/cjs/request/requestAction.d.ts.map +1 -0
  214. package/dist/cjs/request/requestAction.js +20 -0
  215. package/dist/cjs/request/requestAction.js.map +1 -0
  216. package/dist/cjs/request/requestPrincipal.d.ts +92 -0
  217. package/dist/cjs/request/requestPrincipal.d.ts.map +1 -0
  218. package/dist/cjs/request/requestPrincipal.js +88 -0
  219. package/dist/cjs/request/requestPrincipal.js.map +1 -0
  220. package/dist/cjs/request/requestResource.d.ts +55 -0
  221. package/dist/cjs/request/requestResource.d.ts.map +1 -0
  222. package/dist/cjs/request/requestResource.js +40 -0
  223. package/dist/cjs/request/requestResource.js.map +1 -0
  224. package/dist/cjs/requestContext.d.ts +63 -0
  225. package/dist/cjs/requestContext.d.ts.map +1 -0
  226. package/dist/cjs/requestContext.js +46 -0
  227. package/dist/cjs/requestContext.js.map +1 -0
  228. package/dist/cjs/resource/resource.d.ts +54 -0
  229. package/dist/cjs/resource/resource.d.ts.map +1 -0
  230. package/dist/cjs/resource/resource.js +585 -0
  231. package/dist/cjs/resource/resource.js.map +1 -0
  232. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts +182 -0
  233. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -0
  234. package/dist/cjs/services/DefaultServiceAuthorizer.js +625 -0
  235. package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -0
  236. package/dist/cjs/services/IamServiceAuthorizer.d.ts +10 -0
  237. package/dist/cjs/services/IamServiceAuthorizer.d.ts.map +1 -0
  238. package/dist/cjs/services/IamServiceAuthorizer.js +65 -0
  239. package/dist/cjs/services/IamServiceAuthorizer.js.map +1 -0
  240. package/dist/cjs/services/KmsServiceAuthorizer.d.ts +29 -0
  241. package/dist/cjs/services/KmsServiceAuthorizer.d.ts.map +1 -0
  242. package/dist/cjs/services/KmsServiceAuthorizer.js +83 -0
  243. package/dist/cjs/services/KmsServiceAuthorizer.js.map +1 -0
  244. package/dist/cjs/services/ServiceAuthorizer.d.ts +27 -0
  245. package/dist/cjs/services/ServiceAuthorizer.d.ts.map +1 -0
  246. package/dist/cjs/services/ServiceAuthorizer.js +3 -0
  247. package/dist/cjs/services/ServiceAuthorizer.js.map +1 -0
  248. package/dist/cjs/services/StsServiceAuthorizer.d.ts +19 -0
  249. package/dist/cjs/services/StsServiceAuthorizer.d.ts.map +1 -0
  250. package/dist/cjs/services/StsServiceAuthorizer.js +45 -0
  251. package/dist/cjs/services/StsServiceAuthorizer.js.map +1 -0
  252. package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts +24 -0
  253. package/dist/cjs/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
  254. package/dist/cjs/services/s3/S3ServiceAuthorizer.js +79 -0
  255. package/dist/cjs/services/s3/S3ServiceAuthorizer.js.map +1 -0
  256. package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts +50 -0
  257. package/dist/cjs/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
  258. package/dist/cjs/services/s3/s3BlockPublicAccess.js +301 -0
  259. package/dist/cjs/services/s3/s3BlockPublicAccess.js.map +1 -0
  260. package/dist/cjs/simulation_engine/contextKeys.d.ts +13 -0
  261. package/dist/cjs/simulation_engine/contextKeys.d.ts.map +1 -0
  262. package/dist/cjs/simulation_engine/contextKeys.js +58 -0
  263. package/dist/cjs/simulation_engine/contextKeys.js.map +1 -0
  264. package/dist/cjs/simulation_engine/overallResult.d.ts +13 -0
  265. package/dist/cjs/simulation_engine/overallResult.d.ts.map +1 -0
  266. package/dist/cjs/simulation_engine/overallResult.js +35 -0
  267. package/dist/cjs/simulation_engine/overallResult.js.map +1 -0
  268. package/dist/cjs/simulation_engine/policyResources.d.ts +44 -0
  269. package/dist/cjs/simulation_engine/policyResources.d.ts.map +1 -0
  270. package/dist/cjs/simulation_engine/policyResources.js +120 -0
  271. package/dist/cjs/simulation_engine/policyResources.js.map +1 -0
  272. package/dist/cjs/simulation_engine/resourceTypes.d.ts +11 -0
  273. package/dist/cjs/simulation_engine/resourceTypes.d.ts.map +1 -0
  274. package/dist/cjs/simulation_engine/resourceTypes.js +26 -0
  275. package/dist/cjs/simulation_engine/resourceTypes.js.map +1 -0
  276. package/dist/cjs/simulation_engine/simulation.d.ts +114 -0
  277. package/dist/cjs/simulation_engine/simulation.d.ts.map +1 -0
  278. package/dist/cjs/simulation_engine/simulation.js +35 -0
  279. package/dist/cjs/simulation_engine/simulation.js.map +1 -0
  280. package/dist/cjs/simulation_engine/simulationEngine.d.ts +128 -0
  281. package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -0
  282. package/dist/cjs/simulation_engine/simulationEngine.js +432 -0
  283. package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -0
  284. package/dist/cjs/simulation_engine/simulationOptions.d.ts +21 -0
  285. package/dist/cjs/simulation_engine/simulationOptions.d.ts.map +1 -0
  286. package/dist/cjs/simulation_engine/simulationOptions.js +3 -0
  287. package/dist/cjs/simulation_engine/simulationOptions.js.map +1 -0
  288. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
  289. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
  290. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +62 -0
  291. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -0
  292. package/dist/cjs/util/resourceStrings.d.ts +19 -0
  293. package/dist/cjs/util/resourceStrings.d.ts.map +1 -0
  294. package/dist/cjs/util/resourceStrings.js +107 -0
  295. package/dist/cjs/util/resourceStrings.js.map +1 -0
  296. package/dist/cjs/util.d.ts +90 -0
  297. package/dist/cjs/util.d.ts.map +1 -0
  298. package/dist/cjs/util.js +350 -0
  299. package/dist/cjs/util.js.map +1 -0
  300. package/dist/esm/StatementAnalysis.d.ts +63 -0
  301. package/dist/esm/StatementAnalysis.d.ts.map +1 -0
  302. package/dist/esm/StatementAnalysis.js +46 -0
  303. package/dist/esm/StatementAnalysis.js.map +1 -0
  304. package/dist/esm/action/action.d.ts +37 -0
  305. package/dist/esm/action/action.d.ts.map +1 -0
  306. package/dist/esm/action/action.js +100 -0
  307. package/dist/esm/action/action.js.map +1 -0
  308. package/dist/esm/analysis/allowedConditions.d.ts +61 -0
  309. package/dist/esm/analysis/allowedConditions.d.ts.map +1 -0
  310. package/dist/esm/analysis/allowedConditions.js +382 -0
  311. package/dist/esm/analysis/allowedConditions.js.map +1 -0
  312. package/dist/esm/analysis/analyzeResults.d.ts +99 -0
  313. package/dist/esm/analysis/analyzeResults.d.ts.map +1 -0
  314. package/dist/esm/analysis/analyzeResults.js +183 -0
  315. package/dist/esm/analysis/analyzeResults.js.map +1 -0
  316. package/dist/esm/condition/BaseConditionOperator.d.ts +13 -0
  317. package/dist/esm/condition/BaseConditionOperator.d.ts.map +1 -0
  318. package/dist/esm/condition/BaseConditionOperator.js +3 -0
  319. package/dist/esm/condition/BaseConditionOperator.js.map +1 -0
  320. package/dist/esm/condition/arn/ArnEquals.d.ts +3 -0
  321. package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -0
  322. package/dist/esm/condition/arn/ArnEquals.js +10 -0
  323. package/dist/esm/condition/arn/ArnEquals.js.map +1 -0
  324. package/dist/esm/condition/arn/ArnLike.d.ts +3 -0
  325. package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -0
  326. package/dist/esm/condition/arn/ArnLike.js +16 -0
  327. package/dist/esm/condition/arn/ArnLike.js.map +1 -0
  328. package/dist/esm/condition/arn/ArnNotEquals.d.ts +3 -0
  329. package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -0
  330. package/dist/esm/condition/arn/ArnNotEquals.js +10 -0
  331. package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -0
  332. package/dist/esm/condition/arn/ArnNotLike.d.ts +3 -0
  333. package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -0
  334. package/dist/esm/condition/arn/ArnNotLike.js +16 -0
  335. package/dist/esm/condition/arn/ArnNotLike.js.map +1 -0
  336. package/dist/esm/condition/arn/arn.d.ts +12 -0
  337. package/dist/esm/condition/arn/arn.d.ts.map +1 -0
  338. package/dist/esm/condition/arn/arn.js +70 -0
  339. package/dist/esm/condition/arn/arn.js.map +1 -0
  340. package/dist/esm/condition/binary/BinaryEquals.d.ts +7 -0
  341. package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -0
  342. package/dist/esm/condition/binary/BinaryEquals.js +27 -0
  343. package/dist/esm/condition/binary/BinaryEquals.js.map +1 -0
  344. package/dist/esm/condition/boolean/Bool.d.ts +3 -0
  345. package/dist/esm/condition/boolean/Bool.d.ts.map +1 -0
  346. package/dist/esm/condition/boolean/Bool.js +53 -0
  347. package/dist/esm/condition/boolean/Bool.js.map +1 -0
  348. package/dist/esm/condition/condition.d.ts +26 -0
  349. package/dist/esm/condition/condition.d.ts.map +1 -0
  350. package/dist/esm/condition/condition.js +666 -0
  351. package/dist/esm/condition/condition.js.map +1 -0
  352. package/dist/esm/condition/conditionUtil.d.ts +10 -0
  353. package/dist/esm/condition/conditionUtil.d.ts.map +1 -0
  354. package/dist/esm/condition/conditionUtil.js +17 -0
  355. package/dist/esm/condition/conditionUtil.js.map +1 -0
  356. package/dist/esm/condition/date/DateEquals.d.ts +3 -0
  357. package/dist/esm/condition/date/DateEquals.d.ts.map +1 -0
  358. package/dist/esm/condition/date/DateEquals.js +20 -0
  359. package/dist/esm/condition/date/DateEquals.js.map +1 -0
  360. package/dist/esm/condition/date/DateGreaterThan.d.ts +3 -0
  361. package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -0
  362. package/dist/esm/condition/date/DateGreaterThan.js +20 -0
  363. package/dist/esm/condition/date/DateGreaterThan.js.map +1 -0
  364. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts +3 -0
  365. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -0
  366. package/dist/esm/condition/date/DateGreaterThanEquals.js +20 -0
  367. package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -0
  368. package/dist/esm/condition/date/DateLessThan.d.ts +3 -0
  369. package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -0
  370. package/dist/esm/condition/date/DateLessThan.js +20 -0
  371. package/dist/esm/condition/date/DateLessThan.js.map +1 -0
  372. package/dist/esm/condition/date/DateLessThanEquals.d.ts +3 -0
  373. package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -0
  374. package/dist/esm/condition/date/DateLessThanEquals.js +20 -0
  375. package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -0
  376. package/dist/esm/condition/date/DateNotEquals.d.ts +3 -0
  377. package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -0
  378. package/dist/esm/condition/date/DateNotEquals.js +20 -0
  379. package/dist/esm/condition/date/DateNotEquals.js.map +1 -0
  380. package/dist/esm/condition/date/date.d.ts +18 -0
  381. package/dist/esm/condition/date/date.d.ts.map +1 -0
  382. package/dist/esm/condition/date/date.js +54 -0
  383. package/dist/esm/condition/date/date.js.map +1 -0
  384. package/dist/esm/condition/ipaddress/IpAddress.d.ts +3 -0
  385. package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -0
  386. package/dist/esm/condition/ipaddress/IpAddress.js +18 -0
  387. package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -0
  388. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts +3 -0
  389. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -0
  390. package/dist/esm/condition/ipaddress/NotIpAddress.js +18 -0
  391. package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -0
  392. package/dist/esm/condition/ipaddress/ip.d.ts +11 -0
  393. package/dist/esm/condition/ipaddress/ip.d.ts.map +1 -0
  394. package/dist/esm/condition/ipaddress/ip.js +68 -0
  395. package/dist/esm/condition/ipaddress/ip.js.map +1 -0
  396. package/dist/esm/condition/ipaddress/ipv4.d.ts +24 -0
  397. package/dist/esm/condition/ipaddress/ipv4.d.ts.map +1 -0
  398. package/dist/esm/condition/ipaddress/ipv4.js +54 -0
  399. package/dist/esm/condition/ipaddress/ipv4.js.map +1 -0
  400. package/dist/esm/condition/ipaddress/ipv6.d.ts +24 -0
  401. package/dist/esm/condition/ipaddress/ipv6.d.ts.map +1 -0
  402. package/dist/esm/condition/ipaddress/ipv6.js +106 -0
  403. package/dist/esm/condition/ipaddress/ipv6.js.map +1 -0
  404. package/dist/esm/condition/numeric/NumericEquals.d.ts +3 -0
  405. package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -0
  406. package/dist/esm/condition/numeric/NumericEquals.js +20 -0
  407. package/dist/esm/condition/numeric/NumericEquals.js.map +1 -0
  408. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts +3 -0
  409. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -0
  410. package/dist/esm/condition/numeric/NumericGreaterThan.js +20 -0
  411. package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -0
  412. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts +3 -0
  413. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -0
  414. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +20 -0
  415. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -0
  416. package/dist/esm/condition/numeric/NumericLessThan.d.ts +3 -0
  417. package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -0
  418. package/dist/esm/condition/numeric/NumericLessThan.js +20 -0
  419. package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -0
  420. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts +3 -0
  421. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -0
  422. package/dist/esm/condition/numeric/NumericLessThanEquals.js +20 -0
  423. package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -0
  424. package/dist/esm/condition/numeric/NumericNotEquals.d.ts +3 -0
  425. package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -0
  426. package/dist/esm/condition/numeric/NumericNotEquals.js +20 -0
  427. package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -0
  428. package/dist/esm/condition/numeric/numeric.d.ts +18 -0
  429. package/dist/esm/condition/numeric/numeric.d.ts.map +1 -0
  430. package/dist/esm/condition/numeric/numeric.js +53 -0
  431. package/dist/esm/condition/numeric/numeric.js.map +1 -0
  432. package/dist/esm/condition/string/StringEquals.d.ts +3 -0
  433. package/dist/esm/condition/string/StringEquals.d.ts.map +1 -0
  434. package/dist/esm/condition/string/StringEquals.js +34 -0
  435. package/dist/esm/condition/string/StringEquals.js.map +1 -0
  436. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts +3 -0
  437. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -0
  438. package/dist/esm/condition/string/StringEqualsIgnoreCase.js +34 -0
  439. package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -0
  440. package/dist/esm/condition/string/StringLike.d.ts +3 -0
  441. package/dist/esm/condition/string/StringLike.d.ts.map +1 -0
  442. package/dist/esm/condition/string/StringLike.js +34 -0
  443. package/dist/esm/condition/string/StringLike.js.map +1 -0
  444. package/dist/esm/condition/string/StringNotEquals.d.ts +3 -0
  445. package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -0
  446. package/dist/esm/condition/string/StringNotEquals.js +34 -0
  447. package/dist/esm/condition/string/StringNotEquals.js.map +1 -0
  448. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts +3 -0
  449. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -0
  450. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +34 -0
  451. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -0
  452. package/dist/esm/condition/string/StringNotLike.d.ts +3 -0
  453. package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -0
  454. package/dist/esm/condition/string/StringNotLike.js +34 -0
  455. package/dist/esm/condition/string/StringNotLike.js.map +1 -0
  456. package/dist/esm/context_keys/contextKeyTypes.d.ts +19 -0
  457. package/dist/esm/context_keys/contextKeyTypes.d.ts.map +1 -0
  458. package/dist/esm/context_keys/contextKeyTypes.js +23 -0
  459. package/dist/esm/context_keys/contextKeyTypes.js.map +1 -0
  460. package/dist/esm/context_keys/contextKeys.d.ts +24 -0
  461. package/dist/esm/context_keys/contextKeys.d.ts.map +1 -0
  462. package/dist/esm/context_keys/contextKeys.js +117 -0
  463. package/dist/esm/context_keys/contextKeys.js.map +1 -0
  464. package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts +103 -0
  465. package/dist/esm/context_keys/discoveryContextKeyConstraints.d.ts.map +1 -0
  466. package/dist/esm/context_keys/discoveryContextKeyConstraints.js +149 -0
  467. package/dist/esm/context_keys/discoveryContextKeyConstraints.js.map +1 -0
  468. package/dist/esm/context_keys/findContextKeys.d.ts +19 -0
  469. package/dist/esm/context_keys/findContextKeys.d.ts.map +1 -0
  470. package/dist/esm/context_keys/findContextKeys.js +55 -0
  471. package/dist/esm/context_keys/findContextKeys.js.map +1 -0
  472. package/dist/esm/core_engine/CoreSimulatorEngine.d.ts +134 -0
  473. package/dist/esm/core_engine/CoreSimulatorEngine.d.ts.map +1 -0
  474. package/dist/esm/core_engine/CoreSimulatorEngine.js +441 -0
  475. package/dist/esm/core_engine/CoreSimulatorEngine.js.map +1 -0
  476. package/dist/esm/evaluate.d.ts +199 -0
  477. package/dist/esm/evaluate.d.ts.map +1 -0
  478. package/dist/esm/evaluate.js +2 -0
  479. package/dist/esm/evaluate.js.map +1 -0
  480. package/dist/esm/explain/displayExplainCli.d.ts +3 -0
  481. package/dist/esm/explain/displayExplainCli.d.ts.map +1 -0
  482. package/dist/esm/explain/displayExplainCli.js +258 -0
  483. package/dist/esm/explain/displayExplainCli.js.map +1 -0
  484. package/dist/esm/explain/statementExplain.d.ts +161 -0
  485. package/dist/esm/explain/statementExplain.d.ts.map +1 -0
  486. package/dist/esm/explain/statementExplain.js +30 -0
  487. package/dist/esm/explain/statementExplain.js.map +1 -0
  488. package/dist/esm/global_conditions/globalConditionKeys.d.ts +3 -0
  489. package/dist/esm/global_conditions/globalConditionKeys.d.ts.map +1 -0
  490. package/dist/esm/global_conditions/globalConditionKeys.js +9 -0
  491. package/dist/esm/global_conditions/globalConditionKeys.js.map +1 -0
  492. package/dist/esm/index.d.ts +16 -0
  493. package/dist/esm/index.d.ts.map +1 -0
  494. package/dist/esm/index.js +10 -0
  495. package/dist/esm/index.js.map +1 -0
  496. package/dist/esm/package.json +3 -0
  497. package/dist/esm/policyType.d.ts +13 -0
  498. package/dist/esm/policyType.d.ts.map +1 -0
  499. package/dist/esm/policyType.js +2 -0
  500. package/dist/esm/policyType.js.map +1 -0
  501. package/dist/esm/principal/principal.d.ts +61 -0
  502. package/dist/esm/principal/principal.d.ts.map +1 -0
  503. package/dist/esm/principal/principal.js +354 -0
  504. package/dist/esm/principal/principal.js.map +1 -0
  505. package/dist/esm/request/request.d.ts +66 -0
  506. package/dist/esm/request/request.d.ts.map +1 -0
  507. package/dist/esm/request/request.js +34 -0
  508. package/dist/esm/request/request.js.map +1 -0
  509. package/dist/esm/request/requestAction.d.ts +27 -0
  510. package/dist/esm/request/requestAction.d.ts.map +1 -0
  511. package/dist/esm/request/requestAction.js +15 -0
  512. package/dist/esm/request/requestAction.js.map +1 -0
  513. package/dist/esm/request/requestPrincipal.d.ts +92 -0
  514. package/dist/esm/request/requestPrincipal.d.ts.map +1 -0
  515. package/dist/esm/request/requestPrincipal.js +80 -0
  516. package/dist/esm/request/requestPrincipal.js.map +1 -0
  517. package/dist/esm/request/requestResource.d.ts +55 -0
  518. package/dist/esm/request/requestResource.d.ts.map +1 -0
  519. package/dist/esm/request/requestResource.js +34 -0
  520. package/dist/esm/request/requestResource.js.map +1 -0
  521. package/dist/esm/requestContext.d.ts +63 -0
  522. package/dist/esm/requestContext.d.ts.map +1 -0
  523. package/dist/esm/requestContext.js +39 -0
  524. package/dist/esm/requestContext.js.map +1 -0
  525. package/dist/esm/resource/resource.d.ts +54 -0
  526. package/dist/esm/resource/resource.d.ts.map +1 -0
  527. package/dist/esm/resource/resource.js +582 -0
  528. package/dist/esm/resource/resource.js.map +1 -0
  529. package/dist/esm/services/DefaultServiceAuthorizer.d.ts +182 -0
  530. package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -0
  531. package/dist/esm/services/DefaultServiceAuthorizer.js +623 -0
  532. package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -0
  533. package/dist/esm/services/IamServiceAuthorizer.d.ts +10 -0
  534. package/dist/esm/services/IamServiceAuthorizer.d.ts.map +1 -0
  535. package/dist/esm/services/IamServiceAuthorizer.js +63 -0
  536. package/dist/esm/services/IamServiceAuthorizer.js.map +1 -0
  537. package/dist/esm/services/KmsServiceAuthorizer.d.ts +29 -0
  538. package/dist/esm/services/KmsServiceAuthorizer.d.ts.map +1 -0
  539. package/dist/esm/services/KmsServiceAuthorizer.js +82 -0
  540. package/dist/esm/services/KmsServiceAuthorizer.js.map +1 -0
  541. package/dist/esm/services/ServiceAuthorizer.d.ts +27 -0
  542. package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -0
  543. package/dist/esm/services/ServiceAuthorizer.js +5 -0
  544. package/dist/esm/services/ServiceAuthorizer.js.map +1 -0
  545. package/dist/esm/services/StsServiceAuthorizer.d.ts +19 -0
  546. package/dist/esm/services/StsServiceAuthorizer.d.ts.map +1 -0
  547. package/dist/esm/services/StsServiceAuthorizer.js +44 -0
  548. package/dist/esm/services/StsServiceAuthorizer.js.map +1 -0
  549. package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts +24 -0
  550. package/dist/esm/services/s3/S3ServiceAuthorizer.d.ts.map +1 -0
  551. package/dist/esm/services/s3/S3ServiceAuthorizer.js +76 -0
  552. package/dist/esm/services/s3/S3ServiceAuthorizer.js.map +1 -0
  553. package/dist/esm/services/s3/s3BlockPublicAccess.d.ts +50 -0
  554. package/dist/esm/services/s3/s3BlockPublicAccess.d.ts.map +1 -0
  555. package/dist/esm/services/s3/s3BlockPublicAccess.js +299 -0
  556. package/dist/esm/services/s3/s3BlockPublicAccess.js.map +1 -0
  557. package/dist/esm/simulation_engine/contextKeys.d.ts +13 -0
  558. package/dist/esm/simulation_engine/contextKeys.d.ts.map +1 -0
  559. package/dist/esm/simulation_engine/contextKeys.js +55 -0
  560. package/dist/esm/simulation_engine/contextKeys.js.map +1 -0
  561. package/dist/esm/simulation_engine/overallResult.d.ts +13 -0
  562. package/dist/esm/simulation_engine/overallResult.d.ts.map +1 -0
  563. package/dist/esm/simulation_engine/overallResult.js +32 -0
  564. package/dist/esm/simulation_engine/overallResult.js.map +1 -0
  565. package/dist/esm/simulation_engine/policyResources.d.ts +44 -0
  566. package/dist/esm/simulation_engine/policyResources.d.ts.map +1 -0
  567. package/dist/esm/simulation_engine/policyResources.js +117 -0
  568. package/dist/esm/simulation_engine/policyResources.js.map +1 -0
  569. package/dist/esm/simulation_engine/resourceTypes.d.ts +11 -0
  570. package/dist/esm/simulation_engine/resourceTypes.d.ts.map +1 -0
  571. package/dist/esm/simulation_engine/resourceTypes.js +23 -0
  572. package/dist/esm/simulation_engine/resourceTypes.js.map +1 -0
  573. package/dist/esm/simulation_engine/simulation.d.ts +114 -0
  574. package/dist/esm/simulation_engine/simulation.d.ts.map +1 -0
  575. package/dist/esm/simulation_engine/simulation.js +30 -0
  576. package/dist/esm/simulation_engine/simulation.js.map +1 -0
  577. package/dist/esm/simulation_engine/simulationEngine.d.ts +128 -0
  578. package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -0
  579. package/dist/esm/simulation_engine/simulationEngine.js +430 -0
  580. package/dist/esm/simulation_engine/simulationEngine.js.map +1 -0
  581. package/dist/esm/simulation_engine/simulationOptions.d.ts +21 -0
  582. package/dist/esm/simulation_engine/simulationOptions.d.ts.map +1 -0
  583. package/dist/esm/simulation_engine/simulationOptions.js +3 -0
  584. package/dist/esm/simulation_engine/simulationOptions.js.map +1 -0
  585. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts +13 -0
  586. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -0
  587. package/dist/esm/simulation_engine/unsafeSimulationEngine.js +62 -0
  588. package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -0
  589. package/dist/esm/util/resourceStrings.d.ts +19 -0
  590. package/dist/esm/util/resourceStrings.d.ts.map +1 -0
  591. package/dist/esm/util/resourceStrings.js +103 -0
  592. package/dist/esm/util/resourceStrings.js.map +1 -0
  593. package/dist/esm/util.d.ts +90 -0
  594. package/dist/esm/util.d.ts.map +1 -0
  595. package/dist/esm/util.js +341 -0
  596. package/dist/esm/util.js.map +1 -0
  597. package/package.json +119 -0
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.classifyS3RuntimePublicBucketPolicy = classifyS3RuntimePublicBucketPolicy;
4
+ const util_js_1 = require("../../util.js");
5
+ /**
6
+ * Classifies a standard S3 bucket policy as public or non-public for runtime
7
+ * RestrictPublicBuckets behavior.
8
+ *
9
+ * @param policy the loaded S3 bucket policy to classify
10
+ * @returns whether the policy is runtime-public and, when public, the public statements
11
+ */
12
+ function classifyS3RuntimePublicBucketPolicy(policy) {
13
+ const publicStatements = policy
14
+ .statements()
15
+ .filter((statement) => statement.isAllow() && statementIsRuntimePublic(statement))
16
+ .map((statement) => statementIdentifier(statement));
17
+ if (publicStatements.length > 0) {
18
+ return { result: 'public', publicStatements };
19
+ }
20
+ return { result: 'nonPublic' };
21
+ }
22
+ /**
23
+ * Determines whether an individual Allow statement makes a bucket policy runtime-public.
24
+ *
25
+ * @param statement the statement to classify
26
+ * @returns true if the statement is public for runtime RestrictPublicBuckets behavior
27
+ */
28
+ function statementIsRuntimePublic(statement) {
29
+ if (!statement.isPrincipalStatement()) {
30
+ return true;
31
+ }
32
+ const principals = statement.principals();
33
+ if (principals.some((principal) => principal.isWildcardPrincipal())) {
34
+ return !hasPublicAccessLimitingCondition(statement);
35
+ }
36
+ return false;
37
+ }
38
+ /**
39
+ * Gets the statement index and Sid for classifier output.
40
+ *
41
+ * @param statement the statement to identify
42
+ * @returns the statement index and optional Sid
43
+ */
44
+ function statementIdentifier(statement) {
45
+ return {
46
+ index: statement.index(),
47
+ ...(statement.sid() ? { sid: statement.sid() } : {})
48
+ };
49
+ }
50
+ /**
51
+ * Determines whether a wildcard-principal statement has a condition that limits access
52
+ * enough to be non-public for S3 BPA runtime classification.
53
+ *
54
+ * @param statement the wildcard-principal statement to inspect
55
+ * @returns true if a supported condition makes the statement non-public
56
+ */
57
+ function hasPublicAccessLimitingCondition(statement) {
58
+ const conditionMap = statement.conditionMap();
59
+ if (!conditionMap) {
60
+ return false;
61
+ }
62
+ return (hasFixedValueCondition(conditionMap, 'aws:PrincipalOrgID') ||
63
+ hasFixedValueCondition(conditionMap, 'aws:PrincipalAccount') ||
64
+ hasPrincipalArnLimitingCondition(conditionMap) ||
65
+ hasOrgPathLimitingCondition(conditionMap, 'aws:PrincipalOrgPaths') ||
66
+ hasAwsServicePrincipalLimitingCondition(conditionMap) ||
67
+ hasPrincipalServiceNameLimitingCondition(conditionMap) ||
68
+ hasUseridLimitingCondition(conditionMap) ||
69
+ hasFixedValueCondition(conditionMap, 'aws:SourceVpce') ||
70
+ hasFixedValueCondition(conditionMap, 'aws:SourceVpc') ||
71
+ hasSourceVpcArnLimitingCondition(conditionMap) ||
72
+ hasFixedValueCondition(conditionMap, 'aws:VpceAccount') ||
73
+ hasFixedValueCondition(conditionMap, 'aws:VpceOrgID') ||
74
+ hasOrgPathLimitingCondition(conditionMap, 'aws:VpceOrgPaths') ||
75
+ hasSourceIpLimitingCondition(conditionMap) ||
76
+ hasFixedArnCondition(conditionMap, 'aws:SourceArn') ||
77
+ hasFixedValueCondition(conditionMap, 'aws:SourceAccount'));
78
+ }
79
+ /**
80
+ * Checks for exact fixed-value conditions for account, org, VPC, and similar keys.
81
+ *
82
+ * @param conditionMap the statement condition map
83
+ * @param key the condition key to inspect
84
+ * @returns true if the key is constrained to fixed values by supported operators
85
+ */
86
+ function hasFixedValueCondition(conditionMap, key) {
87
+ return conditionEntries(conditionMap, key).some(({ operator, values }) => ['StringEquals', 'StringEqualsIgnoreCase', 'ForAnyValue:StringEquals'].includes(operator) ||
88
+ (operator === 'StringLike' && values.every((value) => !hasWildcard(value))));
89
+ }
90
+ /**
91
+ * Checks for public-access-limiting aws:PrincipalArn conditions.
92
+ *
93
+ * @param conditionMap the statement condition map
94
+ * @returns true if PrincipalArn is constrained to a fixed account principal pattern
95
+ */
96
+ function hasPrincipalArnLimitingCondition(conditionMap) {
97
+ return conditionEntries(conditionMap, 'aws:PrincipalArn').some(({ operator, values }) => {
98
+ if (operator === 'ArnEquals') {
99
+ return values.every(isArnWithFixedAccount);
100
+ }
101
+ if (operator === 'ArnLike') {
102
+ return values.every((value) => isArnWithFixedAccount(value) && arnWildcardOnlyInResource(value));
103
+ }
104
+ return false;
105
+ });
106
+ }
107
+ /**
108
+ * Checks for exact SourceVpcArn conditions.
109
+ *
110
+ * @param conditionMap the statement condition map
111
+ * @returns true if SourceVpcArn is constrained to exact ARNs
112
+ */
113
+ function hasSourceVpcArnLimitingCondition(conditionMap) {
114
+ return hasFixedArnCondition(conditionMap, 'aws:SourceVpcArn');
115
+ }
116
+ /**
117
+ * Checks for fixed ARN conditions.
118
+ *
119
+ * @param conditionMap the statement condition map
120
+ * @param key the condition key to inspect
121
+ * @returns true if the key is constrained to fixed ARN values
122
+ */
123
+ function hasFixedArnCondition(conditionMap, key) {
124
+ return conditionEntries(conditionMap, key).some(({ operator, values }) => operator === 'ArnEquals' && values.every(isArnWithFixedAccount));
125
+ }
126
+ /**
127
+ * Checks for AWS Organizations path conditions with fixed org path prefixes.
128
+ *
129
+ * @param conditionMap the statement condition map
130
+ * @param key the condition key to inspect
131
+ * @returns true if the path condition is fixed or uses a documented suffix wildcard shape
132
+ */
133
+ function hasOrgPathLimitingCondition(conditionMap, key) {
134
+ return conditionEntries(conditionMap, key).some(({ operator, values }) => {
135
+ if (operator === 'StringEquals') {
136
+ return values.every(isFixedOrgPath);
137
+ }
138
+ if (operator === 'StringLike') {
139
+ return values.every(isFixedOrgPathWithOptionalSuffixWildcard);
140
+ }
141
+ return false;
142
+ });
143
+ }
144
+ /**
145
+ * Checks for conditions that limit access to AWS service principals.
146
+ *
147
+ * @param conditionMap the statement condition map
148
+ * @returns true if the statement is limited to AWS service principals
149
+ */
150
+ function hasAwsServicePrincipalLimitingCondition(conditionMap) {
151
+ return conditionEntries(conditionMap, 'aws:PrincipalIsAWSService').some(({ operator, values }) => ['Bool', 'StringEquals', 'StringEqualsIgnoreCase', 'StringLike'].includes(operator) &&
152
+ values.every((value) => value.toLowerCase() === 'true'));
153
+ }
154
+ /**
155
+ * Checks for service-principal name conditions.
156
+ *
157
+ * @param conditionMap the statement condition map
158
+ * @returns true if the statement is limited to service principal names
159
+ */
160
+ function hasPrincipalServiceNameLimitingCondition(conditionMap) {
161
+ return ['aws:PrincipalServiceName', 'aws:PrincipalServiceNamesList'].some((key) => conditionEntries(conditionMap, key).some(({ operator, values }) => {
162
+ return ([
163
+ 'StringEquals',
164
+ 'ForAnyValue:StringEquals',
165
+ 'StringLike',
166
+ 'ForAnyValue:StringLike'
167
+ ].includes(operator) && values.every(isServiceNamePattern));
168
+ }));
169
+ }
170
+ /**
171
+ * Checks for aws:userid conditions with a fixed stable ID prefix.
172
+ *
173
+ * @param conditionMap the statement condition map
174
+ * @returns true if userid is constrained to exact values or fixed-prefix session suffix wildcards
175
+ */
176
+ function hasUseridLimitingCondition(conditionMap) {
177
+ return conditionEntries(conditionMap, 'aws:userid').some(({ operator, values }) => {
178
+ if (operator === 'StringEquals') {
179
+ return values.every((value) => !hasWildcard(value));
180
+ }
181
+ if (operator === 'StringLike') {
182
+ return values.every((value) => /^[A-Z0-9]+:\*$/.test(value));
183
+ }
184
+ return false;
185
+ });
186
+ }
187
+ /**
188
+ * Checks for sufficiently narrow aws:SourceIp conditions.
189
+ *
190
+ * @param conditionMap the statement condition map
191
+ * @returns true if SourceIp ranges are narrow enough to be non-public
192
+ */
193
+ function hasSourceIpLimitingCondition(conditionMap) {
194
+ return conditionEntries(conditionMap, 'aws:SourceIp').some(({ operator, values }) => operator === 'IpAddress' && values.every(sourceIpRangeIsNonPublic));
195
+ }
196
+ /**
197
+ * Gets condition entries for a key using case-insensitive key matching.
198
+ *
199
+ * @param conditionMap the statement condition map
200
+ * @param key the condition key to inspect
201
+ * @returns matching condition entries
202
+ */
203
+ function conditionEntries(conditionMap, key) {
204
+ const entries = [];
205
+ for (const [operator, keyValues] of Object.entries(conditionMap)) {
206
+ for (const [conditionKey, values] of Object.entries(keyValues)) {
207
+ if (conditionKey.toLowerCase() === key.toLowerCase()) {
208
+ entries.push({ operator, values });
209
+ }
210
+ }
211
+ }
212
+ return entries;
213
+ }
214
+ /**
215
+ * Checks whether an ARN pattern has a fixed account component.
216
+ *
217
+ * @param value the ARN or ARN pattern to inspect
218
+ * @returns true if the account component is fixed and non-wildcard
219
+ */
220
+ function isArnWithFixedAccount(value) {
221
+ const arn = (0, util_js_1.splitArnParts)(value);
222
+ return !!arn.accountId && !hasWildcard(arn.accountId);
223
+ }
224
+ /**
225
+ * Checks whether ARN wildcards are limited to the resource component.
226
+ *
227
+ * @param value the ARN pattern to inspect
228
+ * @returns true if partition, service, region, and account are fixed
229
+ */
230
+ function arnWildcardOnlyInResource(value) {
231
+ const arn = (0, util_js_1.splitArnParts)(value);
232
+ return ![arn.partition, arn.service, arn.region, arn.accountId].some((part) => part ? hasWildcard(part) : false);
233
+ }
234
+ /**
235
+ * Checks whether a string has IAM wildcard characters.
236
+ *
237
+ * @param value the value to inspect
238
+ * @returns true if the value contains `*` or `?`
239
+ */
240
+ function hasWildcard(value) {
241
+ return value.includes('*') || value.includes('?');
242
+ }
243
+ /**
244
+ * Checks whether an Organizations path has a fixed org/root path prefix.
245
+ *
246
+ * @param value the org path value to inspect
247
+ * @returns true if the value is fixed and starts with an org path
248
+ */
249
+ function isFixedOrgPath(value) {
250
+ return /^o-[a-z0-9]+\/[^*?]+/.test(value) && !hasWildcard(value);
251
+ }
252
+ /**
253
+ * Checks whether an Organizations path is fixed or uses a suffix wildcard.
254
+ *
255
+ * @param value the org path value to inspect
256
+ * @returns true if the value has a fixed org path prefix and optional trailing wildcard
257
+ */
258
+ function isFixedOrgPathWithOptionalSuffixWildcard(value) {
259
+ if (!value.endsWith('*')) {
260
+ return isFixedOrgPath(value);
261
+ }
262
+ const prefix = value.slice(0, -1);
263
+ return /^o-[a-z0-9]+\/[^*?]+/.test(prefix) && !hasWildcard(prefix);
264
+ }
265
+ /**
266
+ * Checks whether a value is an AWS service-name pattern.
267
+ *
268
+ * @param value the service name or pattern to inspect
269
+ * @returns true if the value is an amazonaws.com service name pattern
270
+ */
271
+ function isServiceNamePattern(value) {
272
+ return /^([a-z0-9-]+|\*)\.(amazonaws\.com|amazonaws\.com\.cn)$/.test(value);
273
+ }
274
+ /**
275
+ * Determines whether a SourceIp CIDR is narrow/private enough to be non-public.
276
+ *
277
+ * @param cidr the CIDR value to inspect
278
+ * @returns true if the CIDR is non-public for S3 BPA classification
279
+ */
280
+ function sourceIpRangeIsNonPublic(cidr) {
281
+ const [address, prefixString] = cidr.split('/');
282
+ const prefix = Number(prefixString);
283
+ if (!address || !Number.isInteger(prefix)) {
284
+ return false;
285
+ }
286
+ if (address.includes(':')) {
287
+ return prefix >= 32;
288
+ }
289
+ const firstOctet = Number(address.split('.')[0]);
290
+ const secondOctet = Number(address.split('.')[1]);
291
+ if (!Number.isInteger(firstOctet) || !Number.isInteger(secondOctet)) {
292
+ return false;
293
+ }
294
+ if (firstOctet === 10 ||
295
+ (firstOctet === 172 && secondOctet >= 16 && secondOctet <= 31) ||
296
+ (firstOctet === 192 && secondOctet === 168)) {
297
+ return true;
298
+ }
299
+ return prefix >= 8;
300
+ }
301
+ //# sourceMappingURL=s3BlockPublicAccess.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3BlockPublicAccess.js","sourceRoot":"","sources":["../../../../src/services/s3/s3BlockPublicAccess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { type ResourceType } from '@actsecurity/iam-data';
2
+ /**
3
+ * Get the allowed context keys for a request.
4
+ *
5
+ * @param service The service the action belongs to
6
+ * @param action The action to get the allowed context keys for
7
+ * @param resource The resource the action is being performed on
8
+ * @param bucketAbacEnabled Whether ABAC is enabled on the S3 bucket (only applies to S3)
9
+ * @returns The allowed context keys for the request as lower case strings
10
+ * @throws error if the service or action does not exist
11
+ */
12
+ export declare function allowedContextKeysForRequest(service: string, action: string, resource: string, bucketAbacEnabled: boolean, suggestedResourceType: ResourceType | undefined): Promise<string[]>;
13
+ //# sourceMappingURL=contextKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextKeys.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/contextKeys.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAA;AAI9B;;;;;;;;;GASG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,iBAAiB,EAAE,OAAO,EAC1B,qBAAqB,EAAE,YAAY,GAAG,SAAS,GAC9C,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCnB"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.allowedContextKeysForRequest = allowedContextKeysForRequest;
4
+ const iam_data_1 = require("@actsecurity/iam-data");
5
+ const util_js_1 = require("../util.js");
6
+ const resourceTypes_js_1 = require("./resourceTypes.js");
7
+ /**
8
+ * Get the allowed context keys for a request.
9
+ *
10
+ * @param service The service the action belongs to
11
+ * @param action The action to get the allowed context keys for
12
+ * @param resource The resource the action is being performed on
13
+ * @param bucketAbacEnabled Whether ABAC is enabled on the S3 bucket (only applies to S3)
14
+ * @returns The allowed context keys for the request as lower case strings
15
+ * @throws error if the service or action does not exist
16
+ */
17
+ async function allowedContextKeysForRequest(service, action, resource, bucketAbacEnabled, suggestedResourceType) {
18
+ const actionDetails = await (0, iam_data_1.iamActionDetails)(service, action);
19
+ const actionConditionKeys = (0, util_js_1.lowerCaseAll)(actionDetails.conditionKeys);
20
+ const isWildCardOnly = await (0, util_js_1.isWildcardOnlyAction)(service, action);
21
+ if (isWildCardOnly) {
22
+ return [...actionConditionKeys, ...lowerCaseGlobalConditionKeys()];
23
+ }
24
+ let resourceType = suggestedResourceType;
25
+ if (!resourceType) {
26
+ const resourceTypes = await (0, resourceTypes_js_1.getResourceTypesForAction)(service, action, resource);
27
+ if (resourceTypes.length === 0) {
28
+ throw new Error(`No resource types found for action ${action} on service ${service}`);
29
+ }
30
+ else if (resourceTypes.length > 1) {
31
+ throw new Error(`Multiple resource types found for action ${action} on service ${service}`);
32
+ }
33
+ resourceType = resourceTypes[0];
34
+ }
35
+ const resourceTypeConditions = [
36
+ ...(resourceType.conditionKeys ?? []),
37
+ ...(actionDetails.resourceTypes.find((rt) => rt.name === resourceType.key)?.conditionKeys ??
38
+ [])
39
+ ];
40
+ const allKeys = [
41
+ ...(0, util_js_1.lowerCaseAll)(resourceTypeConditions),
42
+ ...actionConditionKeys,
43
+ ...lowerCaseGlobalConditionKeys()
44
+ ];
45
+ if (!(0, util_js_1.isS3BucketOrObjectArn)(resource) || bucketAbacEnabled) {
46
+ return allKeys;
47
+ }
48
+ // Filter out S3 ABAC keys if bucket ABAC is not enabled
49
+ return allKeys.filter((key) => !key.startsWith('aws:resourcetag/') && !key.startsWith('s3:buckettag/'));
50
+ }
51
+ let lowerCaseConditionKeys;
52
+ function lowerCaseGlobalConditionKeys() {
53
+ if (!lowerCaseConditionKeys) {
54
+ lowerCaseConditionKeys = (0, iam_data_1.getAllGlobalConditionKeys)().map((k) => k.toLowerCase());
55
+ }
56
+ return lowerCaseConditionKeys;
57
+ }
58
+ //# sourceMappingURL=contextKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contextKeys.js","sourceRoot":"","sources":["../../../src/simulation_engine/contextKeys.ts"],"names":[],"mappings":";;AAkBA,oEA8CC;AAhED,oDAI8B;AAC9B,wCAAsF;AACtF,yDAA8D;AAE9D;;;;;;;;;GASG;AACI,KAAK,UAAU,4BAA4B,CAChD,OAAe,EACf,MAAc,EACd,QAAgB,EAChB,iBAA0B,EAC1B,qBAA+C;IAE/C,MAAM,aAAa,GAAG,MAAM,IAAA,2BAAgB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAC7D,MAAM,mBAAmB,GAAG,IAAA,sBAAY,EAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IAErE,MAAM,cAAc,GAAG,MAAM,IAAA,8BAAoB,EAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IAClE,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,mBAAmB,EAAE,GAAG,4BAA4B,EAAE,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,YAAY,GAAG,qBAAqB,CAAA;IACxC,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,MAAM,IAAA,4CAAyB,EAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QAChF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,sCAAsC,MAAM,eAAe,OAAO,EAAE,CAAC,CAAA;QACvF,CAAC;aAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CAAC,4CAA4C,MAAM,eAAe,OAAO,EAAE,CAAC,CAAA;QAC7F,CAAC;QACD,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,sBAAsB,GAAG;QAC7B,GAAG,CAAC,YAAY,CAAC,aAAa,IAAI,EAAE,CAAC;QACrC,GAAG,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,YAAa,CAAC,GAAG,CAAC,EAAE,aAAa;YACxF,EAAE,CAAC;KACN,CAAA;IAED,MAAM,OAAO,GAAG;QACd,GAAG,IAAA,sBAAY,EAAC,sBAAsB,CAAC;QACvC,GAAG,mBAAmB;QACtB,GAAG,4BAA4B,EAAE;KAClC,CAAA;IAED,IAAI,CAAC,IAAA,+BAAqB,EAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAC1D,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,wDAAwD;IACxD,OAAO,OAAO,CAAC,MAAM,CACnB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CACjF,CAAA;AACH,CAAC;AAED,IAAI,sBAA4C,CAAA;AAChD,SAAS,4BAA4B;IACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,sBAAsB,GAAG,IAAA,oCAAyB,GAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IAClF,CAAC;IACD,OAAO,sBAAsB,CAAA;AAC/B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { EvaluationResult } from '../evaluate.js';
2
+ import type { SimulationResourceResult } from './simulationEngine.js';
3
+ /**
4
+ * Calculates the overall evaluation result from multiple simulation resource results.
5
+ *
6
+ * @param results Array of simulation resource results to evaluate
7
+ * @returns The overall evaluation result following AWS IAM evaluation logic:
8
+ * - 'Allowed' if any result is allowed
9
+ * - 'ExplicitlyDenied' if all results are explicitly denied
10
+ * - 'ImplicitlyDenied' for all other cases (including empty results)
11
+ */
12
+ export declare function calculateOverallResult(results: SimulationResourceResult[]): EvaluationResult;
13
+ //# sourceMappingURL=overallResult.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overallResult.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/overallResult.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAErE;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,wBAAwB,EAAE,GAAG,gBAAgB,CAyB5F"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateOverallResult = calculateOverallResult;
4
+ /**
5
+ * Calculates the overall evaluation result from multiple simulation resource results.
6
+ *
7
+ * @param results Array of simulation resource results to evaluate
8
+ * @returns The overall evaluation result following AWS IAM evaluation logic:
9
+ * - 'Allowed' if any result is allowed
10
+ * - 'ExplicitlyDenied' if all results are explicitly denied
11
+ * - 'ImplicitlyDenied' for all other cases (including empty results)
12
+ */
13
+ function calculateOverallResult(results) {
14
+ if (results.length === 0) {
15
+ return 'ImplicitlyDenied';
16
+ }
17
+ let hasExplicitlyDenied = false;
18
+ let hasImplicitlyDenied = false;
19
+ for (const result of results) {
20
+ const evaluationResult = result.analysis?.result;
21
+ if (evaluationResult === 'Allowed') {
22
+ return 'Allowed';
23
+ }
24
+ if (evaluationResult === 'ExplicitlyDenied') {
25
+ hasExplicitlyDenied = true;
26
+ continue;
27
+ }
28
+ hasImplicitlyDenied = true;
29
+ }
30
+ if (hasExplicitlyDenied && !hasImplicitlyDenied) {
31
+ return 'ExplicitlyDenied';
32
+ }
33
+ return 'ImplicitlyDenied';
34
+ }
35
+ //# sourceMappingURL=overallResult.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overallResult.js","sourceRoot":"","sources":["../../../src/simulation_engine/overallResult.ts"],"names":[],"mappings":";;AAYA,wDAyBC;AAlCD;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,OAAmC;IACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAED,IAAI,mBAAmB,GAAG,KAAK,CAAA;IAC/B,IAAI,mBAAmB,GAAG,KAAK,CAAA;IAE/B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAA;QAChD,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;YAC5C,mBAAmB,GAAG,IAAI,CAAA;YAC1B,SAAQ;QACV,CAAC;QACD,mBAAmB,GAAG,IAAI,CAAA;IAC5B,CAAC;IAED,IAAI,mBAAmB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,OAAO,kBAAkB,CAAA;IAC3B,CAAC;IAED,OAAO,kBAAkB,CAAA;AAC3B,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { type ResourceType } from '@actsecurity/iam-data';
2
+ import { type Statement } from '@actsecurity/iam-policy';
3
+ import { type PolicyWithName } from '../core_engine/CoreSimulatorEngine.js';
4
+ /**
5
+ * Extracts matching resource strings from a set of policies for a given action and resource pattern.
6
+ *
7
+ * @param policies Array of policies to search through (undefined entries are skipped)
8
+ * @param action The action to match against policy statements
9
+ * @param resourceType The resource type to filter resource strings by
10
+ * @param resourceArnPattern The resource ARN pattern to match against
11
+ * @param shouldExpandShortArns Whether to expand short ARNs (fewer than 6 segments) by padding with wildcards
12
+ * @returns Array of unique resource strings that match the criteria
13
+ */
14
+ export declare function getMatchingResourceStringsForPolicies(policies: (PolicyWithName | undefined)[], action: string, resourceType: ResourceType, resourceArnPattern: string, shouldExpandShortArns: boolean): string[];
15
+ /**
16
+ * Extracts resource strings from a single policy statement that allows the specified action.
17
+ *
18
+ * @param statement The policy statement to analyze
19
+ * @param action The action to check if the statement allows
20
+ * @param resourceType The resource type to filter by
21
+ * @param resourceArnPattern The resource ARN pattern to match
22
+ * @param shouldExpandShortArns Whether to expand short ARNs (fewer than 6 segments) by padding with wildcards
23
+ * @returns Array of resource strings from the statement, or empty array if statement doesn't allow the action
24
+ */
25
+ export declare function getResourceStringsFromStatement(statement: Statement, action: string, resourceType: ResourceType, resourceArnPattern: string, shouldExpandShortArns: boolean): string[];
26
+ /**
27
+ * Extracts resource strings from a statement's Resource or NotResource elements that match the given criteria.
28
+ *
29
+ * @param statement The policy statement to analyze
30
+ * @param resourceType The resource type to filter by
31
+ * @param resourceArnPattern The resource ARN pattern to check for overlap
32
+ * @param shouldExpandShortArns Whether to expand short ARNs (fewer than 6 segments) by padding with wildcards
33
+ * @returns Array of matching resource strings, or ['*'] for certain NotResource cases
34
+ */
35
+ export declare function statementResourceStringsForResourceTypeAndPattern(statement: Statement, resourceType: ResourceType, resourceArnPattern: string, shouldExpandShortArns: boolean): string[];
36
+ /**
37
+ * Determines if a policy statement allows the specified action.
38
+ *
39
+ * @param statement The policy statement to check
40
+ * @param action The action to test against the statement
41
+ * @returns true if the statement allows the action, false otherwise
42
+ */
43
+ export declare function statementAllowsAction(statement: Statement, action: string): boolean;
44
+ //# sourceMappingURL=policyResources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policyResources.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/policyResources.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAMxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,uCAAuC,CAAA;AAG3E;;;;;;;;;GASG;AACH,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,CAAC,cAAc,GAAG,SAAS,CAAC,EAAE,EACxC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,OAAO,GAC7B,MAAM,EAAE,CAoBV;AAED;;;;;;;;;GASG;AACH,wBAAgB,+BAA+B,CAC7C,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,OAAO,GAC7B,MAAM,EAAE,CAUV;AAED;;;;;;;;GAQG;AACH,wBAAgB,iDAAiD,CAC/D,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,YAAY,EAC1B,kBAAkB,EAAE,MAAM,EAC1B,qBAAqB,EAAE,OAAO,GAC7B,MAAM,EAAE,CAkCV;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAkBnF"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMatchingResourceStringsForPolicies = getMatchingResourceStringsForPolicies;
4
+ exports.getResourceStringsFromStatement = getResourceStringsFromStatement;
5
+ exports.statementResourceStringsForResourceTypeAndPattern = statementResourceStringsForResourceTypeAndPattern;
6
+ exports.statementAllowsAction = statementAllowsAction;
7
+ const iam_utils_1 = require("@actsecurity/iam-utils");
8
+ const resourceStrings_js_1 = require("../util/resourceStrings.js");
9
+ /**
10
+ * Extracts matching resource strings from a set of policies for a given action and resource pattern.
11
+ *
12
+ * @param policies Array of policies to search through (undefined entries are skipped)
13
+ * @param action The action to match against policy statements
14
+ * @param resourceType The resource type to filter resource strings by
15
+ * @param resourceArnPattern The resource ARN pattern to match against
16
+ * @param shouldExpandShortArns Whether to expand short ARNs (fewer than 6 segments) by padding with wildcards
17
+ * @returns Array of unique resource strings that match the criteria
18
+ */
19
+ function getMatchingResourceStringsForPolicies(policies, action, resourceType, resourceArnPattern, shouldExpandShortArns) {
20
+ const resourceStrings = new Set();
21
+ for (const policy of policies) {
22
+ if (!policy) {
23
+ continue;
24
+ }
25
+ for (const statement of policy.statements()) {
26
+ const stmtResourceStrings = getResourceStringsFromStatement(statement, action, resourceType, resourceArnPattern, shouldExpandShortArns);
27
+ for (const rs of stmtResourceStrings) {
28
+ resourceStrings.add(rs);
29
+ }
30
+ }
31
+ }
32
+ return Array.from(resourceStrings);
33
+ }
34
+ /**
35
+ * Extracts resource strings from a single policy statement that allows the specified action.
36
+ *
37
+ * @param statement The policy statement to analyze
38
+ * @param action The action to check if the statement allows
39
+ * @param resourceType The resource type to filter by
40
+ * @param resourceArnPattern The resource ARN pattern to match
41
+ * @param shouldExpandShortArns Whether to expand short ARNs (fewer than 6 segments) by padding with wildcards
42
+ * @returns Array of resource strings from the statement, or empty array if statement doesn't allow the action
43
+ */
44
+ function getResourceStringsFromStatement(statement, action, resourceType, resourceArnPattern, shouldExpandShortArns) {
45
+ if (statementAllowsAction(statement, action)) {
46
+ return statementResourceStringsForResourceTypeAndPattern(statement, resourceType, resourceArnPattern, shouldExpandShortArns);
47
+ }
48
+ return [];
49
+ }
50
+ /**
51
+ * Extracts resource strings from a statement's Resource or NotResource elements that match the given criteria.
52
+ *
53
+ * @param statement The policy statement to analyze
54
+ * @param resourceType The resource type to filter by
55
+ * @param resourceArnPattern The resource ARN pattern to check for overlap
56
+ * @param shouldExpandShortArns Whether to expand short ARNs (fewer than 6 segments) by padding with wildcards
57
+ * @returns Array of matching resource strings, or ['*'] for certain NotResource cases
58
+ */
59
+ function statementResourceStringsForResourceTypeAndPattern(statement, resourceType, resourceArnPattern, shouldExpandShortArns) {
60
+ if (statement.isResourceStatement() && statement.isAllow()) {
61
+ const resourceStrings = [];
62
+ for (const stmtResource of statement.resources()) {
63
+ const effectiveValue = shouldExpandShortArns
64
+ ? (0, resourceStrings_js_1.expandShortArn)(stmtResource.value())
65
+ : stmtResource.value();
66
+ if ((0, iam_utils_1.resourceStringMatchesResourceTypePattern)(effectiveValue, resourceType.arn)) {
67
+ if ((0, resourceStrings_js_1.resourceArnsOverlap)(resourceArnPattern, effectiveValue)) {
68
+ resourceStrings.push(stmtResource.value());
69
+ }
70
+ }
71
+ }
72
+ return resourceStrings;
73
+ }
74
+ if (statement.isNotResourceStatement() && statement.isAllow()) {
75
+ for (const stmtNotResource of statement.notResources()) {
76
+ const effectiveValue = shouldExpandShortArns
77
+ ? (0, resourceStrings_js_1.expandShortArn)(stmtNotResource.value())
78
+ : stmtNotResource.value();
79
+ // If any NotResource string equals or is a superset of the resource type pattern, then the statement does not apply to the string. Otherwise, it should return the string '*'
80
+ if (effectiveValue === resourceArnPattern ||
81
+ isResourceArnSuperset(effectiveValue, resourceArnPattern)) {
82
+ return [];
83
+ }
84
+ }
85
+ return ['*'];
86
+ }
87
+ // If it's a statement that has no Resource or NotResource such as a trust policy, just return the original pattern
88
+ return [resourceArnPattern];
89
+ }
90
+ /**
91
+ * Determines if a policy statement allows the specified action.
92
+ *
93
+ * @param statement The policy statement to check
94
+ * @param action The action to test against the statement
95
+ * @returns true if the statement allows the action, false otherwise
96
+ */
97
+ function statementAllowsAction(statement, action) {
98
+ if (statement.isActionStatement() && statement.isAllow()) {
99
+ for (const stmtAction of statement.actions()) {
100
+ if ((0, iam_utils_1.actionMatchesPattern)(action, stmtAction.value())) {
101
+ return true;
102
+ }
103
+ }
104
+ return false;
105
+ }
106
+ else if (statement.isNotActionStatement() && statement.isAllow()) {
107
+ for (const stmtAction of statement.notActions()) {
108
+ if ((0, iam_utils_1.actionMatchesPattern)(action, stmtAction.value())) {
109
+ return false;
110
+ }
111
+ }
112
+ return true;
113
+ }
114
+ return false;
115
+ }
116
+ function isResourceArnSuperset(arnSuperset, arnSubset) {
117
+ const regexSuperset = (0, iam_utils_1.resourceArnWithWildcardsToRegex)(arnSuperset);
118
+ return regexSuperset.test(arnSubset);
119
+ }
120
+ //# sourceMappingURL=policyResources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policyResources.js","sourceRoot":"","sources":["../../../src/simulation_engine/policyResources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { type ResourceType } from '@actsecurity/iam-data';
2
+ /**
3
+ * Get the the possible resource types for an action and resource
4
+ *
5
+ * @param service the service the action belongs to
6
+ * @param action the action to get the resource type for
7
+ * @param resource the resource type matching the action, if any
8
+ * @throws an error if the service or action does not exist, or if the action is a wildcard only action
9
+ */
10
+ export declare function getResourceTypesForAction(service: string, action: string, resource: string): Promise<ResourceType[]>;
11
+ //# sourceMappingURL=resourceTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resourceTypes.d.ts","sourceRoot":"","sources":["../../../src/simulation_engine/resourceTypes.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,uBAAuB,CAAA;AAG9B;;;;;;;GAOG;AACH,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,EAAE,CAAC,CAiBzB"}