@cloud-copilot/iam-simulate 0.1.12 → 0.1.14

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 (329) hide show
  1. package/dist/cjs/StatementAnalysis.d.ts +14 -0
  2. package/dist/cjs/StatementAnalysis.d.ts.map +1 -1
  3. package/dist/cjs/StatementAnalysis.js +51 -0
  4. package/dist/cjs/StatementAnalysis.js.map +1 -1
  5. package/dist/cjs/action/action.d.ts +13 -3
  6. package/dist/cjs/action/action.d.ts.map +1 -1
  7. package/dist/cjs/action/action.js +43 -21
  8. package/dist/cjs/action/action.js.map +1 -1
  9. package/dist/cjs/condition/BaseConditionOperator.d.ts +6 -1
  10. package/dist/cjs/condition/BaseConditionOperator.d.ts.map +1 -1
  11. package/dist/cjs/condition/arn/ArnEquals.d.ts.map +1 -1
  12. package/dist/cjs/condition/arn/ArnEquals.js +2 -1
  13. package/dist/cjs/condition/arn/ArnEquals.js.map +1 -1
  14. package/dist/cjs/condition/arn/ArnLike.d.ts.map +1 -1
  15. package/dist/cjs/condition/arn/ArnLike.js +8 -40
  16. package/dist/cjs/condition/arn/ArnLike.js.map +1 -1
  17. package/dist/cjs/condition/arn/ArnNotEquals.d.ts.map +1 -1
  18. package/dist/cjs/condition/arn/ArnNotEquals.js +2 -1
  19. package/dist/cjs/condition/arn/ArnNotEquals.js.map +1 -1
  20. package/dist/cjs/condition/arn/ArnNotLike.d.ts.map +1 -1
  21. package/dist/cjs/condition/arn/ArnNotLike.js +8 -3
  22. package/dist/cjs/condition/arn/ArnNotLike.js.map +1 -1
  23. package/dist/cjs/condition/arn/arn.d.ts +12 -0
  24. package/dist/cjs/condition/arn/arn.d.ts.map +1 -0
  25. package/dist/cjs/condition/arn/arn.js +68 -0
  26. package/dist/cjs/condition/arn/arn.js.map +1 -0
  27. package/dist/cjs/condition/baseConditionperatorTests.d.ts +7 -1
  28. package/dist/cjs/condition/baseConditionperatorTests.d.ts.map +1 -1
  29. package/dist/cjs/condition/baseConditionperatorTests.js +17 -1
  30. package/dist/cjs/condition/baseConditionperatorTests.js.map +1 -1
  31. package/dist/cjs/condition/binary/BinaryEquals.d.ts.map +1 -1
  32. package/dist/cjs/condition/binary/BinaryEquals.js +14 -2
  33. package/dist/cjs/condition/binary/BinaryEquals.js.map +1 -1
  34. package/dist/cjs/condition/boolean/Bool.d.ts.map +1 -1
  35. package/dist/cjs/condition/boolean/Bool.js +36 -7
  36. package/dist/cjs/condition/boolean/Bool.js.map +1 -1
  37. package/dist/cjs/condition/condition.d.ts +46 -3
  38. package/dist/cjs/condition/condition.d.ts.map +1 -1
  39. package/dist/cjs/condition/condition.js +242 -48
  40. package/dist/cjs/condition/condition.js.map +1 -1
  41. package/dist/cjs/condition/conditionUtil.d.ts +10 -0
  42. package/dist/cjs/condition/conditionUtil.d.ts.map +1 -0
  43. package/dist/cjs/condition/conditionUtil.js +16 -0
  44. package/dist/cjs/condition/conditionUtil.js.map +1 -0
  45. package/dist/cjs/condition/date/DateEquals.d.ts.map +1 -1
  46. package/dist/cjs/condition/date/DateEquals.js +7 -2
  47. package/dist/cjs/condition/date/DateEquals.js.map +1 -1
  48. package/dist/cjs/condition/date/DateGreaterThan.d.ts.map +1 -1
  49. package/dist/cjs/condition/date/DateGreaterThan.js +7 -2
  50. package/dist/cjs/condition/date/DateGreaterThan.js.map +1 -1
  51. package/dist/cjs/condition/date/DateGreaterThanEquals.d.ts.map +1 -1
  52. package/dist/cjs/condition/date/DateGreaterThanEquals.js +7 -2
  53. package/dist/cjs/condition/date/DateGreaterThanEquals.js.map +1 -1
  54. package/dist/cjs/condition/date/DateLessThan.d.ts.map +1 -1
  55. package/dist/cjs/condition/date/DateLessThan.js +7 -2
  56. package/dist/cjs/condition/date/DateLessThan.js.map +1 -1
  57. package/dist/cjs/condition/date/DateLessThanEquals.d.ts.map +1 -1
  58. package/dist/cjs/condition/date/DateLessThanEquals.js +7 -2
  59. package/dist/cjs/condition/date/DateLessThanEquals.js.map +1 -1
  60. package/dist/cjs/condition/date/DateNotEquals.d.ts.map +1 -1
  61. package/dist/cjs/condition/date/DateNotEquals.js +11 -18
  62. package/dist/cjs/condition/date/DateNotEquals.js.map +1 -1
  63. package/dist/cjs/condition/date/date.d.ts +2 -1
  64. package/dist/cjs/condition/date/date.d.ts.map +1 -1
  65. package/dist/cjs/condition/date/date.js +20 -5
  66. package/dist/cjs/condition/date/date.js.map +1 -1
  67. package/dist/cjs/condition/ipaddress/IpAddress.d.ts.map +1 -1
  68. package/dist/cjs/condition/ipaddress/IpAddress.js +9 -16
  69. package/dist/cjs/condition/ipaddress/IpAddress.js.map +1 -1
  70. package/dist/cjs/condition/ipaddress/NotIpAddress.d.ts.map +1 -1
  71. package/dist/cjs/condition/ipaddress/NotIpAddress.js +9 -20
  72. package/dist/cjs/condition/ipaddress/NotIpAddress.js.map +1 -1
  73. package/dist/cjs/condition/ipaddress/ip.d.ts +10 -0
  74. package/dist/cjs/condition/ipaddress/ip.d.ts.map +1 -0
  75. package/dist/cjs/condition/ipaddress/ip.js +57 -0
  76. package/dist/cjs/condition/ipaddress/ip.js.map +1 -0
  77. package/dist/cjs/condition/numeric/NumericEquals.d.ts.map +1 -1
  78. package/dist/cjs/condition/numeric/NumericEquals.js +7 -2
  79. package/dist/cjs/condition/numeric/NumericEquals.js.map +1 -1
  80. package/dist/cjs/condition/numeric/NumericGreaterThan.d.ts.map +1 -1
  81. package/dist/cjs/condition/numeric/NumericGreaterThan.js +7 -2
  82. package/dist/cjs/condition/numeric/NumericGreaterThan.js.map +1 -1
  83. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -1
  84. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js +7 -2
  85. package/dist/cjs/condition/numeric/NumericGreaterThanEquals.js.map +1 -1
  86. package/dist/cjs/condition/numeric/NumericLessThan.d.ts.map +1 -1
  87. package/dist/cjs/condition/numeric/NumericLessThan.js +7 -2
  88. package/dist/cjs/condition/numeric/NumericLessThan.js.map +1 -1
  89. package/dist/cjs/condition/numeric/NumericLessThanEquals.d.ts.map +1 -1
  90. package/dist/cjs/condition/numeric/NumericLessThanEquals.js +7 -2
  91. package/dist/cjs/condition/numeric/NumericLessThanEquals.js.map +1 -1
  92. package/dist/cjs/condition/numeric/NumericNotEquals.d.ts.map +1 -1
  93. package/dist/cjs/condition/numeric/NumericNotEquals.js +11 -18
  94. package/dist/cjs/condition/numeric/NumericNotEquals.js.map +1 -1
  95. package/dist/cjs/condition/numeric/numeric.d.ts +2 -1
  96. package/dist/cjs/condition/numeric/numeric.d.ts.map +1 -1
  97. package/dist/cjs/condition/numeric/numeric.js +18 -3
  98. package/dist/cjs/condition/numeric/numeric.js.map +1 -1
  99. package/dist/cjs/condition/string/StringEquals.d.ts.map +1 -1
  100. package/dist/cjs/condition/string/StringEquals.js +24 -3
  101. package/dist/cjs/condition/string/StringEquals.js.map +1 -1
  102. package/dist/cjs/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -1
  103. package/dist/cjs/condition/string/StringEqualsIgnoreCase.js +23 -5
  104. package/dist/cjs/condition/string/StringEqualsIgnoreCase.js.map +1 -1
  105. package/dist/cjs/condition/string/StringLike.d.ts.map +1 -1
  106. package/dist/cjs/condition/string/StringLike.js +24 -3
  107. package/dist/cjs/condition/string/StringLike.js.map +1 -1
  108. package/dist/cjs/condition/string/StringNotEquals.d.ts.map +1 -1
  109. package/dist/cjs/condition/string/StringNotEquals.js +24 -3
  110. package/dist/cjs/condition/string/StringNotEquals.js.map +1 -1
  111. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -1
  112. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js +25 -3
  113. package/dist/cjs/condition/string/StringNotEqualsIgnoreCase.js.map +1 -1
  114. package/dist/cjs/condition/string/StringNotLike.d.ts.map +1 -1
  115. package/dist/cjs/condition/string/StringNotLike.js +25 -3
  116. package/dist/cjs/condition/string/StringNotLike.js.map +1 -1
  117. package/dist/cjs/core_engine/coreSimulatorEngine.d.ts +10 -7
  118. package/dist/cjs/core_engine/coreSimulatorEngine.d.ts.map +1 -1
  119. package/dist/cjs/core_engine/coreSimulatorEngine.js +148 -28
  120. package/dist/cjs/core_engine/coreSimulatorEngine.js.map +1 -1
  121. package/dist/cjs/evaluate.d.ts +47 -0
  122. package/dist/cjs/evaluate.d.ts.map +1 -1
  123. package/dist/cjs/explain/displayExplainCli.d.ts +3 -0
  124. package/dist/cjs/explain/displayExplainCli.d.ts.map +1 -0
  125. package/dist/cjs/explain/displayExplainCli.js +249 -0
  126. package/dist/cjs/explain/displayExplainCli.js.map +1 -0
  127. package/dist/cjs/explain/statementExplain.d.ts +51 -0
  128. package/dist/cjs/explain/statementExplain.d.ts.map +1 -0
  129. package/dist/cjs/explain/statementExplain.js +7 -0
  130. package/dist/cjs/explain/statementExplain.js.map +1 -0
  131. package/dist/cjs/index.d.ts +1 -0
  132. package/dist/cjs/index.d.ts.map +1 -1
  133. package/dist/cjs/index.js.map +1 -1
  134. package/dist/cjs/principal/principal.d.ts +28 -6
  135. package/dist/cjs/principal/principal.d.ts.map +1 -1
  136. package/dist/cjs/principal/principal.js +146 -40
  137. package/dist/cjs/principal/principal.js.map +1 -1
  138. package/dist/cjs/resource/resource.d.ts +13 -3
  139. package/dist/cjs/resource/resource.d.ts.map +1 -1
  140. package/dist/cjs/resource/resource.js +68 -15
  141. package/dist/cjs/resource/resource.js.map +1 -1
  142. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts +2 -34
  143. package/dist/cjs/services/DefaultServiceAuthorizer.d.ts.map +1 -1
  144. package/dist/cjs/services/DefaultServiceAuthorizer.js +95 -131
  145. package/dist/cjs/services/DefaultServiceAuthorizer.js.map +1 -1
  146. package/dist/cjs/services/ServiceAuthorizer.d.ts +6 -7
  147. package/dist/cjs/services/ServiceAuthorizer.d.ts.map +1 -1
  148. package/dist/cjs/simulation_engine/simulation.d.ts +4 -0
  149. package/dist/cjs/simulation_engine/simulation.d.ts.map +1 -1
  150. package/dist/cjs/simulation_engine/simulationEngine.d.ts +2 -4
  151. package/dist/cjs/simulation_engine/simulationEngine.d.ts.map +1 -1
  152. package/dist/cjs/simulation_engine/simulationEngine.js +16 -4
  153. package/dist/cjs/simulation_engine/simulationEngine.js.map +1 -1
  154. package/dist/cjs/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -1
  155. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js +5 -2
  156. package/dist/cjs/simulation_engine/unsafeSimulationEngine.js.map +1 -1
  157. package/dist/cjs/util.d.ts +31 -3
  158. package/dist/cjs/util.d.ts.map +1 -1
  159. package/dist/cjs/util.js +74 -32
  160. package/dist/cjs/util.js.map +1 -1
  161. package/dist/esm/StatementAnalysis.d.ts +14 -0
  162. package/dist/esm/StatementAnalysis.d.ts.map +1 -1
  163. package/dist/esm/StatementAnalysis.js +48 -1
  164. package/dist/esm/StatementAnalysis.js.map +1 -1
  165. package/dist/esm/action/action.d.ts +13 -3
  166. package/dist/esm/action/action.d.ts.map +1 -1
  167. package/dist/esm/action/action.js +43 -21
  168. package/dist/esm/action/action.js.map +1 -1
  169. package/dist/esm/condition/BaseConditionOperator.d.ts +6 -1
  170. package/dist/esm/condition/BaseConditionOperator.d.ts.map +1 -1
  171. package/dist/esm/condition/arn/ArnEquals.d.ts.map +1 -1
  172. package/dist/esm/condition/arn/ArnEquals.js +2 -1
  173. package/dist/esm/condition/arn/ArnEquals.js.map +1 -1
  174. package/dist/esm/condition/arn/ArnLike.d.ts.map +1 -1
  175. package/dist/esm/condition/arn/ArnLike.js +8 -40
  176. package/dist/esm/condition/arn/ArnLike.js.map +1 -1
  177. package/dist/esm/condition/arn/ArnNotEquals.d.ts.map +1 -1
  178. package/dist/esm/condition/arn/ArnNotEquals.js +2 -1
  179. package/dist/esm/condition/arn/ArnNotEquals.js.map +1 -1
  180. package/dist/esm/condition/arn/ArnNotLike.d.ts.map +1 -1
  181. package/dist/esm/condition/arn/ArnNotLike.js +8 -3
  182. package/dist/esm/condition/arn/ArnNotLike.js.map +1 -1
  183. package/dist/esm/condition/arn/arn.d.ts +12 -0
  184. package/dist/esm/condition/arn/arn.d.ts.map +1 -0
  185. package/dist/esm/condition/arn/arn.js +65 -0
  186. package/dist/esm/condition/arn/arn.js.map +1 -0
  187. package/dist/esm/condition/baseConditionperatorTests.d.ts +7 -1
  188. package/dist/esm/condition/baseConditionperatorTests.d.ts.map +1 -1
  189. package/dist/esm/condition/baseConditionperatorTests.js +17 -1
  190. package/dist/esm/condition/baseConditionperatorTests.js.map +1 -1
  191. package/dist/esm/condition/binary/BinaryEquals.d.ts.map +1 -1
  192. package/dist/esm/condition/binary/BinaryEquals.js +14 -2
  193. package/dist/esm/condition/binary/BinaryEquals.js.map +1 -1
  194. package/dist/esm/condition/boolean/Bool.d.ts.map +1 -1
  195. package/dist/esm/condition/boolean/Bool.js +37 -8
  196. package/dist/esm/condition/boolean/Bool.js.map +1 -1
  197. package/dist/esm/condition/condition.d.ts +46 -3
  198. package/dist/esm/condition/condition.d.ts.map +1 -1
  199. package/dist/esm/condition/condition.js +239 -48
  200. package/dist/esm/condition/condition.js.map +1 -1
  201. package/dist/esm/condition/conditionUtil.d.ts +10 -0
  202. package/dist/esm/condition/conditionUtil.d.ts.map +1 -0
  203. package/dist/esm/condition/conditionUtil.js +13 -0
  204. package/dist/esm/condition/conditionUtil.js.map +1 -0
  205. package/dist/esm/condition/date/DateEquals.d.ts.map +1 -1
  206. package/dist/esm/condition/date/DateEquals.js +7 -2
  207. package/dist/esm/condition/date/DateEquals.js.map +1 -1
  208. package/dist/esm/condition/date/DateGreaterThan.d.ts.map +1 -1
  209. package/dist/esm/condition/date/DateGreaterThan.js +7 -2
  210. package/dist/esm/condition/date/DateGreaterThan.js.map +1 -1
  211. package/dist/esm/condition/date/DateGreaterThanEquals.d.ts.map +1 -1
  212. package/dist/esm/condition/date/DateGreaterThanEquals.js +7 -2
  213. package/dist/esm/condition/date/DateGreaterThanEquals.js.map +1 -1
  214. package/dist/esm/condition/date/DateLessThan.d.ts.map +1 -1
  215. package/dist/esm/condition/date/DateLessThan.js +7 -2
  216. package/dist/esm/condition/date/DateLessThan.js.map +1 -1
  217. package/dist/esm/condition/date/DateLessThanEquals.d.ts.map +1 -1
  218. package/dist/esm/condition/date/DateLessThanEquals.js +7 -2
  219. package/dist/esm/condition/date/DateLessThanEquals.js.map +1 -1
  220. package/dist/esm/condition/date/DateNotEquals.d.ts.map +1 -1
  221. package/dist/esm/condition/date/DateNotEquals.js +12 -19
  222. package/dist/esm/condition/date/DateNotEquals.js.map +1 -1
  223. package/dist/esm/condition/date/date.d.ts +2 -1
  224. package/dist/esm/condition/date/date.d.ts.map +1 -1
  225. package/dist/esm/condition/date/date.js +20 -5
  226. package/dist/esm/condition/date/date.js.map +1 -1
  227. package/dist/esm/condition/ipaddress/IpAddress.d.ts.map +1 -1
  228. package/dist/esm/condition/ipaddress/IpAddress.js +9 -16
  229. package/dist/esm/condition/ipaddress/IpAddress.js.map +1 -1
  230. package/dist/esm/condition/ipaddress/NotIpAddress.d.ts.map +1 -1
  231. package/dist/esm/condition/ipaddress/NotIpAddress.js +9 -20
  232. package/dist/esm/condition/ipaddress/NotIpAddress.js.map +1 -1
  233. package/dist/esm/condition/ipaddress/ip.d.ts +10 -0
  234. package/dist/esm/condition/ipaddress/ip.d.ts.map +1 -0
  235. package/dist/esm/condition/ipaddress/ip.js +54 -0
  236. package/dist/esm/condition/ipaddress/ip.js.map +1 -0
  237. package/dist/esm/condition/numeric/NumericEquals.d.ts.map +1 -1
  238. package/dist/esm/condition/numeric/NumericEquals.js +7 -2
  239. package/dist/esm/condition/numeric/NumericEquals.js.map +1 -1
  240. package/dist/esm/condition/numeric/NumericGreaterThan.d.ts.map +1 -1
  241. package/dist/esm/condition/numeric/NumericGreaterThan.js +7 -2
  242. package/dist/esm/condition/numeric/NumericGreaterThan.js.map +1 -1
  243. package/dist/esm/condition/numeric/NumericGreaterThanEquals.d.ts.map +1 -1
  244. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js +7 -2
  245. package/dist/esm/condition/numeric/NumericGreaterThanEquals.js.map +1 -1
  246. package/dist/esm/condition/numeric/NumericLessThan.d.ts.map +1 -1
  247. package/dist/esm/condition/numeric/NumericLessThan.js +7 -2
  248. package/dist/esm/condition/numeric/NumericLessThan.js.map +1 -1
  249. package/dist/esm/condition/numeric/NumericLessThanEquals.d.ts.map +1 -1
  250. package/dist/esm/condition/numeric/NumericLessThanEquals.js +7 -2
  251. package/dist/esm/condition/numeric/NumericLessThanEquals.js.map +1 -1
  252. package/dist/esm/condition/numeric/NumericNotEquals.d.ts.map +1 -1
  253. package/dist/esm/condition/numeric/NumericNotEquals.js +12 -19
  254. package/dist/esm/condition/numeric/NumericNotEquals.js.map +1 -1
  255. package/dist/esm/condition/numeric/numeric.d.ts +2 -1
  256. package/dist/esm/condition/numeric/numeric.d.ts.map +1 -1
  257. package/dist/esm/condition/numeric/numeric.js +18 -3
  258. package/dist/esm/condition/numeric/numeric.js.map +1 -1
  259. package/dist/esm/condition/string/StringEquals.d.ts.map +1 -1
  260. package/dist/esm/condition/string/StringEquals.js +25 -4
  261. package/dist/esm/condition/string/StringEquals.js.map +1 -1
  262. package/dist/esm/condition/string/StringEqualsIgnoreCase.d.ts.map +1 -1
  263. package/dist/esm/condition/string/StringEqualsIgnoreCase.js +24 -6
  264. package/dist/esm/condition/string/StringEqualsIgnoreCase.js.map +1 -1
  265. package/dist/esm/condition/string/StringLike.d.ts.map +1 -1
  266. package/dist/esm/condition/string/StringLike.js +25 -4
  267. package/dist/esm/condition/string/StringLike.js.map +1 -1
  268. package/dist/esm/condition/string/StringNotEquals.d.ts.map +1 -1
  269. package/dist/esm/condition/string/StringNotEquals.js +25 -4
  270. package/dist/esm/condition/string/StringNotEquals.js.map +1 -1
  271. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.d.ts.map +1 -1
  272. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js +25 -3
  273. package/dist/esm/condition/string/StringNotEqualsIgnoreCase.js.map +1 -1
  274. package/dist/esm/condition/string/StringNotLike.d.ts.map +1 -1
  275. package/dist/esm/condition/string/StringNotLike.js +25 -3
  276. package/dist/esm/condition/string/StringNotLike.js.map +1 -1
  277. package/dist/esm/core_engine/coreSimulatorEngine.d.ts +10 -7
  278. package/dist/esm/core_engine/coreSimulatorEngine.d.ts.map +1 -1
  279. package/dist/esm/core_engine/coreSimulatorEngine.js +147 -28
  280. package/dist/esm/core_engine/coreSimulatorEngine.js.map +1 -1
  281. package/dist/esm/evaluate.d.ts +47 -0
  282. package/dist/esm/evaluate.d.ts.map +1 -1
  283. package/dist/esm/explain/displayExplainCli.d.ts +3 -0
  284. package/dist/esm/explain/displayExplainCli.d.ts.map +1 -0
  285. package/dist/esm/explain/displayExplainCli.js +246 -0
  286. package/dist/esm/explain/displayExplainCli.js.map +1 -0
  287. package/dist/esm/explain/statementExplain.d.ts +51 -0
  288. package/dist/esm/explain/statementExplain.d.ts.map +1 -0
  289. package/dist/esm/explain/statementExplain.js +6 -0
  290. package/dist/esm/explain/statementExplain.js.map +1 -0
  291. package/dist/esm/index.d.ts +1 -0
  292. package/dist/esm/index.d.ts.map +1 -1
  293. package/dist/esm/index.js.map +1 -1
  294. package/dist/esm/principal/principal.d.ts +28 -6
  295. package/dist/esm/principal/principal.d.ts.map +1 -1
  296. package/dist/esm/principal/principal.js +144 -38
  297. package/dist/esm/principal/principal.js.map +1 -1
  298. package/dist/esm/resource/resource.d.ts +13 -3
  299. package/dist/esm/resource/resource.d.ts.map +1 -1
  300. package/dist/esm/resource/resource.js +69 -16
  301. package/dist/esm/resource/resource.js.map +1 -1
  302. package/dist/esm/services/DefaultServiceAuthorizer.d.ts +2 -34
  303. package/dist/esm/services/DefaultServiceAuthorizer.d.ts.map +1 -1
  304. package/dist/esm/services/DefaultServiceAuthorizer.js +95 -131
  305. package/dist/esm/services/DefaultServiceAuthorizer.js.map +1 -1
  306. package/dist/esm/services/ServiceAuthorizer.d.ts +6 -7
  307. package/dist/esm/services/ServiceAuthorizer.d.ts.map +1 -1
  308. package/dist/esm/simulation_engine/simulation.d.ts +4 -0
  309. package/dist/esm/simulation_engine/simulation.d.ts.map +1 -1
  310. package/dist/esm/simulation_engine/simulationEngine.d.ts +2 -4
  311. package/dist/esm/simulation_engine/simulationEngine.d.ts.map +1 -1
  312. package/dist/esm/simulation_engine/simulationEngine.js +16 -4
  313. package/dist/esm/simulation_engine/simulationEngine.js.map +1 -1
  314. package/dist/esm/simulation_engine/unsafeSimulationEngine.d.ts.map +1 -1
  315. package/dist/esm/simulation_engine/unsafeSimulationEngine.js +5 -2
  316. package/dist/esm/simulation_engine/unsafeSimulationEngine.js.map +1 -1
  317. package/dist/esm/util.d.ts +31 -3
  318. package/dist/esm/util.d.ts.map +1 -1
  319. package/dist/esm/util.js +70 -31
  320. package/dist/esm/util.js.map +1 -1
  321. package/package.json +2 -2
  322. package/dist/cjs/SCPAnalysis.d.ts +0 -6
  323. package/dist/cjs/SCPAnalysis.d.ts.map +0 -1
  324. package/dist/cjs/SCPAnalysis.js +0 -3
  325. package/dist/cjs/SCPAnalysis.js.map +0 -1
  326. package/dist/esm/SCPAnalysis.d.ts +0 -6
  327. package/dist/esm/SCPAnalysis.d.ts.map +0 -1
  328. package/dist/esm/SCPAnalysis.js +0 -2
  329. package/dist/esm/SCPAnalysis.js.map +0 -1
