Skip to content

kbugra/mock-bank-tprm-dora-platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NovaBank TPRM Platform

DORA uyumlu, ICT üçüncü taraf risk yönetimi platformu. Hayali bir banka (NovaBank) için tasarlanmış, vendor envanteri, kritik servis haritalama, risk skorlama, sözleşme inceleme, kanıt takibi, düzeltici eylem yönetimi ve yönetim kurulu raporlamasını tek bir üründe birleştiren kapsamlı bir Cyber GRC / TPRM çözümüdür.


Proje Genel Bakış

Bu proje, finansal hizmetler sektöründe bir portföy projeleri olarak tasarlanmıştır. Politikaları izole olarak sunmak yerine, bir bankanın kritik ICT üçüncü taraflarını denetlemek ve yönetim kuruluna raporlama yapmak için kullanacağı operasyonel yüzeyi modellemektedir.

Temel Yetenekler

  • Vendor kaydı: sahiplik, kategori, servis eşleme ve güncel denetim durumu
  • İş fonksiyonu ve servis bağımlılık haritalama
  • Sorgu tabanlı mantıkla residual risk skorlama
  • Kritik vendor'lar için sözleşme madde kontrol listesi
  • Kanıt inceleme ve güncellik takibi
  • Düzeltici eylem ve sorun iş akışı desteği
  • Yönetim kurulu özeti ve register formatında dışa aktarma

Mevcut Durum Notu

  • Backend ve frontend aktif olarak gerçek veritabanı / API ile çalışır.
  • Frontend tarafında frontend/lib/api.ts içinde halen fallback mock veri desteği bulunur. API erişilemezse veya boş dönerse bazı ekranlar demo veriyle render olabilir.
  • Kimlik doğrulama sistemi vardır; ancak mevcut sürümde veri endpoint'lerinin büyük bölümü zorunlu auth ile korunmamaktadır. Login daha çok oturum deneyimi ve kullanıcı bağlamı sağlar.
  • Alembic altyapısı mevcuttur; ancak mevcut veritabanı şeması ile ilk migration geçmişi birebir aynı değildir. Güncel gerçek şema ORM modelleri ve seed script ile doğrulanmalıdır.

Teknik Mimari

┌──────────────────────────────────────────────────────────────┐
│                      Frontend (Next.js 14)                    │
│  App Router · Server Components · Client Components           │
│  Glassmorphism UI · CSS Variables · Google Fonts              │
│  Auth Context · Toast / Modal / Confirm Dialog                │
├──────────────────────────────────────────────────────────────┤
│                        REST API (HTTP)                        │
├──────────────────────────────────────────────────────────────┤
│                     Backend (FastAPI)                          │
│  JWT Auth · CORS · Request Logging Middleware                 │
│  Global Exception Handler · Pagination                        │
│  Risk Scoring Engine · Governance Services                    │
├──────────────────────────────────────────────────────────────┤
│                   Database (SQLite / PostgreSQL)               │
│  SQLAlchemy ORM · Alembic Migrations                          │
│  14 tablo: users, vendors, services, mappings, assessments... │
└──────────────────────────────────────────────────────────────┘

Teknoloji Yığını

Katman Teknoloji
Backend Python 3.13, FastAPI 0.116, SQLAlchemy 2.0, Pydantic v2
Auth python-jose (JWT HS256), passlib + bcrypt
Database SQLite (development), PostgreSQL (production)
Frontend Next.js 14 (App Router), TypeScript, React 18
Stil Vanilla CSS (glassmorphism, CSS variables, dark theme)
Font Manrope (sans), Fraunces (display), IBM Plex Mono

Geliştirme Süreci — 5 Faz

Proje, mock-data prototipinden production-ready bir uygulamaya dönüştürülmek üzere 5 faz halinde geliştirilmiştir.


Faz 1: Backend Güçlendirme

Amaç: Mock veri yerine gerçek veritabanı sorgularına geçmek ve API katmanını güçlendirmek.

Yapılanlar

1.1 — CORS ve Middleware

  • app/main.py dosyasına CORSMiddleware eklendi. Frontend'in localhost:3000 adresinden API'ye erişmesi sağlandı.
  • app/middleware/logging.py ile custom RequestLoggingMiddleware oluşturuldu. Her istek method, path, status code ve süre bilgisiyle loglanıyor.

