@kensio/yulin 0.37.0 → 0.38.0

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 (488) hide show
  1. package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.js +3 -0
  3. package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
  4. package/dist/serve/controller/sim-service-controller.d.ts +13 -0
  5. package/dist/serve/controller/sim-service-controller.d.ts.map +1 -1
  6. package/dist/serve/controller/sim-service-controller.js.map +1 -1
  7. package/dist/serve/http/url/sim-aws-local-url.d.ts.map +1 -1
  8. package/dist/serve/http/url/sim-aws-local-url.js +5 -1
  9. package/dist/serve/http/url/sim-aws-local-url.js.map +1 -1
  10. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +8 -0
  11. package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
  12. package/dist/service/aws/factory/sim-aws-service-factory.js +14 -0
  13. package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
  14. package/dist/service/aws/sim-aws-account-region-scope.d.ts +5 -0
  15. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  16. package/dist/service/aws/sim-aws-account-region-scope.js +6 -0
  17. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  18. package/dist/service/aws/sim-aws-account.d.ts +5 -0
  19. package/dist/service/aws/sim-aws-account.d.ts.map +1 -1
  20. package/dist/service/aws/sim-aws-account.js +6 -0
  21. package/dist/service/aws/sim-aws-account.js.map +1 -1
  22. package/dist/service/aws/sim-aws-region.d.ts +5 -0
  23. package/dist/service/aws/sim-aws-region.d.ts.map +1 -1
  24. package/dist/service/aws/sim-aws-region.js +6 -0
  25. package/dist/service/aws/sim-aws-region.js.map +1 -1
  26. package/dist/service/aws/sim-aws-request-authentication.d.ts +35 -0
  27. package/dist/service/aws/sim-aws-request-authentication.d.ts.map +1 -0
  28. package/dist/service/aws/sim-aws-request-authentication.js +32 -0
  29. package/dist/service/aws/sim-aws-request-authentication.js.map +1 -0
  30. package/dist/service/aws/sim-aws.d.ts +7 -21
  31. package/dist/service/aws/sim-aws.d.ts.map +1 -1
  32. package/dist/service/aws/sim-aws.js +15 -26
  33. package/dist/service/aws/sim-aws.js.map +1 -1
  34. package/dist/service/cloudformation/resource/dependency/sim-cfn-resource-dependencies.d.ts.map +1 -1
  35. package/dist/service/cloudformation/resource/dependency/sim-cfn-resource-dependencies.js +1 -1
  36. package/dist/service/cloudformation/resource/dependency/sim-cfn-resource-dependencies.js.map +1 -1
  37. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js +1 -1
  38. package/dist/service/cloudfront/controller/dependency/sim-cf-controller-dependency.js.map +1 -1
  39. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.d.ts.map +1 -1
  40. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js +2 -1
  41. package/dist/service/cloudfront/router/sim-cloud-front-distro-router.js.map +1 -1
  42. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts +56 -0
  43. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.d.ts.map +1 -1
  44. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js +66 -0
  45. package/dist/service/iam/authorize/allow/sim-iam-allow-requirement.js.map +1 -1
  46. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts +7 -1
  47. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.d.ts.map +1 -1
  48. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js +11 -1
  49. package/dist/service/iam/authorize/allow/sim-iam-allow-statements.js.map +1 -1
  50. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts +17 -0
  51. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.d.ts.map +1 -0
  52. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js +24 -0
  53. package/dist/service/iam/authorize/context/sim-iam-auth-z-allow-requirement.js.map +1 -0
  54. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts +10 -0
  55. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.d.ts.map +1 -1
  56. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js +3 -1
  57. package/dist/service/iam/authorize/context/sim-iam-auth-z-context-builder.js.map +1 -1
  58. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts +6 -1
  59. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.d.ts.map +1 -1
  60. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js +25 -16
  61. package/dist/service/iam/authorize/match/sim-iam-policy-principal-matcher.js.map +1 -1
  62. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.d.ts +2 -1
  63. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.d.ts.map +1 -1
  64. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.js +2 -1
  65. package/dist/service/iam/authorize/match/sim-iam-policy-statement-matcher.js.map +1 -1
  66. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts +39 -0
  67. package/dist/service/iam/authorize/match/sim-iam-principal-match.d.ts.map +1 -0
  68. package/dist/service/iam/authorize/match/sim-iam-principal-match.js +55 -0
  69. package/dist/service/iam/authorize/match/sim-iam-principal-match.js.map +1 -0
  70. package/dist/service/iam/authorize/sim-iam-decision.d.ts.map +1 -1
  71. package/dist/service/iam/authorize/sim-iam-decision.js +3 -2
  72. package/dist/service/iam/authorize/sim-iam-decision.js.map +1 -1
  73. package/dist/service/iam/index.d.ts +1 -0
  74. package/dist/service/iam/index.d.ts.map +1 -1
  75. package/dist/service/iam/index.js +1 -0
  76. package/dist/service/iam/index.js.map +1 -1
  77. package/dist/service/iam/request/sim-aws-request-caller-resolver.d.ts +21 -5
  78. package/dist/service/iam/request/sim-aws-request-caller-resolver.d.ts.map +1 -1
  79. package/dist/service/iam/request/sim-aws-request-caller-resolver.js +15 -9
  80. package/dist/service/iam/request/sim-aws-request-caller-resolver.js.map +1 -1
  81. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.d.ts +3 -1
  82. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.d.ts.map +1 -1
  83. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.js +6 -4
  84. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.js.map +1 -1
  85. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.d.ts +34 -14
  86. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.d.ts.map +1 -1
  87. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.js +56 -29
  88. package/dist/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.js.map +1 -1
  89. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.d.ts +13 -1
  90. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.d.ts.map +1 -1
  91. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.js +14 -0
  92. package/dist/service/iam/sigv4/error/sim-iam-sigv4.error.js.map +1 -1
  93. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.d.ts +25 -0
  94. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.d.ts.map +1 -0
  95. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.js +41 -0
  96. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-credential.js.map +1 -0
  97. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.d.ts +27 -0
  98. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.d.ts.map +1 -0
  99. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.js +41 -0
  100. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-parameters.js.map +1 -0
  101. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.d.ts +39 -0
  102. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.d.ts.map +1 -0
  103. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.js +59 -0
  104. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-query.js.map +1 -0
  105. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.d.ts +30 -0
  106. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.d.ts.map +1 -0
  107. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.js +64 -0
  108. package/dist/service/iam/sigv4/presign/sim-iam-sigv4-presigned-window.js.map +1 -0
  109. package/dist/service/iam/sigv4/sim-iam-sigv4-authorization.d.ts +2 -1
  110. package/dist/service/iam/sigv4/sim-iam-sigv4-authorization.d.ts.map +1 -1
  111. package/dist/service/iam/sigv4/sim-iam-sigv4-authorization.js.map +1 -1
  112. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.d.ts +22 -1
  113. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.d.ts.map +1 -1
  114. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.js +49 -7
  115. package/dist/service/iam/sigv4/sim-iam-sigv4-request-date.js.map +1 -1
  116. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.d.ts +9 -2
  117. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.d.ts.map +1 -1
  118. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.js +5 -5
  119. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-check.js.map +1 -1
  120. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.d.ts +16 -0
  121. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.d.ts.map +1 -0
  122. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.js +2 -0
  123. package/dist/service/iam/sigv4/sim-iam-sigv4-signature-statement.js.map +1 -0
  124. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.d.ts +12 -3
  125. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.d.ts.map +1 -1
  126. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.js +9 -5
  127. package/dist/service/iam/sigv4/sim-iam-sigv4-signing-credentials.js.map +1 -1
  128. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.d.ts +20 -4
  129. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.d.ts.map +1 -1
  130. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.js +52 -6
  131. package/dist/service/iam/sigv4/sim-iam-sigv4-verifier.js.map +1 -1
  132. package/dist/service/kms/command/alias/alias.command.d.ts +43 -0
  133. package/dist/service/kms/command/alias/alias.command.d.ts.map +1 -0
  134. package/dist/service/kms/command/alias/alias.command.js +2 -0
  135. package/dist/service/kms/command/alias/alias.command.js.map +1 -0
  136. package/dist/service/kms/command/alias/sim-kms-alias-commands.d.ts +34 -0
  137. package/dist/service/kms/command/alias/sim-kms-alias-commands.d.ts.map +1 -0
  138. package/dist/service/kms/command/alias/sim-kms-alias-commands.js +56 -0
  139. package/dist/service/kms/command/alias/sim-kms-alias-commands.js.map +1 -0
  140. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts +38 -0
  141. package/dist/service/kms/command/authorize/sim-kms-authorizer.d.ts.map +1 -0
  142. package/dist/service/kms/command/authorize/sim-kms-authorizer.js +58 -0
  143. package/dist/service/kms/command/authorize/sim-kms-authorizer.js.map +1 -0
  144. package/dist/service/kms/command/crypto/crypto.command.d.ts +68 -0
  145. package/dist/service/kms/command/crypto/crypto.command.d.ts.map +1 -0
  146. package/dist/service/kms/command/crypto/crypto.command.js +2 -0
  147. package/dist/service/kms/command/crypto/crypto.command.js.map +1 -0
  148. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.d.ts +40 -0
  149. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.d.ts.map +1 -0
  150. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.js +58 -0
  151. package/dist/service/kms/command/crypto/sim-kms-ciphertext-key.js.map +1 -0
  152. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.d.ts +38 -0
  153. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.d.ts.map +1 -0
  154. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.js +74 -0
  155. package/dist/service/kms/command/crypto/sim-kms-crypto-commands.js.map +1 -0
  156. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.d.ts +16 -0
  157. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.d.ts.map +1 -0
  158. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.js +50 -0
  159. package/dist/service/kms/command/crypto/sim-kms-data-key-spec.js.map +1 -0
  160. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.d.ts +31 -0
  161. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.d.ts.map +1 -0
  162. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.js +35 -0
  163. package/dist/service/kms/command/crypto/sim-kms-generate-data-key.js.map +1 -0
  164. package/dist/service/kms/command/key/key.command.d.ts +159 -0
  165. package/dist/service/kms/command/key/key.command.d.ts.map +1 -0
  166. package/dist/service/kms/command/key/key.command.js +2 -0
  167. package/dist/service/kms/command/key/key.command.js.map +1 -0
  168. package/dist/service/kms/command/key/sim-kms-key-commands.d.ts +41 -0
  169. package/dist/service/kms/command/key/sim-kms-key-commands.d.ts.map +1 -0
  170. package/dist/service/kms/command/key/sim-kms-key-commands.js +45 -0
  171. package/dist/service/kms/command/key/sim-kms-key-commands.js.map +1 -0
  172. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.d.ts +48 -0
  173. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.d.ts.map +1 -0
  174. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.js +67 -0
  175. package/dist/service/kms/command/key/sim-kms-key-lifecycle-commands.js.map +1 -0
  176. package/dist/service/kms/command/key/sim-kms-key-policy-commands.d.ts +39 -0
  177. package/dist/service/kms/command/key/sim-kms-key-policy-commands.d.ts.map +1 -0
  178. package/dist/service/kms/command/key/sim-kms-key-policy-commands.js +57 -0
  179. package/dist/service/kms/command/key/sim-kms-key-policy-commands.js.map +1 -0
  180. package/dist/service/kms/command/key/sim-kms-key-type.d.ts +14 -0
  181. package/dist/service/kms/command/key/sim-kms-key-type.d.ts.map +1 -0
  182. package/dist/service/kms/command/key/sim-kms-key-type.js +31 -0
  183. package/dist/service/kms/command/key/sim-kms-key-type.js.map +1 -0
  184. package/dist/service/kms/command/key/sim-kms-list-keys.d.ts +29 -0
  185. package/dist/service/kms/command/key/sim-kms-list-keys.d.ts.map +1 -0
  186. package/dist/service/kms/command/key/sim-kms-list-keys.js +31 -0
  187. package/dist/service/kms/command/key/sim-kms-list-keys.js.map +1 -0
  188. package/dist/service/kms/command/key/sim-kms-pending-window.d.ts +17 -0
  189. package/dist/service/kms/command/key/sim-kms-pending-window.d.ts.map +1 -0
  190. package/dist/service/kms/command/key/sim-kms-pending-window.js +37 -0
  191. package/dist/service/kms/command/key/sim-kms-pending-window.js.map +1 -0
  192. package/dist/service/kms/command/sim-kms-command.types.d.ts +10 -0
  193. package/dist/service/kms/command/sim-kms-command.types.d.ts.map +1 -0
  194. package/dist/service/kms/command/sim-kms-command.types.js +2 -0
  195. package/dist/service/kms/command/sim-kms-command.types.js.map +1 -0
  196. package/dist/service/kms/error/sim-kms.error.d.ts +88 -0
  197. package/dist/service/kms/error/sim-kms.error.d.ts.map +1 -0
  198. package/dist/service/kms/error/sim-kms.error.js +101 -0
  199. package/dist/service/kms/error/sim-kms.error.js.map +1 -0
  200. package/dist/service/kms/index.d.ts +8 -0
  201. package/dist/service/kms/index.d.ts.map +1 -0
  202. package/dist/service/kms/index.js +6 -0
  203. package/dist/service/kms/index.js.map +1 -0
  204. package/dist/service/kms/key/sim-kms-alias.d.ts +45 -0
  205. package/dist/service/kms/key/sim-kms-alias.d.ts.map +1 -0
  206. package/dist/service/kms/key/sim-kms-alias.js +59 -0
  207. package/dist/service/kms/key/sim-kms-alias.js.map +1 -0
  208. package/dist/service/kms/key/sim-kms-ciphertext-blob.d.ts +43 -0
  209. package/dist/service/kms/key/sim-kms-ciphertext-blob.d.ts.map +1 -0
  210. package/dist/service/kms/key/sim-kms-ciphertext-blob.js +89 -0
  211. package/dist/service/kms/key/sim-kms-ciphertext-blob.js.map +1 -0
  212. package/dist/service/kms/key/sim-kms-encryption-context.d.ts +34 -0
  213. package/dist/service/kms/key/sim-kms-encryption-context.d.ts.map +1 -0
  214. package/dist/service/kms/key/sim-kms-encryption-context.js +39 -0
  215. package/dist/service/kms/key/sim-kms-encryption-context.js.map +1 -0
  216. package/dist/service/kms/key/sim-kms-key-factory.d.ts +36 -0
  217. package/dist/service/kms/key/sim-kms-key-factory.d.ts.map +1 -0
  218. package/dist/service/kms/key/sim-kms-key-factory.js +47 -0
  219. package/dist/service/kms/key/sim-kms-key-factory.js.map +1 -0
  220. package/dist/service/kms/key/sim-kms-key-identifier.d.ts +44 -0
  221. package/dist/service/kms/key/sim-kms-key-identifier.d.ts.map +1 -0
  222. package/dist/service/kms/key/sim-kms-key-identifier.js +81 -0
  223. package/dist/service/kms/key/sim-kms-key-identifier.js.map +1 -0
  224. package/dist/service/kms/key/sim-kms-key-lifecycle.d.ts +71 -0
  225. package/dist/service/kms/key/sim-kms-key-lifecycle.d.ts.map +1 -0
  226. package/dist/service/kms/key/sim-kms-key-lifecycle.js +106 -0
  227. package/dist/service/kms/key/sim-kms-key-lifecycle.js.map +1 -0
  228. package/dist/service/kms/key/sim-kms-key-material.d.ts +36 -0
  229. package/dist/service/kms/key/sim-kms-key-material.d.ts.map +1 -0
  230. package/dist/service/kms/key/sim-kms-key-material.js +74 -0
  231. package/dist/service/kms/key/sim-kms-key-material.js.map +1 -0
  232. package/dist/service/kms/key/sim-kms-key-metadata.d.ts +45 -0
  233. package/dist/service/kms/key/sim-kms-key-metadata.d.ts.map +1 -0
  234. package/dist/service/kms/key/sim-kms-key-metadata.js +44 -0
  235. package/dist/service/kms/key/sim-kms-key-metadata.js.map +1 -0
  236. package/dist/service/kms/key/sim-kms-key-policy.d.ts +45 -0
  237. package/dist/service/kms/key/sim-kms-key-policy.d.ts.map +1 -0
  238. package/dist/service/kms/key/sim-kms-key-policy.js +69 -0
  239. package/dist/service/kms/key/sim-kms-key-policy.js.map +1 -0
  240. package/dist/service/kms/key/sim-kms-key-store.d.ts +58 -0
  241. package/dist/service/kms/key/sim-kms-key-store.d.ts.map +1 -0
  242. package/dist/service/kms/key/sim-kms-key-store.js +111 -0
  243. package/dist/service/kms/key/sim-kms-key-store.js.map +1 -0
  244. package/dist/service/kms/key/sim-kms-key.d.ts +88 -0
  245. package/dist/service/kms/key/sim-kms-key.d.ts.map +1 -0
  246. package/dist/service/kms/key/sim-kms-key.js +106 -0
  247. package/dist/service/kms/key/sim-kms-key.js.map +1 -0
  248. package/dist/service/kms/key/sim-kms-policy-document.d.ts +30 -0
  249. package/dist/service/kms/key/sim-kms-policy-document.d.ts.map +1 -0
  250. package/dist/service/kms/key/sim-kms-policy-document.js +54 -0
  251. package/dist/service/kms/key/sim-kms-policy-document.js.map +1 -0
  252. package/dist/service/kms/sdk/sim-kms-sdk-command-router.d.ts +18 -0
  253. package/dist/service/kms/sdk/sim-kms-sdk-command-router.d.ts.map +1 -0
  254. package/dist/service/kms/sdk/sim-kms-sdk-command-router.js +80 -0
  255. package/dist/service/kms/sdk/sim-kms-sdk-command-router.js.map +1 -0
  256. package/dist/service/kms/sim-kms.d.ts +105 -0
  257. package/dist/service/kms/sim-kms.d.ts.map +1 -0
  258. package/dist/service/kms/sim-kms.js +187 -0
  259. package/dist/service/kms/sim-kms.js.map +1 -0
  260. package/dist/service/lambda/command/create-function/create-function.handler.d.ts.map +1 -1
  261. package/dist/service/lambda/command/create-function/create-function.handler.js +3 -0
  262. package/dist/service/lambda/command/create-function/create-function.handler.js.map +1 -1
  263. package/dist/service/lambda/function/code/sim-lambda-code-resolver.d.ts +6 -0
  264. package/dist/service/lambda/function/code/sim-lambda-code-resolver.d.ts.map +1 -1
  265. package/dist/service/lambda/function/code/sim-lambda-code-resolver.js +1 -0
  266. package/dist/service/lambda/function/code/sim-lambda-code-resolver.js.map +1 -1
  267. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts +15 -0
  268. package/dist/service/lambda/function/code/sim-lambda-executable-code.d.ts.map +1 -1
  269. package/dist/service/lambda/function/code/sim-lambda-executable-code.js +5 -0
  270. package/dist/service/lambda/function/code/sim-lambda-executable-code.js.map +1 -1
  271. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.d.ts +3 -0
  272. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.d.ts.map +1 -1
  273. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.js +3 -0
  274. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code-factory.js.map +1 -1
  275. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts +11 -0
  276. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.d.ts.map +1 -1
  277. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js +7 -2
  278. package/dist/service/lambda/function/code/sim-lambda-vm-zip-code.js.map +1 -1
  279. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts +6 -5
  280. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.d.ts.map +1 -1
  281. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js +10 -5
  282. package/dist/service/lambda/function/code/vm/sim-lambda-vm-context.js.map +1 -1
  283. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.d.ts +53 -0
  284. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.d.ts.map +1 -0
  285. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.js +101 -0
  286. package/dist/service/lambda/function/invoke/sim-lambda-process-clock.js.map +1 -0
  287. package/dist/service/lambda/function/sim-lambda-function.d.ts +8 -0
  288. package/dist/service/lambda/function/sim-lambda-function.d.ts.map +1 -1
  289. package/dist/service/lambda/function/sim-lambda-function.js +15 -1
  290. package/dist/service/lambda/function/sim-lambda-function.js.map +1 -1
  291. package/dist/service/lambda/serve/sim-lambda-url-router.js +1 -1
  292. package/dist/service/lambda/serve/sim-lambda-url-router.js.map +1 -1
  293. package/dist/service/route53/resolve/sim-r53-service-target-resolver.d.ts +14 -0
  294. package/dist/service/route53/resolve/sim-r53-service-target-resolver.d.ts.map +1 -1
  295. package/dist/service/route53/resolve/sim-r53-service-target-resolver.js +38 -0
  296. package/dist/service/route53/resolve/sim-r53-service-target-resolver.js.map +1 -1
  297. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.d.ts +7 -0
  298. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.d.ts.map +1 -0
  299. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.js +73 -0
  300. package/dist/service/s3/bucket/public-access/sim-s3-pinning-condition.js.map +1 -0
  301. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.d.ts +61 -0
  302. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.d.ts.map +1 -0
  303. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.js +57 -0
  304. package/dist/service/s3/bucket/public-access/sim-s3-public-access-block.js.map +1 -0
  305. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.d.ts +19 -0
  306. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.d.ts.map +1 -0
  307. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.js +28 -0
  308. package/dist/service/s3/bucket/public-access/sim-s3-public-policy-guard.js.map +1 -0
  309. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.d.ts +18 -0
  310. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.d.ts.map +1 -0
  311. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.js +35 -0
  312. package/dist/service/s3/bucket/public-access/sim-s3-public-policy.js.map +1 -0
  313. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.d.ts +11 -0
  314. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.d.ts.map +1 -0
  315. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.js +34 -0
  316. package/dist/service/s3/bucket/public-access/sim-s3-public-principal.js.map +1 -0
  317. package/dist/service/s3/bucket/sim-s3-bucket-arn.d.ts +9 -0
  318. package/dist/service/s3/bucket/sim-s3-bucket-arn.d.ts.map +1 -0
  319. package/dist/service/s3/bucket/sim-s3-bucket-arn.js +10 -0
  320. package/dist/service/s3/bucket/sim-s3-bucket-arn.js.map +1 -0
  321. package/dist/service/s3/bucket/sim-s3-bucket.d.ts +25 -0
  322. package/dist/service/s3/bucket/sim-s3-bucket.d.ts.map +1 -1
  323. package/dist/service/s3/bucket/sim-s3-bucket.js +34 -1
  324. package/dist/service/s3/bucket/sim-s3-bucket.js.map +1 -1
  325. package/dist/service/s3/bucket/sim-s3-endpoint-url.d.ts +16 -0
  326. package/dist/service/s3/bucket/sim-s3-endpoint-url.d.ts.map +1 -0
  327. package/dist/service/s3/bucket/sim-s3-endpoint-url.js +19 -0
  328. package/dist/service/s3/bucket/sim-s3-endpoint-url.js.map +1 -0
  329. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.d.ts +13 -0
  330. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.d.ts.map +1 -0
  331. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.js +36 -0
  332. package/dist/service/s3/bucket/website/sim-s3-public-website.fixture.js.map +1 -0
  333. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts +27 -0
  334. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.d.ts.map +1 -0
  335. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js +92 -0
  336. package/dist/service/s3/cfn/bucket/sim-cfn-s3-bucket-creator.js.map +1 -0
  337. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.d.ts +32 -0
  338. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.d.ts.map +1 -0
  339. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.js +55 -0
  340. package/dist/service/s3/cfn/bucket-policy/sim-cfn-s3-bucket-policy-creator.js.map +1 -0
  341. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.d.ts +2 -4
  342. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.d.ts.map +1 -1
  343. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js +10 -61
  344. package/dist/service/s3/cfn/sim-cfn-s3-resource-factory.js.map +1 -1
  345. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts +11 -0
  346. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.d.ts.map +1 -0
  347. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.js +22 -0
  348. package/dist/service/s3/command/authorize/sim-s3-bucket-resource-policies.js.map +1 -0
  349. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.d.ts +23 -0
  350. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.d.ts.map +1 -0
  351. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.js +36 -0
  352. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy-authorizer.js.map +1 -0
  353. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.d.ts +20 -0
  354. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.d.ts.map +1 -0
  355. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.js +2 -0
  356. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.command.js.map +1 -0
  357. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.d.ts +32 -0
  358. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.d.ts.map +1 -0
  359. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.js +37 -0
  360. package/dist/service/s3/command/delete-bucket-policy/delete-bucket-policy.handler.js.map +1 -0
  361. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.d.ts +20 -0
  362. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.d.ts.map +1 -0
  363. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.js +2 -0
  364. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.command.js.map +1 -0
  365. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.d.ts +30 -0
  366. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.d.ts.map +1 -0
  367. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.js +35 -0
  368. package/dist/service/s3/command/delete-public-access-block/delete-public-access-block.handler.js.map +1 -0
  369. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.d.ts +20 -0
  370. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.d.ts.map +1 -0
  371. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.js +33 -0
  372. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy-authorizer.js.map +1 -0
  373. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.d.ts +24 -0
  374. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.d.ts.map +1 -0
  375. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.js +2 -0
  376. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.command.js.map +1 -0
  377. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.d.ts +29 -0
  378. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.d.ts.map +1 -0
  379. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.js +40 -0
  380. package/dist/service/s3/command/get-bucket-policy/get-bucket-policy.handler.js.map +1 -0
  381. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.d.ts +22 -0
  382. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.d.ts.map +1 -0
  383. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.js +2 -0
  384. package/dist/service/s3/command/get-public-access-block/get-public-access-block.command.js.map +1 -0
  385. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.d.ts +32 -0
  386. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.d.ts.map +1 -0
  387. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.js +39 -0
  388. package/dist/service/s3/command/get-public-access-block/get-public-access-block.handler.js.map +1 -0
  389. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.d.ts +31 -0
  390. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.d.ts.map +1 -0
  391. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.js +48 -0
  392. package/dist/service/s3/command/public-access-block/sim-s3-public-access-block-authorizer.js.map +1 -0
  393. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.d.ts +1 -0
  394. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.d.ts.map +1 -1
  395. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.js +7 -6
  396. package/dist/service/s3/command/put-bucket-policy/put-bucket-policy.handler.js.map +1 -1
  397. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.d.ts +22 -0
  398. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.d.ts.map +1 -0
  399. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.js +2 -0
  400. package/dist/service/s3/command/put-public-access-block/put-public-access-block.command.js.map +1 -0
  401. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.d.ts +33 -0
  402. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.d.ts.map +1 -0
  403. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.js +40 -0
  404. package/dist/service/s3/command/put-public-access-block/put-public-access-block.handler.js.map +1 -0
  405. package/dist/service/s3/command/require-sim-s3-bucket.d.ts +10 -0
  406. package/dist/service/s3/command/require-sim-s3-bucket.d.ts.map +1 -0
  407. package/dist/service/s3/command/require-sim-s3-bucket.js +16 -0
  408. package/dist/service/s3/command/require-sim-s3-bucket.js.map +1 -0
  409. package/dist/service/s3/command/sim-s3-command-handlers.d.ts +91 -0
  410. package/dist/service/s3/command/sim-s3-command-handlers.d.ts.map +1 -0
  411. package/dist/service/s3/command/sim-s3-command-handlers.js +115 -0
  412. package/dist/service/s3/command/sim-s3-command-handlers.js.map +1 -0
  413. package/dist/service/s3/command/sim-s3-command.types.d.ts +19 -0
  414. package/dist/service/s3/command/sim-s3-command.types.d.ts.map +1 -0
  415. package/dist/service/s3/command/sim-s3-command.types.js +8 -0
  416. package/dist/service/s3/command/sim-s3-command.types.js.map +1 -0
  417. package/dist/service/s3/error/sim-s3-checksum.error.d.ts +28 -0
  418. package/dist/service/s3/error/sim-s3-checksum.error.d.ts.map +1 -0
  419. package/dist/service/s3/error/sim-s3-checksum.error.js +32 -0
  420. package/dist/service/s3/error/sim-s3-checksum.error.js.map +1 -0
  421. package/dist/service/s3/error/sim-s3.error.d.ts +20 -0
  422. package/dist/service/s3/error/sim-s3.error.d.ts.map +1 -1
  423. package/dist/service/s3/error/sim-s3.error.js +24 -0
  424. package/dist/service/s3/error/sim-s3.error.js.map +1 -1
  425. package/dist/service/s3/sdk/sim-s3-sdk-command-router.d.ts.map +1 -1
  426. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js +20 -0
  427. package/dist/service/s3/sdk/sim-s3-sdk-command-router.js.map +1 -1
  428. package/dist/service/s3/serve/sim-s3-bucket-locator.d.ts +40 -0
  429. package/dist/service/s3/serve/sim-s3-bucket-locator.d.ts.map +1 -0
  430. package/dist/service/s3/serve/sim-s3-bucket-locator.js +59 -0
  431. package/dist/service/s3/serve/sim-s3-bucket-locator.js.map +1 -0
  432. package/dist/service/s3/serve/sim-s3-controller.d.ts +7 -0
  433. package/dist/service/s3/serve/sim-s3-controller.d.ts.map +1 -1
  434. package/dist/service/s3/serve/sim-s3-controller.js +14 -2
  435. package/dist/service/s3/serve/sim-s3-controller.js.map +1 -1
  436. package/dist/service/s3/serve/sim-s3-get-object-controller.d.ts +40 -6
  437. package/dist/service/s3/serve/sim-s3-get-object-controller.d.ts.map +1 -1
  438. package/dist/service/s3/serve/sim-s3-get-object-controller.js +80 -49
  439. package/dist/service/s3/serve/sim-s3-get-object-controller.js.map +1 -1
  440. package/dist/service/s3/serve/sim-s3-object-address.d.ts +42 -0
  441. package/dist/service/s3/serve/sim-s3-object-address.d.ts.map +1 -0
  442. package/dist/service/s3/serve/sim-s3-object-address.js +66 -0
  443. package/dist/service/s3/serve/sim-s3-object-address.js.map +1 -0
  444. package/dist/service/s3/serve/sim-s3-request-router.d.ts +18 -13
  445. package/dist/service/s3/serve/sim-s3-request-router.d.ts.map +1 -1
  446. package/dist/service/s3/serve/sim-s3-request-router.js +72 -48
  447. package/dist/service/s3/serve/sim-s3-request-router.js.map +1 -1
  448. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts +36 -0
  449. package/dist/service/s3/serve/sim-s3-rest-controller.d.ts.map +1 -0
  450. package/dist/service/s3/serve/sim-s3-rest-controller.js +92 -0
  451. package/dist/service/s3/serve/sim-s3-rest-controller.js.map +1 -0
  452. package/dist/service/s3/serve/sim-s3-rest-error-response.d.ts +28 -0
  453. package/dist/service/s3/serve/sim-s3-rest-error-response.d.ts.map +1 -0
  454. package/dist/service/s3/serve/sim-s3-rest-error-response.js +63 -0
  455. package/dist/service/s3/serve/sim-s3-rest-error-response.js.map +1 -0
  456. package/dist/service/s3/serve/sim-s3-rest-refusal.d.ts +7 -0
  457. package/dist/service/s3/serve/sim-s3-rest-refusal.d.ts.map +1 -0
  458. package/dist/service/s3/serve/sim-s3-rest-refusal.js +18 -0
  459. package/dist/service/s3/serve/sim-s3-rest-refusal.js.map +1 -0
  460. package/dist/service/s3/serve/sim-s3-route.d.ts +40 -0
  461. package/dist/service/s3/serve/sim-s3-route.d.ts.map +1 -0
  462. package/dist/service/s3/serve/sim-s3-route.js +7 -0
  463. package/dist/service/s3/serve/sim-s3-route.js.map +1 -0
  464. package/dist/service/s3/serve/sim-s3-upload-checksum.d.ts +27 -0
  465. package/dist/service/s3/serve/sim-s3-upload-checksum.d.ts.map +1 -0
  466. package/dist/service/s3/serve/sim-s3-upload-checksum.js +86 -0
  467. package/dist/service/s3/serve/sim-s3-upload-checksum.js.map +1 -0
  468. package/dist/service/s3/serve/website/sim-s3-website-object-loader.d.ts +51 -0
  469. package/dist/service/s3/serve/website/sim-s3-website-object-loader.d.ts.map +1 -0
  470. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js +75 -0
  471. package/dist/service/s3/serve/website/sim-s3-website-object-loader.js.map +1 -0
  472. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts +18 -0
  473. package/dist/service/s3/serve/website/sim-s3-website-object.d.ts.map +1 -0
  474. package/dist/service/s3/serve/website/sim-s3-website-object.js +28 -0
  475. package/dist/service/s3/serve/website/sim-s3-website-object.js.map +1 -0
  476. package/dist/service/s3/serve/website/sim-s3-website-responses.d.ts +27 -0
  477. package/dist/service/s3/serve/website/sim-s3-website-responses.d.ts.map +1 -0
  478. package/dist/service/s3/serve/website/sim-s3-website-responses.js +44 -0
  479. package/dist/service/s3/serve/website/sim-s3-website-responses.js.map +1 -0
  480. package/dist/service/s3/sim-s3.d.ts +34 -9
  481. package/dist/service/s3/sim-s3.d.ts.map +1 -1
  482. package/dist/service/s3/sim-s3.js +65 -55
  483. package/dist/service/s3/sim-s3.js.map +1 -1
  484. package/dist/util/clock/sim-clock-date.d.ts +20 -0
  485. package/dist/util/clock/sim-clock-date.d.ts.map +1 -0
  486. package/dist/util/clock/sim-clock-date.js +43 -0
  487. package/dist/util/clock/sim-clock-date.js.map +1 -0
  488. package/package.json +17 -11