@@ -2,6 +2,7 @@ export { typeForContextKey } from './context_keys/contextKeys.js';
2
2
  export { BaseConditionKeyType, isConditionKeyArray, type ConditionKeyType } from './context_keys/contextKeyTypes.js';
3
3
  export { findContextKeys } from './context_keys/findContextKeys.js';
4
4
  export { type EvaluationResult } from './evaluate.js';
5
+ export type { ActionExplain, ConditionExplain, ConditionValueExplain, PrincipalExplain, ResourceExplain, StatementExplain } from './explain/statementExplain.js';
5
6
  export { allowedContextKeysForRequest } from './simulation_engine/contextKeys.js';
6
7
  export { type Simulation } from './simulation_engine/simulation.js';
7
8
  export { runSimulation } from './simulation_engine/simulationEngine.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjK,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAwB,mBAAmB,EAAyB,MAAM,mCAAmC,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAEpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAwB,mBAAmB,EAAyB,MAAM,mCAAmC,CAAC;AACrH,OAAO,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAGpE,OAAO,EAAE,4BAA4B,EAAE,MAAM,oCAAoC,CAAC;AAElF,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAExE,OAAO,EAAE,mBAAmB,EAAE,MAAM,+CAA+C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { Principal, Statement } from "@cloud-copilot/iam-policy";
