envilder 0.6.5 โ†’ 0.7.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.
package/ROADMAP.md CHANGED
@@ -1,66 +1,67 @@
1
- # ๐Ÿ›ฃ๏ธ Envilder Roadmap
2
-
3
- Envilder aims to be the simplest, most reliable way to generate `.env` files from AWS SSM Parameter Store
4
- โ€” for both local development and CI/CD pipelines.
5
-
6
- ## โœ… Current Features
7
-
8
- - Map-based secret resolution via `param-map.json`
9
- - Outputs clean `.env` files
10
- - Supports AWS profiles (`AWS_PROFILE`)
11
- - Compatible with SecureString and plain parameters
12
- - CLI-first, lightweight
13
- - ๐Ÿ“ธ **Demo GIF/video** showing the tool in action (terminal + env + app)
14
-
15
- ---
16
-
17
- ## ๐Ÿšง Planned Improvements
18
-
19
- ### ๐Ÿ”น Usability & Visibility
20
-
21
- - [ ] ๐Ÿ” **Auto-discovery mode** (`--auto`) for fetching all parameters with a given prefix
22
- - [ ] โœ๏ธ **Tutorial repo** showing full example with GitHub Actions
23
- - [ ] ๐Ÿ›๏ธ **Official GitHub Action** (in Marketplace)
24
-
25
- ### ๐Ÿ”น Dev Experience & Adoption
26
-
27
- - [ ] โœ… **Check mode** (`--check`) to validate SSM vs existing `.env` and fail CI if out-of-sync
28
- - [ ] ๐Ÿ“ **Onboarding doc** for new teams (how to set up param-map, profiles, best practices)
29
-
30
- ### ๐Ÿ”น Advanced Features
31
-
32
- - [ ] โ†ฉ๏ธ **Push mode** (`--push`) to push local `.env` back to AWS SSM
33
- - [ ] ๐Ÿ”” **Optional webhook/Slack notifier** on secret sync (for audit/logging)
34
- - [ ] ๐ŸŒ **Web-based interactive demo** (optional) to test mappings live
35
- - [ ] ๐Ÿง  **Awesome list submissions** and community templates
36
-
37
- ---
38
-
39
- ## ๐Ÿงช Long-term Ideas (Open to Feedback)
40
-
41
- - [ ] ๐Ÿ“ Support hierarchical `param-map.json` per environment
42
- - [ ] ๐Ÿงฌ Plugin system for custom resolvers (e.g., secrets from other providers)
43
-
44
- ---
45
-
46
- ## ๐Ÿ™Œ Contribute or suggest ideas
47
-
48
- If youโ€™ve faced similar problems or want to help improve this tool, feel free to open an issue, submit a PR
49
- or reach out.
50
- Every bit of feedback helps make this tool better for the community.
51
-
52
- ---
53
-
54
- ## Feature Status
55
-
56
- | Feature | Status | Notes |
57
- |--------------------------------|---------------|-------|
58
- | Push mode (`--push`) | โœ… Implemented | |
59
- | Mapping-based secret resolution| โœ… Implemented | |
60
- | .env file generation | โœ… Implemented | |
61
- | AWS profile support | โœ… Implemented | |
62
- | Auto-discovery mode (`--auto`) | โŒ Not implemented | Planned |
63
- | Check/sync mode (`--check`) | โŒ Not implemented | Planned |
64
- | Webhook/Slack notification | โŒ Not implemented | Planned |
65
- | Hierarchical mapping | โŒ Not implemented | Only flat JSON mapping supported |
66
- | Plugin system | โŒ Not implemented | Only AWS SSM supported |
1
+ # ๐Ÿ›ฃ๏ธ Envilder Roadmap
2
+
3
+ Envilder aims to be the simplest, most reliable way to generate `.env` files from AWS SSM Parameter Store
4
+ โ€” for both local development and CI/CD pipelines.
5
+
6
+ ## โœ… Current Features
7
+
8
+ - Map-based secret resolution via `param-map.json`
9
+ - Outputs clean `.env` files
10
+ - Supports AWS profiles (`AWS_PROFILE`)
11
+ - Compatible with SecureString and plain parameters
12
+ - CLI-first, lightweight
13
+ - ๐Ÿ“ธ **Demo GIF/video** showing the tool in action (terminal + env + app)
14
+
15
+ ---
16
+
17
+ ## ๐Ÿšง Planned Improvements
18
+
19
+ ### ๐Ÿ”น Usability & Visibility
20
+
21
+ - [ ] ๐Ÿ” **Auto-discovery mode** (`--auto`) for fetching all parameters with a given prefix
22
+ - [ ] โœ๏ธ **Tutorial repo** showing full example with GitHub Actions
23
+ - [x] ๐Ÿ›๏ธ **Official GitHub Action** (in Marketplace)
24
+
25
+ ### ๐Ÿ”น Dev Experience & Adoption
26
+
27
+ - [ ] โœ… **Check mode** (`--check`) to validate SSM vs existing `.env` and fail CI if out-of-sync
28
+ - [ ] ๐Ÿ“ **Onboarding doc** for new teams (how to set up param-map, profiles, best practices)
29
+
30
+ ### ๐Ÿ”น Advanced Features
31
+
32
+ - [ ] โ†ฉ๏ธ **Push mode** (`--push`) to push local `.env` back to AWS SSM
33
+ - [ ] ๐Ÿ”” **Optional webhook/Slack notifier** on secret sync (for audit/logging)
34
+ - [ ] ๐ŸŒ **Web-based interactive demo** (optional) to test mappings live
35
+ - [ ] ๐Ÿง  **Awesome list submissions** and community templates
36
+
37
+ ---
38
+
39
+ ## ๐Ÿงช Long-term Ideas (Open to Feedback)
40
+
41
+ - [ ] ๐Ÿ“ Support hierarchical `param-map.json` per environment
42
+ - [ ] ๐Ÿงฌ Plugin system for custom resolvers (e.g., secrets from other providers)
43
+
44
+ ---
45
+
46
+ ## ๐Ÿ™Œ Contribute or suggest ideas
47
+
48
+ If youโ€™ve faced similar problems or want to help improve this tool, feel free to open an issue, submit a PR
49
+ or reach out.
50
+ Every bit of feedback helps make this tool better for the community.
51
+
52
+ ---
53
+
54
+ ## Feature Status
55
+
56
+ | Feature | Status | Notes |
57
+ |--------------------------------|---------------|-------|
58
+ | Push mode (`--push`) | โœ… Implemented | |
59
+ | Mapping-based secret resolution| โœ… Implemented | |
60
+ | .env file generation | โœ… Implemented | |
61
+ | AWS profile support | โœ… Implemented | |
62
+ | GitHub Action | โœ… Implemented | Available as composite action |
63
+ | Auto-discovery mode (`--auto`) | โŒ Not implemented | Planned |
64
+ | Check/sync mode (`--check`) | โŒ Not implemented | Planned |
65
+ | Webhook/Slack notification | โŒ Not implemented | Planned |
66
+ | Hierarchical mapping | โŒ Not implemented | Only flat JSON mapping supported |
67
+ | Plugin system | โŒ Not implemented | Only AWS SSM supported |
@@ -0,0 +1,345 @@
1
+ # [0.7.0](https://github.com/macalbert/envilder/compare/v0.6.6...v0.7.0) (2025-11-16)
2
+
3
+
4
+ * โ™ป๏ธ Move GitHub Action to github-action/ subfolder ([d9bf4d2](https://github.com/macalbert/envilder/commit/d9bf4d2e81acbb1ef2b4e0034c0b6aaa8b307ba3))
5
+
6
+
7
+ ### Bug Fixes
8
+
9
+ * **githubAction:** Correct author name in action.yml ([e964aff](https://github.com/macalbert/envilder/commit/e964affbca8410aada8494648dee62ab2a1ab5de))
10
+ * **githubAction:** Correct build command from ppnpm to pnpm ([c9df0c4](https://github.com/macalbert/envilder/commit/c9df0c4cb612de0f2b6ab6406235c54fcb45d0c2))
11
+ * **githubAction:** Correct path to GitHubAction.js in validation step ([94d1166](https://github.com/macalbert/envilder/commit/94d116632f4a6de656449f238ec007eeede2f5f2))
12
+ * **githubAction:** Remove source map generation from build:gha script ([8989448](https://github.com/macalbert/envilder/commit/898944898cdea866f28f8874b714bfe3fd2dd88e))
13
+ * **githubAction:** Update action references in documentation and code ([412601b](https://github.com/macalbert/envilder/commit/412601b7b56a90dd50e031addcaf192e2dec8ba3))
14
+
15
+
16
+ ### Features
17
+
18
+ * **githubAction:** Add end-to-end tests for GitHub Actions simulation ([29464a0](https://github.com/macalbert/envilder/commit/29464a016d0072cc728345400f68e0c62669579b))
19
+ * **githubAction:** Update action paths and add new GitHub Action implementation ([4310e50](https://github.com/macalbert/envilder/commit/4310e5040fa4952c50e800578fb91e00cf2f7a36))
20
+ * **githubAction:** Update action script paths and add entry point ([9f64e56](https://github.com/macalbert/envilder/commit/9f64e567d8c90832ee402accb6aba9264554a1e7))
21
+ * **packaging:** Add project build and uninstall functionality ([70fc574](https://github.com/macalbert/envilder/commit/70fc5745c1490f33322f5fb8af1b68dd7e565fc1))
22
+
23
+
24
+ ### BREAKING CHANGES
25
+
26
+ * Action path changed from macalbert/envilder@v1 to macalbert/envilder/github-action@v1
27
+
28
+
29
+
30
+ # Changelog
31
+ <!-- markdownlint-disable MD024 -->
32
+
33
+ All notable changes to this project will be documented in this file.
34
+
35
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
36
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
37
+
38
+ ## [0.6.6] - 2025-11-02
39
+
40
+ ### Changed
41
+
42
+ - Updated AWS credentials configuration in workflows
43
+ - Bumped vite from 7.1.10 to 7.1.11
44
+ - Bumped @types/node from 24.7.2 to 24.9.2
45
+ - Bumped @biomejs/biome from 2.2.6 to 2.3.2
46
+ - Bumped GitHub/codeql-action from 3 to 4
47
+ - Bumped actions/setup-node from 5 to 6
48
+ - Bumped vitest from 3.2.4 to 4.0.6
49
+
50
+ ### Documentation
51
+
52
+ - Added Snyk badge for known vulnerabilities in README
53
+
54
+ ## [0.6.5] - 2025-10-15
55
+
56
+ ### Added
57
+
58
+ - Enabled npm trusted publishing with OIDC authentication
59
+
60
+ ### Changed
61
+
62
+ - Bumped tmp from 0.2.3 to 0.2.4
63
+ - Bumped @types/node from 22.16.3 to 24.3.0
64
+ - Bumped @testcontainers/localstack from 11.2.1 to 11.5.1
65
+ - Bumped testcontainers from 11.2.1 to 11.5.1
66
+ - Bumped @aws-sdk/credential-providers from 3.844.0 to 3.879.0
67
+ - Bumped secretlint from 10.2.1 to 11.2.0
68
+ - Bumped @biomejs/biome from 2.1.3 to 2.2.4
69
+ - Bumped @secretlint/secretlint-rule-preset-recommend from 10.2.1 to 11.2.4
70
+ - Bumped vite from 7.0.4 to 7.1.5
71
+ - Bumped commander from 14.0.0 to 14.0.1
72
+ - Bumped inversify from 7.6.1 to 7.10.2
73
+ - Updated actions/checkout from 4 to 5
74
+ - Updated actions/setup-node from 4 to 5
75
+ - Updated actions/upload-pages-artifact from 3 to 4
76
+ - Updated aws-actions/configure-aws-credentials from 4 to 5
77
+
78
+ ## [0.6.4] - 2025-08-02
79
+
80
+ ### Changed
81
+
82
+ - Bumped typescript from 5.8.3 to 5.9.2
83
+ - Bumped secretlint from 10.2.0 to 10.2.1
84
+ - Bumped @types/glob from 8.1.0 to 9.0.0
85
+ - Bumped @secretlint/secretlint-rule-preset-recommend from 10.2.0 to 10.2.1
86
+ - Bumped @biomejs/biome from 2.1.1 to 2.1.3
87
+
88
+ ## [0.6.3] - 2025-07-20
89
+
90
+ ### Changed
91
+
92
+ - Implemented .NET-Style DIP Startup Pattern for dependency injection
93
+ - Improved separation of concerns in dependency configuration
94
+
95
+ ## [0.6.1] - 2025-07-13
96
+
97
+ ### Added
98
+
99
+ - **Push Mode** functionality to upload environment variables to AWS SSM Parameter Store
100
+ - File-based approach for pushing multiple variables from `.env` files
101
+ - Single-variable approach for direct command line uploads
102
+ - Support for working with different AWS profiles when pushing secrets
103
+ - Comprehensive test coverage for all Push Mode functionality
104
+
105
+ ### Security
106
+
107
+ - Implemented secure parameter handling to protect sensitive values
108
+ - Maintained AWS IAM best practices for least privilege
109
+ - Added safeguards against accidental overwrites of critical parameters
110
+
111
+ ### Changed
112
+
113
+ - Designed clean, modular command structure for Push Mode operations
114
+ - Added new domain models and handlers to support Push feature
115
+ - Maintained separation of concerns between infrastructure and application layers
116
+ - Ensured backward compatibility with existing Pull Mode features
117
+
118
+ ### Documentation
119
+
120
+ - Added comprehensive examples for all new Push Mode commands
121
+ - Created visual diagrams explaining Push Mode data flow
122
+ - Documented options and parameters for Push Mode operations
123
+
124
+ ## [0.5.6] - 2025-07-06
125
+
126
+ ### Added
127
+
128
+ - Introduced new logger interface for seamless integration of custom logging implementations
129
+
130
+ ### Changed
131
+
132
+ - Updated several packages to latest versions for improved security and performance
133
+
134
+ ### Documentation
135
+
136
+ - Added video guide to README demonstrating CLI usage
137
+ - Enhanced user onboarding materials
138
+
139
+ ## [0.5.5] - 2025-06-29
140
+
141
+ ### Changed
142
+
143
+ - Moved `EnvilderBuilder` from `domain` to `application/builders` directory
144
+ - Updated import paths across codebase for better organization
145
+ - Enhanced code architecture alignment with domain-driven design principles
146
+
147
+ ### Fixed
148
+
149
+ - Fixed glob pattern and path handling in test cleanup functions
150
+ - Corrected file path resolution in end-to-end tests
151
+ - Improved error handling during test file deletions
152
+
153
+ ### Documentation
154
+
155
+ - Extensively updated README with clearer structure and table of contents
156
+ - Added feature status table to clarify implemented vs planned features
157
+ - Simplified installation and usage instructions
158
+ - Revamped pull request template for better contributor experience
159
+ - Removed outdated environment-specific parameter examples
160
+
161
+ ## [0.5.4] - 2025-06-10
162
+
163
+ ### Added
164
+
165
+ - Added unit tests for error handling with missing CLI arguments
166
+ - Enhanced unit test reporting with JUnit format for better CI integration
167
+
168
+ ### Changed
169
+
170
+ - Refactored `EnvFileManager` and related interfaces to use async/await
171
+ - Improved error handling and modularized secret processing in `Envilder`
172
+ - Enhanced error handling for missing secrets with clearer feedback
173
+ - Renamed methods, test suite descriptions, and filenames for consistency
174
+ - Extracted package.json version retrieval into dedicated `PackageJsonFinder` class
175
+ - Modularized and simplified `escapeEnvValue` method and related tests
176
+ - Updated dependencies for better reliability
177
+ - Improved test cleanup for more reliable test runs
178
+ - Added and reorganized permissions in CI workflow
179
+ - Updated `.gitattributes` for better language stats on GitHub
180
+
181
+ ## [0.5.3] - 2025-06-07
182
+
183
+ ### Added
184
+
185
+ - Modular CLI for environment variable synchronization with pluggable secret providers
186
+ - Builder pattern for flexible CLI configuration and usage
187
+ - Extensive unit, integration, and end-to-end tests
188
+ - AWS integration testing using Localstack with Testcontainers
189
+ - Expanded tests for environment file escaping and builder configuration
190
+
191
+ ### Changed
192
+
193
+ - **BREAKING**: Full TypeScript migration from JavaScript
194
+ - Introduced modular, layered architecture with clear separation
195
+ - Restructured CLI internals for improved maintainability
196
+ - Test structure now mirrors production code structure
197
+ - Migrated CI/CD workflows and scripts from Yarn to npm
198
+ - Updated ignore files and configuration
199
+
200
+ ### Documentation
201
+
202
+ - Updated documentation to focus on npm commands
203
+ - Improved workflow and script documentation
204
+
205
+ ## [0.5.2] - 2025-05-18
206
+
207
+ ### Added
208
+
209
+ - Comprehensive E2E validation test in CI/CD pipeline
210
+ - Validation includes: build, `npm pack`, local install, and CLI command execution
211
+ - Ensures package integrity and command-line operability before release
212
+
213
+ ## [0.5.1] - 2025-05-16
214
+
215
+ ### Fixed
216
+
217
+ - CLI command not recognized after global install (`npm install -g envilder`)
218
+ - Fixed missing compiled `lib/` files in published package
219
+
220
+ ## [0.3.0] - 2025-05-09
221
+
222
+ ### Added
223
+
224
+ - Support for working with different AWS accounts and configurations via AWS profiles
225
+
226
+ ### Changed
227
+
228
+ - Bumped @secretlint/secretlint-rule-preset-recommend from 9.3.0 to 9.3.2
229
+ - Bumped @types/node from 22.14.1 to 22.15.3
230
+ - Bumped commander from 12.1.0 to 13.1.0
231
+ - Bumped vite from 6.2.6 to 6.3.4
232
+ - Bumped @aws-sdk/client-ssm from 3.787.0 to 3.799.0
233
+
234
+ ## [0.2.3] - 2025-04-12
235
+
236
+ ### Changed
237
+
238
+ - Updated multiple dependencies including:
239
+ - @types/node from 22.7.5 to 22.10.3
240
+ - @aws-sdk/client-ssm from 3.670.0 to 3.716.0
241
+ - @biomejs/biome from 1.9.3 to 1.9.4
242
+ - nanoid from 3.3.7 to 3.3.8
243
+ - @secretlint/secretlint-rule-preset-recommend from 8.5.0 to 9.0.0
244
+ - secretlint from 8.5.0 to 9.0.0
245
+
246
+ ## [0.2.1] - 2024-10-16
247
+
248
+ ### Added
249
+
250
+ - Code coverage reporting and deployment to GitHub Pages
251
+ - CodeQL workflow for security analysis
252
+ - Preserve existing `.env` file and update values if present
253
+
254
+ ### Documentation
255
+
256
+ - Updated README.md with improved documentation
257
+
258
+ ## [0.1.4] - 2024-10-01
259
+
260
+ Initial public release of Envilder.
261
+
262
+ ---
263
+
264
+ ## How to Update This Changelog
265
+
266
+ This changelog follows [Conventional Commits](https://www.conventionalcommits.org/) specification.
267
+
268
+ ### Commit Message Format
269
+
270
+ ```txt
271
+ <type>[optional scope]: <description>
272
+
273
+ [optional body]
274
+
275
+ [optional footer(s)]
276
+ ```
277
+
278
+ ### Types
279
+
280
+ - `feat`: A new feature (triggers MINOR version bump)
281
+ - `fix`: A bug fix (triggers PATCH version bump)
282
+ - `docs`: Documentation-only changes
283
+ - `style`: Changes that don't affect code meaning (formatting, etc.)
284
+ - `refactor`: Code change that neither fixes a bug nor adds a feature
285
+ - `perf`: Performance improvements
286
+ - `test`: Adding or correcting tests
287
+ - `chore`: Changes to build process or auxiliary tools
288
+ - `ci`: Changes to CI configuration files and scripts
289
+
290
+ ### Breaking Changes
291
+
292
+ Add `BREAKING CHANGE:` in the footer or append `!` after type/scope:
293
+
294
+ ```txt
295
+ feat!: remove AWS profile auto-detection
296
+
297
+ BREAKING CHANGE: Users must now explicitly specify --profile flag
298
+ ```
299
+
300
+ This triggers a MAJOR version bump.
301
+
302
+ ### Examples
303
+
304
+ ```bash
305
+ # Feature addition (0.7.0 -> 0.8.0)
306
+ git commit -m "feat(gha): add GitHub Action support"
307
+
308
+ # Bug fix (0.7.0 -> 0.7.1)
309
+ git commit -m "fix(cli): handle empty environment files"
310
+
311
+ # Breaking change (0.7.0 -> 1.0.0)
312
+ git commit -m "feat!: redesign CLI interface"
313
+ ```
314
+
315
+ ---
316
+
317
+ ## Automation
318
+
319
+ This project uses automated changelog generation. To generate changelog entries:
320
+
321
+ 1. **Manual Update** (temporary):
322
+ - Edit this file following the format above
323
+ - Add entries under `[Unreleased]` section
324
+ - Run `pnpm version [patch|minor|major]` to create a new release
325
+
326
+ 2. **Automated** (recommended):
327
+ - Use conventional commits in your commit messages
328
+ - Run `pnpm changelog` to generate entries from git history
329
+ - Changelog will be auto-generated from commit messages
330
+
331
+ [0.6.6]: https://github.com/macalbert/envilder/compare/v0.6.5...v0.6.6
332
+ [0.6.5]: https://github.com/macalbert/envilder/compare/v0.6.4...v0.6.5
333
+ [0.6.4]: https://github.com/macalbert/envilder/compare/v0.6.3...v0.6.4
334
+ [0.6.3]: https://github.com/macalbert/envilder/compare/v0.6.1...v0.6.3
335
+ [0.6.1]: https://github.com/macalbert/envilder/compare/v0.5.6...v0.6.1
336
+ [0.5.6]: https://github.com/macalbert/envilder/compare/v0.5.5...v0.5.6
337
+ [0.5.5]: https://github.com/macalbert/envilder/compare/v0.5.4...v0.5.5
338
+ [0.5.4]: https://github.com/macalbert/envilder/compare/v0.5.3...v0.5.4
339
+ [0.5.3]: https://github.com/macalbert/envilder/compare/v0.5.2...v0.5.3
340
+ [0.5.2]: https://github.com/macalbert/envilder/compare/v0.5.1...v0.5.2
341
+ [0.5.1]: https://github.com/macalbert/envilder/compare/v0.3.0...v0.5.1
342
+ [0.3.0]: https://github.com/macalbert/envilder/compare/v0.2.3...v0.3.0
343
+ [0.2.3]: https://github.com/macalbert/envilder/compare/v0.2.1...v0.2.3
344
+ [0.2.1]: https://github.com/macalbert/envilder/compare/v0.1.4...v0.2.1
345
+ [0.1.4]: https://github.com/macalbert/envilder/releases/tag/v0.1.4
@@ -0,0 +1,167 @@
1
+ # Security Policy
2
+
3
+ ## ๐Ÿ”’ Supported Versions
4
+
5
+ We release patches for security vulnerabilities only in the latest version:
6
+
7
+ | Version | Supported |
8
+ | ------- | ------------------ |
9
+ | Latest | โœ… |
10
+ | Older | โŒ |
11
+
12
+ ## ๐Ÿšจ Reporting a Vulnerability
13
+
14
+ **Please do not report security vulnerabilities through public GitHub issues.**
15
+
16
+ If you discover a security vulnerability in Envilder, please report it privately to help us address it before public disclosure.
17
+
18
+ ### How to Report
19
+
20
+ 1. **Email**: Send details to <mac.albert@gmail.com>
21
+ 2. **Subject**: `[SECURITY] Envilder - [Brief Description]`
22
+ 3. **Include**:
23
+ - Description of the vulnerability
24
+ - Steps to reproduce the issue
25
+ - Potential impact
26
+ - Suggested fix (if available)
27
+ - Your contact information for follow-up
28
+
29
+ ### What to Expect
30
+
31
+ - **Acknowledgment**: I will acknowledge your email as soon as possible
32
+ - **Initial Assessment**: I'll provide an initial assessment and prioritize based on severity
33
+ - **Updates**: I'll keep you informed about the progress
34
+ - **Resolution**: I'll work to release a fix as soon as feasible (timeline depends on severity and complexity)
35
+ - **Credit**: You'll be credited in the security advisory (unless you prefer to remain anonymous)
36
+
37
+ **Note**: This is a solo open-source project maintained in my spare time. While I take security seriously,
38
+ response times may vary based on availability.
39
+
40
+ ## ๐Ÿ›ก๏ธ Security Best Practices
41
+
42
+ When using Envilder, follow these security guidelines:
43
+
44
+ ### AWS Credentials
45
+
46
+ **DO**:
47
+
48
+ - โœ… Use IAM roles with OIDC for GitHub Actions ([setup guide](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services))
49
+ - โœ… Use temporary credentials when possible
50
+ - โœ… Follow the principle of least privilege
51
+
52
+ **DON'T**:
53
+
54
+ - โŒ Store AWS access keys in code or environment variables
55
+ - โŒ Share AWS credentials via Slack, email, or chat
56
+
57
+ ### IAM Permissions
58
+
59
+ Envilder requires these AWS permissions:
60
+
61
+ ```json
62
+ {
63
+ "Version": "2012-10-17",
64
+ "Statement": [
65
+ {
66
+ "Effect": "Allow",
67
+ "Principal": {
68
+ "Federated": "arn:aws:iam::123456123456:oidc-provider/token.actions.githubusercontent.com"
69
+ },
70
+ "Action": "sts:AssumeRoleWithWebIdentity",
71
+ "Condition": {
72
+ "StringLike": {
73
+ "token.actions.githubusercontent.com:sub": "repo:octo-org/octo-repo:*"
74
+ },
75
+ "StringEquals": {
76
+ "token.actions.githubusercontent.com:aud": "sts.amazonaws.com"
77
+ }
78
+ }
79
+ }
80
+ ]
81
+ }
82
+ ```
83
+
84
+ **Recommendations**:
85
+
86
+ - Scope permissions to specific parameter paths (e.g., `/myapp/prod/*`)
87
+ - Use separate IAM roles for different environments (dev, staging, prod)
88
+ - Enable CloudTrail logging for audit trails
89
+
90
+ ### Environment Files
91
+
92
+ **DO**:
93
+
94
+ - โœ… Add `.env` to `.gitignore`
95
+ - โœ… Use `.env.example` for documentation (without real values)
96
+ - โœ… Rotate secrets regularly
97
+
98
+ **DON'T**:
99
+
100
+ - โŒ Commit `.env` files to version control
101
+ - โŒ Share `.env` files via email or chat
102
+
103
+ ### GitHub Actions
104
+
105
+ When using Envilder GitHub Action:
106
+
107
+ **DO**:
108
+
109
+ - โœ… Use OIDC authentication instead of static credentials ([OIDC setup guide](https://docs.github.com/en/actions/security-for-github-actions/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services))
110
+ - โœ… Pin action versions (e.g., `@v1.0.0` instead of `@main`)
111
+ - โœ… Review action code before using in production
112
+
113
+ **DON'T**:
114
+
115
+ - โŒ Store AWS credentials in GitHub Secrets (use OIDC roles)
116
+ - โŒ Use overly permissive IAM policies
117
+
118
+ ## ๐Ÿ” Security Audits
119
+
120
+ This project uses:
121
+
122
+ - **Snyk**: Vulnerability scanning for dependencies
123
+ - **Secretlint**: Prevents accidental secret commits
124
+ - **Biome**: Code quality and security linting
125
+ - **Dependabot**: Automated dependency updates
126
+
127
+ View current security status: [![Known Vulnerabilities](https://snyk.io/test/github/macalbert/envilder/badge.svg)](https://snyk.io/test/github/macalbert/envilder)
128
+
129
+ ## ๐Ÿ“‹ Known Security Considerations
130
+
131
+ ### AWS SSM Parameter Store
132
+
133
+ - Parameters are encrypted at rest using AWS KMS
134
+ - All API calls are logged in CloudTrail
135
+ - Access is controlled via IAM policies
136
+ - Supports versioning and automatic rotation
137
+
138
+ ### Local Environment Files
139
+
140
+ - Generated `.env` files contain sensitive data
141
+ - Ensure proper file permissions (e.g., `chmod 600 .env`)
142
+ - Delete or rotate secrets if `.env` is accidentally committed
143
+
144
+ ## ๐Ÿ”— Additional Resources
145
+
146
+ - [AWS SSM Security Best Practices](https://docs.aws.amazon.com/systems-manager/latest/userguide/security-best-practices.html)
147
+ - [GitHub Actions Security Hardening](https://docs.github.com/en/actions/security-guides/security-hardening-for-github-actions)
148
+ - [OWASP Secrets Management Cheat Sheet](https://cheatsheetseries.owasp.org/cheatsheets/Secrets_Management_Cheat_Sheet.html)
149
+
150
+ ## ๐Ÿ“œ Disclosure Policy
151
+
152
+ When I receive a security vulnerability report:
153
+
154
+ 1. I will confirm the vulnerability and determine its impact
155
+ 2. I will develop and test a fix
156
+ 3. I will release a security advisory and patched version
157
+ 4. I will credit the reporter (unless anonymity is requested)
158
+
159
+ **Public Disclosure Timeline**:
160
+
161
+ - Critical vulnerabilities: Disclosed after patch is released
162
+ - Non-critical vulnerabilities: Coordinated disclosure with reasonable timeline based on severity
163
+
164
+ **Note**: As a solo maintainer working on this project in my spare time, I appreciate your
165
+ understanding regarding response and fix timelines.
166
+
167
+ Thank you for helping keep Envilder and its users safe! ๐Ÿ™
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env node
2
1
  import 'reflect-metadata';
3
2
  export declare function main(): Promise<void>;
4
3
  //# sourceMappingURL=Cli.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../../../src/apps/cli/Cli.ts"],"names":[],"mappings":";AACA,OAAO,kBAAkB,CAAC;AAwB1B,wBAAsB,IAAI,kBAgDzB"}
1
+ {"version":3,"file":"Cli.d.ts","sourceRoot":"","sources":["../../../src/apps/cli/Cli.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAuB1B,wBAAsB,IAAI,kBAgDzB"}
@@ -1,4 +1,3 @@
1
- #!/usr/bin/env node
2
1
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
2
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
3
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -61,9 +60,4 @@ function readPackageVersion() {
61
60
  const packageJsonPath = join(__dirname, '../../../package.json');
62
61
  return new PackageVersionReader().getVersion(packageJsonPath);
63
62
  }
64
- main().catch((error) => {
65
- const logger = serviceProvider.get(TYPES.ILogger);
66
- logger.error('๐Ÿšจ Uh-oh! Looks like Mario fell into the wrong pipe! ๐Ÿ„๐Ÿ’ฅ');
67
- logger.error(error instanceof Error ? error.message : String(error));
68
- });
69
63
  //# sourceMappingURL=Cli.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Cli.js","sourceRoot":"","sources":["../../../src/apps/cli/Cli.ts"],"names":[],"mappings":";;;;;;;;;;AACA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAIrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,IAAI,eAA0B,CAAC;AAE/B,SAAe,cAAc,CAAC,OAAmB;;QAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CACxC,KAAK,CAAC,4BAA4B,CACnC,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CAAA;AAED,MAAM,UAAgB,IAAI;;QACxB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,OAAO;aACJ,IAAI,CAAC,UAAU,CAAC;aAChB,WAAW,CACV,+FAA+F;YAC7F,2BAA2B;YAC3B,6DAA6D;YAC7D,iDAAiD;YACjD,oEAAoE;YACpE,wCAAwC;YACxC,kFAAkF,CACrF;aACA,OAAO,CAAC,OAAO,CAAC;aAChB,MAAM,CACL,cAAc,EACd,sFAAsF,CACvF;aACA,MAAM,CACL,kBAAkB,EAClB,gFAAgF,CACjF;aACA,MAAM,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;aAC/D,MAAM,CAAC,QAAQ,EAAE,sCAAsC,CAAC;aACxD,MAAM,CACL,cAAc,EACd,6DAA6D,CAC9D;aACA,MAAM,CACL,iBAAiB,EACjB,qEAAqE,CACtE;aACA,MAAM,CACL,mBAAmB,EACnB,iEAAiE,CAClE;aACA,MAAM,CAAC,CAAO,OAAmB,EAAE,EAAE;YACpC,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE;iBAC9B,iBAAiB,EAAE;iBACnB,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC;iBACxC,MAAM,EAAE,CAAC;YAEZ,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAA,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CAAA;AAED,SAAS,kBAAkB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAEjE,OAAO,IAAI,oBAAoB,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAChE,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAU,KAAK,CAAC,OAAO,CAAC,CAAC;IAE3D,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;AACvE,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"Cli.js","sourceRoot":"","sources":["../../../src/apps/cli/Cli.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,8DAA8D,CAAC;AAGrG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+DAA+D,CAAC;AACrG,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,IAAI,eAA0B,CAAC;AAE/B,SAAe,cAAc,CAAC,OAAmB;;QAC/C,MAAM,cAAc,GAAG,eAAe,CAAC,GAAG,CACxC,KAAK,CAAC,4BAA4B,CACnC,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9D,MAAM,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;CAAA;AAED,MAAM,UAAgB,IAAI;;QACxB,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,kBAAkB,EAAE,CAAC;QAE3C,OAAO;aACJ,IAAI,CAAC,UAAU,CAAC;aAChB,WAAW,CACV,+FAA+F;YAC7F,2BAA2B;YAC3B,6DAA6D;YAC7D,iDAAiD;YACjD,oEAAoE;YACpE,wCAAwC;YACxC,kFAAkF,CACrF;aACA,OAAO,CAAC,OAAO,CAAC;aAChB,MAAM,CACL,cAAc,EACd,sFAAsF,CACvF;aACA,MAAM,CACL,kBAAkB,EAClB,gFAAgF,CACjF;aACA,MAAM,CAAC,kBAAkB,EAAE,mCAAmC,CAAC;aAC/D,MAAM,CAAC,QAAQ,EAAE,sCAAsC,CAAC;aACxD,MAAM,CACL,cAAc,EACd,6DAA6D,CAC9D;aACA,MAAM,CACL,iBAAiB,EACjB,qEAAqE,CACtE;aACA,MAAM,CACL,mBAAmB,EACnB,iEAAiE,CAClE;aACA,MAAM,CAAC,CAAO,OAAmB,EAAE,EAAE;YACpC,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE;iBAC9B,iBAAiB,EAAE;iBACnB,uBAAuB,CAAC,OAAO,CAAC,OAAO,CAAC;iBACxC,MAAM,EAAE,CAAC;YAEZ,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAChC,CAAC,CAAA,CAAC,CAAC;QAEL,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;CAAA;AAED,SAAS,kBAAkB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;IAEjE,OAAO,IAAI,oBAAoB,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;AAChE,CAAC"}