1.2 — Global Hata Yönetimi

  • app/core/exceptions.py dosyasında standart JSON hata formatı tanımlandı.
  • Beklenmeyen hatalar {"error": "INTERNAL_ERROR", "detail": "..."} formatında döndürülüyor.
  • RequestValidationError için özel handler ve genel Exception catch-all handler eklendi.

1.3 — Veritabanı Entegrasyonu

  • Tüm Inventory API'leri (GET /api/inventory/vendors, /services, /mappings, /business-functions) mock-data'dan SQLAlchemy sorguları kullanılarak gerçek veritabanına geçirildi.
  • Governance API'leri (/governance/overview, /governance/contract-reviews, /governance/evidence, /governance/issues) veritabanından veri çekecek şekilde güncellendi.
  • User ORM modeli oluşturuldu.
  • JSONB sütunları SQLite uyumluluğu için JSON tipine çevrildi.

1.4 — Seed Script

  • scripts/seed_database.py güncellenerek --reset flag'i ile tablolar temizlenip yeniden yükleniyor.
  • sample_data/ klasöründeki CSV dosyalarından (vendors, services, users, assessments, vb.) otomatik veri yükleme gerçekleştiriliyor.

1.5 — Pagination ve Filtreleme

  • Tüm list endpoint'lerine skip ve limit query parametreleri eklendi.
  • Vendor listesinde vendor_category, lifecycle_status gibi dinamik filtreler etkinleştirildi.

Oluşturulan / Değiştirilen Dosyalar

backend/app/main.py                    — CORS + middleware entegrasyonu
backend/app/core/exceptions.py         — Global hata yönetimi (yeni)
backend/app/middleware/__init__.py      — Middleware package
backend/app/middleware/logging.py       — Request logging middleware (yeni)
backend/app/api/inventory.py           — DB sorguları + pagination
backend/app/api/governance.py          — DB sorguları + pagination
backend/app/services/inventory_service.py — Service layer güncelleme
backend/app/services/governance.py     — Governance service layer (yeni)
backend/app/models/user.py             — User ORM modeli (yeni)
backend/scripts/seed_database.py       — Reset + seed otomasyonu

Faz 2: Frontend Etkileşim ve API Entegrasyonu

Amaç: Statik frontend'i interaktif hale getirmek, CRUD işlemleri eklemek ve sayfaları öncelikli olarak gerçek backend verisiyle beslemek.

Yapılanlar

2.1 — Yeniden Kullanılabilir UI Bileşenleri

  • Toast Notification System: ToastContext ve ToastProvider oluşturuldu. İşlem sonrasında success/error/info mesajları gösteren animated bildirimler.
  • Modal/Dialog: Glassmorphism paneller ile açılıp kapanan, Escape tuşu ve dış tıklama desteğile reusable modal bileşeni.
  • ConfirmDialog: Vendor silme gibi tehlikeli işlemler için "Emin misiniz?" onay dialogu.

2.2 — Vendor CRUD Operasyonları

  • VendorTable bileşeni oluşturuldu: arama fonksiyonu, edit/delete inline butonları.
  • VendorForm bileşeni oluşturuldu: vendor adı, kategori, ülke gibi alanlarla Create ve Edit modları. İstemci tarafı validasyon.
  • Create (POST /api/inventory/vendors), Edit (PATCH), Delete (DELETE) endpoint'leri frontend'den çağrılıyor.
  • İşlem sonrası router.refresh() ile sayfa verisiz yenileniyor.

2.3 — Vendor Detay Sayfası

  • /vendors/[id]/page.tsx dinamik rotası oluşturuldu.
  • Vendor temel bilgileri, açık sorunları, sözleşme incelemeleri (clause check tablosu dahil) ve kanıt dosyaları bir arada gösteriliyor.
  • Issue'lar severity badge'leri ve overdue uyarılarıyla renklendirildi.
  • Her issue altında remediation action'lar listeleniyor.