2
+ import { PrincipalExplain, StatementExplain } from "../explain/statementExplain.js";
2
3
  import { AwsRequest } from "../request/request.js";
3
- export type PrincipalMatchResult = 'Match' | 'NoMatch' | 'AccountLevelMatch';
4
+ export type PrincipalMatchResult = 'Match' | 'NoMatch' | 'AccountLevelMatch' | 'SessionRoleMatch' | 'SessionUserMatch';
4
5
  /**
5
6
  * Check to see if a request matches a Principal element in an IAM policy statement
6
7
  *
@@ -8,7 +9,10 @@ export type PrincipalMatchResult = 'Match' | 'NoMatch' | 'AccountLevelMatch';
8
9
  * @param principal the list of principals in the Principal element of the Statement
9
10
  * @returns if the request matches the Principal element, and if so, how it matches
10
11
  */
11
- export declare function requestMatchesPrincipal(request: AwsRequest, principal: Principal[]): PrincipalMatchResult;
12
+ export declare function requestMatchesPrincipal(request: AwsRequest, principal: Principal[]): {
13
+ matches: PrincipalMatchResult;
14
+ explains: PrincipalExplain[];
15
+ };
12
16
  /**
13
17
  * Check to see if a request matches a NotPrincipal element in an IAM policy statement
14
18
  *
@@ -16,7 +20,10 @@ export declare function requestMatchesPrincipal(request: AwsRequest, principal:
16
20
  * @param notPrincipal the list of principals in the NotPrincipal element of the Statement
17
21
  * @returns
18
22
  */
