@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
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /*
4
+ I want to emit the policy object exactly as it was written. How do I get a structure
5
+ that matches the policy object exactly? Should I just embed the values in the explain?
6
+ */
7
+ //# sourceMappingURL=statementExplain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statementExplain.js","sourceRoot":"","sources":["../../../src/explain/statementExplain.ts"],"names":[],"mappings":";;AA+DA;;;EAGE"}
@@ -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,gEAAkE;AAAzD,mHAAA,iBAAiB,OAAA;AAC1B,wEAAqH;AAAtF,yHAAA,mBAAmB,OAAA;AAClD,wEAAoE;AAA3D,qHAAA,eAAe,OAAA;AAExB,qEAAkF;AAAzE,8HAAA,4BAA4B,OAAA;AAErC,+EAAwE;AAA/D,oHAAA,aAAa,OAAA;AAEtB,2FAAoF;AAA3E,gIAAA,mBAAmB,OAAA;AAC5B,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,gEAAkE;AAAzD,mHAAA,iBAAiB,OAAA;AAC1B,wEAAqH;AAAtF,yHAAA,mBAAmB,OAAA;AAClD,wEAAoE;AAA3D,qHAAA,eAAe,OAAA;AAGxB,qEAAkF;AAAzE,8HAAA,4BAA4B,OAAA;AAErC,+EAAwE;AAA/D,oHAAA,aAAa,OAAA;AAEtB,2FAAoF;AAA3E,gIAAA,mBAAmB,OAAA;AAC5B,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA"}
@@ -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"}
@@ -3,9 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.requestMatchesPrincipal = requestMatchesPrincipal;
4
4
  exports.requestMatchesNotPrincipal = requestMatchesNotPrincipal;
5
5
  exports.requestMatchesPrincipalStatement = requestMatchesPrincipalStatement;
6
- exports.isAssumedRoleArn = isAssumedRoleArn;
7
6
  exports.roleArnFromAssumedRoleArn = roleArnFromAssumedRoleArn;
7
+ exports.userArnFromFederatedUserArn = userArnFromFederatedUserArn;
8
8
  exports.requestMatchesStatementPrincipals = requestMatchesStatementPrincipals;
9
+ const util_js_1 = require("../util.js");
9
10
  /**
10
11
  * Check to see if a request matches a Principal element in an IAM policy statement
11
12
  *
@@ -14,14 +15,35 @@ exports.requestMatchesStatementPrincipals = requestMatchesStatementPrincipals;
14
15
  * @returns if the request matches the Principal element, and if so, how it matches
15
16
  */
16
17
  function requestMatchesPrincipal(request, principal) {
17
- const matches = principal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement));
18
- if (matches.includes('Match')) {
19
- return 'Match';
18
+ const explains = principal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement));
19
+ if (explains.some(exp => exp.matches === 'Match')) {
20
+ return {
21
+ matches: 'Match',
22
+ explains
23
+ };
20
24
  }
21
- if (matches.includes('AccountLevelMatch')) {
22
- return 'AccountLevelMatch';
25
+ if (explains.some(exp => exp.matches === 'SessionUserMatch')) {
26
+ return {
27
+ matches: 'SessionUserMatch',
28
+ explains
29
+ };
23
30
  }
24
- return 'NoMatch';
31
+ if (explains.some(exp => exp.matches === 'SessionRoleMatch')) {
32
+ return {
33
+ matches: 'SessionRoleMatch',
34
+ explains
35
+ };
36
+ }
37
+ if (explains.some(exp => exp.matches === 'AccountLevelMatch')) {
38
+ return {
39
+ matches: 'AccountLevelMatch',
40
+ explains
41
+ };
42
+ }
43
+ return {
44
+ matches: 'NoMatch',
45
+ explains
46
+ };
25
47
  }
26
48
  /**
27
49
  * Check to see if a request matches a NotPrincipal element in an IAM policy statement
@@ -31,20 +53,40 @@ function requestMatchesPrincipal(request, principal) {
31
53
  * @returns
32
54
  */