2.4 — Governance Sayfalarının API'ye Bağlanması

  • lib/api.ts dosyasına governance tipleri ve fetch fonksiyonları eklendi (loadContractReviews, loadEvidenceFiles, loadIssues, loadGovernanceOverview).
  • Evidence Page (/evidence): Tüm kanıt dosyaları listeleniyor, expired olanlar kırmızı uyarıyla.
  • Contracts Page (/contracts): Vendor sözleşmeleri üzerindeki clause kontrolleri present/missing/partial statüleriyle.
  • Remediation Page (/remediation): Açık sorunlar, overdue vurgusu, remediation action ilerleme takibi.
  • API erişilemezse frontend demo/fallback veri gösterebiliyor.

Oluşturulan / Değiştirilen Dosyalar

frontend/components/ui/toast.tsx            — Toast notification system (yeni)
frontend/components/ui/modal.tsx            — Reusable modal bileşeni (yeni)
frontend/components/ui/confirm-dialog.tsx   — Silme onay dialogu (yeni)
frontend/components/vendor-table.tsx        — İnteraktif vendor tablosu (yeni)
frontend/components/forms/vendor-form.tsx   — Vendor create/edit formu (yeni)
frontend/app/vendors/page.tsx               — CRUD entegrasyonu ile güncelleme
frontend/app/vendors/[id]/page.tsx          — Vendor detay sayfası (yeni)
frontend/app/evidence/page.tsx              — Gerçek veri ile yeniden yazıldı
frontend/app/contracts/page.tsx             — Gerçek veri ile yeniden yazıldı
frontend/app/remediation/page.tsx           — Gerçek veri ile yeniden yazıldı
frontend/app/layout.tsx                     — ToastProvider eklendi
frontend/app/globals.css                    — Toast, modal, toolbar, form CSS
frontend/lib/api.ts                         — Governance tipler + fetch fonksiyonları

Faz 3: Assessments ve Risk Scoring

Amaç: Risk assessment formlarını oluşturmak, skorlama motorunu veritabanına bağlamak ve frontend'de interaktif assessment yönetimi sunmak.

Yapılanlar

3.1 — Backend: Risk Assessment CRUD API

  • POST /api/risk/assessments — Yeni assessment payload'unu alır, risk_scoring.py motoruna gönderir, hesaplanan tüm sonuçları (criticality, inherent risk, control effectiveness, residual risk, final rating, confidence level) veritabanına kaydeder.
  • GET /api/risk/assessments — Tüm assessment geçmişini listeler (vendor_id ile filtreleme, skip/limit pagination).
  • GET /api/risk/assessments/{id} — Tekil assessment detayı.

3.2 — Risk Scoring Engine Entegrasyonu

  • risk_service.py oluşturuldu. create_risk_assessment() fonksiyonu:
    1. Gelen component skorlarını RiskScoringRequest'e dönüştürür
    2. score_risk_assessment() çağırarak weighted average hesaplaması yapar
    3. apply_override_floor() ile minimum rating floor'u uygular (ör. critical clause gap varsa minimum High)
    4. derive_confidence_level() ile güven seviyesini belirler
    5. Sonuçları ve breakdown'ları JSON olarak DB'ye yazar

3.3 — Frontend: İnteraktif Assessment Sayfası

  • AssessmentTable bileşeni: Assessment geçmişi tablosu, arama, "New assessment" butonu.
  • AssessmentForm bileşeni: 2 adımlı modal form:
    • Adım 1: Assessment adı ve vendor seçimi
    • Adım 2: 5 risk domain sorusu 1-5 ölçeğiyle (Data Sensitivity, Service Dependency, Connectivity, Governance, Contractual Oversight)
  • Form gönderildiğinde backend scoring engine çalışıp sonuç anında tabloya yansıyor.

3.4 — Schema ve Model Düzeltmeleri

  • business_criticality_score Integer → Float (scoring engine float üretiyor)
  • AssessmentStatus enum'una in_review eklendi (seed verisi uyumsuzluğu)
  • RiskAssessmentRead schema'sında JSON breakdown alanları Optional yapıldı (eski seed verileri NULL)

Oluşturulan / Değiştirilen Dosyalar