19
- export declare function requestMatchesNotPrincipal(request: AwsRequest, notPrincipal: Principal[]): PrincipalMatchResult;
23
+ export declare function requestMatchesNotPrincipal(request: AwsRequest, notPrincipal: Principal[]): {
24
+ matches: PrincipalMatchResult;
25
+ explains: PrincipalExplain[];
26
+ };
20
27
  /**
21
28
  * Check to see if a request matches a principal statement
22
29
  *
@@ -24,9 +31,21 @@ export declare function requestMatchesNotPrincipal(request: AwsRequest, notPrinc
24
31
  * @param principalStatement the principal statement to check the request against
25
32
  * @returns if the request matches the principal statement, and if so, how it matches
26
33
  */
27
- export declare function requestMatchesPrincipalStatement(request: AwsRequest, principalStatement: Principal): PrincipalMatchResult;
28
- export declare function isAssumedRoleArn(principal: string): boolean;
34
+ export declare function requestMatchesPrincipalStatement(request: AwsRequest, principalStatement: Principal): PrincipalExplain;
35
+ /**
36
+ * Transfrom an assumed role session ARN into a role ARN
37
+ *
38
+ * @param assumedRoleArn the assumed role session ARN
39
+ * @returns the role ARN for the assumed role session
40
+ */
29
41
  export declare function roleArnFromAssumedRoleArn(assumedRoleArn: string): string;