@@ -1,4 +1,5 @@
1
1
  import { simIamWildcardMatch } from "../sim-iam-wildcard.js";
2
+ import { SimIamPrincipalMatch } from "./sim-iam-principal-match.js";
2
3
  /**
3
4
  * Matches the principal portion of an IAM policy statement.
4
5
  *
@@ -30,16 +31,18 @@ export class SimIamPolicyPrincipalMatcher {
30
31
  */
31
32
  matches(policy, statement) {
32
33
  if (policy.sourceType !== "resource" && policy.sourceType !== "trust") {
33
- return (statement.principal === undefined &&
34
+ return SimIamPrincipalMatch.direct().when(statement.principal === undefined &&
34
35
  statement.notPrincipal === undefined);
35
36
  }
36
37
  if (statement.principal !== undefined) {
37
38
  return this.valueMatches(statement.principal);
38
39
  }
39
40
  if (statement.notPrincipal !== undefined) {
40
- return !this.valueMatches(statement.notPrincipal);
41
+ // Excluding the caller says nothing about the Account delegating, so a
42
+ // NotPrincipal that leaves the caller in is a direct grant.
43
+ return SimIamPrincipalMatch.direct().when(!this.valueMatches(statement.notPrincipal).matched);
41
44
  }
42
- return false;
45
+ return SimIamPrincipalMatch.none();
43
46
  }
44
47
  /**
45
48
  * Check each Principal representation supported by the parsed policy model.
@@ -53,20 +56,26 @@ export class SimIamPolicyPrincipalMatcher {
53
56
  return this.awsPatternMatches(principal);
54
57
  }
55
58
  if (Array.isArray(principal)) {
56
- return principal.some((value) => this.awsPatternMatches(value));
59
+ return this.firstMatch(principal, (value) => this.awsPatternMatches(value));
57
60
  }
58
- return Object.entries(principal).some(([principalType, values]) => {
61
+ return this.firstMatch(Object.entries(principal), ([type, values]) => {
59
62
  const patterns = typeof values === "string" ? [values] : values;
60
- if (principalType === "AWS") {
61
- return patterns.some((pattern) => this.awsPatternMatches(pattern));
63
+ if (type === "AWS") {
64
+ return this.firstMatch(patterns, (pattern) => this.awsPatternMatches(pattern));
62
65
  }
63
66
  /* v8 ignore if -- service principals not yet fully supported */
64
- if (principalType === "Service") {
65
- return patterns.some((pattern) => this.servicePatternMatches(pattern));
67
+ if (type === "Service") {
68
+ return this.firstMatch(patterns, (pattern) => this.servicePatternMatches(pattern));
66
69
  }
67
- return false;
70
+ return SimIamPrincipalMatch.none();
68
71
  });