backend/app/api/risk.py                        — 3 yeni CRUD endpoint
backend/app/services/risk_service.py           — Assessment CRUD + scoring entegrasyonu (yeni)
backend/app/schemas/risk.py                    — Enum, Optional, Float düzeltmeleri
backend/app/models/risk_assessment.py          — Float migration
frontend/app/assessments/page.tsx              — Tamamen yeniden yazıldı
frontend/components/assessment-table.tsx       — İnteraktif tablo (yeni)
frontend/components/forms/assessment-form.tsx  — 2 adımlı form (yeni)
frontend/lib/api.ts                            — BackendRiskAssessment tipi + loadRiskAssessments()

Faz 4: Dashboard ve Raporlama

Amaç: Dashboard'u gerçek veriyle beslemek, risk dağılım grafikleri eklemek ve executive overview sunmak.

Yapılanlar

4.1 — Dashboard Sayfası (Tamamen Yeniden Yazıldı)

  • Tüm veriler paralel API çağrılarıyla yükleniyor: inventory, issues, assessments, evidence.
  • Vendor Risk Distribution: CSS-based animated bar grafikleri ile Critical/High/Medium/Low dağılımı gösteriliyor.
  • Assessment Outcomes: Değerlendirme sonuçlarının rating dağılımı grafik çubuklarıyla.
  • Governance Pulse: Open issues, overdue items, expired evidence, assessments on file — canlı metrikler.
  • Vendor Watchlist: Risk seviyesine göre sıralanmış, tıklanabilir vendor linkleri.
  • Residual Risk Matrix: 4x4 impact vs. control effectiveness heatmap tablosu.

4.2 — Overview Sayfası Güncellendi

  • Sayfa gerçek API verisini kullanacak şekilde güncellendi.
  • mock-data.ts dosyası tamamen kaldırılmadı; frontend içinde fallback veri kaynağı olarak tutuldu.
  • Open issues tablosu vendor isim çözümlemesi ile gerçek veriden dolduruluyor.
  • Son assessments sidebar'da gösteriliyor.
  • Priority vendors risk seviyesine göre sıralı.

4.3 — Yeni CSS Bileşenleri

  • .chart-bars, .chart-bar-row, .chart-bar-track, .chart-bar-fill — animated gradient bar grafikleri
  • .vendor-link, .back-link — navigasyon linkleri
  • .stack — dikey düzen layout

Oluşturulan / Değiştirilen Dosyalar

frontend/app/dashboard/page.tsx    — Tamamen yeniden yazıldı
frontend/app/page.tsx              — Overview sayfası, API-first veri yükleme + fallback
frontend/app/globals.css           — Chart bar, link, stack CSS eklendi

Faz 5: Authentication ve Güvenlik

Amaç: JWT tabanlı kimlik doğrulama sistemi kurmak, login/register sayfası oluşturmak ve kullanıcı oturumunu yönetmek.

Yapılanlar

5.1 — Backend: JWT Auth Sistemi

  • app/core/auth.py modülü oluşturuldu:
    • Password hashing: passlib + bcrypt ile güvenli parola saklama
    • JWT token: python-jose ile HS256 imzalı access token oluşturma (24 saat süre)
    • get_current_user dependency: Token varsa kullanıcıyı döndürür, yoksa None (soft auth)
    • require_auth dependency: Token gerektirir, yoksa 401 Unauthorized (hard auth)
    • authenticate_user(): Email + password doğrulama

5.2 — Backend: Auth API Endpoint'leri

  • POST /api/auth/register — Yeni kullanıcı kaydı, otomatik JWT token dönüşü
  • POST /api/auth/login — OAuth2 Password Flow uyumlu giriş (username=email, password)
  • GET /api/auth/me — Mevcut kullanıcı profili

5.3 — Frontend: Login/Register Sayfası

  • /login/page.tsx — Premium glassmorphism tasarımında Sign in / Register mod geçişli form.
  • /login/layout.tsx — AppShell (sidebar) olmadan minimal layout.
  • Form validasyonu ve hata mesajları.
  • Başarılı girişte otomatik ana sayfaya yönlendirme.

5.4 — Frontend: Auth Context

  • lib/auth-context.tsx — React Context ile global auth state yönetimi:
    • login(), register(), logout() fonksiyonları
    • localStorage'da token + kullanıcı bilgisi persistence
    • Sayfa yenilemede oturum korunuyor