33
55
  function requestMatchesNotPrincipal(request, notPrincipal) {
34
- const matches = notPrincipal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement));
35
- if (matches.includes('Match')) {
36
- return 'NoMatch';
37
- }
38
- /**
39
- * Need to do research on this. If there is an account level match on a NotPrincipal, does that
40
- * mean it tentatively matches the NotPrincipal, or does it mean it does not match the NotPrincipal?
41
- *
42
- * We need to test this.
43
- */
44
- if (matches.includes('AccountLevelMatch')) {
45
- return 'NoMatch';
56
+ // const matches = notPrincipal.map(principalStatement => requestMatchesPrincipalStatement(request, principalStatement))
57
+ const explains = notPrincipal.map(principalStatement => {
58
+ const explain = requestMatchesPrincipalStatement(request, principalStatement);
59
+ /**
60
+ * Need to do research on this. If there is an account level match on a NotPrincipal, does that
61
+ * mean it tentatively matches the NotPrincipal, or does it mean it does not match the NotPrincipal?
62
+ *
63
+ * We need to test this.
64
+ */
65
+ if (explain.matches === 'Match' || explain.matches === 'AccountLevelMatch' || explain.matches === 'SessionRoleMatch' || explain.matches === 'SessionUserMatch') {
66
+ explain.matches = 'NoMatch';
67
+ }
68
+ else {
69
+ explain.matches = 'Match';
70
+ }
71
+ return explain;
72
+ });
73
+ if (explains.some(exp => exp.matches === 'NoMatch')) {
74
+ return {
75
+ matches: 'NoMatch',
76
+ explains
77
+ };
46
78
  }
47
- return 'Match';
79
+ return {
80
+ matches: 'Match',
81
+ explains
82
+ };
83
+ // if(matches.includes('Match')) {
84
+ // return 'NoMatch'
85
+ // }
86
+ // if(matches.includes('AccountLevelMatch')) {
87
+ // return 'NoMatch'
88
+ // }
89
+ // return 'Match'
48
90
  }
49
91
  /**
50
92
  * Check to see if a request matches a principal statement
@@ -56,55 +98,117 @@ function requestMatchesNotPrincipal(request, notPrincipal) {
56
98
  function requestMatchesPrincipalStatement(request, principalStatement) {
57
99
  if (principalStatement.isServicePrincipal()) {
58
100
  if (principalStatement.service() === request.principal.value()) {
59
- return 'Match';
101
+ return {
102
+ matches: 'Match',
103
+ principal: principalStatement.value(),
104
+ };
60
105
  }
61
- return 'NoMatch';
106
+ return {
107
+ matches: 'NoMatch',
108
+ principal: principalStatement.value(),
109
+ };
62
110
  }
63
111
  if (principalStatement.isCanonicalUserPrincipal()) {
64
112
  if (principalStatement.canonicalUser() === request.principal.value()) {
65
- return 'Match';
113
+ return {
114
+ matches: 'Match',
115
+ principal: principalStatement.value(),
116
+ };
66
117
  }
67
- return 'NoMatch';
118
+ return {
119
+ matches: 'NoMatch',
120
+ principal: principalStatement.value(),
121
+ };
68
122
  }
69
123
  if (principalStatement.isFederatedPrincipal()) {
70
124
  if (principalStatement.federated() === request.principal.value()) {
71
- return 'Match';
125
+ return {
126
+ matches: 'Match',
127
+ principal: principalStatement.value(),
128
+ };
72
129
  }
73
- return 'NoMatch';
130
+ return {
131
+ matches: 'NoMatch',
132
+ principal: principalStatement.value(),
133
+ };
74
134
  }
75
135
  if (principalStatement.isWildcardPrincipal()) {
76
- return 'Match';
136
+ return {
137
+ matches: 'Match',
138
+ principal: principalStatement.value(),
139
+ };
77
140
  }
78
141
  if (principalStatement.isAccountPrincipal()) {
79
142
  if (principalStatement.accountId() === request.principal.accountId()) {
80
- return 'AccountLevelMatch';
143
+ return {
144
+ matches: 'AccountLevelMatch',
145
+ principal: principalStatement.value(),
146
+ };
81
147
  }
82
- return 'NoMatch';
148
+ return {
149
+ matches: 'NoMatch',
150
+ principal: principalStatement.value(),
151
+ };
83
152
  }
84
153
  if (principalStatement.isAwsPrincipal()) {
85
- if (isAssumedRoleArn(request.principal.value())) {
154
+ if ((0, util_js_1.isAssumedRoleArn)(request.principal.value())) {
86
155
  const sessionArn = request.principal.value();
87
156
  const roleArn = roleArnFromAssumedRoleArn(sessionArn);
88
- if (principalStatement.arn() === roleArn || principalStatement.arn() === sessionArn) {
89
- return 'Match';
157
+ if (principalStatement.arn() === roleArn) {
158
+ return {
159
+ matches: 'SessionRoleMatch',
160
+ principal: principalStatement.value(),
161
+ roleForSessionArn: roleArn,
162
+ };
163
+ }
164
+ }
165
+ else if ((0, util_js_1.isFederatedUserArn)(request.principal.value())) {
166
+ const sessionArn = request.principal.value();
167
+ const userArn = userArnFromFederatedUserArn(sessionArn);
168
+ if (principalStatement.arn() === userArn) {
169
+ return {
170
+ matches: 'SessionUserMatch',
171
+ principal: principalStatement.value(),
172
+ userForSessionArn: userArn,
173
+ };
90
174
  }
91
175
  }
92
176
  if (principalStatement.arn() === request.principal.value()) {
93
- return 'Match';
177
+ return {
178
+ matches: 'Match',
179
+ principal: principalStatement.value()
180
+ };
94
181
  }
95
182
  }
96
- return 'NoMatch';
97
- }
98
- const assumedRoleArnRegex = /^arn:aws:sts::\d{12}:assumed-role\/.*$/;
99
- function isAssumedRoleArn(principal) {
100
- return assumedRoleArnRegex.test(principal);
183
+ return {
184
+ matches: 'NoMatch',
185
+ principal: principalStatement.value(),
186
+ };
101
187
  }
188
+ /**
189
+ * Transfrom an assumed role session ARN into a role ARN
190
+ *
191
+ * @param assumedRoleArn the assumed role session ARN
192
+ * @returns the role ARN for the assumed role session
193
+ */
102
194
  function roleArnFromAssumedRoleArn(assumedRoleArn) {
103
195
  const stsParts = assumedRoleArn.split(':');
104
196
  const resourceParts = stsParts.at(-1).split('/');
105
197
  const rolePathAndName = resourceParts.slice(1, -1).join('/');
106
198
  return `arn:aws:iam::${stsParts[4]}:role/${rolePathAndName}`;
107
199
  }