69
72
  }
73
+ /**
74
+ * The winning match among alternatives, since Principal lists are an OR.
75
+ */
76
+ firstMatch(values, match) {
77
+ return SimIamPrincipalMatch.first(values.map((value) => match(value)));
78
+ }
70
79
  /**
71
80
  * Compare an AWS principal pattern with the resolved caller.
72
81
  *
@@ -76,19 +85,19 @@ export class SimIamPolicyPrincipalMatcher {
76
85
  */
77
86
  awsPatternMatches(pattern) {
78
87
  if (pattern === "*") {
79
- return true;
88
+ return SimIamPrincipalMatch.direct();
80
89
  }
81
90
  const caller = this.context.caller;
82
91
  if (caller.arn === undefined) {
83
- return false;
92
+ return SimIamPrincipalMatch.none();
84
93
  }
85
94
  const delegatedAccountId = this.delegatedAccountId(pattern);
86
95
  if (delegatedAccountId !== undefined) {
87
- return caller.accountId === delegatedAccountId;
96
+ return SimIamPrincipalMatch.accountDelegation().when(caller.accountId === delegatedAccountId);
88
97
  }
89
- return simIamWildcardMatch(pattern, caller.arn, {
98
+ return SimIamPrincipalMatch.direct().when(simIamWildcardMatch(pattern, caller.arn, {
90
99
  caseSensitive: true,
91
- });
100
+ }));
92
101
  }