42
+ /**
43
+ * Get a user ARN from a federated user ARN
44
+ *
45
+ * @param federatedUserArn the federated user ARN
46
+ * @returns the user ARN for the federated user ARN
47
+ */
48
+ export declare function userArnFromFederatedUserArn(federatedUserArn: string): string;
30
49
  /**
31
50
  * Check if a request matches the Resource or NotResource elements of a statement.
32
51
  *
@@ -34,5 +53,8 @@ export declare function roleArnFromAssumedRoleArn(assumedRoleArn: string): strin
34
53
  * @param statement the statement to check against
35
54
  * @returns true if the request matches the resources in the statement, false otherwise
36
55
  */
37
- export declare function requestMatchesStatementPrincipals(request: AwsRequest, statement: Statement): PrincipalMatchResult;
56
+ export declare function requestMatchesStatementPrincipals(request: AwsRequest, statement: Statement): {
57
+ matches: PrincipalMatchResult;
58
+ details: Pick<StatementExplain, 'principals' | 'notPrincipals'>;
59
+ };
38
60
  //# sourceMappingURL=principal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../src/principal/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA4CnD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,mBAAmB,CAAA;AAE5E;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAWzG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG,oBAAoB,CAiB/G;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,GAAG,oBAAoB,CAgDzH;AAID,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE3D;AAED,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,oBAAoB,CAOjH"}
1
+ {"version":3,"file":"principal.d.ts","sourceRoot":"","sources":["../../../src/principal/principal.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AA6CnD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,kBAAkB,CAAA;AAEtH;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG;IAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAC,CAkClJ;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,GAAG;IAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAA;CAAC,CAyCxJ;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,GAAG,gBAAgB,CA+FrH;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAKxE;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAK5E;AAGD;;;;;;GAMG;AACH,wBAAgB,iCAAiC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG;IAAC,OAAO,EAAE,oBAAoB,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,eAAe,CAAC,CAAA;CAAC,CAS7L"}
@@ -1,3 +1,4 @@
1
+ import { isAssumedRoleArn, isFederatedUserArn } from "../util.js";
1
2
  /**
2
3
  * Check to see if a request matches a Principal element in an IAM policy statement
3
4
  *
@@ -6,14 +7,35 @@
6
7
  * @returns if the request matches the Principal element, and if so, how it matches
7
8
  */
8
9
  export function requestMatchesPrincipal(request, principal) {
9
- const matches = principal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement));
10
- if (matches.includes('Match')) {
11
- return 'Match';
10
+ const explains = principal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement));
11
+ if (explains.some(exp => exp.matches === 'Match')) {
12
+ return {
13
+ matches: 'Match',
14
+ explains
15
+ };
12
16
  }
13
- if (matches.includes('AccountLevelMatch')) {
14
- return 'AccountLevelMatch';
17
+ if (explains.some(exp => exp.matches === 'SessionUserMatch')) {
18
+ return {
19
+ matches: 'SessionUserMatch',
20
+ explains
21
+ };
15
22
  }
16
- return 'NoMatch';
23
+ if (explains.some(exp => exp.matches === 'SessionRoleMatch')) {
24
+ return {
25
+ matches: 'SessionRoleMatch',
26
+ explains
27
+ };
28
+ }
29
+ if (explains.some(exp => exp.matches === 'AccountLevelMatch')) {
30
+ return {
31
+ matches: 'AccountLevelMatch',
32
+ explains
33
+ };
34
+ }
35
+ return {
36
+ matches: 'NoMatch',
37
+ explains
38
+ };
17
39
  }