200
+ /**
201
+ * Get a user ARN from a federated user ARN
202
+ *
203
+ * @param federatedUserArn the federated user ARN
204
+ * @returns the user ARN for the federated user ARN
205
+ */
206
+ function userArnFromFederatedUserArn(federatedUserArn) {
207
+ const stsParts = federatedUserArn.split(':');
208
+ const resource = stsParts.at(-1);
209
+ const username = resource.slice(resource.indexOf('/') + 1);
210
+ return `arn:aws:iam::${stsParts[4]}:user/${username}`;
211
+ }
108
212
  /**
109
213
  * Check if a request matches the Resource or NotResource elements of a statement.
110
214
  *
@@ -114,10 +218,12 @@ function roleArnFromAssumedRoleArn(assumedRoleArn) {
114
218
  */
115
219
  function requestMatchesStatementPrincipals(request, statement) {
116
220
  if (statement.isPrincipalStatement()) {
117
- return requestMatchesPrincipal(request, statement.principals());
221
+ const { matches, explains } = requestMatchesPrincipal(request, statement.principals());
222
+ return { matches, details: { principals: explains } };
118
223
  }
119
224
  else if (statement.isNotPrincipalStatement()) {
120
- return requestMatchesNotPrincipal(request, statement.notPrincipals());
225
+ const { matches, explains } = requestMatchesNotPrincipal(request, statement.notPrincipals());
226
+ return { matches, details: { notPrincipals: explains } };
121
227
  }
122
228
  throw new Error('Statement should have Principal or NotPrincipal');
123
229
  }
