-
Notifications
You must be signed in to change notification settings - Fork 98
Google Summer of Code 2023
Welcome to the GCP Scanner Google Summer of Code 2023! We are excited you are here and encourage you to read through our ideas list and consider applying to our organization. GCP Scanner is a relatively new project without a large legacy code base. You will be able to learn and see how such type of projects grow and get an opportunity to influence that growth.
Our tool comprehensively covers various Google Cloud products and our ultimate goal is to cover all Google Cloud services. By working on that project, you will have a chance to get more familiar with Google Cloud along with improving the scanner and having open-source contribution experience.
The application process consists of the following steps:
- Ask to join GCP Scanner Google Group.
- Get familiar with the scanner codebase and optionally submit PR for one of the issues described here.
- Choose the project you want to work on from the list.
- Submit the application/proposal for the selected project including all requirements at the Google Summer of Code 2023 Site. Please use the template provided below.
- If you have any questions you can reach out to project organizers in the GCP Scanner Google Group.
We strongly encourage potential applicants to get familiar with the GCP Scanner codebase and contribute to one of the Good First Issue listed.
Candidate name
Proposal Title
Abstract (150 words max)
Detailed Proposal Description (1000 words max)
Previous work
Link to prototypes, Github profile and open-source contributions
Bibliography
Past GSoC results
Resume
Academic studies, previous work experience, internships
Open-source projects
Summer plan
Any other commitments, vacation, holidays?
Will you be available for full-time work during the GSoC timeslot?
Please note that we follow Google Python Coding Style Guide.
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: underhill@, Guillaume
Project Size: 175h-350h
Difficulty Rating: Easy-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: zetatwo@, Maksim Shudrak
Project Size: 350h
Difficulty Rating: Hard
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, Benjamin Donnelly
Project Size: 175h
Difficulty Rating: Medium
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, underhill@
Project Size: 175h
Difficulty Rating: Medium
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.
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: underhill@, Benjamin Donnelly
Project Size: 175h
Difficulty Rating: Medium
Reference: Please navigate to our GCP Scanner Testing wiki page to learn more.