De zéro à un graphe d'accès en lecture/écriture
À la fin de ce tutoriel, vous aurez Olivares AI fonctionnant localement et aurez atteint son artefact central : un graphe d’accès en lecture/écriture avec un vrai résultat de dérive Permitted-vs-Observed. Vous allez apprendre le produit en le voyant fonctionner — c’est un parcours d’apprentissage, pas une installation de production (pour cela, voir self-hosting).
Nous utilisons l’estate de démonstration intégré (--seed-demo) : un petit ensemble synthétique d’agents,
d’identités et de ressources qui circule à travers le vrai bus d’événements exactement comme un
collecteur pgAudit ou OpenTelemetry en direct le ferait. Tout s’exécute sur localhost.
Prérequis
Section intitulée « Prérequis »- Go 1.26+ (pour compiler le binaire), ou Docker (voir le how-to self-hosting pour le chemin du conteneur).
curletpython3pour parler à l’API depuis le shell.- Un checkout du dépôt Olivares AI.
Compiler et démarrer
Section intitulée « Compiler et démarrer »-
Compilez le binaire unique. Depuis la racine du dépôt :
Fenêtre de terminal task setup # install git hooks, commit tooling and web depstask build # compile the static binary with the web embedded (go:embed)./bin/olivares versiontask buildcompile le bundle web, les plugins de connecteurs first-party et le binaire, produisant un artefact autonome unique à./bin/olivares. -
Démarrez-le avec l’estate de démonstration sur loopback. Choisissez un répertoire de données neuf afin de partir propre :
Fenêtre de terminal DATA="$(mktemp -d)"./bin/olivares serve --insecure --seed-demo \--listen 127.0.0.1:8901 --grpc-listen 127.0.0.1:8902 \--data-dir "$DATA"Le drapeau
--insecuresert du HTTP en clair sur loopback (acceptable pour un tutoriel local ; TLS est activé par défaut sinon). Au démarrage, vous verrez une bannière DEMO MODE avec les identifiants de démonstration :demo@olivares.local / olivares-demo-estate
Atteindre le graphe d’accès
Section intitulée « Atteindre le graphe d’accès »Laissez le serveur tourner et ouvrez un second terminal.
-
Connectez-vous avec les identifiants de démonstration pour obtenir un jeton bearer :
Fenêtre de terminal BASE=http://127.0.0.1:8901TOKEN="$(curl -sf -X POST "$BASE/v1/auth/login" \-H 'Content-Type: application/json' \-d '{"email":"demo@olivares.local","password":"olivares-demo-estate"}' \| python3 -c 'import sys,json;print(json.load(sys.stdin)["token"])')" -
Résolvez le tenant de démonstration (les endpoints de l’access-map sont à portée tenant) :
Fenêtre de terminal TENANT="$(curl -sf "$BASE/v1/system/orgs" -H "Authorization: Bearer $TOKEN" \| python3 -c 'import sys,json;[print(o["tenant_id"]) for o in json.load(sys.stdin)["items"] if o["slug"]=="demo"]')" -
Récupérez le graphe en lecture/écriture. C’est le module III — l’access map :
Fenêtre de terminal curl -sf "$BASE/v1/m/accessmap/graph?limit=200" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.toolL’estate de démonstration retourne environ 20 nœuds et 13 arêtes — agents, identités, serveurs MCP, modèles, fournisseurs et ressources, chaque arête classée en lecture ou lecture-écriture.
-
Récupérez la dérive Permitted-vs-Observed :
Fenêtre de terminal curl -sf "$BASE/v1/m/accessmap/drift" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.toolCela fait remonter les accès inattendus semés, par exemple :
- un agent lisant
appdb.public.secretsqui ne lui a jamais été accordé (attribué) ; et - une identité de pool partagé écrivant
appdb.public.logs(attribution approximative).
- un agent lisant
-
(Optionnel) Voyez tout l’inventaire semé :
Fenêtre de terminal curl -sf "$BASE/v1/m/inventory/summary" \-H "Authorization: Bearer $TOKEN" -H "X-Olivares-Tenant: $TENANT" | python3 -m json.tool
Le voir dans l’UI web
Section intitulée « Le voir dans l’UI web »L’UI web est embarquée dans le même binaire et servie depuis la même origine. Avec le serveur de démonstration encore en cours d’exécution, ouvrez :
http://127.0.0.1:8901Connectez-vous avec les identifiants de démonstration et ouvrez la vue access-map : le graphe rend les mêmes nœuds et arêtes, avec la superposition de dérive mettant en évidence les accès inattendus et les tableaux de bord résumant l’estate.
Ce qui ne se passe pas ici (et que faire ensuite)
Section intitulée « Ce qui ne se passe pas ici (et que faire ensuite) »- Les données de démonstration sont synthétiques et le mot de passe de démonstration est public — ce n’est pas un déploiement sécurisé. Pour un vrai, suivez self-hosting : il n’a aucun identifiant par défaut et utilise un jeton de configuration à usage unique.
- Les endpoints de module utilisés ci-dessus (
/v1/m/accessmap/*,/v1/m/inventory/*) sont joignables mais ne font pas partie du document OpenAPI servi, par conception ; la référence de l’API documente la surface REST core. - Pour comprendre pourquoi le graphe est construit de cette manière (télémétrie coopérative croisée avec l’audit du store natif, eBPF comme filet de sécurité, annotations MCP traitées comme non fiables), lisez l’aperçu de l’architecture.