@@ -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"}
@@ -27,12 +27,22 @@ function convertResourceSegmentToRegex(segment) {
27
27
  */
28
28
  function requestMatchesStatementResources(request, statement) {
29
29
  if (statement.isResourceStatement()) {
30
- return requestMatchesResources(request, statement.resources());
30
+ const { matches, explains } = requestMatchesResources(request, statement.resources());
31
+ if (!statement.resourceIsArray()) {
32
+ return { matches, details: { resources: explains[0] } };
33
+ }
34
+ return { matches, details: { resources: explains } };
35
+ // return requestMatchesResources(request, statement.resources());
31
36
  }
32
37
  else if (statement.isNotResourceStatement()) {
33
- return requestMatchesNotResources(request, statement.notResources());
38
+ const { matches, explains } = requestMatchesNotResources(request, statement.notResources());
39
+ if (!statement.notResourceIsArray()) {
40
+ return { matches, details: { notResources: explains[0] } };
41
+ }
42
+ return { matches, details: { notResources: explains } };
43
+ // return requestMatchesNotResources(request, statement.notResources());
34
44
  }
35
- return true;
45
+ return { matches: true, details: {} };
36
46
  }
37
47
  /**
38
48
  * Check if a request matches a set of resources.
@@ -42,7 +52,9 @@ function requestMatchesStatementResources(request, statement) {
42
52
  * @returns true if the request matches any of the resources, false otherwise
43
53
  */
44
54
  function requestMatchesResources(request, policyResources) {
45
- return policyResources.some(policyResource => singleResourceMatchesRequest(request, policyResource));
55
+ const explains = policyResources.map(policyResource => singleResourceMatchesRequest(request, policyResource));
56
+ const matches = explains.some(explain => explain.matches);
57
+ return { matches, explains };
46
58
  }
47
59
  /**
48
60
  * Check if a request matches a NotResource element in a policy.
@@ -52,7 +64,13 @@ function requestMatchesResources(request, policyResources) {
52
64
  * @returns true if the request does not match any of the resources, false otherwise
53
65
  */
54
66
  function requestMatchesNotResources(request, policyResources) {
55
- return !requestMatchesResources(request, policyResources);
67
+ const explains = policyResources.map(policyResource => {
68
+ const explain = singleResourceMatchesRequest(request, policyResource);
69
+ explain.matches = !explain.matches;
70
+ return explain;
71
+ });
72
+ const matches = !explains.some(explain => !explain.matches);
73
+ return { matches, explains };
56
74
  }
57
75
  /**
58
76
  * Check if a single resource matches a request.
@@ -63,35 +81,70 @@ function requestMatchesNotResources(request, policyResources) {
63
81
  */
64
82
  function singleResourceMatchesRequest(request, policyResource) {
65
83
  if (policyResource.isAllResources()) {
66
- return true;
84
+ return {
85
+ resource: policyResource.value(),
86
+ matches: true,
87
+ };
67
88
  }
68
89
  else if (policyResource.isArnResource()) {
69
90
  if (!request.resource) {
70
- return false;
91
+ return {
92
+ resource: policyResource.value(),
93
+ matches: false,
94
+ errors: ['Request does not have a resource'],
95
+ };
71
96
  }
72
97
  const resource = request.resource;
73
98
  if (!convertResourceSegmentToRegex(policyResource.partition()).test(resource.partition())) {
74
- return false;
99
+ return {
100
+ resource: policyResource.value(),
101
+ matches: false,
102
+ errors: ['Partition does not match'],
103
+ };
75
104
  }
76
105
  if (!convertResourceSegmentToRegex(policyResource.service()).test(resource.service())) {
77
- return false;
106
+ return {
107
+ resource: policyResource.value(),
108
+ matches: false,
109
+ errors: ['Service does not match'],
110
+ };
78
111
  }
79
112
  if (!convertResourceSegmentToRegex(policyResource.region()).test(resource.region())) {
80
- return false;
113
+ return {
114
+ resource: policyResource.value(),
115
+ matches: false,
116
+ errors: ['Region does not match'],
117
+ };
81
118
  }
82
119
  if (!convertResourceSegmentToRegex(policyResource.account()).test(resource.account())) {
83
- return false;
120
+ return {
121
+ resource: policyResource.value(),
122
+ matches: false,
123
+ errors: ['Account does not match'],
124
+ };
84
125
  }
85
126
  //Wildcards and variables are not allowed in the product segment https://docs.aws.amazon.com/IAM/latest/UserGuide/reference-arns.html "Incorrect wildcard usage"
86
127
  const [policyProduct, policyResourceId] = (0, util_js_1.getResourceSegments)(policyResource.resource());
87
128
  if (!resource.resource().startsWith(policyProduct)) {
88
- return false;
129
+ return {
130
+ resource: policyResource.value(),
131
+ matches: false,
132
+ errors: ['Product does not match'],
133
+ };
89
134
  }
90
135
  const requestResourceId = resource.resource().slice(policyProduct.length);
91
- if (!(0, util_js_1.convertIamStringToRegex)(policyResourceId, request).test(requestResourceId)) {
92
- return false;
136
+ const { pattern, errors } = (0, util_js_1.convertIamString)(policyResourceId, request);
137
+ if (!pattern.test(requestResourceId)) {
138
+ return {
139
+ resource: policyResource.value(),
140
+ matches: false,
141
+ errors: ['Resource does not match'],
142
+ };
93
143
  }
94
- return true;
144
+ return {
145
+ resource: policyResource.value(),
146
+ matches: true,
147
+ };
95
148
  }
96
149
  else {
97
150
  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"}