mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-07-04 19:21:51 +00:00
feat(api): add MongoDBAtlas provider to api (#9167)
This commit is contained in:
committed by
GitHub
parent
0ad5bbf350
commit
7e03b423dd
@@ -90,7 +90,7 @@ prowler dashboard
|
||||
| M365 | 70 | 7 | 3 | 2 | Official | UI, API, CLI |
|
||||
| OCI | 51 | 13 | 1 | 10 | Official | UI, API, CLI |
|
||||
| IaC | [See `trivy` docs.](https://trivy.dev/latest/docs/coverage/iac/) | N/A | N/A | N/A | Official | UI, API, CLI |
|
||||
| MongoDB Atlas | 10 | 3 | 0 | 0 | Official | CLI |
|
||||
| MongoDB Atlas | 10 | 3 | 0 | 0 | Official | CLI, API |
|
||||
| LLM | [See `promptfoo` docs.](https://www.promptfoo.dev/docs/red-team/plugins/) | N/A | N/A | N/A | Official | CLI |
|
||||
| NHN | 6 | 2 | 1 | 0 | Unofficial | CLI |
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ All notable changes to the **Prowler API** are documented in this file.
|
||||
- Support muting findings based on simple rules with custom reason [(#9051)](https://github.com/prowler-cloud/prowler/pull/9051)
|
||||
- Support C5 compliance framework for the GCP provider [(#9097)](https://github.com/prowler-cloud/prowler/pull/9097)
|
||||
- Support for Amazon Bedrock and OpenAI compatible providers in Lighthouse AI [(#8957)](https://github.com/prowler-cloud/prowler/pull/8957)
|
||||
- Support for MongoDB Atlas provider [(#9167)](https://github.com/prowler-cloud/prowler/pull/9167)
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
# Generated by Django 5.1.13 on 2025-11-05 08:37
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
import api.db_utils
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
dependencies = [
|
||||
("api", "0054_iac_provider"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="provider",
|
||||
name="provider",
|
||||
field=api.db_utils.ProviderEnumField(
|
||||
choices=[
|
||||
("aws", "AWS"),
|
||||
("azure", "Azure"),
|
||||
("gcp", "GCP"),
|
||||
("kubernetes", "Kubernetes"),
|
||||
("m365", "M365"),
|
||||
("github", "GitHub"),
|
||||
("mongodbatlas", "MongoDB Atlas"),
|
||||
("iac", "IaC"),
|
||||
("oraclecloud", "Oracle Cloud Infrastructure"),
|
||||
],
|
||||
default="aws",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -284,6 +284,7 @@ class Provider(RowLevelSecurityProtectedModel):
|
||||
KUBERNETES = "kubernetes", _("Kubernetes")
|
||||
M365 = "m365", _("M365")
|
||||
GITHUB = "github", _("GitHub")
|
||||
MONGODBATLAS = "mongodbatlas", _("MongoDB Atlas")
|
||||
IAC = "iac", _("IaC")
|
||||
ORACLECLOUD = "oraclecloud", _("Oracle Cloud Infrastructure")
|
||||
|
||||
@@ -381,6 +382,15 @@ class Provider(RowLevelSecurityProtectedModel):
|
||||
pointer="/data/attributes/uid",
|
||||
)
|
||||
|
||||
@staticmethod
|
||||
def validate_mongodbatlas_uid(value):
|
||||
if not re.match(r"^[0-9a-fA-F]{24}$", value):
|
||||
raise ModelValidationError(
|
||||
detail="MongoDB Atlas organization ID must be a 24-character hexadecimal string.",
|
||||
code="mongodbatlas-uid",
|
||||
pointer="/data/attributes/uid",
|
||||
)
|
||||
|
||||
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
|
||||
inserted_at = models.DateTimeField(auto_now_add=True, editable=False)
|
||||
updated_at = models.DateTimeField(auto_now=True, editable=False)
|
||||
|
||||
@@ -875,6 +875,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -886,6 +887,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -900,6 +902,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -912,6 +915,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -1409,6 +1413,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -1420,6 +1425,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -1434,6 +1440,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -1446,6 +1453,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -1851,6 +1859,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -1862,6 +1871,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -1876,6 +1886,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -1888,6 +1899,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -2291,6 +2303,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -2302,6 +2315,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -2316,6 +2330,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -2328,6 +2343,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -2719,6 +2735,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -2730,6 +2747,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -2744,6 +2762,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -2756,6 +2775,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -4551,6 +4571,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -4562,6 +4583,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -4576,6 +4598,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -4588,6 +4611,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -4735,6 +4759,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -4746,6 +4771,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -4760,6 +4786,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -4772,6 +4799,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -4985,6 +5013,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -4996,6 +5025,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -5010,6 +5040,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -5022,6 +5053,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -5715,6 +5747,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -5726,6 +5759,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -5740,6 +5774,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -5752,6 +5787,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
style: form
|
||||
@@ -6404,6 +6440,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -6415,6 +6452,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -6429,6 +6467,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -6441,6 +6480,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -6776,6 +6816,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -6787,6 +6828,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -6801,6 +6843,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -6813,6 +6856,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -7049,6 +7093,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -7060,6 +7105,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -7074,6 +7120,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -7086,6 +7133,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -7328,6 +7376,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -7339,6 +7388,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -7353,6 +7403,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -7365,6 +7416,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -8170,6 +8222,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- iac
|
||||
- kubernetes
|
||||
- m365
|
||||
@@ -8181,6 +8234,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
- in: query
|
||||
@@ -8195,6 +8249,7 @@ paths:
|
||||
- azure
|
||||
- gcp
|
||||
- github
|
||||
- mongodbatlas
|
||||
- kubernetes
|
||||
- m365
|
||||
- oraclecloud
|
||||
@@ -8207,6 +8262,7 @@ paths:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `iac` - IaC
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
explode: false
|
||||
@@ -14229,7 +14285,7 @@ components:
|
||||
type: string
|
||||
description: GitHub OAuth App token for authentication.
|
||||
required:
|
||||
- oauth_app_token
|
||||
- oauth_app_token
|
||||
- type: object
|
||||
title: GitHub App Credentials
|
||||
properties:
|
||||
@@ -14242,6 +14298,18 @@ components:
|
||||
required:
|
||||
- github_app_id
|
||||
- github_app_key
|
||||
- type: object
|
||||
title: MongoDB Atlas API Key
|
||||
properties:
|
||||
atlas_public_key:
|
||||
type: string
|
||||
description: MongoDB Atlas API public key.
|
||||
atlas_private_key:
|
||||
type: string
|
||||
description: MongoDB Atlas API private key.
|
||||
required:
|
||||
- atlas_public_key
|
||||
- atlas_private_key
|
||||
- type: object
|
||||
title: IaC Repository Credentials
|
||||
properties:
|
||||
@@ -15280,6 +15348,7 @@ components:
|
||||
- kubernetes
|
||||
- m365
|
||||
- github
|
||||
- mongodbatlas
|
||||
- oraclecloud
|
||||
type: string
|
||||
description: |-
|
||||
@@ -15289,6 +15358,7 @@ components:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
x-spec-enum-id: 7087703783970b51
|
||||
uid:
|
||||
@@ -15402,6 +15472,7 @@ components:
|
||||
- kubernetes
|
||||
- m365
|
||||
- github
|
||||
- mongodbatlas
|
||||
- oraclecloud
|
||||
type: string
|
||||
x-spec-enum-id: 7087703783970b51
|
||||
@@ -15414,12 +15485,13 @@ components:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
uid:
|
||||
type: string
|
||||
title: Unique identifier for the provider, set by the provider
|
||||
description: Unique identifier for the provider, set by the provider,
|
||||
e.g. AWS account ID, Azure subscription ID, GCP project ID, etc.
|
||||
e.g. AWS account ID, Azure subscription ID, GCP project ID, MongoDB Atlas organization ID, etc.
|
||||
maxLength: 250
|
||||
minLength: 3
|
||||
required:
|
||||
@@ -15458,6 +15530,7 @@ components:
|
||||
- kubernetes
|
||||
- m365
|
||||
- github
|
||||
- mongodbatlas
|
||||
- oraclecloud
|
||||
type: string
|
||||
x-spec-enum-id: 7087703783970b51
|
||||
@@ -15470,13 +15543,14 @@ components:
|
||||
* `kubernetes` - Kubernetes
|
||||
* `m365` - M365
|
||||
* `github` - GitHub
|
||||
* `mongodbatlas` - MongoDB Atlas
|
||||
* `oraclecloud` - Oracle Cloud Infrastructure
|
||||
uid:
|
||||
type: string
|
||||
minLength: 3
|
||||
title: Unique identifier for the provider, set by the provider
|
||||
description: Unique identifier for the provider, set by the provider,
|
||||
e.g. AWS account ID, Azure subscription ID, GCP project ID, etc.
|
||||
e.g. AWS account ID, Azure subscription ID, GCP project ID, MongoDB Atlas organization ID, etc.
|
||||
maxLength: 250
|
||||
required:
|
||||
- uid
|
||||
|
||||
@@ -20,8 +20,10 @@ from prowler.providers.aws.aws_provider import AwsProvider
|
||||
from prowler.providers.aws.lib.security_hub.security_hub import SecurityHubConnection
|
||||
from prowler.providers.azure.azure_provider import AzureProvider
|
||||
from prowler.providers.gcp.gcp_provider import GcpProvider
|
||||
from prowler.providers.github.github_provider import GithubProvider
|
||||
from prowler.providers.kubernetes.kubernetes_provider import KubernetesProvider
|
||||
from prowler.providers.m365.m365_provider import M365Provider
|
||||
from prowler.providers.mongodbatlas.mongodbatlas_provider import MongodbatlasProvider
|
||||
from prowler.providers.oraclecloud.oraclecloud_provider import OraclecloudProvider
|
||||
|
||||
|
||||
@@ -109,6 +111,8 @@ class TestReturnProwlerProvider:
|
||||
(Provider.ProviderChoices.AZURE.value, AzureProvider),
|
||||
(Provider.ProviderChoices.KUBERNETES.value, KubernetesProvider),
|
||||
(Provider.ProviderChoices.M365.value, M365Provider),
|
||||
(Provider.ProviderChoices.GITHUB.value, GithubProvider),
|
||||
(Provider.ProviderChoices.MONGODBATLAS.value, MongodbatlasProvider),
|
||||
(Provider.ProviderChoices.ORACLECLOUD.value, OraclecloudProvider),
|
||||
],
|
||||
)
|
||||
@@ -209,6 +213,10 @@ class TestGetProwlerProviderKwargs:
|
||||
Provider.ProviderChoices.ORACLECLOUD.value,
|
||||
{},
|
||||
),
|
||||
(
|
||||
Provider.ProviderChoices.MONGODBATLAS.value,
|
||||
{"atlas_organization_id": "provider_uid"},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_get_prowler_provider_kwargs(self, provider_type, expected_extra_kwargs):
|
||||
|
||||
@@ -1153,6 +1153,11 @@ class TestProviderViewSet:
|
||||
"uid": "https://gitlab.com/user/project",
|
||||
"alias": "GitLab Repo",
|
||||
},
|
||||
{
|
||||
"provider": "mongodbatlas",
|
||||
"uid": "64b1d3c0e4b03b1234567890",
|
||||
"alias": "Atlas Organization",
|
||||
},
|
||||
]
|
||||
),
|
||||
)
|
||||
@@ -1329,6 +1334,24 @@ class TestProviderViewSet:
|
||||
"iac-uid",
|
||||
"uid",
|
||||
),
|
||||
(
|
||||
{
|
||||
"provider": "mongodbatlas",
|
||||
"uid": "64b1d3c0e4b03b123456789g",
|
||||
"alias": "test",
|
||||
},
|
||||
"mongodbatlas-uid",
|
||||
"uid",
|
||||
),
|
||||
(
|
||||
{
|
||||
"provider": "mongodbatlas",
|
||||
"uid": "1234",
|
||||
"alias": "test",
|
||||
},
|
||||
"mongodbatlas-uid",
|
||||
"uid",
|
||||
),
|
||||
]
|
||||
),
|
||||
)
|
||||
@@ -1502,22 +1525,22 @@ class TestProviderViewSet:
|
||||
(
|
||||
"uid.icontains",
|
||||
"1",
|
||||
6,
|
||||
), # Updated: includes OCI provider with "1" in UID
|
||||
7,
|
||||
),
|
||||
("alias", "aws_testing_1", 1),
|
||||
("alias.icontains", "aws", 2),
|
||||
("inserted_at", TODAY, 7), # Updated: 7 providers now (added OCI)
|
||||
("inserted_at", TODAY, 8),
|
||||
(
|
||||
"inserted_at.gte",
|
||||
"2024-01-01",
|
||||
7,
|
||||
), # Updated: 7 providers now (added OCI)
|
||||
8,
|
||||
),
|
||||
("inserted_at.lte", "2024-01-01", 0),
|
||||
(
|
||||
"updated_at.gte",
|
||||
"2024-01-01",
|
||||
7,
|
||||
), # Updated: 7 providers now (added OCI)
|
||||
8,
|
||||
),
|
||||
("updated_at.lte", "2024-01-01", 0),
|
||||
]
|
||||
),
|
||||
@@ -2057,6 +2080,15 @@ class TestProviderSecretViewSet:
|
||||
"pass_phrase": "my-secure-passphrase",
|
||||
},
|
||||
),
|
||||
# MongoDB Atlas credentials
|
||||
(
|
||||
Provider.ProviderChoices.MONGODBATLAS.value,
|
||||
ProviderSecret.TypeChoices.STATIC,
|
||||
{
|
||||
"atlas_public_key": "public-key",
|
||||
"atlas_private_key": "private-key",
|
||||
},
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_provider_secrets_create_valid(
|
||||
|
||||
@@ -21,6 +21,7 @@ from prowler.providers.github.github_provider import GithubProvider
|
||||
from prowler.providers.iac.iac_provider import IacProvider
|
||||
from prowler.providers.kubernetes.kubernetes_provider import KubernetesProvider
|
||||
from prowler.providers.m365.m365_provider import M365Provider
|
||||
from prowler.providers.mongodbatlas.mongodbatlas_provider import MongodbatlasProvider
|
||||
from prowler.providers.oraclecloud.oraclecloud_provider import OraclecloudProvider
|
||||
|
||||
|
||||
@@ -70,6 +71,7 @@ def return_prowler_provider(
|
||||
| IacProvider
|
||||
| KubernetesProvider
|
||||
| M365Provider
|
||||
| MongodbatlasProvider
|
||||
| OraclecloudProvider
|
||||
]:
|
||||
"""Return the Prowler provider class based on the given provider type.
|
||||
@@ -78,7 +80,7 @@ def return_prowler_provider(
|
||||
provider (Provider): The provider object containing the provider type and associated secrets.
|
||||
|
||||
Returns:
|
||||
AwsProvider | AzureProvider | GcpProvider | GithubProvider | IacProvider | KubernetesProvider | M365Provider | OraclecloudProvider: The corresponding provider class.
|
||||
AwsProvider | AzureProvider | GcpProvider | GithubProvider | IacProvider | KubernetesProvider | M365Provider | OraclecloudProvider | MongodbatlasProvider: The corresponding provider class.
|
||||
|
||||
Raises:
|
||||
ValueError: If the provider type specified in `provider.provider` is not supported.
|
||||
@@ -96,6 +98,8 @@ def return_prowler_provider(
|
||||
prowler_provider = M365Provider
|
||||
case Provider.ProviderChoices.GITHUB.value:
|
||||
prowler_provider = GithubProvider
|
||||
case Provider.ProviderChoices.MONGODBATLAS.value:
|
||||
prowler_provider = MongodbatlasProvider
|
||||
case Provider.ProviderChoices.IAC.value:
|
||||
prowler_provider = IacProvider
|
||||
case Provider.ProviderChoices.ORACLECLOUD.value:
|
||||
@@ -146,6 +150,11 @@ def get_prowler_provider_kwargs(
|
||||
prowler_provider_kwargs["oauth_app_token"] = provider.secret.secret[
|
||||
"access_token"
|
||||
]
|
||||
elif provider.provider == Provider.ProviderChoices.MONGODBATLAS.value:
|
||||
prowler_provider_kwargs = {
|
||||
**prowler_provider_kwargs,
|
||||
"atlas_organization_id": provider.uid,
|
||||
}
|
||||
|
||||
if mutelist_processor:
|
||||
mutelist_content = mutelist_processor.configuration.get("Mutelist", {})
|
||||
@@ -166,6 +175,7 @@ def initialize_prowler_provider(
|
||||
| IacProvider
|
||||
| KubernetesProvider
|
||||
| M365Provider
|
||||
| MongodbatlasProvider
|
||||
| OraclecloudProvider
|
||||
):
|
||||
"""Initialize a Prowler provider instance based on the given provider type.
|
||||
@@ -175,8 +185,8 @@ def initialize_prowler_provider(
|
||||
mutelist_processor (Processor): The mutelist processor object containing the mutelist configuration.
|
||||
|
||||
Returns:
|
||||
AwsProvider | AzureProvider | GcpProvider | GithubProvider | IacProvider | KubernetesProvider | M365Provider | OciProvider: An instance of the corresponding provider class
|
||||
(`AwsProvider`, `AzureProvider`, `GcpProvider`, `GithubProvider`, `IacProvider`, `KubernetesProvider`, `M365Provider` or `OraclecloudProvider`) initialized with the
|
||||
AwsProvider | AzureProvider | GcpProvider | GithubProvider | IacProvider | KubernetesProvider | M365Provider | OraclecloudProvider | MongodbatlasProvider: An instance of the corresponding provider class
|
||||
(`AwsProvider`, `AzureProvider`, `GcpProvider`, `GithubProvider`, `IacProvider`, `KubernetesProvider`, `M365Provider`, `OraclecloudProvider` or `MongodbatlasProvider`) initialized with the
|
||||
provider's secrets.
|
||||
"""
|
||||
prowler_provider = return_prowler_provider(provider)
|
||||
|
||||
@@ -289,6 +289,21 @@ from rest_framework_json_api import serializers
|
||||
},
|
||||
"required": ["user", "fingerprint", "tenancy", "region"],
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"title": "MongoDB Atlas API Key",
|
||||
"properties": {
|
||||
"atlas_public_key": {
|
||||
"type": "string",
|
||||
"description": "MongoDB Atlas API public key.",
|
||||
},
|
||||
"atlas_private_key": {
|
||||
"type": "string",
|
||||
"description": "MongoDB Atlas API private key.",
|
||||
},
|
||||
},
|
||||
"required": ["atlas_public_key", "atlas_private_key"],
|
||||
},
|
||||
]
|
||||
}
|
||||
)
|
||||
|
||||
@@ -1370,6 +1370,8 @@ class BaseWriteProviderSecretSerializer(BaseWriteSerializer):
|
||||
serializer = M365ProviderSecret(data=secret)
|
||||
elif provider_type == Provider.ProviderChoices.ORACLECLOUD.value:
|
||||
serializer = OracleCloudProviderSecret(data=secret)
|
||||
elif provider_type == Provider.ProviderChoices.MONGODBATLAS.value:
|
||||
serializer = MongoDBAtlasProviderSecret(data=secret)
|
||||
else:
|
||||
raise serializers.ValidationError(
|
||||
{"provider": f"Provider type not supported {provider_type}"}
|
||||
@@ -1466,6 +1468,14 @@ class GCPServiceAccountProviderSecret(serializers.Serializer):
|
||||
resource_name = "provider-secrets"
|
||||
|
||||
|
||||
class MongoDBAtlasProviderSecret(serializers.Serializer):
|
||||
atlas_public_key = serializers.CharField()
|
||||
atlas_private_key = serializers.CharField()
|
||||
|
||||
class Meta:
|
||||
resource_name = "provider-secrets"
|
||||
|
||||
|
||||
class KubernetesProviderSecret(serializers.Serializer):
|
||||
kubeconfig_content = serializers.CharField()
|
||||
|
||||
|
||||
@@ -506,8 +506,23 @@ def providers_fixture(tenants_fixture):
|
||||
alias="oci_testing",
|
||||
tenant_id=tenant.id,
|
||||
)
|
||||
provider8 = Provider.objects.create(
|
||||
provider="mongodbatlas",
|
||||
uid="64b1d3c0e4b03b1234567890",
|
||||
alias="mongodbatlas_testing",
|
||||
tenant_id=tenant.id,
|
||||
)
|
||||
|
||||
return provider1, provider2, provider3, provider4, provider5, provider6, provider7
|
||||
return (
|
||||
provider1,
|
||||
provider2,
|
||||
provider3,
|
||||
provider4,
|
||||
provider5,
|
||||
provider6,
|
||||
provider7,
|
||||
provider8,
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
|
||||
@@ -33,7 +33,7 @@ The supported providers right now are:
|
||||
| [Github](/user-guide/providers/github/getting-started-github) | Official | UI, API, CLI |
|
||||
| [Oracle Cloud](/user-guide/providers/oci/getting-started-oci) | Official | UI, API, CLI |
|
||||
| [Infra as Code](/user-guide/providers/iac/getting-started-iac) | Official | UI, API, CLI |
|
||||
| [MongoDB Atlas](/user-guide/providers/mongodbatlas/getting-started-mongodbatlas) | Official | CLI |
|
||||
| [MongoDB Atlas](/user-guide/providers/mongodbatlas/getting-started-mongodbatlas) | Official | CLI, API |
|
||||
| [LLM](/user-guide/providers/llm/getting-started-llm) | Official | CLI |
|
||||
| **NHN** | Unofficial | CLI |
|
||||
|
||||
@@ -48,4 +48,4 @@ For more information about the checks and compliance of each provider visit [Pro
|
||||
<Card title="Development Guide" icon="pen-to-square" href="/developer-guide/introduction">
|
||||
Interested in contributing to Prowler?
|
||||
</Card>
|
||||
</Columns>
|
||||
</Columns>
|
||||
|
||||
@@ -15,6 +15,7 @@ All notable changes to the **Prowler SDK** are documented in this file.
|
||||
- C5 compliance framework for the GCP provider [(#9097)](https://github.com/prowler-cloud/prowler/pull/9097)
|
||||
- `organization_repository_creation_limited` check for GitHub provider [(#8844)](https://github.com/prowler-cloud/prowler/pull/8844)
|
||||
- HIPAA compliance framework for the GCP provider [(#8955)](https://github.com/prowler-cloud/prowler/pull/8955)
|
||||
- Add organization ID parameter for MongoDB Atlas provider [(#9167)](https://github.com/prowler-cloud/prowler/pull/9167)
|
||||
- Add multiple compliance improvements [(#9145)](https://github.com/prowler-cloud/prowler/pull/9145)
|
||||
- Added validation for invalid checks, services, and categories in `load_checks_to_execute` function [(#8971)](https://github.com/prowler-cloud/prowler/pull/8971)
|
||||
|
||||
|
||||
@@ -54,6 +54,7 @@ class MongodbatlasProvider(Provider):
|
||||
mutelist_content: dict = None,
|
||||
# Optional filters
|
||||
atlas_project_id: str = None,
|
||||
atlas_organization_id: str = None,
|
||||
):
|
||||
"""
|
||||
MongoDB Atlas Provider constructor
|
||||
@@ -67,6 +68,7 @@ class MongodbatlasProvider(Provider):
|
||||
mutelist_path: Path to the mutelist file
|
||||
mutelist_content: Mutelist content
|
||||
atlas_project_id: Project ID to filter
|
||||
atlas_organization_id: Organization ID
|
||||
"""
|
||||
logger.info("Instantiating MongoDB Atlas Provider...")
|
||||
|
||||
@@ -79,6 +81,7 @@ class MongodbatlasProvider(Provider):
|
||||
|
||||
# Store filter options
|
||||
self._project_id = atlas_project_id
|
||||
self._organization_id = atlas_organization_id
|
||||
|
||||
# Audit Config
|
||||
if config_content:
|
||||
@@ -292,6 +295,7 @@ class MongodbatlasProvider(Provider):
|
||||
atlas_public_key: str = "",
|
||||
atlas_private_key: str = "",
|
||||
raise_on_exception: bool = True,
|
||||
provider_id: str = None,
|
||||
) -> Connection:
|
||||
"""
|
||||
Test connection to MongoDB Atlas
|
||||
@@ -300,7 +304,7 @@ class MongodbatlasProvider(Provider):
|
||||
atlas_public_key: MongoDB Atlas API public key
|
||||
atlas_private_key: MongoDB Atlas API private key
|
||||
raise_on_exception: Whether to raise exceptions
|
||||
|
||||
provider_id: MongoDB Atlas project ID to validate access (added for API compatibility)
|
||||
Returns:
|
||||
Connection: Connection status
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user