18
40
  /**
19
41
  * Check to see if a request matches a NotPrincipal element in an IAM policy statement
@@ -23,20 +45,40 @@ export function requestMatchesPrincipal(request, principal) {
23
45
  * @returns
24
46
  */
25
47
  export function requestMatchesNotPrincipal(request, notPrincipal) {
26
- const matches = notPrincipal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement));
27
- if (matches.includes('Match')) {
28
- return 'NoMatch';
29
- }
30
- /**
31
- * Need to do research on this. If there is an account level match on a NotPrincipal, does that
32
- * mean it tentatively matches the NotPrincipal, or does it mean it does not match the NotPrincipal?
33
- *
34
- * We need to test this.
35
- */
36
- if (matches.includes('AccountLevelMatch')) {
37
- return 'NoMatch';
48
+ // const matches = notPrincipal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement))
49
+ const explains = notPrincipal.map(principalStatement => {
50
+ const explain = requestMatchesPrincipalStatement(request, principalStatement);
51
+ /**
52
+ * Need to do research on this. If there is an account level match on a NotPrincipal, does that
53
+ * mean it tentatively matches the NotPrincipal, or does it mean it does not match the NotPrincipal?
54
+ *
55
+ * We need to test this.
56
+ */
57
+ if (explain.matches === 'Match' || explain.matches === 'AccountLevelMatch' || explain.matches === 'SessionRoleMatch' || explain.matches === 'SessionUserMatch') {
58
+ explain.matches = 'NoMatch';
59
+ }
60
+ else {
61
+ explain.matches = 'Match';
62
+ }
63
+ return explain;
64
+ });
65
+ if (explains.some(exp => exp.matches === 'NoMatch')) {
66
+ return {
67
+ matches: 'NoMatch',
68
+ explains
69
+ };
38
70
  }
39
- return 'Match';
71
+ return {
72
+ matches: 'Match',
73
+ explains
74
+ };
75
+ // if(matches.includes('Match')) {
76
+ // return 'NoMatch'
77
+ // }
78
+ // if(matches.includes('AccountLevelMatch')) {
79
+ // return 'NoMatch'
80
+ // }
81
+ // return 'Match'
40
82
  }
41
83
  /**
42
84
  * Check to see if a request matches a principal statement
@@ -48,55 +90,117 @@ export function requestMatchesNotPrincipal(request, notPrincipal) {
48
90
  export function requestMatchesPrincipalStatement(request, principalStatement) {
49
91
  if (principalStatement.isServicePrincipal()) {
50
92
  if (principalStatement.service() === request.principal.value()) {
51
- return 'Match';
93
+ return {
94
+ matches: 'Match',
95
+ principal: principalStatement.value(),
96
+ };
52
97
  }
53
- return 'NoMatch';
98
+ return {
99
+ matches: 'NoMatch',
100
+ principal: principalStatement.value(),
101
+ };
54
102
  }
55
103
  if (principalStatement.isCanonicalUserPrincipal()) {
56
104
  if (principalStatement.canonicalUser() === request.principal.value()) {
57
- return 'Match';
105
+ return {
106
+ matches: 'Match',
107
+ principal: principalStatement.value(),
108
+ };
58
109
  }
59
- return 'NoMatch';
110
+ return {
111
+ matches: 'NoMatch',
112
+ principal: principalStatement.value(),
113
+ };
60
114
  }
61
115
  if (principalStatement.isFederatedPrincipal()) {
62
116
  if (principalStatement.federated() === request.principal.value()) {
63
- return 'Match';
117
+ return {
118
+ matches: 'Match',
119
+ principal: principalStatement.value(),
120
+ };
64
121
  }
65
- return 'NoMatch';
122
+ return {
123
+ matches: 'NoMatch',
124
+ principal: principalStatement.value(),
125
+ };
66
126
  }
67
127
  if (principalStatement.isWildcardPrincipal()) {
68
- return 'Match';
128
+ return {
129
+ matches: 'Match',
130
+ principal: principalStatement.value(),
131
+ };
69
132
  }
70
133
  if (principalStatement.isAccountPrincipal()) {
71
134
  if (principalStatement.accountId() === request.principal.accountId()) {
72
- return 'AccountLevelMatch';
135
+ return {
136
+ matches: 'AccountLevelMatch',
137
+ principal: principalStatement.value(),
138
+ };
73
139
  }
74
- return 'NoMatch';
140
+ return {
141
+ matches: 'NoMatch',
142
+ principal: principalStatement.value(),
143
+ };
75
144
  }
76
145
  if (principalStatement.isAwsPrincipal()) {
77
146
  if (isAssumedRoleArn(request.principal.value())) {
78
147
  const sessionArn = request.principal.value();
79
148
  const roleArn = roleArnFromAssumedRoleArn(sessionArn);
80
- if (principalStatement.arn() === roleArn || principalStatement.arn() === sessionArn) {
81
- return 'Match';
149
+ if (principalStatement.arn() === roleArn) {
150
+ return {
151
+ matches: 'SessionRoleMatch',
152
+ principal: principalStatement.value(),
153
+ roleForSessionArn: roleArn,
154
+ };
155
+ }
156
+ }
157
+ else if (isFederatedUserArn(request.principal.value())) {
158
+ const sessionArn = request.principal.value();
159
+ const userArn = userArnFromFederatedUserArn(sessionArn);
160
+ if (principalStatement.arn() === userArn) {
161
+ return {
162
+ matches: 'SessionUserMatch',
163
+ principal: principalStatement.value(),
164
+ userForSessionArn: userArn,
165
+ };
82
166
  }
83
167
  }
84
168
  if (principalStatement.arn() === request.principal.value()) {
85
- return 'Match';
169
+ return {
170
+ matches: 'Match',
171
+ principal: principalStatement.value()
172
+ };
86
173
  }
87
174
  }
88
- return 'NoMatch';
89
- }
90
- const assumedRoleArnRegex = /^arn:aws:sts::\d{12}:assumed-role\/.*$/;
91
- export function isAssumedRoleArn(principal) {
92
- return assumedRoleArnRegex.test(principal);
175
+ return {
176
+ matches: 'NoMatch',
177
+ principal: principalStatement.value(),
178
+ };
93
179
  }
180
+ /**
181
+ * Transfrom an assumed role session ARN into a role ARN
182
+ *
183
+ * @param assumedRoleArn the assumed role session ARN
184
+ * @returns the role ARN for the assumed role session
185
+ */
94
186
  export function roleArnFromAssumedRoleArn(assumedRoleArn) {
95
187
  const stsParts = assumedRoleArn.split(':');
96
188
  const resourceParts = stsParts.at(-1).split('/');
97
189
  const rolePathAndName = resourceParts.slice(1, -1).join('/');
98
190
  return `arn:aws:iam::${stsParts[4]}:role/${rolePathAndName}`;
99
191
  }
