{"id":21461135,"url":"https://github.com/cinodon/outlier-detection-saas-tfg","last_synced_at":"2026-02-13T03:01:59.978Z","repository":{"id":261100002,"uuid":"883264147","full_name":"cinodon/outlier-detection-saas-tfg","owner":"cinodon","description":"Outlier Detection System in SaaS Access Data","archived":false,"fork":false,"pushed_at":"2025-02-25T13:25:11.000Z","size":11691,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-17T04:48:16.401Z","etag":null,"topics":["anomaly-detection","clustering","outlier-detection","saas","scikit-learn","unsupervised-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cinodon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-11-04T16:55:12.000Z","updated_at":"2025-02-25T13:25:14.000Z","dependencies_parsed_at":"2025-01-15T12:02:28.277Z","dependency_job_id":"dbbe0d59-d6ec-481c-a58e-fb27c8b959c7","html_url":"https://github.com/cinodon/outlier-detection-saas-tfg","commit_stats":null,"previous_names":["cinodon/outlier-detection-saas-tfg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cinodon/outlier-detection-saas-tfg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinodon%2Foutlier-detection-saas-tfg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinodon%2Foutlier-detection-saas-tfg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinodon%2Foutlier-detection-saas-tfg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinodon%2Foutlier-detection-saas-tfg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cinodon","download_url":"https://codeload.github.com/cinodon/outlier-detection-saas-tfg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cinodon%2Foutlier-detection-saas-tfg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265009216,"owners_count":23697155,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anomaly-detection","clustering","outlier-detection","saas","scikit-learn","unsupervised-learning"],"created_at":"2024-11-23T07:07:35.605Z","updated_at":"2026-02-13T03:01:59.917Z","avatar_url":"https://github.com/cinodon.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Anomaly Detection in SaaS Access Data\n\nThis repository contains the code and resources for my Bachelor's Thesis project on anomaly detection in access data for SaaS (Software as a Service) applications. The goal of the project is to detect unusual patterns in user access logs, which may indicate security issues or abnormal behaviors, by using unsupervised machine learning techniques.\n\n## Project Overview\nThe system is built around an ETL (Extract, Transform, Load) pipeline in **Python** that processes anonymized access data stored in a **PostgreSQL** database. This data is analyzed through machine learning models to identify potential anomalies. The project utilizes **Docker** for containerization, ensuring consistency across environments, and a **React** front-end interface for visualizing results.\n\n## Features\n- **Configurable ETL Pipeline**: The pipeline is managed through a YAML configuration file, allowing customization of database settings, data transformations, and model parameters.\n- **Unsupervised Anomaly Detection**: Uses **Isolation Forest**, **DBSCAN**, and **Local Outlier Factor (LOF)** to detect unusual access patterns.\n- **Data Visualization**: Generates visual representations of detected anomalies for easier interpretation.\n- **Dockerized Deployment**: Encapsulates the application in Docker containers for improved portability and scalability.\n\n## Technologies\n- **Python**: Data processing and ETL pipeline development.\n- **scikit-learn**: Clustering and outlier detection models.\n- **PostgreSQL**: Database management for storing access data.\n- **Docker**: Containerizes the application for consistent deployment.\n- **React**: Front-end framework for visualizing results.\n- **Flask**: Back-end API for data processing and integration with the front-end.\n\n## Installation\n1. Clone this repository:\n   ```bash\n   git clone https://github.com/cinodon/outlier-detection-saas-tfg.git\n   cd tfg-iam-risk-pusture-poc\n2. Set up and run Docker containers\n   ```bash\n   docker compose up\n3. Access the app\n   : http://localhost:4000\n\n## Screenshots\n![TFG_screenshot](https://github.com/user-attachments/assets/ca88a06a-bcae-4e94-8721-aa7f2d86ccf4)\n\n## Demo\nWatch in [Youtube](https://www.youtube.com/watch?v=S-yN3DxaOyw)\n\n### Handling Secrets and Network Configuration\n\nThis project includes secret files (such as database passwords) for full transparency, as it is a university project. Normally, these should be kept private, but in this case, they are accessible to everyone in the repository for evaluation purposes. Please handle them responsibly.\n\nAdditionally, the Flask backend communicates using a Docker socket. While this approach simplifies container networking and avoids additional service configuration, it is not recommended for production environments due to potential security risks. Exposing the Docker socket can lead to privilege escalation or unauthorized access to the host system. However, for this academic project, the risks have been evaluated, and the setup has been kept simple for demonstration purposes.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcinodon%2Foutlier-detection-saas-tfg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcinodon%2Foutlier-detection-saas-tfg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcinodon%2Foutlier-detection-saas-tfg/lists"}