@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,623 @@
1
+ import { allDenyEscapeExpressions, allowedConditionOutput, and, endpointPolicyExpression, identityPolicyExpression, or, permissionBoundaryExpression, resourceAllowStatementsExpression, sessionPolicyExpression } from '../analysis/allowedConditions.js';
2
+ import { isAssumedRoleArn, isFederatedUserArn, isIamRoleArn, isIamUserArn, isServicePrincipal } from '@actsecurity/iam-utils';
3
+ import {} from '../evaluate.js';
4
+ import { assertAuthenticatedRequestPrincipal } from '../request/requestPrincipal.js';
5
+ import {} from '../request/requestResource.js';
6
+ import {} from '../StatementAnalysis.js';
7
+ import {} from './ServiceAuthorizer.js';
8
+ /**
9
+ * This helper class keeps track of which factors are blocking a request and what the overall result is
10
+ * based on those blocks.
11
+ */
12
+ class BlockedByLog {
13
+ /**
14
+ * Create the BlockedByLog
15
+ *
16
+ * @param coreResult the core result of the authorization. Is the request allowed or denied based on the core policies (identity, resource, session).
17
+ */
18
+ constructor(coreResult) {
19
+ this.coreResult = coreResult;
20
+ this.blockedBy = new Set();
21
+ this.result = coreResult;
22
+ }
23
+ /**
24
+ * Add a blocking factor to the log and update the overall result accordingly.
25
+ *
26
+ * @param reason the reason for the block.
27
+ * @param result the result of the block (ImplicitlyDenied, ExplicitlyDenied)
28
+ */
29
+ add(reason, result) {
30
+ if (this.coreResult === 'Allowed' && result !== 'Allowed') {
31
+ this.blockedBy.add(reason);
32
+ }
33
+ this.setResult(result);
34
+ }
35
+ /**
36
+ * Calculates and sets the new overall result based on the new block reason and the previous result.
37
+ *
38
+ * The result can only be modified down so Allowed -> ImplicitlyDenied -> ExplicitlyDenied.
39
+ *
40
+ * @param newResult the result of the new block reason being added.
41
+ */
42
+ setResult(newResult) {
43
+ // Explicit denies override everything
44
+ if (this.result === 'ExplicitlyDenied') {
45
+ return;
46
+ }
47
+ if (newResult === 'ExplicitlyDenied') {
48
+ this.result = 'ExplicitlyDenied';
49
+ }
50
+ else if (newResult === 'ImplicitlyDenied') {
51
+ this.result = 'ImplicitlyDenied';
52
+ }
53
+ }
54
+ /**
55
+ * Get the overall result after all blocks (if any) have been added.
56
+ *
57
+ * @returns the overall result after all blocks (if any) have been added.
58
+ */
59
+ getResult() {
60
+ return this.result;
61
+ }
62
+ /**
63
+ * Get the list of reasons that are blocking the request after the core result.
64
+ *
65
+ * @returns an array of reasons that are blocking the request after the core result.
66
+ */
67
+ getBlockedBy() {
68
+ return Array.from(this.blockedBy);
69
+ }
70
+ }
71
+ /**
72
+ * The default authorizer for services.
73
+ */
74
+ export class DefaultServiceAuthorizer {
75
+ /**
76
+ * Authorize a service request after all policy analysis has been completed.
77
+ *
78
+ * @param request the service authorization request containing all analyses
79
+ * @returns the result of the authorization
80
+ */
81
+ authorize(request) {
82
+ const scpResult = request.scpAnalysis.result;
83
+ const rcpResult = request.rcpAnalysis.result;
84
+ const identityStatementResult = request.identityAnalysis.result;
85
+ const resourcePolicyResult = request.resourceAnalysis?.result;
86
+ const endpointPolicyResult = request.endpointAnalysis?.result;
87
+ const requestPrincipal = request.request.principal;
88
+ const principalAccount = requestPrincipal.isAuthenticated()
89
+ ? requestPrincipal.accountId()
90
+ : undefined;
91
+ const resourceAccount = request.request.resource?.accountId();
92
+ const sameAccount = principalAccount !== undefined && principalAccount === resourceAccount;
93
+ const baseResult = {
94
+ sameAccount,
95
+ sessionAnalysis: request.sessionAnalysis,
96
+ identityAnalysis: request.identityAnalysis,
97
+ scpAnalysis: request.scpAnalysis,
98
+ rcpAnalysis: request.rcpAnalysis,
99
+ resourceAnalysis: request.resourceAnalysis,
100
+ permissionBoundaryAnalysis: request.permissionBoundaryAnalysis,
101
+ endpointAnalysis: request.endpointAnalysis
102
+ };
103
+ if (requestPrincipal.isAnonymous()) {
104
+ return this.authorizeAnonymousRequest(request, baseResult);
105
+ }
106
+ assertAuthenticatedRequestPrincipal(requestPrincipal);
107
+ const initialEvaluation = this.initialEvaluationResult(request);
108
+ let coreConditions = initialEvaluation.conditions;
109
+ const blockedByLog = new BlockedByLog(initialEvaluation.result);
110
+ blockedByLog.add('scp', scpResult);
111
+ blockedByLog.add('rcp', rcpResult);
112
+ if (endpointPolicyResult === 'ExplicitlyDenied' ||
113
+ endpointPolicyResult === 'ImplicitlyDenied') {
114
+ blockedByLog.add('vpce', endpointPolicyResult);
115
+ }
116
+ if (resourcePolicyResult === 'ExplicitlyDenied' ||
117
+ resourcePolicyResult === 'DeniedForAccount') {
118
+ blockedByLog.add('resource', 'ExplicitlyDenied');
119
+ }
120
+ if (identityStatementResult === 'ExplicitlyDenied') {
121
+ blockedByLog.add('identity', 'ExplicitlyDenied');
122
+ }
123
+ const permissionBoundaryMutation = this.applyPermissionBoundaryToCoreConditions(request, sameAccount, coreConditions);
124
+ coreConditions = permissionBoundaryMutation.conditions;
125
+ if (permissionBoundaryMutation.result) {
126
+ blockedByLog.add('pb', permissionBoundaryMutation.result);
127
+ }
128
+ const blockedReasons = blockedByLog.getBlockedBy();
129
+ if (blockedReasons.length !== 0) {
130
+ baseResult.blockedBy = blockedReasons;
131
+ }
132
+ const finalResult = blockedByLog.getResult();
133
+ return {
134
+ result: finalResult,
135
+ ...baseResult,
136
+ conditions: this.conditionsForAllowedResult(request, coreConditions, finalResult)
137
+ };
138
+ /**
139
+ * Add checks for:
140
+ * * root user - can override resource policies for most resource types
141
+ * * organization APIs and delegated admin policy
142
+ */
143
+ }
144
+ /**
145
+ * Authorize an anonymous request after all policy analysis has been completed.
146
+ *
147
+ * @param request the service authorization request containing all analyses.
148
+ * @param baseResult the common request-analysis fields to include in the result.
149
+ * @returns the anonymous request authorization result.
150
+ */
151
+ authorizeAnonymousRequest(request, baseResult) {
152
+ const endpointPolicyResult = request.endpointAnalysis?.result;
153
+ const initialEvaluation = this.anonymousInitialEvaluationResult(request);
154
+ const blockedByLog = new BlockedByLog(initialEvaluation.result);
155
+ if (request.rcpAnalysis.ouAnalysis.length > 0) {
156
+ blockedByLog.add('rcp', request.rcpAnalysis.result);
157
+ }
158
+ if (endpointPolicyResult === 'ExplicitlyDenied' ||
159
+ endpointPolicyResult === 'ImplicitlyDenied') {
160
+ blockedByLog.add('vpce', endpointPolicyResult);
161
+ }
162
+ const blockedReasons = blockedByLog.getBlockedBy();
163
+ if (blockedReasons.length !== 0) {
164
+ baseResult.blockedBy = blockedReasons;
165
+ }
166
+ const finalResult = blockedByLog.getResult();
167
+ return {
168
+ result: finalResult,
169
+ ...baseResult,
170
+ sameAccount: false,
171
+ conditions: this.conditionsForAllowedResult(request, initialEvaluation.conditions, finalResult)
172
+ };
173
+ }
174
+ /**
175
+ * Evaluates whether an anonymous request has the resource-side grant required to be allowed.
176
+ *
177
+ * @param request the service authorization request containing all analyses.
178
+ * @returns the core anonymous result before applicable resource-side guardrails are applied.
179
+ */
180
+ anonymousInitialEvaluationResult(request) {
181
+ const resourcePolicyResult = request.resourceAnalysis?.result;
182
+ if (resourcePolicyResult === 'Allowed') {
183
+ return {
184
+ result: 'Allowed',
185
+ conditions: resourceAllowStatementsExpression(request.resourceAnalysis.allowStatements)
186
+ };
187
+ }
188
+ if (resourcePolicyResult === 'ExplicitlyDenied' ||
189
+ resourcePolicyResult === 'DeniedForAccount') {
190
+ return {
191
+ result: 'ExplicitlyDenied',
192
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
193
+ };
194
+ }
195
+ return {
196
+ result: 'ImplicitlyDenied',
197
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
198
+ };
199
+ }
200
+ /**
201
+ * Determines if the service trusts the principal's Account's IAM policies
202
+ *
203
+ * @param sameAccount - If the principal and resource are in the same account
204
+ * @param resourceAnalysis - The resource policy analysis
205
+ * @returns true if the service trusts the principal's account IAM policies
206
+ */
207
+ serviceTrustsPrincipalAccount(sameAccount, resourceAnalysis, resource) {
208
+ if (sameAccount) {
209
+ return { trustType: 'Implicit' };
210
+ }
211
+ const accountLevelStatements = this.accountLevelResourceAllowStatements(resourceAnalysis);
212
+ if (accountLevelStatements.length > 0) {
213
+ return { trustType: 'Explicit', statements: accountLevelStatements };
214
+ }
215
+ return { trustType: 'None' };
216
+ }
217
+ /**
218
+ * Combine core authorization conditions with guardrail conditions for a final allowed result.
219
+ *
220
+ * @param request the service authorization request containing all analyses
221
+ * @param coreConditions the conditions for the core service authorization decision after permission-boundary mutation
222
+ * @param finalResult the final authorization result after guardrails
223
+ * @returns the public conditions expression, or undefined when none should be emitted
224
+ */
225
+ conditionsForAllowedResult(request, coreConditions, finalResult) {
226
+ const expressions = [
227
+ sessionPolicyExpression(request.sessionAnalysis, request.sessionAnalysis !== undefined),
228
+ coreConditions,
229
+ request.scpAnalysis.conditions,
230
+ request.rcpAnalysis.conditions
231
+ ];
232
+ if (request.endpointAnalysis?.result === 'Allowed') {
233
+ expressions.push(endpointPolicyExpression(request.endpointAnalysis));
234
+ }
235
+ expressions.push(...allDenyEscapeExpressions({
236
+ sessionAnalysis: request.sessionAnalysis,
237
+ scpAnalysis: request.scpAnalysis,
238
+ rcpAnalysis: request.rcpAnalysis,
239
+ identityAnalysis: request.identityAnalysis,
240
+ resourceAnalysis: request.resourceAnalysis,
241
+ permissionBoundaryAnalysis: request.permissionBoundaryAnalysis,
242
+ endpointAnalysis: request.endpointAnalysis
243
+ }));
244
+ return allowedConditionOutput(and(expressions), request.simulationParameters.simulationMode, finalResult);
245
+ }
246
+ /**
247
+ * Apply permission-boundary effects to the core authorization conditions.
248
+ *
249
+ * Permission boundaries are not part of the core service authorization result. This function lives
250
+ * with the permission-boundary authorization checks and recalculates the affected condition paths
251
+ * only when permission-boundary behavior changes which core path can be used.
252
+ *
253
+ * @param request the service authorization request containing all analyses
254
+ * @param sameAccount whether the principal and resource are in the same account
255
+ * @param coreConditions the unmodified core authorization conditions
256
+ * @returns the permission-boundary block result, if any, and updated core conditions
257
+ */
258
+ applyPermissionBoundaryToCoreConditions(request, sameAccount, coreConditions) {
259
+ const permissionBoundaryResult = request.permissionBoundaryAnalysis?.result;
260
+ if (!permissionBoundaryResult) {
261
+ return { conditions: coreConditions };
262
+ }
263
+ if (permissionBoundaryResult === 'ExplicitlyDenied') {
264
+ return { result: 'ExplicitlyDenied', conditions: coreConditions };
265
+ }
266
+ if (permissionBoundaryResult === 'Allowed') {
267
+ return {
268
+ conditions: this.coreConditionsWithAllowedPermissionBoundary(request, sameAccount)
269
+ };
270
+ }
271
+ if (permissionBoundaryResult === 'ImplicitlyDenied') {
272
+ if (!sameAccount) {
273
+ return { result: 'ImplicitlyDenied', conditions: coreConditions };
274
+ }
275
+ const bypassStatements = this.permissionBoundaryBypassResourceAllowStatements(request);
276
+ if (bypassStatements.length === 0) {
277
+ return { result: 'ImplicitlyDenied', conditions: coreConditions };
278
+ }
279
+ return { conditions: resourceAllowStatementsExpression(bypassStatements) };
280
+ }
281
+ return { conditions: coreConditions };
282
+ }
283
+ /**
284
+ * Recalculate core conditions when an allowed permission boundary constrains identity-policy paths.
285
+ *
286
+ * @param request the service authorization request containing all analyses
287
+ * @param sameAccount whether the principal and resource are in the same account
288
+ * @returns core conditions with permission-boundary allow conditions applied to identity paths
289
+ */
290
+ coreConditionsWithAllowedPermissionBoundary(request, sameAccount) {
291
+ const principal = request.request.principal;
292
+ if (principal.isAnonymous()) {
293
+ return resourceAllowStatementsExpression(request.resourceAnalysis.allowStatements);
294
+ }
295
+ assertAuthenticatedRequestPrincipal(principal);
296
+ if (isServicePrincipal(principal.value())) {
297
+ return resourceAllowStatementsExpression(request.resourceAnalysis.allowStatements);
298
+ }
299
+ if (sameAccount) {
300
+ const trustedAccount = this.serviceTrustsPrincipalAccount(sameAccount, request.resourceAnalysis, request.request.resource);
301
+ return this.sameAccountConditionsWithAllowedPermissionBoundary(request, trustedAccount);
302
+ }
303
+ if ((request.resourceAnalysis.result === 'Allowed' ||
304
+ request.resourceAnalysis.result === 'AllowedForAccount') &&
305
+ request.identityAnalysis.result === 'Allowed') {
306
+ return and([
307
+ this.crossAccountResourcePolicyConditions(request),
308
+ identityPolicyExpression(request.identityAnalysis),
309
+ permissionBoundaryExpression(request.permissionBoundaryAnalysis)
310
+ ]);
311
+ }
312
+ return { conditionType: 'never', reason: 'noApplicableAllow' };
313
+ }
314
+ /**
315
+ * Recalculate same-account conditions when an allowed permission boundary constrains identity paths.
316
+ *
317
+ * @param request the service authorization request containing all analyses
318
+ * @param trustedAccount how the service trusts the principal account for this request
319
+ * @returns same-account core conditions with permission-boundary allow conditions applied to identity paths
320
+ */
321
+ sameAccountConditionsWithAllowedPermissionBoundary(request, trustedAccount) {
322
+ switch (trustedAccount.trustType) {
323
+ case 'Implicit':
324
+ return this.sameAccountImplicitTrustConditionsWithAllowedPermissionBoundary(request);
325
+ case 'Explicit':
326
+ return this.sameAccountExplicitTrustConditionsWithAllowedPermissionBoundary(request, trustedAccount);
327
+ case 'None':
328
+ return request.resourceAnalysis.result === 'Allowed'
329
+ ? this.sameAccountResourcePolicyConditions(request)
330
+ : { conditionType: 'never', reason: 'noApplicableAllow' };
331
+ default:
332
+ throw new Error(`Unrecognized principal account trust type: ${String(trustedAccount.trustType)}`);
333
+ }
334
+ }
335
+ /**
336
+ * Recalculate same-account implicit trust conditions when permission-boundary allow constrains identity paths.
337
+ *
338
+ * @param request the service authorization request containing all analyses
339
+ * @returns same-account implicit trust conditions with permission-boundary allow conditions applied to identity paths
340
+ */
341
+ sameAccountImplicitTrustConditionsWithAllowedPermissionBoundary(request) {
342
+ const resourceConditions = request.resourceAnalysis.result === 'Allowed'
343
+ ? this.sameAccountResourcePolicyConditions(request)
344
+ : { conditionType: 'never', reason: 'noApplicableAllow' };
345
+ const identityConditions = request.identityAnalysis.result === 'Allowed'
346
+ ? and([
347
+ identityPolicyExpression(request.identityAnalysis),
348
+ permissionBoundaryExpression(request.permissionBoundaryAnalysis)
349
+ ])
350
+ : { conditionType: 'never', reason: 'noApplicableAllow' };
351
+ return or([resourceConditions, identityConditions]);
352
+ }
353
+ /**
354
+ * Recalculate same-account explicit trust conditions when permission-boundary allow constrains identity paths.
355
+ *
356
+ * @param request the service authorization request containing all analyses
357
+ * @param trustedAccount explicit account-trust statements selected by the service authorizer
358
+ * @returns same-account explicit trust conditions with permission-boundary allow conditions applied to identity paths
359
+ */
360
+ sameAccountExplicitTrustConditionsWithAllowedPermissionBoundary(request, trustedAccount) {
361
+ const resourceConditions = request.resourceAnalysis.result === 'Allowed'
362
+ ? this.sameAccountResourcePolicyConditions(request)
363
+ : { conditionType: 'never', reason: 'noApplicableAllow' };
364
+ const identityConditions = request.identityAnalysis.result === 'Allowed'
365
+ ? and([
366
+ resourceAllowStatementsExpression(trustedAccount.statements),
367
+ identityPolicyExpression(request.identityAnalysis),
368
+ permissionBoundaryExpression(request.permissionBoundaryAnalysis)
369
+ ])
370
+ : { conditionType: 'never', reason: 'noApplicableAllow' };
371
+ return or([resourceConditions, identityConditions]);
372
+ }
373
+ /**
374
+ * Get resource-policy allow statements that matched the principal directly.
375
+ *
376
+ * @param resourceAnalysis resource-policy analysis containing already-matched allow statements
377
+ * @returns direct principal-match resource allow statements
378
+ */
379
+ directResourceAllowStatements(resourceAnalysis) {
380
+ return resourceAnalysis.allowStatements.filter((statement) => ['Match', 'SessionRoleMatch', 'SessionUserMatch'].includes(statement.principalMatch));
381
+ }
382
+ /**
383
+ * Get resource-policy allow statements that matched at the principal-account level.
384
+ *
385
+ * @param resourceAnalysis resource-policy analysis containing already-matched allow statements
386
+ * @returns account-level resource allow statements
387
+ */
388
+ accountLevelResourceAllowStatements(resourceAnalysis) {
389
+ return resourceAnalysis.allowStatements.filter((statement) => statement.principalMatch === 'AccountLevelMatch');
390
+ }
391
+ /**
392
+ * Get same-account resource-policy conditions for paths that can satisfy core authorization.
393
+ *
394
+ * @param request the service authorization request containing all analyses
395
+ * @returns resource-policy conditions for the allowed same-account branch
396
+ */
397
+ sameAccountResourcePolicyConditions(request) {
398
+ return resourceAllowStatementsExpression(this.directResourceAllowStatements(request.resourceAnalysis));
399
+ }
400
+ /**
401
+ * Evaluate same-account core authorization and conditions based on principal-account trust.
402
+ *
403
+ * @param request the service authorization request containing all analyses
404
+ * @param trustedAccount how the service trusts the principal account for this request
405
+ * @returns the same-account core authorization result and conditions
406
+ */
407
+ sameAccountInitialEvaluation(request, trustedAccount) {
408
+ switch (trustedAccount.trustType) {
409
+ case 'Implicit':
410
+ return this.sameAccountImplicitTrustEvaluation(request);
411
+ case 'Explicit':
412
+ return this.sameAccountExplicitTrustEvaluation(request, trustedAccount);
413
+ case 'None':
414
+ return this.sameAccountNoTrustEvaluation(request);
415
+ default:
416
+ throw new Error(`Unrecognized principal account trust type: ${String(trustedAccount.trustType)}`);
417
+ }
418
+ }
419
+ /**
420
+ * Evaluate same-account authorization when the service implicitly trusts identity policies.
421
+ *
422
+ * @param request the service authorization request containing all analyses
423
+ * @returns the same-account authorization result and conditions
424
+ */
425
+ sameAccountImplicitTrustEvaluation(request) {
426
+ const resourcePolicyResult = request.resourceAnalysis.result;
427
+ const identityStatementResult = request.identityAnalysis.result;
428
+ if (resourcePolicyResult === 'Allowed' && identityStatementResult === 'Allowed') {
429
+ return {
430
+ result: 'Allowed',
431
+ conditions: or([
432
+ this.sameAccountResourcePolicyConditions(request),
433
+ identityPolicyExpression(request.identityAnalysis)
434
+ ])
435
+ };
436
+ }
437
+ if (resourcePolicyResult === 'Allowed') {
438
+ return {
439
+ result: 'Allowed',
440
+ conditions: this.sameAccountResourcePolicyConditions(request)
441
+ };
442
+ }
443
+ if (identityStatementResult === 'Allowed') {
444
+ return {
445
+ result: 'Allowed',
446
+ conditions: identityPolicyExpression(request.identityAnalysis)
447
+ };
448
+ }
449
+ return {
450
+ result: 'ImplicitlyDenied',
451
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
452
+ };
453
+ }
454
+ /**
455
+ * Evaluate same-account authorization when the service requires explicit resource-policy account trust.
456
+ *
457
+ * @param request the service authorization request containing all analyses
458
+ * @param trustedAccount explicit account-trust statements selected by the service authorizer
459
+ * @returns the same-account authorization result and conditions
460
+ */
461
+ sameAccountExplicitTrustEvaluation(request, trustedAccount) {
462
+ const resourcePolicyResult = request.resourceAnalysis.result;
463
+ const identityStatementResult = request.identityAnalysis.result;
464
+ const resourceConditions = resourcePolicyResult === 'Allowed'
465
+ ? this.sameAccountResourcePolicyConditions(request)
466
+ : { conditionType: 'never', reason: 'noApplicableAllow' };
467
+ if (identityStatementResult === 'Allowed') {
468
+ const identityConditions = and([
469
+ resourceAllowStatementsExpression(trustedAccount.statements),
470
+ identityPolicyExpression(request.identityAnalysis)
471
+ ]);
472
+ return {
473
+ result: 'Allowed',
474
+ conditions: or([resourceConditions, identityConditions])
475
+ };
476
+ }
477
+ if (resourcePolicyResult === 'Allowed') {
478
+ return {
479
+ result: 'Allowed',
480
+ conditions: resourceConditions
481
+ };
482
+ }
483
+ return {
484
+ result: 'ImplicitlyDenied',
485
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
486
+ };
487
+ }
488
+ /**
489
+ * Evaluate same-account authorization when the service does not trust identity policies.
490
+ *
491
+ * @param request the service authorization request containing all analyses
492
+ * @returns the same-account authorization result and conditions
493
+ */
494
+ sameAccountNoTrustEvaluation(request) {
495
+ if (request.resourceAnalysis.result === 'Allowed') {
496
+ return {
497
+ result: 'Allowed',
498
+ conditions: this.sameAccountResourcePolicyConditions(request)
499
+ };
500
+ }
501
+ return {
502
+ result: 'ImplicitlyDenied',
503
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
504
+ };
505
+ }
506
+ /**
507
+ * Get resource-policy conditions for a cross-account request's resource-policy side.
508
+ *
509
+ * @param request the service authorization request containing all analyses
510
+ * @returns resource-policy conditions for the matching cross-account resource-policy statements
511
+ */
512
+ crossAccountResourcePolicyConditions(request) {
513
+ if (request.resourceAnalysis.result !== 'Allowed' &&
514
+ request.resourceAnalysis.result !== 'AllowedForAccount') {
515
+ return { conditionType: 'never', reason: 'noApplicableAllow' };
516
+ }
517
+ return resourceAllowStatementsExpression([
518
+ ...this.directResourceAllowStatements(request.resourceAnalysis),
519
+ ...this.accountLevelResourceAllowStatements(request.resourceAnalysis)
520
+ ]);
521
+ }
522
+ /**
523
+ * Get same-account resource-policy allow statements that bypass an implicit permission-boundary deny.
524
+ *
525
+ * @param request the service authorization request containing all analyses
526
+ * @returns resource-policy allow statements that bypass the implicit permission-boundary deny
527
+ */
528
+ permissionBoundaryBypassResourceAllowStatements(request) {
529
+ if (request.resourceAnalysis.result !== 'Allowed') {
530
+ return [];
531
+ }
532
+ const principal = request.request.principal;
533
+ if (!principal.isAuthenticated()) {
534
+ return [];
535
+ }
536
+ const principalValue = principal.value();
537
+ if (isAssumedRoleArn(principalValue) ||
538
+ isIamUserArn(principalValue) ||
539
+ isFederatedUserArn(principalValue)) {
540
+ return request.resourceAnalysis.allowStatements.filter((statement) => statement.principalMatch === 'Match');
541
+ }
542
+ if (isIamRoleArn(principalValue)) {
543
+ return request.resourceAnalysis.allowStatements.filter((statement) => statement.principalMatch === 'Match' &&
544
+ (statement.ignoredRoleSessionName ||
545
+ (statement.statement.isPrincipalStatement() &&
546
+ statement.statement.principals().some((p) => p.isWildcardPrincipal()))));
547
+ }
548
+ return [];
549
+ }
550
+ /**
551
+ * Evaluations whether the minimum requirements for the request to be allowed are met based on the core policies
552
+ * - Identity
553
+ * - Resource
554
+ * - Session
555
+ *
556
+ * Depending on the service, and whether the principal and resources are in the same account, the requirements may differ.
557
+ * For same account requests, for most services an Allow in the resource policy or the identity policy is sufficient to
558
+ * allow the request, so this function will return 'Allowed'. If there is an explicit deny elsewhere, that is not considered.
559
+ * This function only determines if there are enough core policies to allow the request, and final determination of the
560
+ * request is done elsewhere.
561
+ *
562
+ * @param request the service authorization request containing all analyses
563
+ * @returns 'Allowed' if the core policies allow the request, otherwise may return 'ImplicitlyDenied' or 'ExplicitlyDenied' depending on the analyses
564
+ */
565
+ initialEvaluationResult(request) {
566
+ const sessionResult = request.sessionAnalysis?.result;
567
+ const identityStatementResult = request.identityAnalysis.result;
568
+ const resourcePolicyResult = request.resourceAnalysis?.result;
569
+ const requestPrincipal = request.request.principal;
570
+ const principalAccount = requestPrincipal.isAuthenticated()
571
+ ? requestPrincipal.accountId()
572
+ : undefined;
573
+ const resourceAccount = request.request.resource?.accountId();
574
+ const sameAccount = principalAccount !== undefined && principalAccount === resourceAccount;
575
+ if (requestPrincipal.isAnonymous()) {
576
+ return this.anonymousInitialEvaluationResult(request);
577
+ }
578
+ assertAuthenticatedRequestPrincipal(requestPrincipal);
579
+ if (sessionResult && sessionResult !== 'Allowed') {
580
+ return {
581
+ result: sessionResult,
582
+ conditions: sessionPolicyExpression(request.sessionAnalysis, true)
583
+ };
584
+ }
585
+ // Service Principals
586
+ if (isServicePrincipal(requestPrincipal.value())) {
587
+ // Service principals are allowed if the resource policy allows them
588
+ if (resourcePolicyResult === 'Allowed') {
589
+ return {
590
+ result: 'Allowed',
591
+ conditions: resourceAllowStatementsExpression(request.resourceAnalysis.allowStatements)
592
+ };
593
+ }
594
+ return {
595
+ result: 'ImplicitlyDenied',
596
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
597
+ };
598
+ }
599
+ //Same Account
600
+ if (sameAccount) {
601
+ const trustedAccount = this.serviceTrustsPrincipalAccount(sameAccount, request.resourceAnalysis, request.request.resource);
602
+ return this.sameAccountInitialEvaluation(request, trustedAccount);
603
+ }
604
+ //Cross Account
605
+ if (resourcePolicyResult === 'Allowed' || resourcePolicyResult === 'AllowedForAccount') {
606
+ if (identityStatementResult === 'Allowed') {
607
+ const coreConditions = and([
608
+ this.crossAccountResourcePolicyConditions(request),
609
+ identityPolicyExpression(request.identityAnalysis)
610
+ ]);
611
+ return {
612
+ result: 'Allowed',
613
+ conditions: coreConditions
614
+ };
615
+ }
616
+ }
617
+ return {
618
+ result: 'ImplicitlyDenied',
619
+ conditions: { conditionType: 'never', reason: 'noApplicableAllow' }
620
+ };
621
+ }
622
+ }
623
+ //# sourceMappingURL=DefaultServiceAuthorizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DefaultServiceAuthorizer.js","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
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 IAM service requests.
6
+ */
7
+ export declare class IamServiceAuthorizer extends DefaultServiceAuthorizer {
8
+ authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
9
+ }
10
+ //# sourceMappingURL=IamServiceAuthorizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IamServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/IamServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAErD,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAA;AACxE,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AA8BzE;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,wBAAwB;IAChD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;CAiCjF"}