192
+ /**
193
+ * Get a user ARN from a federated user ARN
194
+ *
195
+ * @param federatedUserArn the federated user ARN
196
+ * @returns the user ARN for the federated user ARN
197
+ */
198
+ export function userArnFromFederatedUserArn(federatedUserArn) {
199
+ const stsParts = federatedUserArn.split(':');
200
+ const resource = stsParts.at(-1);
201
+ const username = resource.slice(resource.indexOf('/') + 1);
202
+ return `arn:aws:iam::${stsParts[4]}:user/${username}`;
203
+ }
100
204
  /**
101
205
  * Check if a request matches the Resource or NotResource elements of a statement.
102
206
  *
@@ -106,10 +210,12 @@ export function roleArnFromAssumedRoleArn(assumedRoleArn) {
106
210
  */
107
211
  export function requestMatchesStatementPrincipals(request, statement) {
108
212
  if (statement.isPrincipalStatement()) {
109
- return requestMatchesPrincipal(request, statement.principals());
213
+ const { matches, explains } = requestMatchesPrincipal(request, statement.principals());
214
+ return { matches, details: { principals: explains } };
110
215
  }
111
216
  else if (statement.isNotPrincipalStatement()) {
112
- return requestMatchesNotPrincipal(request, statement.notPrincipals());
217
+ const { matches, explains } = requestMatchesNotPrincipal(request, statement.notPrincipals());
218
+ return { matches, details: { notPrincipals: explains } };
113
219
  }
114
220
  throw new Error('Statement should have Principal or NotPrincipal');
115
221
  }
