@mtndev/cli 2.0.0 → 2.0.1

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 (264) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/cjs/__chunks/VH7oDXx4.cjs +28 -0
  3. package/cjs/commands/aws/ec2/allow-ip/handler.cjs +261 -12
  4. package/cjs/commands/aws/ec2/allow-ip/index.cjs +25 -55
  5. package/cjs/commands/aws/ec2/allow-ip/schema.cjs +33 -13
  6. package/cjs/commands/aws/ec2/allow-ip/utils.cjs +379 -39
  7. package/cjs/commands/aws/iam/admin-group.cjs +111 -15
  8. package/cjs/commands/aws/iam/break-glass/handler.cjs +127 -12
  9. package/cjs/commands/aws/iam/break-glass/index.cjs +7 -19
  10. package/cjs/commands/aws/iam/break-glass/schema.cjs +21 -12
  11. package/cjs/commands/aws/iam/check-admin/handler.cjs +89 -10
  12. package/cjs/commands/aws/iam/check-admin/index.cjs +7 -17
  13. package/cjs/commands/aws/iam/check-admin/schema.cjs +19 -12
  14. package/cjs/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.json +20 -0
  15. package/cjs/commands/aws/iam/policies/sts-federation.json +11 -0
  16. package/cjs/commands/aws/iam/policies/user-admins-deny-list.json +175 -0
  17. package/cjs/commands/aws/iam/policies/user-admins-deny-regions-list.json +41 -0
  18. package/cjs/commands/aws/iam/policies/user-admins-self-service-iam.json +56 -0
  19. package/cjs/commands/aws/iam/policies/user-admins-write-list.json +117 -0
  20. package/cjs/commands/aws/iam/remove-admin/handler.cjs +120 -11
  21. package/cjs/commands/aws/iam/remove-admin/index.cjs +7 -18
  22. package/cjs/commands/aws/iam/remove-admin/schema.cjs +22 -12
  23. package/cjs/commands/aws/iam/setup-acl/handler.cjs +227 -14
  24. package/cjs/commands/aws/iam/setup-acl/index.cjs +13 -33
  25. package/cjs/commands/aws/iam/setup-acl/schema.cjs +19 -7
  26. package/cjs/commands/aws/iam/setup-acl/utils.cjs +305 -20
  27. package/cjs/commands/aws/iam/users/handler.cjs +59 -12
  28. package/cjs/commands/aws/iam/users/index.cjs +18 -41
  29. package/cjs/commands/aws/iam/users/schema.cjs +17 -7
  30. package/cjs/commands/aws/iam/users/utils.cjs +454 -30
  31. package/cjs/commands/aws/index.cjs +223 -229
  32. package/cjs/commands/aws/route53/add-record/handler.cjs +264 -18
  33. package/cjs/commands/aws/route53/add-record/index.cjs +26 -57
  34. package/cjs/commands/aws/route53/add-record/schema.cjs +43 -11
  35. package/cjs/commands/aws/route53/add-record/utils.cjs +404 -37
  36. package/cjs/commands/aws/route53/remove-record/handler.cjs +114 -14
  37. package/cjs/commands/aws/route53/remove-record/index.cjs +5 -18
  38. package/cjs/commands/aws/route53/remove-record/schema.cjs +22 -8
  39. package/cjs/commands/aws/schema.cjs +19 -10
  40. package/cjs/commands/aws/ses/send-email/handler.cjs +73 -12
  41. package/cjs/commands/aws/ses/send-email/index.cjs +9 -23
  42. package/cjs/commands/aws/ses/send-email/schema.cjs +24 -7
  43. package/cjs/commands/aws/ses/send-email/utils.cjs +87 -11
  44. package/cjs/commands/aws/ses/smtp-password.cjs +72 -10
  45. package/cjs/commands/aws/utils/exec-aws.cjs +145 -16
  46. package/cjs/commands/aws/utils/resolve-policy-path.cjs +15 -6
  47. package/cjs/commands/aws/utils/resolve-profile.cjs +93 -11
  48. package/cjs/commands/aws/utils/tty.cjs +54 -10
  49. package/cjs/commands/db/create-readonly-user/handler.cjs +254 -11
  50. package/cjs/commands/db/create-readonly-user/index.cjs +18 -40
  51. package/cjs/commands/db/create-readonly-user/mysql.cjs +102 -9
  52. package/cjs/commands/db/create-readonly-user/postgres.cjs +209 -9
  53. package/cjs/commands/db/create-readonly-user/schema.cjs +39 -12
  54. package/cjs/commands/db/create-readonly-user/utils.cjs +160 -22
  55. package/cjs/commands/db/index.cjs +46 -44
  56. package/cjs/commands/doppler/handler.cjs +95 -11
  57. package/cjs/commands/doppler/index.cjs +33 -68
  58. package/cjs/commands/doppler/schema.cjs +130 -14
  59. package/cjs/commands/doppler/set-secret.cjs +378 -19
  60. package/cjs/commands/doppler/utils/exec.cjs +106 -12
  61. package/cjs/commands/doppler/utils.cjs +412 -34
  62. package/cjs/commands/icons/handler.cjs +82 -8
  63. package/cjs/commands/icons/index.cjs +15 -31
  64. package/cjs/commands/icons/schema.cjs +101 -13
  65. package/cjs/commands/icons/utils.cjs +131 -13
  66. package/cjs/commands/index.cjs +54 -161
  67. package/cjs/commands/schema.cjs +25 -8
  68. package/cjs/index.cjs +3 -4
  69. package/esm/commands/aws/ec2/allow-ip/handler.js +258 -12
  70. package/esm/commands/aws/ec2/allow-ip/index.js +4 -55
  71. package/esm/commands/aws/ec2/allow-ip/schema.js +29 -13
  72. package/esm/commands/aws/ec2/allow-ip/utils.js +363 -39
  73. package/esm/commands/aws/iam/admin-group.js +104 -15
  74. package/esm/commands/aws/iam/break-glass/handler.js +124 -12
  75. package/esm/commands/aws/iam/break-glass/index.js +4 -19
  76. package/esm/commands/aws/iam/break-glass/schema.js +19 -12
  77. package/esm/commands/aws/iam/check-admin/handler.js +86 -10
  78. package/esm/commands/aws/iam/check-admin/index.js +4 -17
  79. package/esm/commands/aws/iam/check-admin/schema.js +17 -12
  80. package/esm/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.json +20 -0
  81. package/esm/commands/aws/iam/policies/sts-federation.json +11 -0
  82. package/esm/commands/aws/iam/policies/user-admins-deny-list.json +175 -0
  83. package/esm/commands/aws/iam/policies/user-admins-deny-regions-list.json +41 -0
  84. package/esm/commands/aws/iam/policies/user-admins-self-service-iam.json +56 -0
  85. package/esm/commands/aws/iam/policies/user-admins-write-list.json +117 -0
  86. package/esm/commands/aws/iam/remove-admin/handler.js +117 -11
  87. package/esm/commands/aws/iam/remove-admin/index.js +4 -18
  88. package/esm/commands/aws/iam/remove-admin/schema.js +20 -12
  89. package/esm/commands/aws/iam/setup-acl/handler.js +224 -14
  90. package/esm/commands/aws/iam/setup-acl/index.js +4 -33
  91. package/esm/commands/aws/iam/setup-acl/schema.js +18 -7
  92. package/esm/commands/aws/iam/setup-acl/utils.js +298 -20
  93. package/esm/commands/aws/iam/users/handler.js +56 -12
  94. package/esm/commands/aws/iam/users/index.js +4 -41
  95. package/esm/commands/aws/iam/users/schema.js +16 -7
  96. package/esm/commands/aws/iam/users/utils.js +440 -30
  97. package/esm/commands/aws/index.js +142 -229
  98. package/esm/commands/aws/route53/add-record/handler.js +258 -18
  99. package/esm/commands/aws/route53/add-record/index.js +4 -57
  100. package/esm/commands/aws/route53/add-record/schema.js +40 -11
  101. package/esm/commands/aws/route53/add-record/utils.js +389 -37
  102. package/esm/commands/aws/route53/remove-record/handler.js +111 -14
  103. package/esm/commands/aws/route53/remove-record/index.js +3 -18
  104. package/esm/commands/aws/route53/remove-record/schema.js +21 -8
  105. package/esm/commands/aws/schema.js +16 -10
  106. package/esm/commands/aws/ses/send-email/handler.js +70 -12
  107. package/esm/commands/aws/ses/send-email/index.js +4 -23
  108. package/esm/commands/aws/ses/send-email/schema.js +23 -7
  109. package/esm/commands/aws/ses/send-email/utils.js +84 -11
  110. package/esm/commands/aws/ses/smtp-password.js +69 -10
  111. package/esm/commands/aws/utils/exec-aws.js +136 -15
  112. package/esm/commands/aws/utils/resolve-policy-path.js +14 -6
  113. package/esm/commands/aws/utils/resolve-profile.js +88 -11
  114. package/esm/commands/aws/utils/tty.js +51 -10
  115. package/esm/commands/db/create-readonly-user/handler.js +251 -11
  116. package/esm/commands/db/create-readonly-user/index.js +4 -40
  117. package/esm/commands/db/create-readonly-user/mysql.js +98 -9
  118. package/esm/commands/db/create-readonly-user/postgres.js +205 -9
  119. package/esm/commands/db/create-readonly-user/schema.js +35 -12
  120. package/esm/commands/db/create-readonly-user/utils.js +151 -22
  121. package/esm/commands/db/index.js +31 -44
  122. package/esm/commands/doppler/handler.js +92 -11
  123. package/esm/commands/doppler/index.js +6 -68
  124. package/esm/commands/doppler/schema.js +125 -15
  125. package/esm/commands/doppler/set-secret.js +370 -19
  126. package/esm/commands/doppler/utils/exec.js +100 -12
  127. package/esm/commands/doppler/utils.js +396 -34
  128. package/esm/commands/icons/handler.js +79 -8
  129. package/esm/commands/icons/index.js +4 -31
  130. package/esm/commands/icons/schema.js +97 -15
  131. package/esm/commands/icons/utils.js +125 -13
  132. package/esm/commands/index.js +47 -155
  133. package/esm/commands/schema.js +22 -7
  134. package/esm/index.js +3 -4
  135. package/package.json +5 -2
  136. package/vitest.config.ts +11 -0
  137. package/cjs/__chunks/2FSYDFUV.cjs +0 -146
  138. package/cjs/__chunks/3A5ZYU5M.cjs +0 -105
  139. package/cjs/__chunks/3BY5Y4W7.cjs +0 -1
  140. package/cjs/__chunks/3NOHGUCF.cjs +0 -9
  141. package/cjs/__chunks/3T2LXW7J.cjs +0 -387
  142. package/cjs/__chunks/4SFWHCB3.cjs +0 -133
  143. package/cjs/__chunks/4XT5JEAS.cjs +0 -1
  144. package/cjs/__chunks/AZEB4H4I.cjs +0 -208
  145. package/cjs/__chunks/B2KFW7T7.cjs +0 -1
  146. package/cjs/__chunks/B5ENMOCD.cjs +0 -288
  147. package/cjs/__chunks/B6XM5KSF.cjs +0 -338
  148. package/cjs/__chunks/BDU2UCE5.cjs +0 -1
  149. package/cjs/__chunks/BLMSMR5E.cjs +0 -46
  150. package/cjs/__chunks/CMUD7LLN.cjs +0 -47
  151. package/cjs/__chunks/DTQ2LB3I.cjs +0 -49
  152. package/cjs/__chunks/FM5MVRQF.cjs +0 -23
  153. package/cjs/__chunks/FRHST54J.cjs +0 -135
  154. package/cjs/__chunks/FU4VP2LN.cjs +0 -1
  155. package/cjs/__chunks/G5K4PVIL.cjs +0 -26
  156. package/cjs/__chunks/GU3R54MK.cjs +0 -127
  157. package/cjs/__chunks/GUL36IFZ.cjs +0 -61
  158. package/cjs/__chunks/GZMTNK5N.cjs +0 -1
  159. package/cjs/__chunks/H74JSDBU.cjs +0 -30
  160. package/cjs/__chunks/INFOPAHN.cjs +0 -117
  161. package/cjs/__chunks/J36P6UNE.cjs +0 -75
  162. package/cjs/__chunks/JB7T7PKQ.cjs +0 -538
  163. package/cjs/__chunks/JSL2JDMW.cjs +0 -1
  164. package/cjs/__chunks/K4QNHRTP.cjs +0 -163
  165. package/cjs/__chunks/KU76LC42.cjs +0 -192
  166. package/cjs/__chunks/LFDSHANP.cjs +0 -34
  167. package/cjs/__chunks/LHE24ECK.cjs +0 -192
  168. package/cjs/__chunks/LIKQ3SI4.cjs +0 -1
  169. package/cjs/__chunks/LXDF5QVZ.cjs +0 -313
  170. package/cjs/__chunks/LXOOJR2R.cjs +0 -74
  171. package/cjs/__chunks/N5MXFOQZ.cjs +0 -167
  172. package/cjs/__chunks/N7D56LPP.cjs +0 -25
  173. package/cjs/__chunks/NFXQNOQH.cjs +0 -393
  174. package/cjs/__chunks/NIMXXHJQ.cjs +0 -92
  175. package/cjs/__chunks/NLKJIUEX.cjs +0 -126
  176. package/cjs/__chunks/NT2XXAI6.cjs +0 -89
  177. package/cjs/__chunks/NWZGFHKH.cjs +0 -121
  178. package/cjs/__chunks/R3GUC7O7.cjs +0 -110
  179. package/cjs/__chunks/RPVAXPJ4.cjs +0 -1
  180. package/cjs/__chunks/S3LVCWPN.cjs +0 -23
  181. package/cjs/__chunks/SBBNW2BF.cjs +0 -249
  182. package/cjs/__chunks/T2A7TN4F.cjs +0 -81
  183. package/cjs/__chunks/TKNNDDIB.cjs +0 -97
  184. package/cjs/__chunks/TNSRDJPR.cjs +0 -1
  185. package/cjs/__chunks/UWHPE2GI.cjs +0 -20
  186. package/cjs/__chunks/W6K7BV74.cjs +0 -1
  187. package/cjs/__chunks/WBOQ6AUN.cjs +0 -320
  188. package/cjs/__chunks/WHGN5PZI.cjs +0 -299
  189. package/cjs/__chunks/WOYF2L6T.cjs +0 -11
  190. package/cjs/__chunks/X26XY2N6.cjs +0 -18
  191. package/cjs/__chunks/XMKOKRXZ.cjs +0 -16
  192. package/cjs/__chunks/XTJPQ3EX.cjs +0 -1
  193. package/cjs/__chunks/YRHFKTW2.cjs +0 -63
  194. package/cjs/__chunks/ZMDIOZPT.cjs +0 -22
  195. package/cjs/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.cjs +0 -28
  196. package/cjs/commands/aws/iam/policies/sts-federation.cjs +0 -19
  197. package/cjs/commands/aws/iam/policies/user-admins-deny-list.cjs +0 -183
  198. package/cjs/commands/aws/iam/policies/user-admins-deny-regions-list.cjs +0 -49
  199. package/cjs/commands/aws/iam/policies/user-admins-self-service-iam.cjs +0 -64
  200. package/cjs/commands/aws/iam/policies/user-admins-write-list.cjs +0 -125
  201. package/esm/__chunks/2FTTEFEK.js +0 -97
  202. package/esm/__chunks/33UYMUQD.js +0 -338
  203. package/esm/__chunks/3BKWTHLJ.js +0 -25
  204. package/esm/__chunks/3HE4BEJX.js +0 -105
  205. package/esm/__chunks/3QLI5BDL.js +0 -387
  206. package/esm/__chunks/5GIUAFXL.js +0 -89
  207. package/esm/__chunks/5ZBVGSOK.js +0 -0
  208. package/esm/__chunks/6G4PXXKF.js +0 -75
  209. package/esm/__chunks/73BJG53F.js +0 -11
  210. package/esm/__chunks/7VF4Q43Q.js +0 -0
  211. package/esm/__chunks/AEDEAYF5.js +0 -0
  212. package/esm/__chunks/AZCP3SFJ.js +0 -0
  213. package/esm/__chunks/B2DVQ2UL.js +0 -61
  214. package/esm/__chunks/CVQVHLW5.js +0 -0
  215. package/esm/__chunks/D62SPZXC.js +0 -0
  216. package/esm/__chunks/DLEJ25GZ.js +0 -121
  217. package/esm/__chunks/DMYFNF54.js +0 -192
  218. package/esm/__chunks/DNFTUMGD.js +0 -23
  219. package/esm/__chunks/DVKD6YSR.js +0 -49
  220. package/esm/__chunks/EMSH4P76.js +0 -20
  221. package/esm/__chunks/FFKFVMIE.js +0 -167
  222. package/esm/__chunks/FL7AILGH.js +0 -133
  223. package/esm/__chunks/FNXUONAV.js +0 -110
  224. package/esm/__chunks/G4NJHFFU.js +0 -320
  225. package/esm/__chunks/HJSXC6HP.js +0 -117
  226. package/esm/__chunks/IEOGAQYI.js +0 -46
  227. package/esm/__chunks/IZFGBYGE.js +0 -34
  228. package/esm/__chunks/J34UVKLA.js +0 -26
  229. package/esm/__chunks/JZPBBBIG.js +0 -74
  230. package/esm/__chunks/KWUJP5MG.js +0 -135
  231. package/esm/__chunks/M35URMT4.js +0 -313
  232. package/esm/__chunks/NF3M2L6C.js +0 -81
  233. package/esm/__chunks/O3CCA76Q.js +0 -22
  234. package/esm/__chunks/PNPPDYKC.js +0 -299
  235. package/esm/__chunks/QFXN4EHM.js +0 -393
  236. package/esm/__chunks/QKDDLIWD.js +0 -146
  237. package/esm/__chunks/QSE66AKY.js +0 -208
  238. package/esm/__chunks/QUF7PS4R.js +0 -18
  239. package/esm/__chunks/S7IJPJ4R.js +0 -126
  240. package/esm/__chunks/SD3E3EPH.js +0 -163
  241. package/esm/__chunks/SJXQJ7RS.js +0 -92
  242. package/esm/__chunks/SNCKIAOR.js +0 -0
  243. package/esm/__chunks/T3TTUHTW.js +0 -30
  244. package/esm/__chunks/TIOVE6HR.js +0 -0
  245. package/esm/__chunks/TXKMEIDQ.js +0 -0
  246. package/esm/__chunks/U7HAE2RF.js +0 -288
  247. package/esm/__chunks/UXWY7BYE.js +0 -63
  248. package/esm/__chunks/VKAKISRG.js +0 -192
  249. package/esm/__chunks/WD2YR6I7.js +0 -0
  250. package/esm/__chunks/WOZFZKFY.js +0 -0
  251. package/esm/__chunks/XI7GZDE2.js +0 -0
  252. package/esm/__chunks/XOUWDB3T.js +0 -249
  253. package/esm/__chunks/XQN2TA4S.js +0 -23
  254. package/esm/__chunks/XXK32TIM.js +0 -16
  255. package/esm/__chunks/YGWTVPZE.js +0 -538
  256. package/esm/__chunks/YRG7PT33.js +0 -127
  257. package/esm/__chunks/ZHKVJO2U.js +0 -47
  258. package/esm/__chunks/ZO55YUSY.js +0 -9
  259. package/esm/commands/aws/iam/policies/s3-restrictions-deny-non-s3-services.js +0 -28
  260. package/esm/commands/aws/iam/policies/sts-federation.js +0 -19
  261. package/esm/commands/aws/iam/policies/user-admins-deny-list.js +0 -183
  262. package/esm/commands/aws/iam/policies/user-admins-deny-regions-list.js +0 -49
  263. package/esm/commands/aws/iam/policies/user-admins-self-service-iam.js +0 -64
  264. package/esm/commands/aws/iam/policies/user-admins-write-list.js +0 -125
