-
Notifications
You must be signed in to change notification settings - Fork 105
Google Summer of Code 2023
Welcome to the GCP Scanner Google Summer of Code 2023 Ideas List! We are excited you are here and encourage you to read through our ideas list and consider applying to our organization.
Please note that we follow Google Python Coding Style Guide.
Idea Description: Currently, we have one giant scanning loop from where we launch GCP resource crawlers. We need to split each crawler into individual modules with proper error handling that will improve code readability and quality. We can leverage python classes for the state of execution control, config parsing and enabling/disabling certain functionality in the scanner.
Applicant Considerations: This is a good project for contributors who want to establish good Python coding practices and overall code hygiene.
Expected Outcome: All functions in crawl.py are split into individual Python classes, the main loop is split into individual functions with proper error handling per each function call.
Preferred Skills: Python and its best coding practices.
Mentors: Guillaume Jeanne, Jacob Butler
Project Size: 175h-350h
Difficulty Rating: Medium-Hard
Idea Description: Currently, GCP Scanner relies on Github Actions to perform functional and unit tests. Those tests cover the scanner's basic functionality but ~30% of code base and corner cases are still not covered. Moreover, we rely on GCP API volatile results to identify whether the test was successful or not which often leads to flakiness. The goal of this project is to improve the GCP Scanner test suite. More specifically we plan to
- split unit tests into individual functions;
- implement unit test for currently uncovered functionality such as impersonation, OAuth2 tokens, service account credentials;
- make unit and functional tests more flexible by checking for key components in the output rather than comparing it line by line;
- implement negative unit tests.
Applicant Considerations: The project could be a good learning opportunity for any contributor interested in code quality enhancement through proper testing, software development lifecycle and Github Actions.
Expected Outcome: Improved code coverage and less test failures.
Preferred Skills: Python, experience with Github Actions and software testing.
Possible Mentors: Jacob Butler
Project Size: 175h-350h
Difficulty Rating: Medium-Hard
Reference: Please navigate to our GCP Scanner Testing wiki page to learn more.
Idea Description: GCP Scanner currently supports comprehensive scanning of 13 GCP products. There are many more products which we would like it to cover, such as Cloud Run, Cloud DNS, Datastore, Dataflow, Cloud Composer, Cloud Build, Cloud Tasks, Cloud Scheduler, and other APIs.
Applicant Considerations: This project is good for contributors who are interested in learning about the GCP platform itself, various services offered on that platform and how to interact with them using Cloud API.
Expected Outcome: GCP scanner supports more GCP products.
Preferred Skills: Python, GCP API
Possible Mentors: Jacob Butler, Guillaume Jeanne
Project Size: 175h-350h
Difficulty Rating: Easy
Idea Description: GCP Scanner does not support parallel enumeration of GCP resources and parallel scanning of GCP targets. This project is aimed to address this shortcoming. There might also be a need to perform light-weight refactoring to enable parallelization.
Applicant Considerations: The project is good for candidates who want to get experience with software parallelization in Python.
Expected Outcome: GCP Scanner supports both parallel scanning of GCP resources and scan target parallelism.
Preferred Skills: Python, good understanding of software parallelism.
Possible Mentors: Maksim Shudrak
Project Size: 175h
Difficulty Rating: Medium
Idea Description: GCP scanner saves results in JSON files on disk. We currently recommend using gron Linux tool for parsing results in the terminal. This is not always convenient especially for large scans. In this project, the candidate is offered to implement a visualization tool capable of parsing and rendering GCP Scanner results in a convenient UI with search capabilities and ability to visualize interaction between GCP project resources. There are a couple of tools/frameworks to look for inspiration such as neo4j in BloodHound, cytoscape in Azure Stormspotter or GoJS for nmap in-browser results visualization. Another option would be to generate dot files for Graphviz and convert them into SVG with annotation and/or navigation.
Applicant Considerations: This is quite an ambitious project requiring contributors to quickly get familiar with various data visualization frameworks and ways to implement solutions on top of them. On the other hand, contributors will be able to work more independently and often use their own best judgment on what/how to implement certain functionality.
Expected Outcome: A tool capable of reading GCP Scanner results, rendering that result into UI (browser or standalone tool) with search and resource interaction features.
Preferred Skills: Experience with any data visualization framework.
Possible Mentors: Calle Svensson, Maksim Shudrak
Project Size: 350h
Difficulty Rating: Hard
We are open to any other ideas not listed here. Please describe the idea in your application but make sure it is appropriately sized for a 175 or 350 hours project.