194 lines
6.3 KiB
Markdown
194 lines
6.3 KiB
Markdown
# 4NK Vault API - Système Sécurisé
|
|
|
|
API HTTPS sécurisée avec authentification par clés utilisateur et chiffrement quantique résistant.
|
|
|
|
## 🔐 Sécurité Avancée
|
|
|
|
- **HTTPS obligatoire** sur le port 6666
|
|
- **Authentification par ID utilisateur** (header `X-User-ID`)
|
|
- **Clés individuelles par utilisateur ET par environnement**
|
|
- **Rotation automatique des clés** (toutes les heures)
|
|
- **Chiffrement quantique résistant** (ChaCha20-Poly1305)
|
|
- **Stockage sécurisé** dans `storage/<env>/_keys/`
|
|
- **Traitement des variables d'environnement** en mémoire
|
|
- **Protection contre les attaques de traversée de chemins**
|
|
|
|
## 🚀 Fonctionnalités
|
|
|
|
### Authentification
|
|
- **ID utilisateur requis** pour tous les accès
|
|
- **Validation stricte** : 3-128 caractères alphanumériques + `_` et `-`
|
|
- **Clés uniques** par combinaison utilisateur/environnement
|
|
- **Support des clés longues** (hash SHA256 des IDs utilisateur)
|
|
|
|
### Gestion des clés
|
|
- **Génération automatique** de clés de 32 bytes
|
|
- **Rotation automatique** toutes les heures
|
|
- **Sauvegarde de l'ancienne clé** pour compatibilité
|
|
- **Isolation par environnement** (dev, prod, etc.)
|
|
|
|
### Variables d'environnement
|
|
- **Résolution automatique** des variables `$VAR` et `${VAR}`
|
|
- **Résolution récursive** des dépendances entre variables
|
|
- **Chargement du fichier `.env` principal** uniquement
|
|
- **Traitement en mémoire** (fichiers originaux non modifiés)
|
|
- **Protection contre les dépendances circulaires**
|
|
|
|
## 📋 Endpoints
|
|
|
|
### `GET /health`
|
|
Contrôle de santé avec authentification.
|
|
|
|
**Headers requis :**
|
|
```
|
|
X-User-ID: your_user_id
|
|
```
|
|
|
|
**Réponse :**
|
|
```json
|
|
{
|
|
"status": "healthy",
|
|
"service": "vault-api-secure",
|
|
"encryption": "quantum-resistant",
|
|
"algorithm": "X25519-ChaCha20-Poly1305",
|
|
"authentication": "user-key-based",
|
|
"key_rotation": "automatic",
|
|
"user_id": "your_user_id",
|
|
"timestamp": "2024-01-01T00:00:00"
|
|
}
|
|
```
|
|
|
|
### `GET /info`
|
|
Informations sur l'API avec authentification.
|
|
|
|
### `GET /routes`
|
|
Liste toutes les routes disponibles avec exemples de fichiers.
|
|
|
|
### `GET /<env>/<file>`
|
|
Sert un fichier chiffré avec authentification utilisateur et variables d'environnement résolues.
|
|
|
|
**Headers requis :**
|
|
```
|
|
X-User-ID: your_user_id
|
|
```
|
|
|
|
**Exemple :**
|
|
```bash
|
|
curl -k -H "X-User-ID: <VAULT_USER_ID>" "$VAULT_URL"/dev/bitcoin/bitcoin.conf
|
|
```
|
|
|
|
## 🔧 Installation et utilisation
|
|
|
|
### Prérequis
|
|
- Python 3.8+
|
|
- pip
|
|
|
|
### Installation
|
|
```bash
|
|
# Cloner le repository
|
|
git clone https://git.4nkweb.com:4nk/4NK_vault.git
|
|
cd 4NK_vault
|
|
|
|
# Créer l'environnement virtuel
|
|
python3 -m venv venv_api
|
|
source venv_api/bin/activate
|
|
|
|
# Installer les dépendances
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Démarrage
|
|
```bash
|
|
# Démarrer l'API sécurisée
|
|
./start_api.sh
|
|
|
|
# Ou manuellement
|
|
source venv_api/bin/activate
|
|
python3 api_server.py
|
|
```
|
|
|
|
### Test
|
|
```bash
|
|
# Tester l'API sécurisée
|
|
python3 test_api.py
|
|
```
|
|
|
|
## 🔐 Sécurité
|
|
|
|
### Authentification
|
|
- **ID utilisateur obligatoire** pour tous les accès
|
|
- **Validation stricte** des caractères autorisés
|
|
- **Rejet automatique** des requêtes non authentifiées
|
|
|
|
### Chiffrement
|
|
- **Clés individuelles** par utilisateur et environnement
|
|
- **ChaCha20-Poly1305** (quantum-résistant)
|
|
- **Rotation automatique** des clés
|
|
- **Métadonnées sécurisées** dans le payload
|
|
- **Compatibilité API/SDK** avec `@noble/ciphers`
|
|
|
|
### Variables d'environnement
|
|
- **Résolution automatique** avant chiffrement
|
|
- **Support des syntaxes** `$VAR` et `${VAR}`
|
|
- **Dépendances récursives** résolues automatiquement
|
|
- **Protection contre les boucles** infinies
|
|
|
|
### Stockage
|
|
- **Isolation par environnement** : `storage/<env>/_keys/`
|
|
- **Fichiers protégés** dans `.gitignore`
|
|
- **Aucune clé côté client**
|
|
|
|
## 📁 Structure
|
|
|
|
```
|
|
4NK_vault/
|
|
├── api_server.py # Serveur sécurisé principal avec EnvProcessor
|
|
├── start_api.sh # Script de démarrage sécurisé
|
|
├── test_api.py # Tests de l'API sécurisée
|
|
├── requirements.txt # Dépendances Python
|
|
├── SECURITY_NOTICE.md # Avertissements de sécurité
|
|
├── storage/ # Fichiers de configuration (lecture seule)
|
|
│ ├── dev/
|
|
│ │ ├── .env # Variables d'environnement principales
|
|
│ │ ├── _keys/ # Clés utilisateur (auto-créé)
|
|
│ │ ├── bitcoin/ # Configurations avec variables résolues
|
|
│ │ ├── tor/ # Configurations avec variables résolues
|
|
│ │ └── [autres services]/
|
|
│ └── prod/
|
|
│ ├── _keys/ # Clés utilisateur (auto-créé)
|
|
│ └── [configurations]/
|
|
├── confs/ # Fichiers déchiffrés synchronisés (auto-créé)
|
|
│ ├── bitcoin/ # Configurations avec variables résolues
|
|
│ ├── tor/ # Configurations avec variables résolues
|
|
│ └── [autres services]/
|
|
├── sdk-client/ # Client TypeScript avec chiffrement
|
|
│ ├── src/
|
|
│ │ └── index.ts # Client sécurisé avec @noble/ciphers
|
|
│ ├── examples/
|
|
│ │ └── usage.ts # Scénario complet 5 étapes
|
|
│ ├── .env # Configuration SDK (VAULT_USER, VAULT_KEY, VAULT_ENV)
|
|
│ └── dist/ # Code compilé TypeScript
|
|
└── docs/ # Documentation complète
|
|
```
|
|
|
|
## 🌐 Intégration dans l'environnement 4NK
|
|
|
|
Ce module s'intègre au déploiement global 4NK via une URL de base configurable (variable `VAULT_URL`).
|
|
Consultez les documents centraux pour le contexte et l'orchestration:
|
|
- `docs/DEEP_ARCHITECTURE_ANALYSIS.md`
|
|
- `docs/TECHNICAL_REFERENCE.md`
|
|
- `docs/DEPLOYMENT_GUIDE.md`
|
|
|
|
## ⚠️ Avertissements
|
|
|
|
Voir `SECURITY_NOTICE.md` pour les détails sur les limitations de sécurité en mode démonstration.
|
|
## 📋 Fichiers centralisés
|
|
|
|
Les fichiers suivants sont centralisés dans le dépôt principal `4NK_env` :
|
|
- `CODE_OF_CONDUCT.md` - Code de conduite
|
|
- `CODEOWNERS` - Propriétaires du code
|
|
- `CONTRIBUTING.md` - Guide de contribution
|
|
- `LICENSE` - Licence du projet
|
|
|
|
Voir : [`4NK_env/CODE_OF_CONDUCT.md`](../../CODE_OF_CONDUCT.md), [`4NK_env/CODEOWNERS`](../../CODEOWNERS), [`4NK_env/CONTRIBUTING.md`](../../CONTRIBUTING.md), [`4NK_env/LICENSE`](../../LICENSE)
|