5.5 — Auth Davranışı (Mevcut)

  • GET /api/auth/me endpoint'i token gerektirir.
  • Backend'de get_current_user() soft-auth olarak tasarlanmıştır; token yoksa None döndürür.
  • Mevcut sürümde inventory / governance / risk endpoint'leri zorunlu auth ile korunmamaktadır.

5.6 — Frontend: AppShell Auth Entegrasyonu

  • Giriş yapan kullanıcının ismi üst bar'da badge olarak gösteriliyor.
  • Sidebar'ın alt kısmında "Account" bölümü: kullanıcı adı, rolü ve "Sign out" butonu.
  • Giriş yapılmamışsa sidebar'da "Sign in" linki gösteriliyor.
  • /login sayfasında AppShell render edilmiyor (temiz login ekranı).

5.7 — Seed Script ve Model Güncellemeleri

  • User modeline password_hash sütunu eklendi.
  • Seed script'te tüm demo kullanıcılara bcrypt ile demo1234 şifresi atanıyor.
  • Yeni bağımlılıklar: python-jose[cryptography], passlib[bcrypt], bcrypt

Demo Giriş Bilgileri

Email İsim Rol Şifre
anna.fischer@novabank.example Anna Fischer Business Owner demo1234
marco.silva@novabank.example Marco Silva Business Owner demo1234
sofia.jensen@novabank.example Sofia Jensen Business Owner demo1234
daniel.weber@novabank.example Daniel Weber Business Owner demo1234

Oluşturulan / Değiştirilen Dosyalar

backend/app/core/auth.py              — JWT + bcrypt auth modülü (yeni)
backend/app/api/auth.py               — Login/register/me endpoint'leri (yeni)
backend/app/api/routes.py             — Auth router eklendi
backend/app/models/user.py            — password_hash sütunu
backend/requirements.txt              — Auth bağımlılıkları
backend/scripts/seed_database.py      — Demo şifre hashing
frontend/lib/auth-context.tsx          — Auth context + provider (yeni)
frontend/app/login/page.tsx            — Login/register sayfası (yeni)
frontend/app/login/layout.tsx          — Sidebar'sız layout (yeni)
frontend/components/app-shell.tsx      — User badge + sign out
frontend/app/layout.tsx                — AuthProvider wrapper
frontend/app/globals.css               — Login card, user badge CSS

Proje Yapısı

