Project

General

Profile

Wiki » discussion_si.txt

Une copie du pad au cas où on le perd. - Rémi Bouhl, 09/25/2013 12:16 AM

 
1
    Spécifications du Système d'Information d'Illyse
2

    
3
Références
4
TODO : s'inspirer de http://www.ffdn.org/wiki/doku.php?id=travaux:specifications_si        
5
SI NDN (django): http://git.ndn.cx/gitweb/?p=si_ndn.git;a=summary (basé sur https://gitorious.org/si-fai ) 
6
SI Rhizome (module dolibarr): http://doc.rhizome-fai.net/doku.php?id=howto:outils_asso:dolibarr
7
http://xkcd.com/844/
8
http://xkcd.com/353/
9
Que veut-on gérer dans le S.I. ?
10
Informations personnelles :
11

    
12
    adhésion + validation d'adhésion
13

    
14
    page d'accès à ses infos personnelles (état civil, etc) [LDAP]
15

    
16
    génération factures et accès à ses factures
17

    
18
    vérification dans Dolibarr que l'adhérent est bien a jour de ses cotisations (base mysql) + envoi d'alertes
19

    
20
    changement de mdp [LDAP]
21

    
22
    upload de clés RSA (pour l'accès aux serveurs) [LDAP]
23

    
24
    upload de clé publique GPG pour chiffrer les mails envoyés par le SI  [LDAP ?] (déjà implémenté dans le SI de NDN, en django (j'ai codé cette fonctionnalité et prévois de faire un module Python indépendant de Django, donc si vous avez un SI en Python, vous pourrez l'utiliser) \o/)
25

    
26
Services :
27

    
28
    ADSL
29

    
30
    tests d'éligibilité (interface avec les API des opérateurs de collecte) (FDN fournit une API pour ça, mais on peut utiliser ça + API d'autres opérateurs)
31

    
32
    demande d'ouverture d'accès ADSL par l'adhérent
33

    
34
    ouverture d'accès ADSL (dont allocation d'IPs v4&v6)
35

    
36
    suivi des commandes de lignes aux opérateurs de collecte
37

    
38
    avoir les infos techniques de sa ligne (débits montant, descendant, distance au NRA, bruit) : Se renseigner si l'API Lasotel renvoie ces informations
39

    
40
    envoi des informations de connexion
41

    
42
    VPN
43

    
44
    demande d'ouverture d'accès VPN par l'adhérent
45

    
46
    ouverture d'accès VPN (dont allocation d'IPs v4&v6)
47

    
48
    envoi des informations de connexion dont certificats pour le VPN
49

    
50
    historique des abonnements (quels services, de quand à quand, quelles IP) [BDD]
51

    
52
    consultation de la bande passante consommée par chaque abonné et BP moyenne, histoire de filer un point de comparaison
53

    
54
Basse priorité :
55

    
56
    mail (boîtes, alias) (basse priorité) → que pour les admins, membres du ca  [LDAP]
57

    
58
    contrôle d'accès aux serveurs (login, sudo) (basse priorité) → que pour les admins  [LDAP]
59

    
60
    délégation DNS / reverse  (basse priorité) → que pour les admins  [LDAP]