@@ -1 +1 @@
1
- {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principal/principal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"principal.js","sourceRoot":"","sources":["../../../src/principal/principal.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import { Resource, Statement } from "@cloud-copilot/iam-policy";
2
+ import { ResourceExplain, StatementExplain } from "../explain/statementExplain.js";
2
3
  import { AwsRequest } from "../request/request.js";
3
4
  /**
4
5
  * Check if a request matches the Resource or NotResource elements of a statement.
@@ -7,7 +8,10 @@ import { AwsRequest } from "../request/request.js";
7
8
  * @param statement the statement to check against
8
9
  * @returns true if the request matches the resources in the statement, false otherwise
9
10
  */
10
- export declare function requestMatchesStatementResources(request: AwsRequest, statement: Statement): boolean;
11
+ export declare function requestMatchesStatementResources(request: AwsRequest, statement: Statement): {
12
+ matches: boolean;
13
+ details: Pick<StatementExplain, 'resources' | 'notResources'>;
14
+ };
11
15
  /**
12
16
  * Check if a request matches a set of resources.
13
17
  *
@@ -15,7 +19,10 @@ export declare function requestMatchesStatementResources(request: AwsRequest, st
15
19
  * @param policyResources the resources to check against
16
20
  * @returns true if the request matches any of the resources, false otherwise
17
21
  */
18
- export declare function requestMatchesResources(request: AwsRequest, policyResources: Resource[]): boolean;
22
+ export declare function requestMatchesResources(request: AwsRequest, policyResources: Resource[]): {
23
+ matches: boolean;
24
+ explains: ResourceExplain[];
25
+ };
19
26
  /**
20
27
  * Check if a request matches a NotResource element in a policy.
21
28
  *
@@ -23,5 +30,8 @@ export declare function requestMatchesResources(request: AwsRequest, policyResou
23
30
  * @param policyResources the resources to check against
24
31
  * @returns true if the request does not match any of the resources, false otherwise
25
32
  */
26
- export declare function requestMatchesNotResources(request: AwsRequest, policyResources: Resource[]): boolean;
33
+ export declare function requestMatchesNotResources(request: AwsRequest, policyResources: Resource[]): {
34
+ matches: boolean;
35
+ explains: ResourceExplain[];
36
+ };
27
37
  //# sourceMappingURL=resource.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/resource/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAmBnD;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAOnG;AAGD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,OAAO,CAEjG;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,OAAO,CAEpG"}
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../src/resource/resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACnF,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAmBnD;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,WAAW,GAAG,cAAc,CAAC,CAAA;CAAC,CAiB7K;AAGD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;CAAC,CAIzI;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,eAAe,EAAE,CAAA;CAAC,CAQ5I"}
@@ -1,4 +1,4 @@
1
- import { convertIamStringToRegex, getResourceSegments } from "../util.js";
1
+ import { convertIamString, getResourceSegments } from "../util.js";
2
2
  //TODO: Make a check to see if the action is a wildcard only action. This will have to happen outside of these functions.
3
3
  /**
4
4
  * Convert a resource segment to a regular expression. This is without variables.
@@ -22,12 +22,22 @@ function convertResourceSegmentToRegex(segment) {
22
22
  */
23
23
  export function requestMatchesStatementResources(request, statement) {
24
24
  if (statement.isResourceStatement()) {
25
- return requestMatchesResources(request, statement.resources());
25
+ const { matches, explains } = requestMatchesResources(request, statement.resources());
26
+ if (!statement.resourceIsArray()) {
27
+ return { matches, details: { resources: explains[0] } };
28
+ }
29
+ return { matches, details: { resources: explains } };
30
+ // return requestMatchesResources(request, statement.resources());
26
31
  }
27
32
  else if (statement.isNotResourceStatement()) {
28
- return requestMatchesNotResources(request, statement.notResources());
33
+ const { matches, explains } = requestMatchesNotResources(request, statement.notResources());
34
+ if (!statement.notResourceIsArray()) {
35
+ return { matches, details: { notResources: explains[0] } };
36
+ }
37
+ return { matches, details: { notResources: explains } };
38
+ // return requestMatchesNotResources(request, statement.notResources());
29
39
  }
30
- return true;
40
+ return { matches: true, details: {} };
31
41
  }
32
42
  /**
33
43
  * Check if a request matches a set of resources.
@@ -37,7 +47,9 @@ export function requestMatchesStatementResources(request, statement) {
37
47
  * @returns true if the request matches any of the resources, false otherwise
38
48
  */
39
49
  export function requestMatchesResources(request, policyResources) {
40
- return policyResources.some(policyResource => singleResourceMatchesRequest(request, policyResource));
50
+ const explains = policyResources.map(policyResource => singleResourceMatchesRequest(request, policyResource));
51
+ const matches = explains.some(explain => explain.matches);
52
+ return { matches, explains };
41
53
  }
42
54
  /**
43
55
  * Check if a request matches a NotResource element in a policy.
@@ -47,7 +59,13 @@ export function requestMatchesResources(request, policyResources) {
47
59
  * @returns true if the request does not match any of the resources, false otherwise
48
60
  */
49
61
  export function requestMatchesNotResources(request, policyResources) {
50
- return !requestMatchesResources(request, policyResources);
62
+ const explains = policyResources.map(policyResource => {
63
+ const explain = singleResourceMatchesRequest(request, policyResource);
64
+ explain.matches = !explain.matches;
65
+ return explain;
66
+ });
67
+ const matches = !explains.some(explain => !explain.matches);
68
+ return { matches, explains };
51
69
  }
52
70
  /**
53
71
  * Check if a single resource matches a request.
@@ -58,35 +76,70 @@ export function requestMatchesNotResources(request, policyResources) {
58
76
  */
59
77
  function singleResourceMatchesRequest(request, policyResource) {
60
78
  if (policyResource.isAllResources()) {
61
- return true;
79
+ return {
80
+ resource: policyResource.value(),
81
+ matches: true,
82
+ };
62
83
  }
63
84
  else if (policyResource.isArnResource()) {
64
85
  if (!request.resource) {
65
- return false;
86
+ return {
87
+ resource: policyResource.value(),
88
+ matches: false,
89
+ errors: ['Request does not have a resource'],
90
+ };
66
91
  }
67
92
  const resource = request.resource;
68
93
  if (!convertResourceSegmentToRegex(policyResource.partition()).test(resource.partition())) {
69
- return false;
94
+ return {
95
+ resource: policyResource.value(),
96
+ matches: false,
97
+ errors: ['Partition does not match'],
98
+ };
70
99
  }
71
100
  if (!convertResourceSegmentToRegex(policyResource.service()).test(resource.service())) {
72
- return false;
101
+ return {
102
+ resource: policyResource.value(),
103
+ matches: false,
104
+ errors: ['Service does not match'],
105
+ };
73
106
  }
74
107
  if (!convertResourceSegmentToRegex(policyResource.region()).test(resource.region())) {
75
- return false;
108
+ return {
109
+ resource: policyResource.value(),
110
+ matches: false,
111
+ errors: ['Region does not match'],
112
+ };
76
113
  }
77
114
  if (!convertResourceSegmentToRegex(policyResource.account()).test(resource.account())) {
78
- return false;
115
+ return {
116
+ resource: policyResource.value(),
117
+ matches: false,
118
+ errors: ['Account does not match'],
119
+ };
79
120
  }
80
121
  //Wildcards and variables are not allowed in the product segment https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html "Incorrect wildcard usage"
81
122
  const [policyProduct, policyResourceId] = getResourceSegments(policyResource.resource());
82
123
  if (!resource.resource().startsWith(policyProduct)) {
83
- return false;
124
+ return {
125
+ resource: policyResource.value(),
126
+ matches: false,
127
+ errors: ['Product does not match'],
128
+ };
84
129
  }
85
130
  const requestResourceId = resource.resource().slice(policyProduct.length);
86
- if (!convertIamStringToRegex(policyResourceId, request).test(requestResourceId)) {
87
- return false;
131
+ const { pattern, errors } = convertIamString(policyResourceId, request);
132
+ if (!pattern.test(requestResourceId)) {
133
+ return {
134
+ resource: policyResource.value(),
135
+ matches: false,
136
+ errors: ['Resource does not match'],
137
+ };
88
138
  }
89
- return true;
139
+ return {
140
+ resource: policyResource.value(),
141
+ matches: true,
142
+ };
90
143
  }
91
144
  else {
92
145
  throw new Error('Unknown resource type');
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resource/resource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../src/resource/resource.ts"],"names":[],"mappings":"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"}
@@ -1,41 +1,9 @@
1
- import { EvaluationResult, ResourceEvaluationResult } from "../evaluate.js";
2
- import { StatementAnalysis } from "../StatementAnalysis.js";
1
+ import { RequestAnalysis } from "../evaluate.js";
3
2
  import { ServiceAuthorizationRequest, ServiceAuthorizer } from "./ServiceAuthorizer.js";
4
3
  /**
5
4
  * The default authorizer for services.
6
5
  */
7
6
  export declare class DefaultServiceAuthorizer implements ServiceAuthorizer {
8
- authorize(request: ServiceAuthorizationRequest): EvaluationResult;
9
- /**
10
- * Determine the result of the SCP analysis.
11
- *
12
- * @param request The request to authorize.
13
- * @returns The result of the SCP analysis.
14
- */
15
- serviceControlPolicyResult(request: ServiceAuthorizationRequest): EvaluationResult;
16
- /**
17
- * Evaluate the identity statements to determine the result.
18
- *
19
- * @param request The request to authorize.
20
- * @returns The result of the identity statement analysis.
21
- */
22
- identityStatementResult(request: ServiceAuthorizationRequest): EvaluationResult;
23
- /**
24
- * Evaluate the resource policy to determine the result.
25
- *
26
- * @param request the request to authorize
27
- * @returns the result of the resource policy analysis
28
- */
29
- resourcePolicyResult(request: ServiceAuthorizationRequest): ResourceEvaluationResult;
30
- /**
31
- * Checks if a statement is an identity statement that allows the request.
32
- *
33
- * @param statement The statement to check.
34
- * @returns Whether the statement is an identity statement that allows the request.
35
- */
36
- identityStatementAllows(statement: StatementAnalysis): boolean;
37
- identityStatementUknownAllow(statement: StatementAnalysis): boolean;
38
- identityStatementUknownDeny(statement: StatementAnalysis): boolean;
39
- identityStatementExplicitDeny(statement: StatementAnalysis): boolean;
7
+ authorize(request: ServiceAuthorizationRequest): RequestAnalysis;
40
8
  }
41
9
  //# sourceMappingURL=DefaultServiceAuthorizer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAExF;;GAEG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IACzD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,gBAAgB;IAiDxE;;;;;OAKG;IACI,0BAA0B,CAAC,OAAO,EAAE,2BAA2B,GAAG,gBAAgB;IAwBzF;;;;;OAKG;IACI,uBAAuB,CAAC,OAAO,EAAE,2BAA2B,GAAG,gBAAgB;IAoBtF;;;;;OAKG;IACI,oBAAoB,CAAC,OAAO,EAAE,2BAA2B,GAAG,wBAAwB;IAyB3F;;;;;OAKG;IACI,uBAAuB,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAU9D,4BAA4B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAUnE,2BAA2B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAUlE,6BAA6B,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;CAS5E"}
1
+ {"version":3,"file":"DefaultServiceAuthorizer.d.ts","sourceRoot":"","sources":["../../../src/services/DefaultServiceAuthorizer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAExF;;GAEG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IACzD,SAAS,CAAC,OAAO,EAAE,2BAA2B,GAAG,eAAe;CAoIxE"}