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