@@ -1,19 +1,7 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../../../../__chunks/BDU2UCE5.cjs');
2
-
3
-
4
- var _KU76LC42cjs = require('../../../../__chunks/KU76LC42.cjs');
5
-
6
-
7
- var _UWHPE2GIcjs = require('../../../../__chunks/UWHPE2GI.cjs');
8
-
9
-
10
- var _T2A7TN4Fcjs = require('../../../../__chunks/T2A7TN4F.cjs');
11
- require('../../../../__chunks/R3GUC7O7.cjs');
12
- require('../../../../__chunks/NT2XXAI6.cjs');
13
- require('../../../../__chunks/WOYF2L6T.cjs');
14
- require('../../../../__chunks/CMUD7LLN.cjs');
15
-
16
-
17
-
18
-
19
- exports.ADMIN_GROUP_NAME = _T2A7TN4Fcjs.ADMIN_GROUP_NAME; exports.breakGlassCommand = _KU76LC42cjs.breakGlassCommand; exports.breakGlassOptionsSchema = _UWHPE2GIcjs.breakGlassOptionsSchema;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
3
+ const require_commands_aws_iam_break_glass_schema = require("./schema.cjs");
4
+ const require_commands_aws_iam_break_glass_handler = require("./handler.cjs");
5
+ exports.ADMIN_GROUP_NAME = require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME;
6
+ exports.breakGlassCommand = require_commands_aws_iam_break_glass_handler.breakGlassCommand;
7
+ exports.breakGlassOptionsSchema = require_commands_aws_iam_break_glass_schema.breakGlassOptionsSchema;
@@ -1,12 +1,21 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _UWHPE2GIcjs = require('../../../../__chunks/UWHPE2GI.cjs');
4
-
5
-
6
- var _T2A7TN4Fcjs = require('../../../../__chunks/T2A7TN4F.cjs');
7
- require('../../../../__chunks/R3GUC7O7.cjs');
8
- require('../../../../__chunks/WOYF2L6T.cjs');
9
-
10
-
11
-
12
- exports.ADMIN_GROUP_NAME = _T2A7TN4Fcjs.ADMIN_GROUP_NAME; exports.breakGlassOptionsSchema = _UWHPE2GIcjs.breakGlassOptionsSchema;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_schema = require("../../schema.cjs");
3
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
4
+ let zod = require("zod");
5
+ //#region src/commands/aws/iam/break-glass/schema.js
6
+ /**
7
+ * Zod schema for `aws iam break-glass` options.
8
+ */
9
+ const breakGlassOptionsSchema = zod.z.object({
10
+ profile: require_commands_aws_schema.profileField,
11
+ user: zod.z.array(zod.z.string()).optional().default([]).describe("Grant break-glass to this user (repeatable). Default: your own IAM user"),
12
+ yes: zod.z.boolean().optional().default(false).describe("Skip the confirmation prompt"),
13
+ dryRun: zod.z.boolean().optional().default(false).describe("Preview the grant without changing anything"),
14
+ verbose: require_commands_aws_schema.verboseField
15
+ });
16
+ /**
17
+ * @typedef {z.infer<typeof breakGlassOptionsSchema>} BreakGlassOptions
18
+ */
19
+ //#endregion
20
+ exports.ADMIN_GROUP_NAME = require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME;
21
+ exports.breakGlassOptionsSchema = breakGlassOptionsSchema;
@@ -1,10 +1,89 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _NLKJIUEXcjs = require('../../../../__chunks/NLKJIUEX.cjs');
4
- require('../../../../__chunks/X26XY2N6.cjs');
5
- require('../../../../__chunks/T2A7TN4F.cjs');
6
- require('../../../../__chunks/R3GUC7O7.cjs');
7
- require('../../../../__chunks/WOYF2L6T.cjs');
8
-
9
-
10
- exports.checkAdminCommand = _NLKJIUEXcjs.checkAdminCommand;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_rolldown_runtime = require("../../../../__chunks/VH7oDXx4.cjs");
3
+ const require_commands_aws_utils_exec_aws = require("../../utils/exec-aws.cjs");
4
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
5
+ const require_commands_aws_iam_check_admin_schema = require("./schema.cjs");
6
+ let chalk = require("chalk");
7
+ chalk = require_rolldown_runtime.__toESM(chalk, 1);
8
+ let zod = require("zod");
9
+ //#region src/commands/aws/iam/check-admin/handler.js
10
+ /**
11
+ * `aws iam check-admin` handler: alert if anyone is a member of acl-admin-do-not-use.
12
+ * @param {unknown} options
13
+ */
14
+ async function checkAdminCommand(options) {
15
+ try {
16
+ const { profile, all, verbose } = require_commands_aws_iam_check_admin_schema.checkAdminOptionsSchema.parse(options);
17
+ require_commands_aws_utils_exec_aws.requireCommands(["aws"]);
18
+ if (all || !(profile ?? process.env.AWS_PROFILE)) require_commands_aws_utils_exec_aws.requireCommands(["aws-vault"]);
19
+ /** @type {string[]} */
20
+ let profiles;
21
+ try {
22
+ profiles = require_commands_aws_iam_admin_group.resolveAdminScanProfiles({
23
+ profile,
24
+ all
25
+ });
26
+ } catch (resolveError) {
27
+ if (resolveError instanceof Error && resolveError.message === "No aws-vault profiles with credentials found.") {
28
+ console.error(chalk.default.red(resolveError.message));
29
+ process.exit(1);
30
+ }
31
+ throw resolveError;
32
+ }
33
+ console.log(chalk.default.blue(`\n==> Checking ${profiles.length} profile(s) for ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME}\n`));
34
+ let ok = 0;
35
+ let alert = 0;
36
+ let skip = 0;
37
+ for (const candidate of profiles) {
38
+ const scan = require_commands_aws_iam_admin_group.resolveProfileScan({
39
+ profile: candidate,
40
+ verbose
41
+ });
42
+ if (!scan) {
43
+ skip += 1;
44
+ continue;
45
+ }
46
+ if (scan.users.length === 0) {
47
+ console.log(chalk.default.green(`OK ${candidate} (${scan.accountId}) — ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME}: 0 users`));
48
+ ok += 1;
49
+ } else {
50
+ console.log(chalk.default.red(`ALERT ${candidate} (${scan.accountId}) — ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME}: ${scan.users.length} user(s): ${scan.users.join(", ")}`));
51
+ alert += 1;
52
+ }
53
+ }
54
+ console.log(chalk.default.blue("\n==> Summary"));
55
+ console.log(` Profiles scanned: ${profiles.length}`);
56
+ console.log(` OK (empty group): ${ok}`);
57
+ console.log(` ALERT (has users): ${alert}`);
58
+ console.log(` Skipped (silent): ${skip}`);
59
+ if (alert > 0) {
60
+ console.log(chalk.default.red(`\nRemove users from ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME} when break-glass access is no longer needed.`));
61
+ process.exit(1);
62
+ }
63
+ if (ok === 0) {
64
+ console.log(chalk.default.yellow(`\nNo profiles returned IAM access for ${require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME}.`));
65
+ console.log(chalk.default.yellow(" Use a profile with iam:GetGroup (e.g. md-*-iam-admin) or run with --verbose."));
66
+ }
67
+ } catch (error) {
68
+ if (error instanceof zod.ZodError) {
69
+ console.error(chalk.default.red("\n❌ Invalid command options:"));
70
+ error.errors.forEach((err) => {
71
+ console.error(chalk.default.red(` ${err.path.join(".")}: ${err.message}`));
72
+ });
73
+ process.exit(1);
74
+ }
75
+ const verbose = options?.verbose || false;
76
+ console.error(chalk.default.red("\n❌ check-admin failed:"));
77
+ if (error instanceof Error) {
78
+ console.error(chalk.default.red(` ${error.message}`));
79
+ if (verbose && error.stack) {
80
+ console.error(chalk.default.gray("\nStack trace:"));
81
+ console.error(chalk.default.gray(error.stack));
82
+ }
83
+ } else console.error(chalk.default.red(` ${String(error)}`));
84
+ console.error(chalk.default.yellow("\n💡 Requires the AWS CLI, and aws-vault when scanning multiple profiles.\n"));
85
+ process.exit(1);
86
+ }
87
+ }
88
+ //#endregion
89
+ exports.checkAdminCommand = checkAdminCommand;
@@ -1,17 +1,7 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../../../../__chunks/TNSRDJPR.cjs');
2
-
3
-
4
- var _NLKJIUEXcjs = require('../../../../__chunks/NLKJIUEX.cjs');
5
-
6
-
7
- var _X26XY2N6cjs = require('../../../../__chunks/X26XY2N6.cjs');
8
-
9
-
10
- var _T2A7TN4Fcjs = require('../../../../__chunks/T2A7TN4F.cjs');
11
- require('../../../../__chunks/R3GUC7O7.cjs');
12
- require('../../../../__chunks/WOYF2L6T.cjs');
13
-
14
-
15
-
16
-
17
- exports.ADMIN_GROUP_NAME = _T2A7TN4Fcjs.ADMIN_GROUP_NAME; exports.checkAdminCommand = _NLKJIUEXcjs.checkAdminCommand; exports.checkAdminOptionsSchema = _X26XY2N6cjs.checkAdminOptionsSchema;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
3
+ const require_commands_aws_iam_check_admin_schema = require("./schema.cjs");
4
+ const require_commands_aws_iam_check_admin_handler = require("./handler.cjs");
5
+ exports.ADMIN_GROUP_NAME = require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME;
6
+ exports.checkAdminCommand = require_commands_aws_iam_check_admin_handler.checkAdminCommand;
7
+ exports.checkAdminOptionsSchema = require_commands_aws_iam_check_admin_schema.checkAdminOptionsSchema;
@@ -1,12 +1,19 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
-
3
- var _X26XY2N6cjs = require('../../../../__chunks/X26XY2N6.cjs');
4
-
5
-
6
- var _T2A7TN4Fcjs = require('../../../../__chunks/T2A7TN4F.cjs');
7
- require('../../../../__chunks/R3GUC7O7.cjs');
8
- require('../../../../__chunks/WOYF2L6T.cjs');
9
-
10
-
11
-
12
- exports.ADMIN_GROUP_NAME = _T2A7TN4Fcjs.ADMIN_GROUP_NAME; exports.checkAdminOptionsSchema = _X26XY2N6cjs.checkAdminOptionsSchema;
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_commands_aws_schema = require("../../schema.cjs");
3
+ const require_commands_aws_iam_admin_group = require("../admin-group.cjs");
4
+ let zod = require("zod");
5
+ //#region src/commands/aws/iam/check-admin/schema.js
6
+ /**
7
+ * Zod schema for `aws iam check-admin` options.
8
+ */
9
+ const checkAdminOptionsSchema = zod.z.object({
10
+ profile: require_commands_aws_schema.profileField,
11
+ all: zod.z.boolean().optional().default(false).describe("Scan every aws-vault profile (default only when --profile and AWS_PROFILE are unset)"),
12
+ verbose: require_commands_aws_schema.verboseField
13
+ });
14
+ /**
15
+ * @typedef {z.infer<typeof checkAdminOptionsSchema>} CheckAdminOptions
16
+ */
17
+ //#endregion
18
+ exports.ADMIN_GROUP_NAME = require_commands_aws_iam_admin_group.ADMIN_GROUP_NAME;
19
+ exports.checkAdminOptionsSchema = checkAdminOptionsSchema;
@@ -0,0 +1,20 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "DenyNonS3Services",
6
+ "Effect": "Deny",
7
+ "NotAction": [
8
+ "s3:*",
9
+ "logs:*",
10
+ "sts:AssumeRole",
11
+ "iam:PassRole",
12
+ "kms:Decrypt",
13
+ "kms:GenerateDataKey",
14
+ "kms:DescribeKey",
15
+ "lambda:InvokeFunction"
16
+ ],
17
+ "Resource": "*"
18
+ }
19
+ ]
20
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "StsFederation",
6
+ "Effect": "Allow",
7
+ "Action": ["sts:GetFederationToken", "sts:GetCallerIdentity"],
8
+ "Resource": "*"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,175 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "DenyAIServices",
6
+ "Effect": "Deny",
7
+ "Action": [
8
+ "bedrock:*",
9
+ "sagemaker:*",
10
+ "comprehend:*",
11
+ "comprehendmedical:*",
12
+ "rekognition:*",
13
+ "textract:*",
14
+ "personalize:*",
15
+ "forecast:*",
16
+ "lex:*",
17
+ "polly:*",
18
+ "translate:*",
19
+ "transcribe:*",
20
+ "kendra:*",
21
+ "q:*"
22
+ ],
23
+ "Resource": "*"
24
+ },
25
+ {
26
+ "Sid": "DenyOrgAndAccountWrites",
27
+ "Effect": "Deny",
28
+ "Action": [
29
+ "organizations:*",
30
+ "account:CloseAccount",
31
+ "account:DeleteAlternateContact",
32
+ "account:PutAlternateContact",
33
+ "account:PutChallengeQuestions",
34
+ "account:EnableRegion",
35
+ "account:DisableRegion",
36
+ "account:PutAccountName"
37
+ ],
38
+ "Resource": "*"
39
+ },
40
+ {
41
+ "Sid": "DenyBillingMutations",
42
+ "Effect": "Deny",
43
+ "Action": [
44
+ "aws-portal:Modify*",
45
+ "billing:Update*",
46
+ "billing:Put*",
47
+ "billing:Delete*",
48
+ "budgets:Modify*",
49
+ "budgets:Create*",
50
+ "budgets:Delete*",
51
+ "savingsplans:Create*",
52
+ "savingsplans:Delete*",
53
+ "supportplans:Create*",
54
+ "supportplans:Delete*",
55
+ "purchase-orders:Modify*",
56
+ "purchase-orders:Create*",
57
+ "cur:Put*",
58
+ "cur:Delete*"
59
+ ],
60
+ "Resource": "*"
61
+ },
62
+ {
63
+ "Sid": "DenyCloudTrailTampering",
64
+ "Effect": "Deny",
65
+ "Action": [
66
+ "cloudtrail:StopLogging",
67
+ "cloudtrail:DeleteTrail",
68
+ "cloudtrail:UpdateTrail",
69
+ "cloudtrail:PutEventSelectors",
70
+ "cloudtrail:DeleteEventDataStore"
71
+ ],
72
+ "Resource": "*"
73
+ },
74
+ {
75
+ "Sid": "DenyExpensiveServices",
76
+ "Effect": "Deny",
77
+ "Action": [
78
+ "airflow:CreateEnvironment",
79
+ "airflow:UpdateEnvironment",
80
+ "mwaa:*",
81
+ "transfer:CreateServer",
82
+ "transfer:UpdateServer",
83
+ "transfer:StartServer",
84
+ "shield:CreateSubscription",
85
+ "shield:CreateProtection",
86
+ "shield:CreateProtectionGroup"
87
+ ],
88
+ "Resource": "*"
89
+ },
90
+ {
91
+ "Sid": "DenyKMSDestruction",
92
+ "Effect": "Deny",
93
+ "Action": [
94
+ "kms:ScheduleKeyDeletion",
95
+ "kms:DisableKey",
96
+ "kms:DisableKeyRotation"
97
+ ],
98
+ "Resource": "*"
99
+ },
100
+ {
101
+ "Sid": "DenyNeptuneViaRds",
102
+ "Effect": "Deny",
103
+ "Action": [
104
+ "rds:CreateDBCluster",
105
+ "rds:CreateDBInstance",
106
+ "rds:ModifyDBCluster",
107
+ "rds:ModifyDBInstance",
108
+ "rds:RestoreDBClusterFromSnapshot",
109
+ "rds:RestoreDBInstanceFromDBSnapshot"
110
+ ],
111
+ "Resource": "*",
112
+ "Condition": {
113
+ "StringEquals": {
114
+ "rds:DatabaseEngine": "neptune"
115
+ }
116
+ }
117
+ },
118
+ {
119
+ "Sid": "DenyExpensiveGpuEc2",
120
+ "Effect": "Deny",
121
+ "Action": [
122
+ "ec2:RunInstances",
123
+ "ec2:RequestSpotInstances",
124
+ "ec2:RequestSpotFleet",
125
+ "ec2:ModifyInstanceAttribute"
126
+ ],
127
+ "Resource": "*",
128
+ "Condition": {
129
+ "StringLike": {
130
+ "ec2:InstanceType": [
131
+ "p2.*",
132
+ "p3.*",
133
+ "p4d.*",
134
+ "p4de.*",
135
+ "p5.*",
136
+ "p5d.*",
137
+ "p5e.*",
138
+ "p5en.*",
139
+ "p6*",
140
+ "g3.*",
141
+ "g3s.*",
142
+ "g4dn.*",
143
+ "g4ad.*",
144
+ "g5.*",
145
+ "g5g.*",
146
+ "g6.*",
147
+ "g6e.*",
148
+ "g6f.*",
149
+ "inf1.*",
150
+ "inf2.*",
151
+ "trn1.*",
152
+ "trn1n.*",
153
+ "trn2.*",
154
+ "trn2a.*",
155
+ "trn2i.*",
156
+ "dl1.*",
157
+ "dl2q.*",
158
+ "f1.*",
159
+ "f2.*",
160
+ "vt1.*",
161
+ "hpc6id.*",
162
+ "u-12tb1.metal",
163
+ "u-18tb1.metal",
164
+ "u-24tb1.metal",
165
+ "u-6tb1.56xlarge",
166
+ "u-9tb1.112xlarge",
167
+ "x2iedn.*",
168
+ "x2idn.*",
169
+ "x2iezn.*"
170
+ ]
171
+ }
172
+ }
173
+ }
174
+ ]
175
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "DenyNonApprovedRegions",
6
+ "Effect": "Deny",
7
+ "NotAction": [
8
+ "iam:*",
9
+ "organizations:*",
10
+ "route53:*",
11
+ "route53domains:*",
12
+ "cloudfront:*",
13
+ "waf:*",
14
+ "wafv2:*",
15
+ "shield:*",
16
+ "globalaccelerator:*",
17
+ "sts:*",
18
+ "support:*",
19
+ "supportplans:*",
20
+ "trustedadvisor:*",
21
+ "health:*",
22
+ "budgets:*",
23
+ "ce:*",
24
+ "cur:*",
25
+ "account:*",
26
+ "billing:*",
27
+ "aws-portal:*",
28
+ "tag:*",
29
+ "resource-groups:*",
30
+ "ram:*",
31
+ "cloudshell:*"
32
+ ],
33
+ "Resource": "*",
34
+ "Condition": {
35
+ "StringNotEquals": {
36
+ "aws:RequestedRegion": ["us-east-1", "us-east-2", "us-west-2"]
37
+ }
38
+ }
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "ViewAccountInfo",
6
+ "Effect": "Allow",
7
+ "Action": ["iam:GetAccountPasswordPolicy", "iam:ListVirtualMFADevices"],
8
+ "Resource": "*"
9
+ },
10
+ {
11
+ "Sid": "ManageOwnPassword",
12
+ "Effect": "Allow",
13
+ "Action": ["iam:ChangePassword", "iam:GetUser"],
14
+ "Resource": "arn:aws:iam::*:user/${aws:username}"
15
+ },
16
+ {
17
+ "Sid": "ManageOwnAccessKeys",
18
+ "Effect": "Allow",
19
+ "Action": [
20
+ "iam:CreateAccessKey",
21
+ "iam:DeleteAccessKey",
22
+ "iam:ListAccessKeys",
23
+ "iam:UpdateAccessKey",
24
+ "iam:GetAccessKeyLastUsed"
25
+ ],
26
+ "Resource": "arn:aws:iam::*:user/${aws:username}"
27
+ },
28
+ {
29
+ "Sid": "ManageOwnMFA",
30
+ "Effect": "Allow",
31
+ "Action": [
32
+ "iam:CreateVirtualMFADevice",
33
+ "iam:DeleteVirtualMFADevice",
34
+ "iam:EnableMFADevice",
35
+ "iam:ListMFADevices",
36
+ "iam:ResyncMFADevice",
37
+ "iam:DeactivateMFADevice"
38
+ ],
39
+ "Resource": [
40
+ "arn:aws:iam::*:mfa/${aws:username}",
41
+ "arn:aws:iam::*:user/${aws:username}"
42
+ ]
43
+ },
44
+ {
45
+ "Sid": "ValidateIAMPolicies",
46
+ "Effect": "Allow",
47
+ "Action": [
48
+ "access-analyzer:ValidatePolicy",
49
+ "access-analyzer:CheckAccessNotGranted",
50
+ "access-analyzer:CheckNoNewAccess",
51
+ "access-analyzer:CheckNoPublicAccess"
52
+ ],
53
+ "Resource": "*"
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "Version": "2012-10-17",
3
+ "Statement": [
4
+ {
5
+ "Sid": "WriteComputeAndNetwork",
6
+ "Effect": "Allow",
7
+ "Action": [
8
+ "ec2:*",
9
+ "elasticloadbalancing:*",
10
+ "autoscaling:*",
11
+ "application-autoscaling:*",
12
+ "lambda:*",
13
+ "ecs:*",
14
+ "ecr:*",
15
+ "elasticfilesystem:*",
16
+ "route53:*",
17
+ "route53domains:*",
18
+ "cloudfront:*",
19
+ "apigateway:*",
20
+ "servicediscovery:*"
21
+ ],
22
+ "Resource": "*"
23
+ },
24
+ {
25
+ "Sid": "WriteDataAndStorage",
26
+ "Effect": "Allow",
27
+ "Action": ["s3:*", "rds:*", "pi:*", "dynamodb:*", "backup:*"],
28
+ "Resource": "*"
29
+ },
30
+ {
31
+ "Sid": "WriteDeploymentAndOps",
32
+ "Effect": "Allow",
33
+ "Action": [
34
+ "cloudformation:*",
35
+ "cloudwatch:*",
36
+ "logs:*",
37
+ "events:*",
38
+ "scheduler:*",
39
+ "ssm:*",
40
+ "cloudtrail:*",
41
+ "xray:*",
42
+ "states:*",
43
+ "cloudshell:*"
44
+ ],
45
+ "Resource": "*"
46
+ },
47
+ {
48
+ "Sid": "WriteSecurityAndMessaging",
49
+ "Effect": "Allow",
50
+ "Action": [
51
+ "acm:*",
52
+ "secretsmanager:*",
53
+ "kms:*",
54
+ "sns:*",
55
+ "sqs:*",
56
+ "ses:*"
57
+ ],
58
+ "Resource": "*"
59
+ },
60
+ {
61
+ "Sid": "WriteResourceOrganization",
62
+ "Effect": "Allow",
63
+ "Action": ["resource-groups:*", "tag:*", "ram:*"],
64
+ "Resource": "*"
65
+ },
66
+ {
67
+ "Sid": "SupportAndHealth",
68
+ "Effect": "Allow",
69
+ "Action": [
70
+ "support:*",
71
+ "supportplans:Get*",
72
+ "supportplans:List*",
73
+ "health:*",
74
+ "trustedadvisor:*"
75
+ ],
76
+ "Resource": "*"
77
+ },
78
+ {
79
+ "Sid": "Sts",
80
+ "Effect": "Allow",
81
+ "Action": [
82
+ "sts:GetCallerIdentity",
83
+ "sts:GetFederationToken",
84
+ "sts:GetSessionToken"
85
+ ],
86
+ "Resource": "*"
87
+ },
88
+ {
89
+ "Sid": "IamPassRoleForServices",
90
+ "Effect": "Allow",
91
+ "Action": "iam:PassRole",
92
+ "Resource": "arn:aws:iam::*:role/*",
93
+ "Condition": {
94
+ "StringEquals": {
95
+ "iam:PassedToService": [
96
+ "ec2.amazonaws.com",
97
+ "lambda.amazonaws.com",
98
+ "ecs.amazonaws.com",
99
+ "ecs-tasks.amazonaws.com",
100
+ "elasticloadbalancing.amazonaws.com",
101
+ "events.amazonaws.com",
102
+ "apigateway.amazonaws.com",
103
+ "rds.amazonaws.com",
104
+ "backup.amazonaws.com",
105
+ "cloudformation.amazonaws.com"
106
+ ]
107
+ }
108
+ }
109
+ },
110
+ {
111
+ "Sid": "ServiceLinkedRoles",
112
+ "Effect": "Allow",
113
+ "Action": ["iam:CreateServiceLinkedRole", "iam:DeleteServiceLinkedRole"],
114
+ "Resource": "*"
115
+ }
116
+ ]
117
+ }