61

    
62
    ajout aux ML (utiliser l'intégration sympa/ldap ?) (basse priorité)
63

    
64
On fait pas :
65

    
66
    gestion de tickets de hotline NON, dans Redmine
67

    
68
Comment communiquer les données sensibles ?
69

    
70
    Mots de passe
71

    
72
    - main propre
73

    
74
    - mails chiffrés
75

    
76
    - pas de communication de mdp : l'adhérent le saisit lors de l'adhésion en ligne. Pas valable pour les adhésions offline.
77

    
78
    - lien zerobin en burn after reading
79

    
80
    - méthode Grenode : l'adhérent fournit une clé RSA, puis se connecte en ssh sur une machine pour initialiser son mdp)
81

    
82
    Certificats
83

    
84
    - main propre
85

    
86
    - mails chiffrés GPG (mais pas automatiqument)
87

    
88
    - « vraie » procédure asymétrique style PKI (demande de signature, etc => c'est l'adhérent qui crée lui même les clés privées, aucun fichier sensible ne circule) -> lourd à mettre en œuvre (exemple : EJBCA)
89

    
90
    - publier et maintenir la CRL
91

    
92
    - SSH (grenode style)
93

    
94
Niveaux d'accès
95
anonyme          
96

    
97
    demande d'adhésion, éligibilité
98

    
99
adhérent          
100

    
101
    correction des données personnelles
102

    
103
    changement / réinitialisation mdp
104

    
105
    demande d'ouverture accès ADSL/VPN
106

    
107
abonné          
108

    
109
    délégation [reverse] DNS
110

    
111
admin          
112

    
113
    validation des adhésions
114

    
115
    gestion des ouvertures d'accès ADSL/VPN (radius)
116

    
117
sysadmin         
118

    
119
    gestion de tous les groupes (dont admin, sysadmin)
120

    
121
    contrôle d'accès aux machines
122

    
123
    gestion du mail
124

    
125
    gestion du dns
126

    
127
Nécessité d'une base de données ?
128
Si oui, postgresql ?
129
ODJ 3/5/13
130
 - Clarifier et valider l'organisation des données à travers tous nos systèmes :
131
    * Où seront les données ?
132
    * À quel système servent-elles ?
133
    * Comment sont-elles synchronisées entre elles ?
134
 - En déduire le modèle de données de la base interne du SI
135
 - En déduire les interactions avec les systèmes tiers (LDAP, sympa,dolibar,
136
etc...)
137
 - Valider le choix d'un framework
138
 - Définir les modules de travail : (ex : gestion des membres, test
139
éligibilité, abonnements aux services, etc...)
140
 - Définir grossièrement l'aspect graphique du SI
141
 - Définir les tâches de travail et se les répartir
142
*==> mettre le CR de ce soir dans https://www.illyse.org/issues/140
143
Il a été décidé de faire gérer la facturation dans le SI. Mais pour le début on reste sur dolibarr, cependant, il n'y aura pas de transfert de données de SI vers Dolibarr.
144
*
145
Choix technique
146
Dév standalone en python
147
Base postgresql
148
Passerelle vers Dolibarr (tréso et facturation)
149
TODO :
150
    - trouver un nom, COIN : Outil pour un Internet Neutre
151
    - monter un depôt git : quelle machine ? => golgoth vm (une VM juste pour ça ?)
152
Modèles :
153
    
154
members :
155
    - id
156
    - ldap_cn
157
    - firstname
158
    - lastname
159
    - address
160
    - postal_code
161
    - city
162
    - statut (Demande d'adhésion, Adhérent, non adhérent)
163
    - entry_date
164
    - resign_date
165
membership_fees :
166
    - id
167
    - member_id
168
    - amount
169
    - date
170
crypto_keys :
171
    - id
172
    - key
173
    - type (GPG / RSA)
174
    - member_id
175
services : (VPN, ADSL, Marque blanche FDN)
176
    - id
177
    - name
178
offers : (VPN, ADSL Lasotel tarif X, ADSL Lasotel tarif Y, ADSL Nerim, FDN tarif X, etc...)
179
    - id
180
    - name
181
    - service_id
182
    - fees
183
    - initial_fees
184
    - billing_period (month, year,...)
185
adsl_subscriptions :
186
    - id
187
    - offer_subscription_id
188
    - phone_number
189
    - address
190
    - postal_code
191
    - city
192
vpn_subscribtions :
193
    - id
194
    - offer_subscription_id
195
ip_addresses :
196
    - ip
197
    - type (v4, v6)
198
    - service_id
199
offer_subscription_ip
200
    - offer_subscription_id
201
    - ip
202
offer_subscription :
203
    - id
204
    - member_id
205
    - offer_id
206
    - subscription_date
207
    - resign_date
208
    - commitment
209
invoices :
210
    - id
211
    - status (draft, validated/due, paid)
212
    - date           // date d'émission
213
    - date_due // date d'échéance
214
payments :
215
    - id
216
    - invoice_id
217
    - payment_means (Chéque, Virement, Liquide, Prélèvement etc...)
218
    - amount
219
    - date
220
    - reference_number (Numéro chèque, ou virement)
221
invoices_details :
222
    - id
223
    - label
224
    - price
225
    - quantity
226
    - tax
227
    - invoice_id
228
    - offer_id
229
Structure du ldap
230
Note: pour voir correctement l'ascii-art à la con, passer en police monospace (-> boutons en haut à droite)
231
Racine
232
LDAP
233
234
 ├── dns ──┬── illyse.org ──┬── allow─transfer a.b.c.d
235
 │         │                ├── allow─transfer e.f.g.H
236
 │         │                │
237
 │         │                ├── host @
238
 │         │                │        ├── SOA
239
 │         │                │        ├── NS
240
 │         │                │        └── MX
241
 │         │                │
242
 │         │                ├── host rigel
243
 │         │                │          ├── A 78.193.86.178
244
 │         │               ...         └── AAAA 2a01:e34:ec15:6b20::1:11
245
 │         │
246
 │         ├── illyse.net
247
 │         │
248
 │         └── illyse.fr
249
250
 ├── mail ──┬── users ──┬── alias1@illyse.fr -> alias2@illyse.org
251
 │          │           ├── alias2@illyse.org -> adresse@illyse.org
252
 │          │           ├── adresse@illyse.org -> illyse.org/adresse/
253
 │          │           ├── ...
254
 │          │           ├── fabien@illyse.org -> fmichel@illyse.org
255
 │          │           └── fmichel@illyse.org -> illyse.org/fmichel/
256
 │          │
257
 │          └── admin ──┬── abuse@illyse.net -> ca@illyse.org
258
 │                      ├── postmaster@illyse.fr -> ca@illyse.org
259
 │                      ├── ...
260
 │                      └── ca@illyse.org -> jfmourgues@illyse.org
261
 │                                        -> papoudret@illyse.org
262
 │                                        -> fmichel@illyse.org
263
 │                                        -> ...
264
265
 ├── unix ──┬── users ──┬── fmichel
266
 │          │           │   - nom: Michel
267
 │          │           │   - prenom: Fabien
268
 │          │           │   - mail: fmichel@illyse.org
269
 │          │           │   - uid: 2004
270
 │          │           │   - gid: 2000
271
 │          │           │   - home: /home/fmichel
272
 │          │           │   - shell: /bin/bash
273
 │          │           │   - mot de passe hashe: {SSHA}LASAGNESLASAGNESLASAGNES
274
 │          │           │   - cle publique: YYYYYYYYYYYYYYYYYYYYYYYYYYY
275
 │          │           │   - cle publique: ZZZZZZZZZZZZZZZZZZZZZZZZZZZ
276
 │          │           │   - ...
277
 │          │           │
278
 │          │           ├── jfmourgues
279
 │          │           ├── papoudret
280
 │          │          ...
281
 │          │
282
 │          └─ groups ──┬── users
283
 │                      │   - gid: 2000
284
 │                      │
285
 │                      ├── adherents
286
 │                      │   - gid: 2001
287
 │                      │   - membre: jfmourgues
288
 │                      │   - membre: bjonglez
289
 │                      │   - membre: gdesliens
290
 │                      │   - membre: ...
291
 │                      │
292
 │                      ├── sysadmin
293
 │                      │   - gid: 2010
294
 │                      │   - membre: jfmourgues
295
 │                      │   - membre: papoudret
296
 │                      │   - membre: ...
297
 │                      │
298
 │                      ├── loginrigel
299
 │                      ├── loginkim
300
 │                      ├── logingozer
301
 │                      ├── loginall
302
 │                      │
303
 │                      ├── sudorigel
304
 │                      ├── sudokim
305
 │                      ├── sudogozer
306
 │                      ├── sudoall
307
 │                     ...
308
309
 ├── radius ──┬── compte radius aaaaaaa
310
 │            │   - rattache a jfmourgues
311
 │            │   - mdp en clair pour CHAP: grandpaSquirrel42
312
 │            │   - mdp hashe pour PAP: {SSHA}CHWALCHWALCHWALCHWALCHWALCHWAL
313
 │            │   - IP: 42.42.42.42
314
 │            │   - ...
315
 │            │
316
 │            ├── compte radius bbbbbbb
317
 │            │   - rattache a bjonglez
318
 │            │   - ...
319
 │           ...
320
321
 ├── services ──┬── ldaprep1
322
                ├── ldaprep2
323
                ├── ldaprep3
324
                ├── redmine
325
                │   - mot de passe hashe: {SSHA}XXXXXXXXXXXXXX
326
                ├── apache
327
                │   - mot de passe hashe: {SSHA}YYYYYYYYYYYYYY
328
               ...
329

    
    (1-1/1)