93
102
  /**
94
103
  * Compare a service principal pattern with the resolved caller.
@@ -97,7 +106,7 @@ export class SimIamPolicyPrincipalMatcher {
97
106
  /* v8 ignore next -- service principals not yet fully supported */
98
107
  const service = this.context.caller.service;
99
108
  /* v8 ignore next -- service principals not yet fully supported */
100
- return (service !== undefined &&
109
+ return SimIamPrincipalMatch.direct().when(service !== undefined &&
101
110
  simIamWildcardMatch(pattern, service, {
102
111
  caseSensitive: true,
103
112
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-policy-principal-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-principal-matcher.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,4BAA4B;IACV,OAAO;IAApC,YAA6B,OAA2B;uBAA3B,OAAO;IAAuB,CAAC;IAE5D;;;;;;;;OAQG;IACH,OAAO,CACL,MAA+B,EAC/B,SAAsC;QAEtC,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACtE,OAAO,CACL,SAAS,CAAC,SAAS,KAAK,SAAS;gBACjC,SAAS,CAAC,YAAY,KAAK,SAAS,CACrC,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACpD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;OAMG;IACK,YAAY,CAAC,SAAwC;QAC3D,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,KAAa,EAAW,EAAE,CAC/C,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAC9B,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,EAAE;YAChE,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAEhE,IAAI,aAAa,KAAK,KAAK,EAAE,CAAC;gBAC5B,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;YACrE,CAAC;YAED,gEAAgE;YAChE,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC;YAED,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACK,iBAAiB,CAAC,OAAe;QACvC,IAAI,OAAO,KAAK,GAAG,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACnC,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAI,kBAAkB,KAAK,SAAS,EAAE,CAAC;YACrC,OAAO,MAAM,CAAC,SAAS,KAAK,kBAAkB,CAAC;QACjD,CAAC;QAED,OAAO,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,EAAE;YAC9C,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,OAAe;QAC3C,kEAAkE;QAClE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC;QAE5C,kEAAkE;QAClE,OAAO,CACL,OAAO,KAAK,SAAS;YACrB,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;gBACpC,aAAa,EAAE,IAAI;aACpB,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACK,kBAAkB,CAAC,OAAe;QACxC,IAAI,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9B,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,MAAM,KAAK,GAAG,+BAA+B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5D,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;CACF"}
1
+ {"version":3,"file":"sim-iam-policy-principal-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-principal-matcher.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { SimIamAuthZContext, SimIamAuthZPolicySource } from "../context/sim-iam-auth-z-context.js";
2
2
  import type { SimIamParsedPolicyStatement } from "../../policy/parse/sim-iam-document-parser.js";
3
+ import type { SimIamPrincipalMatch } from "./sim-iam-principal-match.js";
3
4
  /**
4
5
  * Matches one parsed IAM policy statement against one authorization request.
5
6
  *
@@ -30,7 +31,7 @@ export declare class SimIamPolicyStatementMatcher {
30
31
  * evaluating later sections after an earlier constraint has rejected the
31
32
  * statement.
32
33
  */
33
- matches(policy: SimIamAuthZPolicySource, statement: SimIamParsedPolicyStatement): boolean;
34
+ matches(policy: SimIamAuthZPolicySource, statement: SimIamParsedPolicyStatement): SimIamPrincipalMatch;
34
35
  /**
35
36
  * Check Action or NotAction against the requested IAM action.
36
37
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-policy-statement-matcher.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAKjG;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAEhE,YAA6B,OAAO,EAAE,kBAAkB,EAKvD;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,2BAA2B,GACrC,OAAO,CAOT;IAED;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAuBxB"}
1
+ {"version":3,"file":"sim-iam-policy-statement-matcher.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+CAA+C,CAAC;AAIjG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAEzE;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,4BAA4B;IAI3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAEhE,YAA6B,OAAO,EAAE,kBAAkB,EAKvD;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAAM,EAAE,uBAAuB,EAC/B,SAAS,EAAE,2BAA2B,GACrC,oBAAoB,CAStB;IAED;;;;;;OAMG;IACH,OAAO,CAAC,aAAa;IAwBrB;;;;;;OAMG;IACH,OAAO,CAAC,eAAe;CAuBxB"}
@@ -36,7 +36,8 @@ export class SimIamPolicyStatementMatcher {
36
36
  * statement.
37
37
  */
38
38
  matches(policy, statement) {
39
- return (this.principalMatcher.matches(policy, statement) &&
39
+ const principal = this.principalMatcher.matches(policy, statement);
40
+ return principal.when(principal.matched &&
40
41
  this.actionMatches(statement) &&
41
42
  this.resourceMatches(policy, statement) &&
42
43
  this.conditionMatcher.matches(statement.condition));
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-policy-statement-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAErF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,4BAA4B;IAIV,OAAO;IAHnB,gBAAgB,CAA+B;IAC/C,gBAAgB,CAA+B;IAEhE,YAA6B,OAA2B;uBAA3B,OAAO;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CACtD,OAAO,CAAC,gBAAgB,CACzB,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAA+B,EAC/B,SAAsC;QAEtC,OAAO,CACL,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CACnD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,SAAsC;QAC1D,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACxC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAChD,aAAa,EAAE,KAAK;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAC/B,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjD,aAAa,EAAE,KAAK;aACrB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACrB,MAA+B,EAC/B,SAAsC;QAEtC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAClD,aAAa,EAAE,IAAI;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CACjC,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACnD,aAAa,EAAE,IAAI;aACpB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"sim-iam-policy-statement-matcher.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-policy-statement-matcher.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iDAAiD,CAAC;AAC/F,OAAO,EAAE,4BAA4B,EAAE,MAAM,uCAAuC,CAAC;AAGrF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,4BAA4B;IAIV,OAAO;IAHnB,gBAAgB,CAA+B;IAC/C,gBAAgB,CAA+B;IAEhE,YAA6B,OAA2B;uBAA3B,OAAO;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CACtD,OAAO,CAAC,gBAAgB,CACzB,CAAC;QACF,IAAI,CAAC,gBAAgB,GAAG,IAAI,4BAA4B,CAAC,OAAO,CAAC,CAAC;IACpE,CAAC;IAED;;;;;;OAMG;IACH,OAAO,CACL,MAA+B,EAC/B,SAAsC;QAEtC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAEnE,OAAO,SAAS,CAAC,IAAI,CACnB,SAAS,CAAC,OAAO;YACf,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC;YAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC;YACvC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CACrD,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,aAAa,CAAC,SAAsC;QAC1D,IAAI,SAAS,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACpC,OAAO,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CACxC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBAChD,aAAa,EAAE,KAAK;aACrB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACvC,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAC/B,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACjD,aAAa,EAAE,KAAK;aACrB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,MAAM,IAAI,SAAS,CACjB,6DAA6D,CAC9D,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACK,eAAe,CACrB,MAA+B,EAC/B,SAAsC;QAEtC,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC1C,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAClD,aAAa,EAAE,IAAI;aACpB,CAAC,CACH,CAAC;QACJ,CAAC;QAED,IAAI,SAAS,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACzC,OAAO,SAAS,CAAC,YAAY,CAAC,KAAK,CACjC,CAAC,OAAO,EAAE,EAAE,CACV,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACnD,aAAa,EAAE,IAAI;aACpB,CAAC,CACL,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC,UAAU,KAAK,OAAO,CAAC;IACvC,CAAC;CACF"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * How a resource-policy statement came to apply to the caller.
3
+ *
4
+ * AWS treats these two differently. A statement naming the caller's own ARN is
5
+ * a grant to that principal. A statement naming the Account, as a bare account
6
+ * ID or a root ARN, delegates the decision to that Account's IAM rather than
7
+ * granting anything by itself. Most of this simulator does not yet act on the
8
+ * difference; a KMS key policy does, because it is the whole reason the
9
+ * default key policy does not make a key usable by everyone in the Account.
10
+ */
11
+ export declare class SimIamPrincipalMatch {
12
+ readonly matched: boolean;
13
+ readonly isAccountDelegation: boolean;
14
+ private constructor();
15
+ /**
16
+ * The statement does not apply to this caller.
17
+ */
18
+ static none(): SimIamPrincipalMatch;
19
+ /**
20
+ * The statement names this caller, or applies without naming an Account.
21
+ */
22
+ static direct(): SimIamPrincipalMatch;
23
+ /**
24
+ * The statement applies by way of the caller's Account.
25
+ */
26
+ static accountDelegation(): SimIamPrincipalMatch;
27
+ /**
28
+ * The first match among alternatives, since Principal lists are an OR.
29
+ *
30
+ * A direct match wins over a delegated one where both apply, because a
31
+ * statement naming the caller grants to the caller whatever else it says.
32
+ */
33
+ static first(matches: readonly SimIamPrincipalMatch[]): SimIamPrincipalMatch;
34
+ /**
35
+ * A match of the same kind, or none, according to a condition.
36
+ */
37
+ when(matched: boolean): SimIamPrincipalMatch;
38
+ }
39
+ //# sourceMappingURL=sim-iam-principal-match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-iam-principal-match.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-principal-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,qBAAa,oBAAoB;IAC/B,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,SAAgB,mBAAmB,EAAE,OAAO,CAAC;IAE7C,OAAO,eAGN;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,oBAAoB,CAElC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAEpC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,oBAAoB,CAE/C;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GAAG,oBAAoB,CAQ3E;IAED;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAE3C;CACF"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * How a resource-policy statement came to apply to the caller.
3
+ *
4
+ * AWS treats these two differently. A statement naming the caller's own ARN is
5
+ * a grant to that principal. A statement naming the Account, as a bare account
6
+ * ID or a root ARN, delegates the decision to that Account's IAM rather than
7
+ * granting anything by itself. Most of this simulator does not yet act on the
8
+ * difference; a KMS key policy does, because it is the whole reason the
9
+ * default key policy does not make a key usable by everyone in the Account.
10
+ */
11
+ export class SimIamPrincipalMatch {
12
+ matched;
13
+ isAccountDelegation;
14
+ constructor(matched, isAccountDelegation) {
15
+ this.matched = matched;
16
+ this.isAccountDelegation = isAccountDelegation;
17
+ }
18
+ /**
19
+ * The statement does not apply to this caller.
20
+ */
21
+ static none() {
22
+ return new SimIamPrincipalMatch(false, false);
23
+ }
24
+ /**
25
+ * The statement names this caller, or applies without naming an Account.
26
+ */
27
+ static direct() {
28
+ return new SimIamPrincipalMatch(true, false);
29
+ }
30
+ /**
31
+ * The statement applies by way of the caller's Account.
32
+ */
33
+ static accountDelegation() {
34
+ return new SimIamPrincipalMatch(true, true);
35
+ }
36
+ /**
37
+ * The first match among alternatives, since Principal lists are an OR.
38
+ *
39
+ * A direct match wins over a delegated one where both apply, because a
40
+ * statement naming the caller grants to the caller whatever else it says.
41
+ */
42
+ static first(matches) {
43
+ const matched = matches.filter((result) => result.matched);
44
+ return (matched.find((result) => !result.isAccountDelegation) ??
45
+ matched[0] ??
46
+ this.none());
47
+ }
48
+ /**
49
+ * A match of the same kind, or none, according to a condition.
50
+ */
51
+ when(matched) {
52
+ return matched ? this : SimIamPrincipalMatch.none();
53
+ }
54
+ }
55
+ //# sourceMappingURL=sim-iam-principal-match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-iam-principal-match.js","sourceRoot":"","sources":["../../../../../src/service/iam/authorize/match/sim-iam-principal-match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,OAAO,oBAAoB;IACf,OAAO,CAAU;IACjB,mBAAmB,CAAU;IAE7C,YAAoB,OAAgB,EAAE,mBAA4B;QAChE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,oBAAoB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,iBAAiB;QACtB,OAAO,IAAI,oBAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,KAAK,CAAC,OAAwC;QACnD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE3D,OAAO,CACL,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC;YACrD,OAAO,CAAC,CAAC,CAAC;YACV,IAAI,CAAC,IAAI,EAAE,CACZ,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAgB;QACnB,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC;IACtD,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-decision.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGxF,eAAO,MAAM,yBAAyB;aACpC,YAAY,EAAE,cAAc;aAC5B,KAAK,EAAE,OAAO;aACd,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CACxC;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IAEtD,YACE,OAAO,EAAE,kBAAkB,EAC3B,oBAAoB,GAAE,0BAA6D,EAOpF;IAED;;;;;OAKG;IACH,IAAI,MAAM,IAAI,oBAAoB,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,yBAAyB,CAUrC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;;;OAIG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,SAAS,6BAA6B,EAAE,CAErE;IAED;;;;;;OAMG;IACH,IAAI,eAAe,IAAI,SAAS,6BAA6B,EAAE,CAE9D;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,SAAS,6BAA6B,EAAE,CAEtE;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,SAAS,6BAA6B,EAAE,CAEtE;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,SAAS,6BAA6B,EAAE,CAEnE;IAED,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,cAAc;CAgBvB"}
1
+ {"version":3,"file":"sim-iam-decision.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-decision.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,KAAK,EACV,kBAAkB,EAEnB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,0BAA0B,EAAE,MAAM,4CAA4C,CAAC;AAExF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AAGxF,eAAO,MAAM,yBAAyB;aACpC,YAAY,EAAE,cAAc;aAC5B,KAAK,EAAE,OAAO;aACd,YAAY,EAAE,cAAc;CACpB,CAAC;AAEX,MAAM,MAAM,yBAAyB,GACnC,CAAC,OAAO,yBAAyB,CAAC,CAAC,MAAM,OAAO,yBAAyB,CAAC,CAAC;AAE7E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA6B;IAClE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA+B;IAChE,OAAO,CAAC,QAAQ,CAAC,4BAA4B,CACxC;IACL,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;IAEtD,YACE,OAAO,EAAE,kBAAkB,EAC3B,oBAAoB,GAAE,0BAA6D,EAOpF;IAED;;;;;OAKG;IACH,IAAI,MAAM,IAAI,oBAAoB,CAEjC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,yBAAyB,CAUrC;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,OAAO,CAE5B;IAED;;;;OAIG;IACH,IAAI,sBAAsB,IAAI,OAAO,CAEpC;IAED;;OAEG;IACH,IAAI,sBAAsB,IAAI,SAAS,6BAA6B,EAAE,CAErE;IAED;;;;;;OAMG;IACH,IAAI,eAAe,IAAI,SAAS,6BAA6B,EAAE,CAE9D;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,SAAS,6BAA6B,EAAE,CAEtE;IAED;;OAEG;IACH,IAAI,uBAAuB,IAAI,SAAS,6BAA6B,EAAE,CAEtE;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,SAAS,6BAA6B,EAAE,CAEnE;IAED,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,cAAc;CAkBvB"}
@@ -134,14 +134,15 @@ export class SimIamPolicyDecision {
134
134
  evaluatePolicy(policy) {
135
135
  const parsedPolicy = this.policyDocumentParser.parse(policy.document);
136
136
  for (const statement of parsedPolicy.statements) {
137
- if (!this.statementMatcher.matches(policy, statement)) {
137
+ const principal = this.statementMatcher.matches(policy, statement);
138
+ if (!principal.matched) {
138
139
  continue;
139
140
  }
140
141
  if (statement.effect === "Deny") {
141
142
  this.explicitDenyStatementRecords.push(statement.source);
142
143
  continue;
143
144
  }
144
- this.allows.record(policy, statement.source);
145
+ this.allows.record(policy, statement.source, principal);
145
146
  }
146
147
  }
147
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-decision.js","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-decision.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-iam-decision.js","sourceRoot":"","sources":["../../../../src/service/iam/authorize/sim-iam-decision.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { SimIam } from "./sim-iam.js";
2
+ export { SimIamAccessDenied, SimIamError } from "./error/sim-iam.error.js";
2
3
  export type { SimIamRequestOptions } from "./command/sim-iam-request-options.js";
3
4
  export type { SimIamCredentialIdentity } from "./credential/sim-aws-credentials.js";
4
5
  export { SimIamCredentialScopeMismatch, SimIamExpiredToken, SimIamIncompleteSignature, SimIamInvalidClientTokenId, SimIamSignatureDoesNotMatch, SimIamSigV4Error, type SimIamSigV4ErrorCode, } from "./sigv4/error/sim-iam-sigv4.error.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/iam/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,YAAY,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,KAAK,uBAAuB,EAC5B,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/service/iam/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC3E,YAAY,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,YAAY,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AACpF,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,EAChB,KAAK,oBAAoB,GAC1B,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AACxF,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,KAAK,uBAAuB,EAC5B,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,EACzB,KAAK,wBAAwB,GAC9B,MAAM,+CAA+C,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { SimIam } from "./sim-iam.js";
2
+ export { SimIamAccessDenied, SimIamError } from "./error/sim-iam.error.js";
2
3
  export { SimIamCredentialScopeMismatch, SimIamExpiredToken, SimIamIncompleteSignature, SimIamInvalidClientTokenId, SimIamSignatureDoesNotMatch, SimIamSigV4Error, } from "./sigv4/error/sim-iam-sigv4.error.js";
3
4
  export { simAwsCallerHeaderName, simAwsCallerHeaderPrincipal, simAwsCallerHeaderValue, } from "./request/sim-aws-caller-header.js";
4
5
  export { SimAwsRequestCaller, } from "./request/sim-aws-request-caller.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/iam/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,GAEjB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAE1B,MAAM,+CAA+C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/service/iam/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAG3E,OAAO,EACL,6BAA6B,EAC7B,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,2BAA2B,EAC3B,gBAAgB,GAEjB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAEL,mBAAmB,GACpB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAE1B,MAAM,+CAA+C,CAAC"}
@@ -5,6 +5,20 @@ import { SimAwsRequestCaller } from "./sim-aws-request-caller.js";
5
5
  interface SimAwsRequestCallerResolverProperties {
6
6
  readonly signedRequests: SimIamSigV4Verifier;
7
7
  }
8
+ /**
9
+ * What resolving a caller needs beyond the request itself.
10
+ */
11
+ export interface SimAwsCallerResolveOptions {
12
+ /**
13
+ * The service and Region the signature should have been scoped to.
14
+ */
15
+ readonly expectedScope?: SimIamSigV4ExpectedScope | undefined;
16
+ /**
17
+ * Simulated time, which credential expiry and a presigned URL's own expiry
18
+ * are both judged against.
19
+ */
20
+ readonly now?: Date | undefined;
21
+ }
8
22
  /**
9
23
  * The one place an HTTP request into simulated AWS becomes a principal.
10
24
  *
@@ -33,14 +47,16 @@ export declare class SimAwsRequestCallerResolver {
33
47
  * Throws a SimAwsRequestAuthFailure when the request states an identity that
34
48
  * cannot be accepted. Stating none is not a failure; it is anonymous.
35
49
  */
36
- resolve(request: SimIamSigV4SignedRequest, expectedScope?: SimIamSigV4ExpectedScope): SimAwsRequestCaller;
50
+ resolve(request: SimIamSigV4SignedRequest, options?: SimAwsCallerResolveOptions): SimAwsRequestCaller;
37
51
  /**
38
52
  * Whether the request offers a SigV4 signature to verify.
39
53
  *
40
- * Only an AWS4-HMAC-SHA256 header counts. An Authorization header of any
41
- * other scheme belongs to the application: a bearer token sent to a Function
42
- * URL with NONE auth is the handler's business, and treating it as a broken
43
- * signature would refuse a request real AWS delivers.
54
+ * Two things count: an AWS4-HMAC-SHA256 Authorization header, and the
55
+ * `X-Amz-Algorithm` parameter a presigned URL states its signature with. An
56
+ * Authorization header of any other scheme belongs to the application: a
57
+ * bearer token sent to a Function URL with NONE auth is the handler's
58
+ * business, and treating it as a broken signature would refuse a request real
59
+ * AWS delivers.
44
60
  */
45
61
  private carriesSignature;
46
62
  private signedCaller;
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-request-caller-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/request/sim-aws-request-caller-resolver.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAK9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,UAAU,qCAAqC;IAC7C,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;CAC9C;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IAErD,YAAY,UAAU,EAAE,qCAAqC,EAE5D;IAED;;;;;OAKG;IACH,OAAO,CACL,OAAO,EAAE,wBAAwB,EACjC,aAAa,CAAC,EAAE,wBAAwB,GACvC,mBAAmB,CAerB;IAED;;;;;;;OAOG;IACH,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;CAYrB"}
1
+ {"version":3,"file":"sim-aws-request-caller-resolver.d.ts","sourceRoot":"","sources":["../../../../src/service/iam/request/sim-aws-request-caller-resolver.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAK9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,UAAU,qCAAqC;IAC7C,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAC;CAC9C;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,wBAAwB,GAAG,SAAS,CAAC;IAC9D;;;OAGG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAsB;IAErD,YAAY,UAAU,EAAE,qCAAqC,EAE5D;IAED;;;;;OAKG;IACH,OAAO,CACL,OAAO,EAAE,wBAAwB,EACjC,OAAO,GAAE,0BAA+B,GACvC,mBAAmB,CAerB;IAED;;;;;;;;;OASG;IACH,OAAO,CAAC,gBAAgB;IAOxB,OAAO,CAAC,YAAY;CAerB"}
@@ -1,3 +1,4 @@
1
+ import { SimIamSigV4PresignedQuery } from "../sigv4/presign/sim-iam-sigv4-presigned-query.js";
1
2
  import { simIamSigV4Algorithm } from "../sigv4/sim-iam-sigv4-authorization.js";
2
3
  import { simAwsCallerHeaderName, simAwsCallerHeaderPrincipal, } from "./sim-aws-caller-header.js";
3
4
  import { SimAwsRequestCaller } from "./sim-aws-request-caller.js";
@@ -31,7 +32,7 @@ export class SimAwsRequestCallerResolver {
31
32
  * Throws a SimAwsRequestAuthFailure when the request states an identity that
32
33
  * cannot be accepted. Stating none is not a failure; it is anonymous.
33
34
  */
34
- resolve(request, expectedScope) {
35
+ resolve(request, options = {}) {
35
36
  const named = request.headers.get(simAwsCallerHeaderName);
36
37
  if (named !== null) {
37
38
  return new SimAwsRequestCaller({
@@ -42,22 +43,27 @@ export class SimAwsRequestCallerResolver {
42
43
  if (!this.carriesSignature(request)) {
43
44
  return SimAwsRequestCaller.anonymous();
44
45
  }
45
- return this.signedCaller(request, expectedScope);
46
+ return this.signedCaller(request, options);
46
47
  }
47
48
  /**
48
49
  * Whether the request offers a SigV4 signature to verify.
49
50
  *
50
- * Only an AWS4-HMAC-SHA256 header counts. An Authorization header of any
51
- * other scheme belongs to the application: a bearer token sent to a Function
52
- * URL with NONE auth is the handler's business, and treating it as a broken
53
- * signature would refuse a request real AWS delivers.
51
+ * Two things count: an AWS4-HMAC-SHA256 Authorization header, and the
52
+ * `X-Amz-Algorithm` parameter a presigned URL states its signature with. An
53
+ * Authorization header of any other scheme belongs to the application: a
54
+ * bearer token sent to a Function URL with NONE auth is the handler's
55
+ * business, and treating it as a broken signature would refuse a request real
56
+ * AWS delivers.
54
57
  */
55
58
  carriesSignature(request) {
56
59
  return (request.headers.get("authorization")?.startsWith(simIamSigV4Algorithm) ===
57
- true);
60
+ true || SimIamSigV4PresignedQuery.carriedBy(request.url));
58
61
  }
59
- signedCaller(request, expectedScope) {
60
- const identity = this.signedRequests.verify(request, { expectedScope });
62
+ signedCaller(request, options) {
63
+ const identity = this.signedRequests.verify(request, {
64
+ expectedScope: options.expectedScope,
65
+ now: options.now,
66
+ });
61
67
  return new SimAwsRequestCaller({
62
68
  principal: identity.principal,
63
69
  identityPolicyPrincipal: identity.identityPolicyPrincipal,
@@ -1 +1 @@
1
- {"version":3,"file":"sim-aws-request-caller-resolver.js","sourceRoot":"","sources":["../../../../src/service/iam/request/sim-aws-request-caller-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAI/E,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAMlE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,2BAA2B;IACrB,cAAc,CAAsB;IAErD,YAAY,UAAiD;QAC3D,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,OAAO,CACL,OAAiC,EACjC,aAAwC;QAExC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAE1D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,SAAS,EAAE,2BAA2B,CAAC,KAAK,CAAC;gBAC7C,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,mBAAmB,CAAC,SAAS,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;OAOG;IACK,gBAAgB,CAAC,OAAiC;QACxD,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC;YACtE,IAAI,CACL,CAAC;IACJ,CAAC;IAEO,YAAY,CAClB,OAAiC,EACjC,aAAmD;QAEnD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAExE,OAAO,IAAI,mBAAmB,CAAC;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,uBAAuB,EAAE,QAAQ,CAAC,uBAAuB;YACzD,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC;CACF"}
1
+ {"version":3,"file":"sim-aws-request-caller-resolver.js","sourceRoot":"","sources":["../../../../src/service/iam/request/sim-aws-request-caller-resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,mDAAmD,CAAC;AAC9F,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAI/E,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAqBlE;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,OAAO,2BAA2B;IACrB,cAAc,CAAsB;IAErD,YAAY,UAAiD;QAC3D,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACH,OAAO,CACL,OAAiC,EACjC,OAAO,GAA+B,EAAE;QAExC,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAE1D,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,OAAO,IAAI,mBAAmB,CAAC;gBAC7B,SAAS,EAAE,2BAA2B,CAAC,KAAK,CAAC;gBAC7C,UAAU,EAAE,eAAe;aAC5B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE,CAAC;YACpC,OAAO,mBAAmB,CAAC,SAAS,EAAE,CAAC;QACzC,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;;;OASG;IACK,gBAAgB,CAAC,OAAiC;QACxD,OAAO,CACL,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC,oBAAoB,CAAC;YACpE,IAAI,IAAI,yBAAyB,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAC3D,CAAC;IACJ,CAAC;IAEO,YAAY,CAClB,OAAiC,EACjC,OAAmC;QAEnC,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE;YACnD,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,GAAG,EAAE,OAAO,CAAC,GAAG;SACjB,CAAC,CAAC;QAEH,OAAO,IAAI,mBAAmB,CAAC;YAC7B,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,uBAAuB,EAAE,QAAQ,CAAC,uBAAuB;YACzD,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import type { SimIamSigV4SignedRequest } from "../sim-iam-sigv4-signed-request.js";
2
+ import { SimIamSigV4PayloadDeclaration } from "./sim-iam-sigv4-payload-hash.js";
2
3
  /**
3
4
  * The canonical form of a signed request: the exact bytes a signature is made
4
5
  * over.
@@ -11,7 +12,8 @@ import type { SimIamSigV4SignedRequest } from "../sim-iam-sigv4-signed-request.j
11
12
  export declare class SimIamSigV4CanonicalRequest {
12
13
  private readonly canonicalHeaders;
13
14
  private readonly signedRequest;
14
- constructor(signedRequest: SimIamSigV4SignedRequest, signedHeaderNames: readonly string[]);
15
+ private readonly payload;
16
+ constructor(signedRequest: SimIamSigV4SignedRequest, signedHeaderNames: readonly string[], payload?: SimIamSigV4PayloadDeclaration);
15
17
  /**
16
18
  * The canonical request string, ready to be hashed into a string to sign.
17
19
  */
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-sigv4-canonical-request.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAMnF;;;;;;;;GAQG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IAEzD,YACE,aAAa,EAAE,wBAAwB,EACvC,iBAAiB,EAAE,SAAS,MAAM,EAAE,EAQrC;IAED;;OAEG;IACH,QAAQ,IAAI,MAAM,CAWjB;CACF"}
1
+ {"version":3,"file":"sim-iam-sigv4-canonical-request.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAInF,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;;;;;;;GAQG;AACH,qBAAa,2BAA2B;IACtC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA8B;IAC/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgC;IAExD,YACE,aAAa,EAAE,wBAAwB,EACvC,iBAAiB,EAAE,SAAS,MAAM,EAAE,EACpC,OAAO,GAAE,6BAER,EASF;IAED;;OAEG;IACH,QAAQ,IAAI,MAAM,CAWjB;CACF"}
@@ -1,7 +1,7 @@
1
1
  import { SimIamSigV4CanonicalHeaders } from "./sim-iam-sigv4-canonical-headers.js";
2
2
  import { simIamSigV4CanonicalPath } from "./sim-iam-sigv4-canonical-path.js";
3
3
  import { simIamSigV4CanonicalQuery } from "./sim-iam-sigv4-canonical-query.js";
4
- import { simIamSigV4PayloadHash } from "./sim-iam-sigv4-payload-hash.js";
4
+ import { SimIamSigV4PayloadDeclaration } from "./sim-iam-sigv4-payload-hash.js";
5
5
  /**
6
6
  * The canonical form of a signed request: the exact bytes a signature is made
7
7
  * over.
@@ -14,22 +14,24 @@ import { simIamSigV4PayloadHash } from "./sim-iam-sigv4-payload-hash.js";
14
14
  export class SimIamSigV4CanonicalRequest {
15
15
  canonicalHeaders;
16
16
  signedRequest;
17
- constructor(signedRequest, signedHeaderNames) {
17
+ payload;
18
+ constructor(signedRequest, signedHeaderNames, payload = SimIamSigV4PayloadDeclaration.fromHeaders(signedRequest.headers)) {
18
19
  this.signedRequest = signedRequest;
20
+ this.payload = payload;
19
21
  this.canonicalHeaders = new SimIamSigV4CanonicalHeaders(signedRequest.headers, signedHeaderNames, signedRequest.url);
20
22
  }
21
23
  /**
22
24
  * The canonical request string, ready to be hashed into a string to sign.
23
25
  */
24
26
  toString() {
25
- const { method, url, headers, body } = this.signedRequest;
27
+ const { method, url, body } = this.signedRequest;
26
28
  return [
27
29
  method.toUpperCase(),
28
30
  simIamSigV4CanonicalPath(url.pathname),
29
31
  simIamSigV4CanonicalQuery(url.search),
30
32
  `${this.canonicalHeaders.toString()}\n`,
31
33
  this.canonicalHeaders.signedHeaderList(),
32
- simIamSigV4PayloadHash(headers, body),
34
+ this.payload.hashFor(body),
33
35
  ].join("\n");
34
36
  }
35
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-sigv4-canonical-request.js","sourceRoot":"","sources":["../../../../../src/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IACrB,gBAAgB,CAA8B;IAC9C,aAAa,CAA2B;IAEzD,YACE,aAAuC,EACvC,iBAAoC;QAEpC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,2BAA2B,CACrD,aAAa,CAAC,OAAO,EACrB,iBAAiB,EACjB,aAAa,CAAC,GAAG,CAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAE1D,OAAO;YACL,MAAM,CAAC,WAAW,EAAE;YACpB,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC;YACrC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI;YACvC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;YACxC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC;SACtC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
1
+ {"version":3,"file":"sim-iam-sigv4-canonical-request.js","sourceRoot":"","sources":["../../../../../src/service/iam/sigv4/canonical/sim-iam-sigv4-canonical-request.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAC7E,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAC/E,OAAO,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAEhF;;;;;;;;GAQG;AACH,MAAM,OAAO,2BAA2B;IACrB,gBAAgB,CAA8B;IAC9C,aAAa,CAA2B;IACxC,OAAO,CAAgC;IAExD,YACE,aAAuC,EACvC,iBAAoC,EACpC,OAAO,GAAkC,6BAA6B,CAAC,WAAW,CAChF,aAAa,CAAC,OAAO,CACtB;QAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,gBAAgB,GAAG,IAAI,2BAA2B,CACrD,aAAa,CAAC,OAAO,EACrB,iBAAiB,EACjB,aAAa,CAAC,GAAG,CAClB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC;QAEjD,OAAO;YACL,MAAM,CAAC,WAAW,EAAE;YACpB,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC;YACtC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC;YACrC,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI;YACvC,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE;YACxC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;SAC3B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF"}
@@ -1,19 +1,39 @@
1
1
  export declare const simIamSigV4UnsignedPayload = "UNSIGNED-PAYLOAD";
2
2
  /**
3
- * Work out the payload hash a signed request was signed with, and check the
4
- * body it arrived with is the body it claims.
3
+ * What a signed request declares its body hashes to.
5
4
  *
6
- * A signer states the payload hash in `x-amz-content-sha256`, and that header
7
- * is itself signed, so the claim cannot be altered without breaking the
8
- * signature. The claim still has to be checked against the bytes received:
9
- * without that, a signature would cover only the client's assertion about the
10
- * body, and the body could be replaced freely.
11
- *
12
- * `UNSIGNED-PAYLOAD` is the one declaration that deliberately leaves the body
13
- * uncovered, and is honoured. Any other non-digest value, including the
14
- * streaming markers that chunked uploads use, is refused rather than passed
15
- * through: accepting one would mean serving a request whose body nothing had
16
- * checked, which is worse than saying the simulator does not support it.
5
+ * A header-signed request states this in `x-amz-content-sha256`. A presigned
6
+ * URL states it in the query parameter of the same name, and a presigned URL
7
+ * that states nothing has an unsigned payload, because a URL is signed before
8
+ * there is a body to hash. Reading the declaration is the one part of building
9
+ * a canonical request that differs between the two.
17
10
  */
18
- export declare function simIamSigV4PayloadHash(headers: Headers, body: Uint8Array | undefined): string;
11
+ export declare class SimIamSigV4PayloadDeclaration {
12
+ private readonly declared;
13
+ private constructor();
14
+ /**
15
+ * The declaration a header-signed request makes.
16
+ */
17
+ static fromHeaders(headers: Headers): SimIamSigV4PayloadDeclaration;
18
+ /**
19
+ * The declaration a presigned URL makes, defaulting to an unsigned payload.
20
+ */
21
+ static fromPresignedQuery(url: URL): SimIamSigV4PayloadDeclaration;
22
+ /**
23
+ * Work out the payload hash the request was signed with, and check that the
24
+ * body it arrived with is the body it claims.
25
+ *
26
+ * The declaration is itself signed, so the claim cannot be altered without
27
+ * breaking the signature. The claim still has to be checked against the bytes
28
+ * received: without that, a signature would cover only the client's assertion
29
+ * about the body, and the body could be replaced freely.
30
+ *
31
+ * `UNSIGNED-PAYLOAD` is the one declaration that deliberately leaves the body
32
+ * uncovered, and is honoured. Any other non-digest value, including the
33
+ * streaming markers that chunked uploads use, is refused rather than passed
34
+ * through: accepting one would mean serving a request whose body nothing had
35
+ * checked, which is worse than saying the simulator does not support it.
36
+ */
37
+ hashFor(body: Uint8Array | undefined): string;
38
+ }
19
39
  //# sourceMappingURL=sim-iam-sigv4-payload-hash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-iam-sigv4-payload-hash.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAW7D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,UAAU,GAAG,SAAS,GAC3B,MAAM,CA6BR"}
1
+ {"version":3,"file":"sim-iam-sigv4-payload-hash.d.ts","sourceRoot":"","sources":["../../../../../src/service/iam/sigv4/canonical/sim-iam-sigv4-payload-hash.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,0BAA0B,qBAAqB,CAAC;AAW7D;;;;;;;;GAQG;AACH,qBAAa,6BAA6B;IACxC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgB;IAEzC,OAAO,eAEN;IAED;;OAEG;IACH,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,6BAA6B,CAElE;IAED;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,6BAA6B,CAOjE;IAED;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,IAAI,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CA6B5C;CACF"}