@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,63 @@
1
+ import {} from '../evaluate.js';
2
+ import { splitArnParts } from '../util.js';
3
+ import { DefaultServiceAuthorizer } from './DefaultServiceAuthorizer.js';
4
+ import {} from './ServiceAuthorizer.js';
5
+ const deniedActionsForManagedPolicies = new Set([
6
+ 'iam:createpolicy',
7
+ 'iam:createpolicyversion',
8
+ 'iam:deletepolicy',
9
+ 'iam:deletepolicyversion',
10
+ 'iam:setdefaultpolicyversion',
11
+ 'iam:tagpolicy',
12
+ 'iam:untagpolicy'
13
+ ]);
14
+ const deniedActionsForAwsManagedRoles = new Set([
15
+ 'iam:attachrolepolicy',
16
+ 'iam:createrole',
17
+ 'iam:createservicelinkedrole',
18
+ 'iam:deleterole',
19
+ 'iam:deleterolepermissionsboundary',
20
+ 'iam:deleterolepolicy',
21
+ 'iam:deleteservicelinkedrole',
22
+ 'iam:detachrolepolicy',
23
+ 'iam:passrole',
24
+ 'iam:putrolepermissionsboundary',
25
+ 'iam:putrolepolicy',
26
+ 'iam:tagrole',
27
+ 'iam:untagrole',
28
+ 'iam:updateassumerolepolicy',
29
+ 'iam:updaterole',
30
+ 'iam:updateroledescription'
31
+ ]);
32
+ /**
33
+ * Service authorizer for IAM service requests.
34
+ */
35
+ export class IamServiceAuthorizer extends DefaultServiceAuthorizer {
36
+ authorize(request) {
37
+ const baseResult = super.authorize(request);
38
+ const resourceParts = splitArnParts(request.request.resource.value());
39
+ // If the request is for a managed policy and the action is one of the denied actions,
40
+ // we return implicitly denied.
41
+ if (deniedActionsForManagedPolicies.has(request.request.action.value().toLowerCase()) &&
42
+ resourceParts.resource?.toLowerCase()?.startsWith('policy/') &&
43
+ resourceParts.accountId == 'aws') {
44
+ return {
45
+ ...baseResult,
46
+ result: 'ImplicitlyDenied',
47
+ conditions: undefined
48
+ };
49
+ }
50
+ // If the request is for an AWS managed role and the action is one of the denied actions,
51
+ // we return implicitly denied.
52
+ if (deniedActionsForAwsManagedRoles.has(request.request.action.value().toLowerCase()) &&
53
+ resourceParts.resource?.toLowerCase()?.startsWith('role/aws-reserved/')) {
54
+ return {
55
+ ...baseResult,
56
+ result: 'ImplicitlyDenied',
57
+ conditions: undefined
58
+ };
59
+ }
60
+ return baseResult;
61
+ }
62
+ }
63
+ //# sourceMappingURL=IamServiceAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IamServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/IamServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAoC,MAAM,wBAAwB,CAAA;AAEzE,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,kBAAkB;IAClB,yBAAyB;IACzB,kBAAkB;IAClB,yBAAyB;IACzB,6BAA6B;IAC7B,eAAe;IACf,iBAAiB;CAClB,CAAC,CAAA;AAEF,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,sBAAsB;IACtB,gBAAgB;IAChB,6BAA6B;IAC7B,gBAAgB;IAChB,mCAAmC;IACnC,sBAAsB;IACtB,6BAA6B;IAC7B,sBAAsB;IACtB,cAAc;IACd,gCAAgC;IAChC,mBAAmB;IACnB,aAAa;IACb,eAAe;IACf,4BAA4B;IAC5B,gBAAgB;IAChB,2BAA2B;CAC5B,CAAC,CAAA;AACF;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,wBAAwB;IAChD,SAAS,CAAC,OAAoC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3C,MAAM,aAAa,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;QACrE,sFAAsF;QACtF,+BAA+B;QAC/B,IACE,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACjF,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,SAAS,CAAC;YAC5D,aAAa,CAAC,SAAS,IAAI,KAAK,EAChC,CAAC;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QAED,yFAAyF;QACzF,+BAA+B;QAC/B,IACE,+BAA+B,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACjF,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,UAAU,CAAC,oBAAoB,CAAC,EACvE,CAAC;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;CACF"}
@@ -0,0 +1,29 @@
1
+ import { type RequestAnalysis, type ResourceAnalysis } from '../evaluate.js';
2
+ import { type RequestResource } from '../request/requestResource.js';
3
+ import { DefaultServiceAuthorizer, type PrincipalAccountTrust } from './DefaultServiceAuthorizer.js';
4
+ import { type ServiceAuthorizationRequest } from './ServiceAuthorizer.js';
5
+ /**
6
+ * Service authorizer for AWS KMS requests.
7
+ */
8
+ export declare class KmsServiceAuthorizer extends DefaultServiceAuthorizer {
9
+ /**
10
+ * Authorize a KMS service request after policy analysis and KMS-specific managed alias checks.
11
+ *
12
+ * @param request the service authorization request containing all analyses
13
+ * @returns the KMS authorization result
14
+ */
15
+ authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
16
+ /**
17
+ * Determines how KMS trusts the principal account's IAM policies.
18
+ *
19
+ * KMS key resources keep KMS key-policy trust behavior, while other KMS resource types use the
20
+ * default service authorizer trust behavior.
21
+ *
22
+ * @param sameAccount if the principal and resource are in the same account
23
+ * @param resourceAnalysis the resource policy analysis
24
+ * @param resource the request resource used to choose key or default trust behavior
25
+ * @returns how KMS trusts the principal account's IAM policies
26
+ */
27
+ serviceTrustsPrincipalAccount(sameAccount: boolean, resourceAnalysis: ResourceAnalysis, resource: RequestResource): PrincipalAccountTrust;
28
+ }
29
+ //# sourceMappingURL=KmsServiceAuthorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KmsServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/KmsServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACpG,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAkCzE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChE;;;;;OAKG;IACa,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;IAqBhF;;;;;;;;;;OAUG;IACM,6BAA6B,CACpC,WAAW,EAAE,OAAO,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,eAAe,GACxB,qBAAqB;CAgBzB"}
@@ -0,0 +1,82 @@
1
+ import {} from '../evaluate.js';
2
+ import {} from '../request/requestResource.js';
3
+ import { DefaultServiceAuthorizer } from './DefaultServiceAuthorizer.js';
4
+ import {} from './ServiceAuthorizer.js';
5
+ const deniedActionsForAwsManagedAliases = new Set([
6
+ 'kms:createalias',
7
+ 'kms:deletealias',
8
+ 'kms:updatealias'
9
+ ]);
10
+ const awsManagedAliasPrefix = 'alias/aws/';
11
+ /**
12
+ * Checks whether the KMS resource should use KMS key-policy principal-account trust behavior.
13
+ *
14
+ * @param resource the request resource to classify
15
+ * @returns true when the resource is all resources or a KMS key resource
16
+ */
17
+ function usesKmsKeyPrincipalAccountTrust(resource) {
18
+ return resource.isAllResources() || resource.resource().toLowerCase().startsWith('key/');
19
+ }
20
+ /**
21
+ * Checks whether the KMS resource is an AWS-managed key alias.
22
+ *
23
+ * @param resource the request resource to classify
24
+ * @returns true when the resource is an alias/aws/... ARN resource
25
+ */
26
+ function isAwsManagedAlias(resource) {
27
+ return (resource
28
+ .resource()
29
+ .slice(0, awsManagedAliasPrefix.length)
30
+ .localeCompare(awsManagedAliasPrefix, undefined, { sensitivity: 'accent' }) === 0);
31
+ }
32
+ /**
33
+ * Service authorizer for AWS KMS requests.
34
+ */
35
+ export class KmsServiceAuthorizer extends DefaultServiceAuthorizer {
36
+ /**
37
+ * Authorize a KMS service request after policy analysis and KMS-specific managed alias checks.
38
+ *
39
+ * @param request the service authorization request containing all analyses
40
+ * @returns the KMS authorization result
41
+ */
42
+ authorize(request) {
43
+ const baseResult = super.authorize(request);
44
+ if (baseResult.result === 'ExplicitlyDenied') {
45
+ return baseResult;
46
+ }
47
+ if (deniedActionsForAwsManagedAliases.has(request.request.action.value().toLowerCase()) &&
48
+ isAwsManagedAlias(request.request.resource)) {
49
+ return {
50
+ ...baseResult,
51
+ result: 'ImplicitlyDenied',
52
+ conditions: undefined
53
+ };
54
+ }
55
+ return baseResult;
56
+ }
57
+ /**
58
+ * Determines how KMS trusts the principal account's IAM policies.
59
+ *
60
+ * KMS key resources keep KMS key-policy trust behavior, while other KMS resource types use the
61
+ * default service authorizer trust behavior.
62
+ *
63
+ * @param sameAccount if the principal and resource are in the same account
64
+ * @param resourceAnalysis the resource policy analysis
65
+ * @param resource the request resource used to choose key or default trust behavior
66
+ * @returns how KMS trusts the principal account's IAM policies
67
+ */
68
+ serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource) {
69
+ if (!usesKmsKeyPrincipalAccountTrust(resource)) {
70
+ return super.serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource);
71
+ }
72
+ if (sameAccount && resource.isAllResources()) {
73
+ return { trustType: 'Implicit' };
74
+ }
75
+ const accountLevelStatements = this.accountLevelResourceAllowStatements(resourceAnalysis);
76
+ if (accountLevelStatements.length > 0) {
77
+ return { trustType: 'Explicit', statements: accountLevelStatements };
78
+ }
79
+ return { trustType: 'None' };
80
+ }
81
+ }
82
+ //# sourceMappingURL=KmsServiceAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"KmsServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/KmsServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAwB,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAA8B,MAAM,+BAA+B,CAAA;AACpG,OAAO,EAAoC,MAAM,wBAAwB,CAAA;AAEzE,MAAM,iCAAiC,GAAG,IAAI,GAAG,CAAC;IAChD,iBAAiB;IACjB,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAA;AACF,MAAM,qBAAqB,GAAG,YAAY,CAAA;AAE1C;;;;;GAKG;AACH,SAAS,+BAA+B,CAAC,QAAyB;IAChE,OAAO,QAAQ,CAAC,cAAc,EAAE,IAAI,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;AAC1F,CAAC;AAED;;;;;GAKG;AACH,SAAS,iBAAiB,CAAC,QAAyB;IAClD,OAAO,CACL,QAAQ;SACL,QAAQ,EAAE;SACV,KAAK,CAAC,CAAC,EAAE,qBAAqB,CAAC,MAAM,CAAC;SACtC,aAAa,CAAC,qBAAqB,EAAE,SAAS,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,CACpF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,wBAAwB;IAChE;;;;;OAKG;IACa,SAAS,CAAC,OAAoC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3C,IAAI,UAAU,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YAC7C,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IACE,iCAAiC,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YACnF,iBAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC3C,CAAC;YACD,OAAO;gBACL,GAAG,UAAU;gBACb,MAAM,EAAE,kBAAkB;gBAC1B,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QAED,OAAO,UAAU,CAAA;IACnB,CAAC;IAED;;;;;;;;;;OAUG;IACM,6BAA6B,CACpC,WAAoB,EACpB,gBAAkC,EAClC,QAAyB;QAEzB,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,OAAO,KAAK,CAAC,6BAA6B,CAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QACrF,CAAC;QAED,IAAI,WAAW,IAAI,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC;YAC7C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;QAClC,CAAC;QAED,MAAM,sBAAsB,GAAG,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,CAAA;QACzF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAA;QACtE,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IAC9B,CAAC;CACF"}
@@ -0,0 +1,27 @@
1
+ import { type PolicyWithName, type SimulationParameters } from '../core_engine/CoreSimulatorEngine.js';
2
+ import { type IdentityAnalysis, type RcpAnalysis, type RequestAnalysis, type ResourceAnalysis, type ScpAnalysis } from '../evaluate.js';
3
+ import { type AwsRequest } from '../request/request.js';
4
+ import { type S3ServiceSettings } from './s3/s3BlockPublicAccess.js';
5
+ export interface ServiceSettings {
6
+ /**
7
+ * S3-specific service settings.
8
+ */
9
+ s3?: S3ServiceSettings;
10
+ }
11
+ export interface ServiceAuthorizationRequest {
12
+ request: AwsRequest;
13
+ sessionAnalysis: IdentityAnalysis | undefined;
14
+ identityAnalysis: IdentityAnalysis;
15
+ scpAnalysis: ScpAnalysis;
16
+ resourceAnalysis: ResourceAnalysis;
17
+ resourcePolicy: PolicyWithName | undefined;
18
+ rcpAnalysis: RcpAnalysis;
19
+ permissionBoundaryAnalysis: IdentityAnalysis | undefined;
20
+ endpointAnalysis: IdentityAnalysis | undefined;
21
+ simulationParameters: SimulationParameters;
22
+ serviceSettings?: ServiceSettings;
23
+ }
24
+ export interface ServiceAuthorizer {
25
+ authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
26
+ }
27
+ //# sourceMappingURL=ServiceAuthorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/ServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAC1B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAA;AAEpE,MAAM,WAAW,eAAe;IAC9B;;OAEG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAA;CACvB;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,UAAU,CAAA;IACnB,eAAe,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC7C,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,WAAW,EAAE,WAAW,CAAA;IACxB,gBAAgB,EAAE,gBAAgB,CAAA;IAClC,cAAc,EAAE,cAAc,GAAG,SAAS,CAAA;IAC1C,WAAW,EAAE,WAAW,CAAA;IACxB,0BAA0B,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACxD,gBAAgB,EAAE,gBAAgB,GAAG,SAAS,CAAA;IAC9C,oBAAoB,EAAE,oBAAoB,CAAA;IAC1C,eAAe,CAAC,EAAE,eAAe,CAAA;CAClC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe,CAAA;CACjE"}
@@ -0,0 +1,5 @@
1
+ import {} from '../core_engine/CoreSimulatorEngine.js';
2
+ import {} from '../evaluate.js';
3
+ import {} from '../request/request.js';
4
+ import {} from './s3/s3BlockPublicAccess.js';
5
+ //# sourceMappingURL=ServiceAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/ServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAGN,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EAMN,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAmB,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAA0B,MAAM,6BAA6B,CAAA"}
@@ -0,0 +1,19 @@
1
+ import { type RequestAnalysis, type ResourceAnalysis } from '../evaluate.js';
2
+ import { type RequestResource } from '../request/requestResource.js';
3
+ import { DefaultServiceAuthorizer, type PrincipalAccountTrust } from './DefaultServiceAuthorizer.js';
4
+ import { type ServiceAuthorizationRequest } from './ServiceAuthorizer.js';
5
+ /**
6
+ * The default authorizer for services.
7
+ */
8
+ export declare class StsServiceAuthorizer extends DefaultServiceAuthorizer {
9
+ authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
10
+ /**
11
+ * Determines if the service trusts the principal's Account's IAM policies
12
+ *
13
+ * @param sameAccount - If the principal and resource are in the same account
14
+ * @param resourceAnalysis - The resource policy analysis
15
+ * @returns how the service trusts the principal's account IAM policies
16
+ */
17
+ serviceTrustsPrincipalAccount(sameAccount: boolean, resourceAnalysis: ResourceAnalysis, resource: RequestResource): PrincipalAccountTrust;
18
+ }
19
+ //# sourceMappingURL=StsServiceAuthorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StsServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/StsServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAAE,KAAK,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AACpG,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAEzE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;IAchF;;;;;;OAMG;IACM,6BAA6B,CACpC,WAAW,EAAE,OAAO,EACpB,gBAAgB,EAAE,gBAAgB,EAClC,QAAQ,EAAE,eAAe,GACxB,qBAAqB;CAkBzB"}
@@ -0,0 +1,44 @@
1
+ import {} from '../evaluate.js';
2
+ import {} from '../request/requestResource.js';
3
+ import { DefaultServiceAuthorizer } from './DefaultServiceAuthorizer.js';
4
+ import {} from './ServiceAuthorizer.js';
5
+ /**
6
+ * The default authorizer for services.
7
+ */
8
+ export class StsServiceAuthorizer extends DefaultServiceAuthorizer {
9
+ authorize(request) {
10
+ if (request.request.action.value().toLowerCase() === 'sts:getcalleridentity' &&
11
+ request.request.principal.isAuthenticated()) {
12
+ return {
13
+ result: 'Allowed',
14
+ sameAccount: true,
15
+ conditions: undefined
16
+ };
17
+ }
18
+ return super.authorize(request);
19
+ }
20
+ /**
21
+ * Determines if the service trusts the principal's Account's IAM policies
22
+ *
23
+ * @param sameAccount - If the principal and resource are in the same account
24
+ * @param resourceAnalysis - The resource policy analysis
25
+ * @returns how the service trusts the principal's account IAM policies
26
+ */
27
+ serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource) {
28
+ //If there is no resource policy, the service trusts the principal's account IAM policies
29
+ if (sameAccount && resourceAnalysis.result === 'NotApplicable') {
30
+ return { trustType: 'Implicit' };
31
+ }
32
+ /*
33
+ If there is a resource policy, for instance a role trust policy,
34
+ the trust policy must explicitly allow the principal's account,
35
+ even if the principal and resource are in the same account.
36
+ */
37
+ const accountLevelStatements = this.accountLevelResourceAllowStatements(resourceAnalysis);
38
+ if (accountLevelStatements.length > 0) {
39
+ return { trustType: 'Explicit', statements: accountLevelStatements };
40
+ }
41
+ return { trustType: 'None' };
42
+ }
43
+ }
44
+ //# sourceMappingURL=StsServiceAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StsServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/StsServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+C,MAAM,gBAAgB,CAAA;AAC5E,OAAO,EAAwB,MAAM,+BAA+B,CAAA;AACpE,OAAO,EAAE,wBAAwB,EAA8B,MAAM,+BAA+B,CAAA;AACpG,OAAO,EAAoC,MAAM,wBAAwB,CAAA;AAEzE;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,wBAAwB;IAChD,SAAS,CAAC,OAAoC;QAC5D,IACE,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,KAAK,uBAAuB;YACxE,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,EAC3C,CAAC;YACD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,SAAS;aACtB,CAAA;QACH,CAAC;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED;;;;;;OAMG;IACM,6BAA6B,CACpC,WAAoB,EACpB,gBAAkC,EAClC,QAAyB;QAEzB,yFAAyF;QACzF,IAAI,WAAW,IAAI,gBAAgB,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;YAC/D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;QAClC,CAAC;QAED;;;;UAIE;QACF,MAAM,sBAAsB,GAAG,IAAI,CAAC,mCAAmC,CAAC,gBAAgB,CAAC,CAAA;QACzF,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,sBAAsB,EAAE,CAAA;QACtE,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;IAC9B,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import { type RequestAnalysis } from '../../evaluate.js';
2
+ import { DefaultServiceAuthorizer } from '../DefaultServiceAuthorizer.js';
3
+ import { type ServiceAuthorizationRequest } from '../ServiceAuthorizer.js';
4
+ /**
5
+ * Service authorizer for S3 requests that applies S3 Block Public Access runtime behavior.
6
+ */
7
+ export declare class S3ServiceAuthorizer extends DefaultServiceAuthorizer {
8
+ /**
9
+ * Authorizes an S3 request and applies RestrictPublicBuckets when the caller supplied
10
+ * S3 Block Public Access as enabled for the target bucket/account.
11
+ *
12
+ * @param request the service authorization request containing policy analyses and S3 settings
13
+ * @returns the final request analysis including an S3 BPA block when applicable
14
+ */
15
+ authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
16
+ }
17
+ /**
18
+ * Checks whether a resource string is a standard S3 bucket or object ARN.
19
+ *
20
+ * @param resource the resource string to check
21
+ * @returns true if the resource is a standard S3 bucket/object ARN
22
+ */
23
+ export declare function isStandardS3BucketResource(resource: string): boolean;
24
+ //# sourceMappingURL=S3ServiceAuthorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3ServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../../src/services/s3/S3ServiceAuthorizer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,yBAAyB,CAAA;AAG1E;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,wBAAwB;IAC/D;;;;;;OAMG;IACa,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;CAyCjF;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAuBpE"}
@@ -0,0 +1,76 @@
1
+ import { isServicePrincipal } from '@actsecurity/iam-utils';
2
+ import {} from '../../evaluate.js';
3
+ import { DefaultServiceAuthorizer } from '../DefaultServiceAuthorizer.js';
4
+ import {} from '../ServiceAuthorizer.js';
5
+ import { classifyS3RuntimePublicBucketPolicy } from './s3BlockPublicAccess.js';
6
+ /**
7
+ * Service authorizer for S3 requests that applies S3 Block Public Access runtime behavior.
8
+ */
9
+ export class S3ServiceAuthorizer extends DefaultServiceAuthorizer {
10
+ /**
11
+ * Authorizes an S3 request and applies RestrictPublicBuckets when the caller supplied
12
+ * S3 Block Public Access as enabled for the target bucket/account.
13
+ *
14
+ * @param request the service authorization request containing policy analyses and S3 settings
15
+ * @returns the final request analysis including an S3 BPA block when applicable
16
+ */
17
+ authorize(request) {
18
+ const baseResult = super.authorize(request);
19
+ if (baseResult.result !== 'Allowed') {
20
+ return baseResult;
21
+ }
22
+ if (!isStandardS3BucketResource(request.request.resource.value())) {
23
+ return baseResult;
24
+ }
25
+ if (request.serviceSettings?.s3?.blockPublicAccess !== true) {
26
+ return baseResult;
27
+ }
28
+ if (!request.resourcePolicy) {
29
+ return baseResult;
30
+ }
31
+ const classification = classifyS3RuntimePublicBucketPolicy(request.resourcePolicy);
32
+ if (classification.result === 'nonPublic') {
33
+ return baseResult;
34
+ }
35
+ if (baseResult.sameAccount) {
36
+ return baseResult;
37
+ }
38
+ const principal = request.request.principal;
39
+ if (principal.isAuthenticated() && isServicePrincipal(principal.value())) {
40
+ return baseResult;
41
+ }
42
+ // The base result is Allowed here, so there are no prior blocking reasons to merge.
43
+ return {
44
+ ...baseResult,
45
+ result: 'ExplicitlyDenied',
46
+ blockedBy: ['s3-bpa'],
47
+ conditions: undefined
48
+ };
49
+ }
50
+ }
51
+ /**
52
+ * Checks whether a resource string is a standard S3 bucket or object ARN.
53
+ *
54
+ * @param resource the resource string to check
55
+ * @returns true if the resource is a standard S3 bucket/object ARN
56
+ */
57
+ export function isStandardS3BucketResource(resource) {
58
+ if (resource === '*') {
59
+ return true;
60
+ }
61
+ const parts = resource.split(':');
62
+ if (parts.length < 6) {
63
+ return false;
64
+ }
65
+ const service = parts[2];
66
+ const region = parts[3];
67
+ const account = parts[4];
68
+ const resourcePart = parts.slice(5).join(':');
69
+ const bucketNamePattern = resourcePart.split('/')[0];
70
+ return (service === 's3' &&
71
+ region === '' &&
72
+ account === '' &&
73
+ resourcePart.length > 0 &&
74
+ bucketNamePattern.length > 0);
75
+ }
76
+ //# sourceMappingURL=S3ServiceAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"S3ServiceAuthorizer.js","sourceRoot":"","sources":["../../../../src/services/s3/S3ServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAwB,MAAM,mBAAmB,CAAA;AACxD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAoC,MAAM,yBAAyB,CAAA;AAC1E,OAAO,EAAE,mCAAmC,EAAE,MAAM,0BAA0B,CAAA;AAE9E;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,wBAAwB;IAC/D;;;;;;OAMG;IACa,SAAS,CAAC,OAAoC;QAC5D,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;QAE3C,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YAClE,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,OAAO,CAAC,eAAe,EAAE,EAAE,EAAE,iBAAiB,KAAK,IAAI,EAAE,CAAC;YAC5D,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5B,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,MAAM,cAAc,GAAG,mCAAmC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAClF,IAAI,cAAc,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAC1C,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;YAC3B,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAA;QAC3C,IAAI,SAAS,CAAC,eAAe,EAAE,IAAI,kBAAkB,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;YACzE,OAAO,UAAU,CAAA;QACnB,CAAC;QAED,oFAAoF;QACpF,OAAO;YACL,GAAG,UAAU;YACb,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,CAAC,QAAQ,CAAC;YACrB,UAAU,EAAE,SAAS;SACtB,CAAA;IACH,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAgB;IACzD,IAAI,QAAQ,KAAK,GAAG,EAAE,CAAC;QACrB,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;IACxB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7C,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpD,OAAO,CACL,OAAO,KAAK,IAAI;QAChB,MAAM,KAAK,EAAE;QACb,OAAO,KAAK,EAAE;QACd,YAAY,CAAC,MAAM,GAAG,CAAC;QACvB,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAC7B,CAAA;AACH,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { type Policy } from '@actsecurity/iam-policy';
2
+ /**
3
+ * Caller-supplied S3 Block Public Access settings for simulation.
4
+ */
5
+ export interface S3ServiceSettings {
6
+ /**
7
+ * Whether S3 Block Public Access is enabled for the request target.
8
+ */
9
+ blockPublicAccess?: boolean;
10
+ }
11
+ /**
12
+ * Classification of a standard S3 bucket policy for runtime RestrictPublicBuckets behavior.
13
+ */
14
+ export type S3RuntimePublicPolicyClassification = {
15
+ /**
16
+ * The bucket policy is public for runtime RestrictPublicBuckets behavior.
17
+ */
18
+ result: 'public';
19
+ /**
20
+ * Allow statements that make the policy public.
21
+ */
22
+ publicStatements: S3RuntimePublicStatement[];
23
+ } | {
24
+ /**
25
+ * The bucket policy is not public for runtime RestrictPublicBuckets behavior.
26
+ */
27
+ result: 'nonPublic';
28
+ };
29
+ /**
30
+ * Identifies an Allow statement that makes a bucket policy public.
31
+ */
32
+ export interface S3RuntimePublicStatement {
33
+ /**
34
+ * The 1-based statement index in the policy.
35
+ */
36
+ index: number;
37
+ /**
38
+ * The statement Sid, if present.
39
+ */
40
+ sid?: string;
41
+ }
42
+ /**
43
+ * Classifies a standard S3 bucket policy as public or non-public for runtime
44
+ * RestrictPublicBuckets behavior.
45
+ *
46
+ * @param policy the loaded S3 bucket policy to classify
47
+ * @returns whether the policy is runtime-public and, when public, the public statements
48
+ */
49
+ export declare function classifyS3RuntimePublicBucketPolicy(policy: Policy<unknown>): S3RuntimePublicPolicyClassification;
50
+ //# sourceMappingURL=s3BlockPublicAccess.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"s3BlockPublicAccess.d.ts","sourceRoot":"","sources":["../../../../src/services/s3/s3BlockPublicAccess.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAkB,MAAM,yBAAyB,CAAA;AAGrE;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAC5B;AAED;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAC3C;IACE;;OAEG;IACH,MAAM,EAAE,QAAQ,CAAA;IAEhB;;OAEG;IACH,gBAAgB,EAAE,wBAAwB,EAAE,CAAA;CAC7C,GACD;IACE;;OAEG;IACH,MAAM,EAAE,WAAW,CAAA;CACpB,CAAA;AAEL;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAA;IAEb;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,mCAAmC,CACjD,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,GACtB,mCAAmC,CAWrC"}