
Plateforme de conformité de sécurité - SOC2, CMMC, ASVS, ISO27001, HIPAA, NIST CSF, NIST 800-53, CSC CIS 18, PCI DSS, suivi SSF
Gapps est une plateforme de conformité en sécurité qui permet de suivre facilement votre progression par rapport à divers cadres de sécurité.
❄️ Consultez le site Gapps
🏠 Intéressé à me contacter ? Rejoignez notre discord
| Tableau de bord des contrôles |
|---|
![]() |
| Aperçu du projet |
|---|
![]() |
| Suivi de la progression des contrôles |
|---|
![]() |
Suivez la documentation documentation
[INFO] Checking if we can connect to the database server: postgresql://db1:db1@localhost/db1
[ERROR] could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Cannot assign requested address
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
Cela peut généralement être résolu en désactivant deux variables si vous exécutez dans docker. Si vous souhaitez utiliser une base de données externe, consultez la FAQ suivante
unset SQLALCHEMY_DATABASE_URI
unset POSTGRES_HOST
La valeur db1 est la valeur par défaut pour le nom d'utilisateur, la base de données et le mot de passe. Si vous souhaitez la modifier, mettez à jour db1 avec les valeurs respectives et postgres pour l'hôte.
export POSTGRES_HOST=${POSTGRES_HOST:-postgres}
export POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-db1}
export POSTGRES_USER=${POSTGRES_USER:-db1}
export POSTGRES_DB=${POSTGRES_DB:-db1}
export SQLALCHEMY_DATABASE_URI="postgresql://db1:db1@postgres/db1"
Lors du premier démarrage de Gapps, il créera automatiquement les modèles de base de données. Si vous souhaitez réinitialiser les données (par exemple supprimer toutes les données), vous pouvez définir la variable d'environnement RESET_DB comme export RESET_DB=yes.
Parfois, vous pouvez souhaiter exécuter Gapps en dehors de Docker. Vous pouvez le faire en démarrant le conteneur Postgres puis en démarrant Gapps au premier plan.
docker-compose up -d postgresexport POSTGRES_HOST=${POSTGRES_HOST:-localhost}
export POSTGRES_PASSWORD=${POSTGRES_PASSWORD:-db1}
export POSTGRES_USER=${POSTGRES_USER:-db1}
export POSTGRES_DB=${POSTGRES_DB:-db1}
export SQLALCHEMY_DATABASE_URI="postgresql://db1:db1@localhost/db1"
export FLASK_CONFIG=development;bash run.shdocker compose updocker exec -e ONESHOT=yes gapps env
docker exec -e INIT_MIGRATE=yes -e MIGRATE=yes -e ONESHOT=yes gapps bash run.sh
OU
docker-compose up -d
docker exec -it gapps bash
python3 manage.py db migrate
python3 manage.py db stamp head
python3 manage.py db upgrade
exit
Avertissement - cela supprimera toutes les données de la base de données !
docker exec -it gapps bash
python3 tools/check_db_connection.py
python3 tools/check_db_models.py
python3 manage.py init_db
1.) Modifiez le fichier docker-compose.yml avec la version souhaitée depuis Docker Hub. Partout où vous voyez l'ancienne version dans le fichier compose (devrait être 4 instances), mettez-la à jour avec la version souhaitée. (par ex. bmarsh13/gapps:3.3.9 -> bmarsh13/gapps:3.4.0)
2.) docker-compose up -d
3.) Effectuez une migration de base de données si nécessaire
Vous pouvez toujours créer un nouveau Framework et des contrôles dans l'interface utilisateur - mais cela prendrait beaucoup de temps. Au lieu de cela, vous pouvez charger un fichier JSON dans Gapps.
Le format se compose de contrôles et de sous-contrôles. L'extrait ci-dessous montre un exemple d'un contrôle ayant un (1) sous-contrôle, mais vous pouvez en ajouter autant que vous le souhaitez. Il n'est pas obligatoire d'avoir des sous-contrôles pour un contrôle (vous pouvez en avoir zéro). Cependant, cela peut avoir du sens si vous souhaitez décomposer un contrôle en actions spécifiques qui sont traçables. Prenons l'exemple du framework CIS 18. Vous pourriez placer les 18 "domaines" comme contrôles et les contrôles au sein de chaque domaine seraient un sous-contrôle dans Gapps.
[
{
"name": "Limit information system access to authorized users, processes acting on behalf of authorized users or",
"description": "Maintain list of authorized users defining their identity and associated role and sync with sys",
"guidance": "List approved users, services, and devices, and have logical controls in place to prevent unauthor",
"ref_code": "AC.L1-3.1.1",
"system_level": false,
"subcategory": "Identity & Access Management (IAM)",
"category": "Access Control",
"dti": "easy",
"dtc": "easy",
"meta": {},
"subcontrols": [
{
"ref_code": "3.1.1.a",
"name": "Authorized users are identified.",
"description": "Authorized users are identified.",
"meta": {},
"tasks": [
{
"title": "title of the task",
"description": "description of the task"
}
]
}
]
}
]
Ensuite, enregistrez le format JSON ci-dessus dans un fichier (par exemple my_framework.json mais il doit se terminer par .json). Le nom de votre framework sera pris à partir du nom du fichier lorsque Gapps le chargera (my_framework dans ce cas). Enregistrez le fichier dans le répertoire app/files/base_controls/. Vous pouvez également modifier le répertoire de chargement en définissant la variable d'environnement FRAMEWORK_FOLDER. Une fois que votre nouveau framework est enregistré dans un fichier et se trouve dans le répertoire des frameworks, vous pouvez créer un nouveau Tenant dans l'interface utilisateur. Gapps chargera automatiquement votre framework. Si vous souhaitez ajouter un framework à un Tenant existant, allez dans la page "Tenants", modifiez le Tenant et cliquez sur le bouton "Reload Frameworks".
docker build -t gapps:3.4.3 .
docker tag gapps:3.4.3 bmarsh13/gapps:3.4.3
docker push bmarsh13/gapps:3.4.3
Vous pouvez générer un jeton API en consultant la route suivante dans votre navigateur
# Create token that expires in 15 minutes
<gapps-host>/api/v1/token
# Create token that expires in 30 seconds
<gapps-host>/api/v1/token?expiration=30
# Create token that never expires
<gapps-host>/api/v1/token?expiration=0
Et voici comment utiliser le jeton pour s'authentifier (curl en exemple)
TOKEN="TOKEN HERE"
curl <gapps-host>/api/v1/tenants -H "token: $TOKEN"