GRC-Projesi/
├── backend/
│   ├── alembic/                      — Migration altyapısı
│   ├── app/
│   │   ├── api/
│   │   │   ├── auth.py          — JWT login/register endpoint'leri
│   │   │   ├── governance.py    — Contract, evidence, issue API'leri
│   │   │   ├── inventory.py     — Vendor, service, mapping API'leri
│   │   │   ├── risk.py          — Assessment CRUD + scoring endpoint'leri
│   │   │   └── routes.py        — Router birleştiricisi
│   │   ├── core/
│   │   │   ├── auth.py          — JWT token, bcrypt, auth dependency'leri
│   │   │   ├── config.py        — Pydantic Settings (DATABASE_URL, vs.)
│   │   │   └── exceptions.py    — Global hata yönetimi
│   │   ├── db/
│   │   │   ├── base.py          — SQLAlchemy Base + model importer
│   │   │   └── session.py       — Engine + SessionLocal + get_db
│   │   ├── middleware/
│   │   │   └── logging.py       — Request logging middleware
│   │   ├── models/
│   │   │   ├── business_function.py
│   │   │   ├── contract_review.py
│   │   │   ├── evidence.py
│   │   │   ├── issue.py
│   │   │   ├── questionnaire.py
│   │   │   ├── risk_assessment.py — RiskAssessment ORM modeli
│   │   │   ├── service.py
│   │   │   ├── user.py          — User modeli (password_hash dahil)
│   │   │   ├── vendor.py
│   │   │   └── vendor_service_mapping.py
│   │   ├── schemas/
│   │   │   ├── governance.py    — Pydantic governance şemaları
│   │   │   ├── inventory.py     — Pydantic inventory şemaları
│   │   │   └── risk.py          — Risk assessment + scoring şemaları
│   │   ├── services/
│   │   │   ├── governance.py    — Governance DB sorgu servisleri
│   │   │   ├── inventory_service.py — Inventory DB sorgu servisleri
│   │   │   ├── risk_scoring.py  — Weighted average risk hesaplama motoru
│   │   │   └── risk_service.py  — Assessment CRUD + otomatik skorlama
│   │   └── main.py              — FastAPI app (CORS, middleware, exception handlers)
│   ├── scripts/
│   │   └── seed_database.py     — CSV'den DB'ye veri yükleme
│   ├── .env.example
│   ├── grc_tprm.db              — Local SQLite veritabanı (örnek/dev)
│   └── requirements.txt
│
├── frontend/
│   ├── app/
│   │   ├── assessments/page.tsx     — Assessment geçmişi + yeni oluşturma
│   │   ├── contracts/page.tsx       — Sözleşme madde incelemeleri
│   │   ├── dashboard/page.tsx       — Executive risk dashboard
│   │   ├── evidence/page.tsx        — Kanıt dosyaları register'ı
│   │   ├── login/
│   │   │   ├── layout.tsx           — Sidebar'sız layout
│   │   │   └── page.tsx             — Login/register form
│   │   ├── remediation/page.tsx     — Düzeltici eylem ve sorun takibi
│   │   ├── vendors/
│   │   │   ├── [id]/page.tsx        — Vendor detay (360° görünüm)
│   │   │   └── page.tsx             — Vendor register + CRUD
│   │   ├── globals.css              — Tüm tasarım sistemi
│   │   ├── layout.tsx               — Root layout (Auth + Toast provider)
│   │   └── page.tsx                 — Overview ana sayfa
│   ├── components/
│   │   ├── forms/
│   │   │   ├── assessment-form.tsx  — 2 adımlı assessment formu
│   │   │   └── vendor-form.tsx      — Vendor create/edit formu
│   │   ├── ui/
│   │   │   ├── confirm-dialog.tsx   — Silme onay dialogu
│   │   │   ├── modal.tsx            — Reusable modal
│   │   │   └── toast.tsx            — Toast notification system
│   │   ├── app-shell.tsx            — Sidebar + header (auth entegreli)
│   │   ├── assessment-table.tsx     — İnteraktif assessment tablosu
│   │   ├── kpi-card.tsx             — KPI metrik kartı
│   │   ├── section-card.tsx         — Bölüm kartı
│   │   ├── status-badge.tsx         — Durum rozeti
│   │   ├── vendor-table.tsx         — İnteraktif vendor tablosu
│   │   └── workspace-header.tsx     — Sayfa başlık bileşeni
│   └── lib/
│       ├── api.ts                   — API client + tüm fetch fonksiyonları
│       ├── auth-context.tsx         — React auth context + provider
│       └── mock-data.ts             — Fallback / demo veri kaynağı
│
├── sample_data/                     — CSV seed verileri
├── docs/                            — Proje dokümantasyonu
└── exports/                         — Örnek register ve board çıktıları

Çalıştırma

Gereksinimler

  • Python 3.13+
  • Node.js 18+
  • npm

Backend

cd backend
python -m venv .venv
.venv\Scripts\activate          # Windows
# source .venv/bin/activate     # macOS/Linux
pip install -r requirements.txt
python scripts/seed_database.py --reset
python -m uvicorn app.main:app --reload --port 8000

İsteğe bağlı olarak PostgreSQL container'ı için kök dizinde:

docker-compose up -d

Frontend

cd frontend
npm install
npm run dev

Erişim

Ortam Değişkenleri (Opsiyonel)

PostgreSQL kullanmak için backend/.env dosyası oluşturun:

DATABASE_URL=postgresql://user:pass@localhost:5432/novabank_tprm

