Introduction
Won Oracle IT's first Hackathon by engineering a full-stack OCI asset discovery and security analysis platform that mapped multi-tenancy infrastructure topologies directly to active security list rule sets
Challenge
Taking seclist information from OCI, build an application map and visualize the allowed flows by application
Input: Tenancy = git, application_name
- Objective 1 [10p]: Succesfully connect to the API
- Objective 2 [20p]: Identify the application subnets based on the subnet naming standard
- Objective 3 [20p]: Identify the allowed application flows based on the seclist information in each subnet
- Objective 4 [10p]: Visualize application flows showing intra-application flows (allowed flows between application subnets)
- Objective 5 [20p]: Visualize application flows showing intra-vcn flows (allowed flows between inside the VCN)
- Objective 6 [20p]: Visualize application flows showing external flows (allowed flows with hosts outside the VCN)
Stretch objective: categorize the application based on the flow patterns: internal, external, single-region, multi-region, small-footprint (small ammount of open ports outside the application), big-footprint (large ammount of open ports outside the application), anything else.
Screenshots
UI
Results
Create and update DB
arch-lnx [~] $ python3 ~/oci_info/refresh_db.py --refresh
Reading config file...
Starting sqlite DB refresh -> ~/oci_info/oci_info.db
Valid configs found for tenancy(s): ['ORAGIT', 'GIT']
Starting data collection for: ORAGIT
Importing table --> compartments --> rows: 15
Importing table --> instances --> rows: 744
Importing table --> instances --> rows: 24
Importing table --> vnic_attachments --> rows: 24
Importing table --> vnic_attachments --> rows: 774
Importing table --> vcns --> rows: 4
Importing table --> subnets --> rows: 346
Importing table --> seclist_attachments --> rows: 1641
Importing table --> seclists --> rows: 608
Importing table --> seclist_rules --> rows: 14435
Starting data collection for: GIT
Importing table --> compartments --> rows: 24
Importing table --> instances --> rows: 0
Importing table --> instances --> rows: 0
Importing table --> vnic_attachments --> rows: 0
Importing table --> vnic_attachments --> rows: 0
Importing table --> vcns --> rows: 9
Importing table --> subnets --> rows: 333
Importing table --> seclist_attachments --> rows: 1609
Importing table --> seclists --> rows: 612
Importing table --> seclist_rules --> rows: 14472
arch-lnx [~] $ python3 ~/oci_info/run.py
Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
