Commit Graph

82 Commits

Author SHA1 Message Date
Víctor Fernández Poyatos 3efdfad37d fix(ResourceTagMapping): PRWLR-5271 set CASCADE for resource field (#80) 2024-11-12 15:59:44 +01:00
Pepe Fagoaga 95dc87a91b chore(partitions): add env to create partitions (#68)
* fix(partitions): Use calendar months

* fix: unit to get partition datetime

* fix: imports

* fix: format

* chore: merge

* fix(partitions): Only allow month as unit

* fix(uuid7_end): default months to 1

* test: fix test_uuid7_end

* test: reset expected dt to start of month

* fix: tests uuid utils

* docs: we only allow months

---------

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
2024-11-08 09:34:32 +01:00
Drew Kerrigan d8d831c2a0 fix(): remove escaped newlines when reading cetificates for JWT signing and verification (#77)
* fix(): remove escaped newlines when reading cetificates for JWT signing and verification

* fix(): updating dev credentials in README
2024-11-07 18:13:51 +01:00
Víctor Fernández Poyatos 0271fe5ca0 feat(User): Add GET /users (#76)
* feat(Membership): implement include parameter for users in memberships

* feat(User): refactor userviewset

* chore(Schema): update API schema

* feat(User): add filters
2024-11-07 10:24:00 +01:00
Víctor Fernández Poyatos 6f1aa6a1b1 fix(Finding): PRWLR-5179 Fix finding's scan filters and related UUID utils (#75)
* fix(Finding): PRWLR-5179 fix scan_id filters and related logic

* test(uuid_utils): PRWLR-5179 refactor unit tests

* chore: PRWLR-5179 update API spec
2024-11-06 15:06:29 +01:00
Adrián Jesús Peña Rodríguez b09fd48d61 fix(auth): PRWLR-5180 change user_id to sub (#74) 2024-11-06 10:53:40 +01:00
Víctor Fernández Poyatos 4ab119d6c9 feat(Invitation): PRWLR-4722 Add invitations endpoints (#71)
* feat(Invitation): PRWLR-4722 add model and enum

* feat(Invitation): PRWLR-4722 add serializers

* feat(Invitation): PRWLR-4722 add filters

* feat(Invitation): PRWLR-4722 update token field constraints

* feat(Invitation): PRWLR-4722 add serializers

* feat(Invitation): PRWLR-4722 add views, url and custom logic

* feat(Invitation): PRWLR-4722 update unique constraint in model

* feat(Invitation): PRWLR-4722 update serializer validation error messages

* fix(Invitation): PRWLR-4722 fix view logic

* feat(User): PRWLR-4722 add invitation_code query param and logic to create user view

* fix(Invitation): PRWLR-4722 fix invitation creation tenant filter

* chore: PRWLR-4722 add comments

* feat(Invitation): PRWLR-4722 add email filter to view

* fix(Utils): PRWLR-4722 fix datetime functions

* fix(User): PRWLR-4722 fix bug when creating users

* fix(Tests): PRWLR-4722 adapt unit and integration tests

* test(db-utils): PRWLR-4722 add new unit tests

* test(Invitation): PRWLR-4722 add unit tests

* test(Invitation): PRWLR-4722 add unit tests

* fix(Invitation): PRWLR-4722 fix views and serializers

* feat(Invitation): PRWLR-4722 refactor invitation validation and tests

* chore: PRWLR-4722 update API spec

* test(Invitation): PRWLR-4722 add more unit tests

* feat(Invitation): PRWLR-4722 refactor invitation urls

* chore: PRWLR-4722 update API spec
2024-11-05 15:30:53 +01:00
Pablo Lara f2d207d1d4 fix: fix build error (#73) 2024-11-05 14:43:19 +01:00
Adrián Jesús Peña Rodríguez 4bab3e262c feat(serializers): add role_session_name description (#70)
* feat(serializers): add role_session_name description

* feat(serializers): update spec
2024-11-05 13:27:20 +01:00
Víctor Fernández Poyatos e3ae44d033 fix(Provider): PRWLR-5153 fix provider initialization when testing connection (#69) 2024-11-04 17:20:31 +01:00
Víctor Fernández Poyatos 3de2c47c56 fix(Scan): PRWLR-5145 Update resource storing when performing a scan (#67)
* chore(Resource): PRWLR-5145 remove region from unique constraint

* feat(Resource): PRWLR-5145 update how resources are stored during a scan

* test(Task): PRWLR-5145 add unit tests for scan task resources
2024-11-04 11:05:02 +01:00
Adrián Jesús Peña Rodríguez 31c035eb52 fix(migrations): PRWLR-4869 add missing error_messages field (#65) 2024-10-31 17:49:14 +01:00
Víctor Fernández Poyatos fc19fbac68 feat(ProviderSecret): PRWLR-5128 Implement role assumption provider credentials for AWS (#64)
* feat(ProviderSecret): PRWLR-5128 add role assumption logic

* feat(Provider): PRWLR-5128 add static kwargs to Prowler provider initialization

* chore: PRWLR-5128 update API spec

* test(ProviderSecret): PRWLR-5128 add new unit tests

* chore: PRWLR-5128 update API spec
2024-10-31 16:25:20 +01:00
Adrián Jesús Peña Rodríguez c188028de5 feat(auth): PRWLR-4944 add recommended fields to JWTs (#62)
* feat(auth): PRWLR-4944 add recommended fields to JWTs

* feat(auth): PRWLR-4944 remove extra validations

* feat(auth): PRWLR-4944 fix format
2024-10-31 16:24:23 +01:00
Víctor Fernández Poyatos 43f9a5b1d0 fix(Task): fix serializer to convert None to null when decoding (#63) 2024-10-31 16:21:40 +01:00
Pepe Fagoaga 01045c973f chore(partitions): add env to create partitions (#61)
* chore(partitions): add env to create partitions

* chore(partitions): rename env to DJANGO_MANAGE_DB_PARTITIONS

* chore(partitions): use True|False as value

* fix: begin comment with uppercase
2024-10-29 16:16:09 +01:00
Adrián Jesús Peña Rodríguez 98ec0532b2 fix(serializers): PRWLR-4869 hide email address information when it already exists (#60)
* fix(serializers): PRWLR-4869 hide email address information when it already exists

* fix(serializers): PRWLR-4869 fix ruff format error
2024-10-28 15:11:20 +01:00
dependabot[bot] 674a38e80f chore(deps): bump werkzeug from 3.0.4 to 3.0.6 (#59)
Bumps [werkzeug](https://github.com/pallets/werkzeug) from 3.0.4 to 3.0.6.
- [Release notes](https://github.com/pallets/werkzeug/releases)
- [Changelog](https://github.com/pallets/werkzeug/blob/main/CHANGES.rst)
- [Commits](https://github.com/pallets/werkzeug/compare/3.0.4...3.0.6)

---
updated-dependencies:
- dependency-name: werkzeug
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-28 08:50:45 +01:00
Adrián Jesús Peña Rodríguez a4b16dd1e9 fix(Finding): PRWLR-5098 change the size of the UID field to 300 characters (#58) 2024-10-22 11:58:49 +02:00
Víctor Fernández Poyatos ed427c1352 chore(Scan, Finding): PRWLR-5056 Adjust finding information storing when performing a scan (#57)
* chore: PRWLR-5056 update Prowler dependency

* feat(Scan): PRWLR-5056 adapt scan task code to sdk breaking changes

* test(Scan): PRWLR-5056 fix unit tests

* chore: PRWLR-5056 update fixtures

* chore: PRWLR-5056 update Prowler dependency
2024-10-18 13:56:07 +02:00
Víctor Fernández Poyatos a8825c385b feat(User): PRWLR-4988 Make users' email case insensitive (#56)
* feat(User): PRWLR-4988 make User.email case insensitive

* test(User): PRWLR-4988 update unit tests

* feat(User): PRWLR-4988 include email validation in serializer
2024-10-17 19:22:20 +02:00
Víctor Fernández Poyatos 6d69a192f3 fix(Finding, Resource): PRWLR-5057 Fix include query parameter for /findings and /resources (#55)
* fix(Finding, Resource): PRWLR-5057 fix include query parameter

* fix(Finding, Resource): PRWLR-5057 optimize requests

* test(Finding, Resource): PRWLR-5057 add unit tests for include
2024-10-17 18:07:06 +02:00
Víctor Fernández Poyatos 60c75b4814 chore(Finding): PRWLR-5059 Remove default filtering and change default ordering (#54) 2024-10-16 13:41:41 +02:00
Víctor Fernández Poyatos 351132fb5b feat(ProviderSecret): PRWLR-4102 Implement /providers/secrets CRUD (#53)
* feat(Credential): PRWLR-4102 add model definition

* feat(Credential): PRWLR-4102 add serializers, views, urls and decorator

* feat(ProviderSecret): PRWLR-4102 rework credentials into provider secrets

* feat(ProviderSecret): PRWLR-4102 rework urls, views, serializers

* feat(Provider, Scan): PRWLR-4102 refactor modules to adapt connection test and scans to secrets

* feat(ProviderSecret): PRWLR-4102 add GCPProviderSecret serializer

* feat(Provider): PRWLR-4102 validate provider_id when testing connection

* chore(Utils): PRWLR-4987 refactor prowler provider functions

* test(Utils): PRWLR-4102 add unit tests

* test(Scan, Provider): PRWLR-4102 fix unit tests

* chore: PRWLR-4102 add docstrings and update prowler version and API spec

* chore(Provider, Scan): PRWLR-4102 update fixtures

* test(ProviderSecret): PRWLR-4102 add unit tests

* chore: PRWLR-4102 optimize imports
2024-10-11 15:49:45 +02:00
Víctor Fernández Poyatos 8791b7e3f1 feat(Scan, Finding): PRWLR-4987 Adjust findings delta based on previous findings (#52)
* feat(Finding): PRWLR-4987 add uid field to Findings

* feat(Scan): PRWLR-4987 implement logic to calculate Finding delta value

* test(Scan): PRWLR-4987 add unit tests for _create_finding_delta

* chore(Spec): PRWLR-4987 update API spec
2024-10-08 14:43:18 +02:00
Víctor Fernández Poyatos 8130880f2d chore(Tenant, Provider, Scan, Task, Resource): PRWLR-4966 Update default ordering in viewsets (#51)
* chore(Tenant, Provider, Scan, Task, Resource): PRWLR-4966 set default ordering to -inserted_at

* chore: PRWLR-4966 update API schema
2024-10-04 14:33:18 +02:00
Víctor Fernández Poyatos d98b716dfc chore(Filters): PRWLR-4948 Refactor filter module to reduce complexity and improve docs (#50)
* chore(Django-filter): PRWLR-4948 bump django-filter version to 24.3

* fix(Middleware): PRWLR-4948 fix logging middleware when auth is not present in request

* fix(Task): PRWLR-4948 fix serializer state values

* chore(Filters): PRWLR-4948 use ChoiceFilter instead of implementing method for basic filters

* chore(Filters): PRWLR-4948 refactor complex filters to reduce complexity
2024-10-04 14:13:04 +02:00
Víctor Fernández Poyatos 6bd8a17a5f fix(Task): PRWLR-4970 Fix Celery task issues when status is pending and race conditions (#49)
* fix(Task): PRWLR-4970 add TaskResult entry to database when task reaches broker

* fix(Task, Scan): PRWLR-4970 remove race conditions using atomic transactions

* chore(Django): PRWLR-4970 bump Django version to 5.1.1
2024-10-04 11:54:15 +02:00
Víctor Fernández Poyatos ded28baa2f feat(Scan, Resource, Finding): PRWLR-4015 Implement on demand scans and findings/resources in database (#48)
* feat(Users): PRWLR-4718 make user email the default login username

* feat(Token): PRWLR-4718 add serializers, views and urls for access and refresh tokens

* feat(Token): PRWLR-4718 add first membership tenant in token if not present in json body

* feat(Users): PRWLR-4718 add company_name to model

* feat(Users): PRWLR-4718 create tenant and membership when creating new user

* fix(BaseView): PRWLR-4718 add tenant_id to serializer context

* fix(Tests): PRWLR-4718 use authorization with unit tests

* fix(Views): PRWLR-4718 fix tenant retrieval from request

* fix(Tests): PRWLR-4718 fix tests

* fix(Fixtures): PRWLR-4718 fix tenant memberships ordering

* chore(Tokens): PRWLR-4718 update token url

* chore(Spec): PRWLR-4718 update API spec

* feat(Tokens): PRWLR-4718 enable token refresh blacklisting

* feat(Tokens): PRWLR-4718 implement RS256 algorithm and dev valid keys

* chore(env): PRWLR-4718 update .env.example

* chore(Deps): PRWLR-4015 update prowler dep

* fix(Resources, Findings): PRWLR-4015 fix permission issues on models and migrations

* feat(Scans, Tasks, Resources, Findings): PRWLR-4015 perform whole flow when executing scans

* fix(Settings): PRWLR-4015 fix devel JWT settings

* chore(Scans, Tasks): PRWLR-4015 improve docs and responses format

* test(Scan, Provider): PRWLR-4015 fix unit tests

* chore(Environment): PRWLR-4015 fix .env.example values

* test(Scan): PRWLR-4015 add unit tests for scan task

* chore(Task): PRWLR-4015 give proper format to task result on scan perform

* feat(Provider, Scan): PRWLR-4015 add all provider types to connection check and scan

* fix(Logging): PRWLR-4015 fix API logger middleware to include tenant and user IDs
2024-10-03 18:36:42 +02:00
Víctor Fernández Poyatos 54bb034cac feat(Tokens): PRWLR-4718 implement user authorization with JWT (#47)
* feat(Users): PRWLR-4718 make user email the default login username

* feat(Token): PRWLR-4718 add serializers, views and urls for access and refresh tokens

* feat(Token): PRWLR-4718 add first membership tenant in token if not present in json body

* feat(Users): PRWLR-4718 add company_name to model

* feat(Users): PRWLR-4718 create tenant and membership when creating new user

* fix(BaseView): PRWLR-4718 add tenant_id to serializer context

* fix(Tests): PRWLR-4718 use authorization with unit tests

* fix(Views): PRWLR-4718 fix tenant retrieval from request

* fix(Tests): PRWLR-4718 fix tests

* fix(Fixtures): PRWLR-4718 fix tenant memberships ordering

* chore(Tokens): PRWLR-4718 update token url

* chore(Spec): PRWLR-4718 update API spec

* feat(Tokens): PRWLR-4718 enable token refresh blacklisting

* feat(Tokens): PRWLR-4718 implement RS256 algorithm and dev valid keys

* fix(Environment): PRWLR-4718 fix jwt keys env vars

* fix(Environment): PRWLR-4718 fix jwt keys env vars (testing)

* chore(Settings): PRWLR-4718 remove drf-spectacular unused settings

* fix(Environment): PRWLR-4718 remove jwt signature keys from dev and testing modules
2024-09-30 17:45:09 +02:00
Víctor Fernández Poyatos 4c83351b26 feat(Tenants, Memberships): PRWLR-4719 Add memberships endpoints and security changes (#44)
* feat(SimpleJWT): PRWLR-4717 add djangorestframework-simplejwt dep

* feat(SimpleJWT): PRWLR-4717 add basic configuration and env variables

* feat(Users): PRWLR-4717 add model and security constraints

* feat(Users): PRWLR-4717 add serializers

* feat(Users): PRWLR-4717 add views

* test(Conftest): PRWLR-4717 add user and authenticated client fixtures

* fix(Unit tests): PRWLR-4717 add automated authentication to all unit tests

* fix(Authentication): PRWLR-4717 add authentication class and update tests

* test(Users): PRWLR-4717 add unit tests

* test(Users): PRWLR-4717 add integration tests

* chore(Schema): PRWLR-4717 update API schema

* fix(User): PRWLR-4717 fix password validation

* feat(Validators): PRWLR-4717 add MaxLength password validator

* fix(User): PRWLR-4717 update User model to delete admin fields

* chore(Serializers): PRWLR-4717 add docstrings and update serializers

* chore(Fixtures): PRWLR-4717 add dev user

* feat(Memberships): PRWLR-4719 add membership.Roles postgres enums

* feat(Memberships): PRWLR-4719 add model

* feat(Tenants): PRWLR-4719 add owner membership when creating a new one

* chore(Users): PRWLR-4717 raise DRF NotFound instead of returning response

* chore(Deps): PRWLR-4719 add drf-nested-routers

* feat(Memberships): PRWLR-4719 add serializers, urls and views

* feat(Tenants): PRWLR-4719 add RLS based on memberships

* chore(Views): PRWLR-4719 unify tenant related views dispatch methods

* test(Tenants): PRWLR-4719 add membership to test user when creating tenants

* test(Users): PRWLR-4719 add name field to model

* chore(Deps): PRWLR-4719 add drf-nested-routers

* feat(Memberships): PRWLR-4719 separate membership endpoints

* feat(Memberships): PRWLR-4719 add filters

* test(Memberships): PRWLR-4719 add unit tests

* test(Tenants): PRWLR-4719 add membership unit tests

* chore(API): PRWLR-4719 update spec

* chore(API): PRWLR-4719 update Django dev fixtures

* test(Memberships): PRWLR-4719 add more unit tests

* chore(Memberships): PRWLR-4719 move /memberships to /users/me/

* feat(Users, Tenants, Memberships): PRWLR-4719 update responses and routes

* feat(Memberships): PRWLR-4719 adjust tenant membership view results under membership role

* chore(Scans): PRWLR-4719 rename django fixture
2024-09-25 13:12:15 +02:00
Víctor Fernández Poyatos 4a881fd2fd chore: delete LICENSE (#46) 2024-09-23 17:27:00 +02:00
Jon Young 4ca95b08e2 feat(Findings): Partitioned database tables (#45)
* feat(Findings): initial findings model

* fix(Findings): add view, serializers, migration for enums

* fix(Findings): incomplete jsonb_to_tsvector wrapper

will not run as written

* fix(Findings): use Severity and Status enums from prowler SDK

* tests(Findings): add failing view tests

* fix(Finding): add resource relationship

not returning correct data from serializer, missing links

* fix(FindingSerializer): get Scan & Resource relationships to show up

* fix(FindingFilter): add more filter fields

* fix(FindingFilter): filter on provider id

* fix(FindingSerializer): return Resource in relationship

not ResourceFindingMapping

* fix(FindingModel): update migration

* fix(FindingFilter): full text search on findings

* fix(Resources): include Findings in ResourceSerializer

* fix(FindingFilter): expand text search columns

* fix(DbUtils): docstring, not comment

* fix(BaseViews): remove TODO

comment not applicable right now

* fix(Fixtures): add more findings to fixture file

and change on_delete behavior for resource_finding_mapping

* fix(Resources): rename index to match others

* fix(Findings): update Findigns RLS to allow for full CRUD

eventually we'll let users enter a manual finding
which implies INSERT, UPDATE, DELETE

* fix(Findings): use TextChoices directly for Status enum

* fix(FindingSerializer): build a set instead of a list

* consistency in fixtures

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>

* fix(API): update v1 spec for findings

* feat(Findings): store findings in a partitioned table

* fix(Settings): change unit of partition max age

to match unit when creating

* docs(Partitions): document how to manage partitions via manage.py

* fix(Findings): add tag for spec/docs

* fix(Findings): clean up migrations

* fix(Findings): convert scan_id and inserted_at filters into finding.id filters

* fix(Findings): add default filter for today

and set default sort order

* fix(Findings): add default filter for today

and set default sort order

* fix(Findings): update fixtures so datetime matches id

* fix(Findings): partition the ResourceFindingMapping table to match Findings

* docs(Partitions): document postgres config values more

* docs(UUIDUtils): do not use raw query strigns (typo)

* docs(Partitions): change unit in comment description

* fix(Findings): change resource_name & tags to be Finding

* docs(Partitions): change unit in partitions settings docstring

* fix(Findings): remove conflicting logic & filters

* chore: apply suggested changes

* chore: optimize imports

---------

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
2024-09-23 11:39:03 +02:00
Jon Young 489ac20141 feat(Findings): add the /findings endpoint (#38)
* feat(Findings): initial findings model

* fix(Findings): add view, serializers, migration for enums

* fix(Findings): incomplete jsonb_to_tsvector wrapper

will not run as written

* fix(Findings): use Severity and Status enums from prowler SDK

* tests(Findings): add failing view tests

* fix(Finding): add resource relationship

not returning correct data from serializer, missing links

* fix(FindingSerializer): get Scan & Resource relationships to show up

* fix(FindingFilter): add more filter fields

* fix(FindingFilter): filter on provider id

* fix(FindingSerializer): return Resource in relationship

not ResourceFindingMapping

* fix(FindingModel): update migration

* fix(FindingFilter): full text search on findings

* fix(Resources): include Findings in ResourceSerializer

* fix(FindingFilter): expand text search columns

* fix(DbUtils): docstring, not comment

* fix(BaseViews): remove TODO

comment not applicable right now

* fix(Fixtures): add more findings to fixture file

and change on_delete behavior for resource_finding_mapping

* fix(Resources): rename index to match others

* fix(Findings): update Findigns RLS to allow for full CRUD

eventually we'll let users enter a manual finding
which implies INSERT, UPDATE, DELETE

* fix(Findings): use TextChoices directly for Status enum

* fix(FindingSerializer): build a set instead of a list

* consistency in fixtures

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>

* fix(API): update v1 spec for findings

---------

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
2024-09-18 19:28:03 +02:00
Víctor Fernández Poyatos 9ffde34198 feat(Users): #PRWLR-4717 add /users endpoints and basic auth (#43)
* feat(SimpleJWT): PRWLR-4717 add djangorestframework-simplejwt dep

* feat(SimpleJWT): PRWLR-4717 add basic configuration and env variables

* feat(Users): PRWLR-4717 add model and security constraints

* feat(Users): PRWLR-4717 add serializers

* feat(Users): PRWLR-4717 add views

* test(Conftest): PRWLR-4717 add user and authenticated client fixtures

* fix(Unit tests): PRWLR-4717 add automated authentication to all unit tests

* fix(Authentication): PRWLR-4717 add authentication class and update tests

* test(Users): PRWLR-4717 add unit tests

* test(Users): PRWLR-4717 add integration tests

* chore(Schema): PRWLR-4717 update API schema

* fix(User): PRWLR-4717 fix password validation

* feat(Validators): PRWLR-4717 add MaxLength password validator

* fix(User): PRWLR-4717 update User model to delete admin fields

* chore(Serializers): PRWLR-4717 add docstrings and update serializers

* chore(Fixtures): PRWLR-4717 add dev user

* chore(Users): PRWLR-4717 raise DRF NotFound instead of returning response
2024-09-18 10:19:44 +02:00
Jon Young 6a341b88f0 fix(Providers, Resources, Scans): rename provider_id and filter on more provider fields (#42)
* fix(Providers, Resources, Scans): filter on more provider fields

* Apply suggestions from code review

more python-y

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>

---------

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
2024-09-13 16:09:09 +02:00
Víctor Fernández Poyatos 1cef6f0db7 feat(Tasks): PRWLR-4826 add task_args to serializer (#41) 2024-09-12 09:07:08 -04:00
Jon Young f7645e8f25 feat(Resources): add the /resources endpoint (#34)
* fix(Resources): add basic Resource MVC

* fix(Resources): implement many-to-many tags via through table

* fix(Resources): tsvector & migration

migration needs work, need to create a custom
django migration field to build the GENERATED ALWAYS
column.

Without it, django will complain about the ts column
not exisiting when we try to create an index.

* test(Resources): add tests for /resources views

* fix(Resources): get basic test cases to pass

need to work on tsvector column
and filtering by provider columns like alias, name

* fix(Resources): provide way to get tags as dict

not a list of ResourceTag models

* fix(Resources): annotate with return type

* fix(Resources): rename search field to not conflict with filters

* fix(Resources): filter by provider.id

* fix(Resources): remove filter and sort by provider

must use provider_id first

* fix(Resources): test adding, clearing tags

* fix(Scans): filter by provider_id

* fix(Resources): remove FIXME comments

* fix(Resources): filter and search on tags

* fix(Resources): full text search

* fix(Resources): full text search to include both resources and tags

and get rid of the distinct() query

* fix(Resources): document text search a bit more

* fix(Resources): remove TODO comments

* fix(Resources): move Resource migrations into 0001_initital

* fix(Config): revert to match main

* fix(Resources): use Django's default query builder for full text search

* Apply suggestions from code review

Mostly formatting changes

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>

* fix(Resources): just use text search

instead of guessing at allowed split characters for each provider

* fix(Resources): remove unused tests

these cases are covered in parameterized lists

* fix(Resources): set a read-only RLS policy

* fix(Resources): rename add_tags to be upsert_or_delete_tags

* fix(Resources): include primary key on through table

django query builder doesn't like tables without primary keys

* fix(Resources): default xx_at filters to date

instead of date time

* docs(Resources): describe what a Resource is

in API docs

* chore(Resources): rename file to match others

---------

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
2024-09-11 18:04:34 +02:00
dependabot[bot] 2420aedde9 chore(deps): bump cryptography from 43.0.0 to 43.0.1 (#40)
Bumps [cryptography](https://github.com/pyca/cryptography) from 43.0.0 to 43.0.1.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/43.0.0...43.0.1)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-10 18:19:21 +02:00
Víctor Fernández Poyatos 73330ecb1a chore/PRWLR-4775 update datetime default filter for date on inserted_at and updated_at API attributes (#39)
* chore(API): PRWLR-4775 change inserted and updated at filters to filter by date by default

* test(API): PRWLR-4775 replace datetime strings for date

* feat(API): PRWLR-4775 update started_at default behavior and unit tests
2024-09-09 16:52:32 -04:00
Víctor Fernández Poyatos c3346ff605 fix(Docker): #PRWLR-4781 fix docker environment issues and celery worker container connection (#37)
* build(Dockerfile): PRWLR-4781 remove versions from dockerfile deps

* fix(Docker): PRWLR-4781 fix celery worker container and apply dev fixtures by default

* build(docker-compose): PRWLR-4781 set default django settings to production in worker service
2024-09-09 09:52:06 -04:00
Víctor Fernández Poyatos ec67fc12e0 feat/PRWLR-4177 Add /tasks endpoints and data model (#35)
* feat(Backend): PRWLR-4177 add Task model and migrations

* feat(Tasks): PRWLR-4177 add RLSTask class

* feat(API): PRWLR-4177 add Task serializers

* feat(Backend, DB): PRWLR-4177 refactor db variables and add policy on task runner tasks

* feat(API): PRWLR-4177 add Tasks filters and sort fields

* feat(API, Tasks): PRWLR-4177 add deletion tasks and revoke logic to /tasks

* test(Task): PRWLR-4177 add deletion tasks unit tests

* test(Views): PRWLR-4177 add Tasks views unit tests and update outdated ones

* chore(API): PRWLR-4177 improve drf-spectacular annotations

* chore(API): PRWLR-4177 add PROGRESS task state

* chore(API): PRWLR-4177 update spec

* chore(API): PRWLR-4177 remove force query parameter from DELETE /tasks

* feat(Backend): PRWLR-4177 add APITimeoutError and raise when TaskResult is not created

* feat(Backend): PRWLR-4177 add specific error class for task timeouts
2024-09-06 20:47:51 -04:00
Jon Young f5462c9b27 fix(Scans): rename 'type' to 'trigger'. (#36)
'type' is a reserved word in JSON:API schemas,
and python.

'trigger' more accurately describes the enum value.
2024-09-06 15:13:27 +02:00
Víctor Fernández Poyatos 24857eaa7f feat/PRWLR-4002 add /scans endpoints (without SDK integration) (#33)
* feat(Backend): PRWLR-4992 add Scan db model

* feat(API): PRWLR-4002 add viewset and required tools for /scans endpoint

* feat(API): PRWLR-4002 improve /scans filters

* feat(API): PRWLR-4002 add relationships links

* feat(API): PRWLR-4002 implement POST /scan custom logic

* fix(API): PRWLR-4002 fix Scan.type keyword usage

* feat(API): PRWLR-4002 implement PATCH /scans

* feat(API): PRWLR-4002 refactor serializers for write operations

* fix(API): PRWLR-4002 fix providers on ScanSerializer

* test(API): PRWLR-4002 add unit tests for /scans

* feat(Backend, Test): PRWLR-4002 refactor routing and unit tests db connections

* build(CI): PRWLR-4002 update CI env vars for postgres

* fix(Tests): PRWLR-4002 fix close_db_connections fixture

* feat(Backend, API): PRWLR-4002 apply requested changes to Scan model and filters

* chore(Tests): PRWLR-4002 rename pytest fixtures

* feat(Backend): PRWLR-4002 remove unique constraint from Scan model

* fix(Backend, Tests): PRWLR-4002 fix db routing and migration mechanism for tests

* chore(deps): PRWLR-4002 add uuid6 to poetry deps

* chore(Backend): PRWLR-4002 refactor filter methods

* fix(Tests): PRWLR-4002 fix wrong postgres credentials for testing

* feat(API): PRWLR-4002 implement merging mechanism for Scans.scanner_args

* feat(API): PRWLR-4002 implement merging mechanism for Scans.scanner_args

* feat(Backend): PRWLR-4002 add indexes to Scan model

* feat(Backend): PRWLR-4002 remove id index from Scan model (redundant)

* feat(API): PRWLR-4002 add datetime fields to Scan serializer
2024-08-30 14:32:13 -04:00
Víctor Fernández Poyatos 8183207802 feat/PRWLR-4014 Implement SDK integration for POST /providers/{provider_id}/connection (#30)
* chore(deps): PRWLR-4014 include prowler library in python deps

* feat(Backend,API): PRWLR-4014 add AWS provider test_connection through celery tasks

* fix(Backend,API): PRWLR-4014 fix model handling in celery tasks

* test(Tasks): PRWLR-4014 add unit tests for celery tasks

* docs(API): PRWLR-4014 update endpoint tag

* feat(Backend): PRWLR-4014 add decorator for tenant dependant Celery tasks

* chore(Backend): PRWLR-4014 remove TODOs and improve docstrings

* feat(Backend): PRWLR-4014 replace timezone.now for datetime.now(timezone.utc)

* feat(Backend): PRWLR-4014 use SET LOCAL for api.tenant_id setting

* feat(Backend, Tasks): PRWLR-4014 refactor tasks module to abstract business logic

* fix(Backend): PRWLR-4014 use set_config for RLS config and set transaction at request dispatch level

* fix(Tasks): PRWLR-4014 fix tasks tenant decorator
2024-08-29 09:53:07 -04:00
Víctor Fernández Poyatos 8f2bd45872 feat/PRWLR-4413 Add Postgres Enums for Django and update Provider.provider field (#28)
* feat(db): PRWLR-4413 add Provider Postgres Enum type for Django

* fix(Backend): PRWLR-4413 Fix initial migration for Providers

* feat(Backend): PRWLR-4413 add provider enum to Provider model

* fix(Backend, API): PRWLR-4413 fix ProviderEnum representation

* chore(Backend): PRWLR-4413 remove max_length constraint from provider enum

* chore(Backend): PRWLR-4413 refactor postgres enum creation to avoid boilerplate

* chore(Backend): PRWLR-4413 improve comments
2024-08-21 18:02:46 +02:00
Víctor Fernández Poyatos 8a2cfea677 feat/PRWLR-4368 Remove TenantMiddleware and set tenant_id at view level (#31)
* feat(API): PRWLR-4368 remove TenantMiddleware in favour of transaction based setup

* feat(API): PRWLR-4368 override initial request method to perform atomic transactions on RLS viewsets
2024-08-21 10:10:01 +02:00
Víctor Fernández Poyatos 308f52c6f9 build(deps): bump gunicorn version to 23.0.0 (#29) 2024-08-13 16:28:39 +02:00
Víctor Fernández Poyatos 4f99518d52 fix(Dockerfile): add curl-dev to base image (#27) 2024-08-12 12:34:55 +02:00
Jon Young a2ab216531 chore(Celery): add basic Celery worker with broker only (#20)
* chore(Celery): add basic Celery worker with broker only

* chore(Celery): saving progress. Not able to schedule tasks

* fix(Celery): add celery app for use by django

* fix(Celery): register tasks

* fix(Docker): add celery workers to docker-compose

* chore(Celery): add django-celery-results backend

to store results using Django ORM

* fix(Celery): get app config the correct way

* fix(Docker): start connecting docker Celery workers to Valkey

not yet operational

* fix(Celery): get celery & django to work in docker-compose

* docs(Celery): document how to run Celery in development environment

includes changes to support the configuration and deployment
of Celery worker and its dependencies, Valkey and Postgres.

* fix(GHA): add valkey to CI services

* fix(GHA): add valkey to CI services

* fix(GHA): add valkey-cli ping to CI services

* fix(GHA): use right port for valkey

* fix(Views): remove debug task code

* test(Celery): start adding celery task tests

not yet working!

* fix(pyproject): rollback django upgrade

* fix(docker): updated docker runtime and env vars

based on feedback from #20

* fix(Dockerfile): include dependencies for psutil

psutil was introduced by pytest-celery

* fix(Backend): PRWLR-4013 fix celery settings structure

* fix(Celery): update celery app to work with new settings structure

* fix(Views): remove debug task code

* fix(Config): remove debug code

* fix(Celery): update celery app name when running worker

---------

Co-authored-by: Víctor Fernández Poyatos <victor@prowler.com>
2024-08-09 16:47:35 +02:00