Varsayılan olarak SQLite (sqlite:///grc_tprm.db) kullanılır.

Not: uvicorn komutu backend/ dizininden çalıştırıldığında SQLite dosyası pratikte backend/grc_tprm.db altında oluşur / kullanılır.


API Endpoint Özeti

Auth

Method Path Açıklama
POST /api/auth/register Yeni kullanıcı kaydı
POST /api/auth/login Giriş (OAuth2 password flow)
GET /api/auth/me Mevcut kullanıcı profili

Inventory

Method Path Açıklama
GET /api/inventory/vendors Vendor listesi (pagination + filtreleme)
POST /api/inventory/vendors Yeni vendor oluşturma
GET /api/inventory/vendors/{id} Vendor detayı
PATCH /api/inventory/vendors/{id} Vendor güncelleme
DELETE /api/inventory/vendors/{id} Vendor silme
GET /api/inventory/services Servis listesi
POST /api/inventory/services Servis oluşturma
GET /api/inventory/business-functions İş fonksiyonları
POST /api/inventory/business-functions İş fonksiyonu oluşturma
GET /api/inventory/mappings Vendor-servis-fonksiyon eşlemeleri
POST /api/inventory/mappings Yeni eşleme oluşturma
GET /api/inventory/vendors/{id}/mappings Vendor'a ait eşlemeler

Risk & Assessments

Method Path Açıklama
GET /api/risk/assessments Assessment listesi
POST /api/risk/assessments Yeni assessment (otomatik skorlama)
GET /api/risk/assessments/{id} Assessment detayı
POST /api/risk/score Anlık risk skoru hesaplama
POST /api/risk/questionnaire/evaluate Anket tabanlı skorlama
GET /api/risk/questionnaire/template/default Varsayılan anket şablonu

Governance

Method Path Açıklama
GET /api/governance/overview/{vendor_id} Vendor governance özeti
GET /api/governance/contract-reviews Sözleşme incelemeleri
POST /api/governance/contract-reviews Sözleşme incelemesi oluşturma
GET /api/governance/evidence Kanıt dosyaları
POST /api/governance/evidence Kanıt kaydı oluşturma
GET /api/governance/issues Sorunlar ve bulgular
POST /api/governance/issues Yeni issue oluşturma
PATCH /api/governance/issues/{issue_id} Issue güncelleme
GET /api/governance/clause-gap-count/{vendor_id} Kritik clause gap sayısı

Sistem

Method Path Açıklama
GET /api/health Sağlık kontrolü
GET /api/platform-info Platform bilgisi

Risk Scoring Motoru

Sistemin kalbi olan risk_scoring.py aşağıdaki adımları izler:

1. calculate_business_criticality()
   ├── supports_critical_function (0.25)
   ├── customer_impact (0.20)
   ├── regulatory_impact (0.20)
   ├── data_sensitivity (0.15)
   ├── substitutability (0.10)
   └── recovery_sensitivity (0.10)

2. calculate_inherent_risk()
   ├── data_sensitivity_access (0.20)
   ├── service_dependency_availability (0.15)
   ├── connectivity_integration (0.15)
   ├── geographic_regulatory_exposure (0.10)
   ├── subcontracting_fourth_party (0.10)
   ├── incident_performance_history (0.05)
   └── business_criticality_context (0.25) ← Adım 1'den

3. calculate_control_effectiveness()
   ├── governance_assurance (1/6)
   ├── identity_access_security (1/6)
   ├── security_ops_monitoring (1/6)
   ├── resilience_continuity (1/6)
   ├── vulnerability_change_mgmt (1/6)
   └── contractual_oversight (1/6)

4. calculate_residual_risk()
   → inherent_risk × (1 - control_factor + 0.2)

5. map_final_rating()
   → ≤1.5: Low | ≤2.5: Medium | ≤3.5: High | >3.5: Critical

6. apply_override_floor()
   → Missing evidence + critical vendor → minimum High
   → Critical clause gaps → minimum High
   → Open high-severity issues → rating floor'unu yükseltebilir

7. derive_confidence_level()
   → 0 gaps: High | ≤2 gaps: Medium | >2 gaps: Low

Mevcut Sınırlamalar

  • Frontend fallback veri desteği nedeniyle API kapalıyken bazı ekranlar yine dolu görünebilir.
  • Login deneyimi mevcut olsa da tam route / endpoint yetkilendirmesi henüz uygulanmış değildir.
  • Migration geçmişi ile güncel ORM şeması arasında temizlik ihtiyacı vardır; özellikle yeni ortamlarda migration stratejisi gözden geçirilmelidir.

Lisans

Bu proje eğitim ve portföy amaçlıdır. Ticari kullanım için lisans gereklidir.

About

A DORA-style ICT third-party risk oversight platform for a mock bank, featuring vendor inventory, critical service mapping, risk scoring, contract review, evidence tracking, remediation workflows, and register-style reporting.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors