Identity and Access Management (IAM) module for NestJS, inspired by AWS IAM.
nestjs-iacry provides fine-grained, policy-based access control for NestJS applications. Define Allow/Deny policies with glob-pattern matching on Actions, Resources, and Principals — then enforce them via route decorators or a programmatic service API.
- AWS IAM-inspired policies — familiar Allow/Deny model with Action, Resource, and Principal fields
- Multiple storage backends — Sequelize, TypeORM, in-memory, or bring your own
- Decorator-based route guards —
@IACryFirewall,@IACryAction,@IACryResource,@IACryPrincipal - Programmatic API —
IACryService.isGranted()for imperative checks - Glob-pattern matching — wildcards, negation, pipes via micromatch
- Optional caching — ioredis with configurable TTL, or custom cache adapters
- Sid-based policy management — for system-managed policy lifecycles
Full documentation is available at the Documentation Site.
- Getting Started — Installation and basic setup
- Configuration — Module options and async configuration
- Storage Adapters — Sequelize, TypeORM, custom adapters
- Decorators — Route-level authorization
- Service API — Programmatic policy management
- Policies — Policy structure and pattern matching
- Caching — Redis and custom cache adapters
- Advanced — Custom adapters, firewall rules, exports
| NestJS Version | nestjs-iacry Version |
|---|---|
| 11.x | >= 0.3.0 |
| 10.x | >= 0.2.0 |
| 9.x | >= 0.0.12 |
| Category | Statements | Branches | Functions | Lines |
|---|---|---|---|---|
| All files | 90.25% | 81.92% | 87.5% | 90.27% |
| Core (policy, matcher, firewall) | 100% | 91%+ | 100% | 100% |
| Decorators | 97%+ | 80%+ | 100% | 97%+ |
| Errors | 100% | 100% | 100% | 100% |
| Helpers | 100% | 94% | 100% | 100% |
| Storages | 86%+ | 81%+ | 80%+ | 86%+ |
149 tests across 19 test suites.
# Run tests
npm test
# Build
npm run build
# Release
npm run format
npm run release # or: npm run patch | minor | major
npm run deployContributions are welcome! Please open an issue or submit a pull request.
MIT