From 6973030661b2c940fba22c62f78cdc4a486e0089 Mon Sep 17 00:00:00 2001 From: Harshit Sohaney Date: Thu, 6 Jun 2024 18:54:56 +0000 Subject: [PATCH] Bug 1886246 - Add documentation to source docs for Shavar. r=timhuang Differential Revision: https://phabricator.services.mozilla.com/D210105 --- .../components/antitracking/docs/index.rst | 1 + .../antitracking/docs/tracking-lists/index.md | 92 ++++++++++++++++++ .../tracking-lists/media/shavarPipeline.jpg | Bin 0 -> 47931 bytes tools/lint/rejected-words.yml | 1 + 4 files changed, 94 insertions(+) create mode 100644 toolkit/components/antitracking/docs/tracking-lists/index.md create mode 100644 toolkit/components/antitracking/docs/tracking-lists/media/shavarPipeline.jpg diff --git a/toolkit/components/antitracking/docs/index.rst b/toolkit/components/antitracking/docs/index.rst index 45d888b989f2..267cb89cf064 100644 --- a/toolkit/components/antitracking/docs/index.rst +++ b/toolkit/components/antitracking/docs/index.rst @@ -10,3 +10,4 @@ This page is an overview of various anti-tracking components. Cookie Purging Data Sanitization Query Stripping + Tracking Lists diff --git a/toolkit/components/antitracking/docs/tracking-lists/index.md b/toolkit/components/antitracking/docs/tracking-lists/index.md new file mode 100644 index 000000000000..e20a8a3f94ed --- /dev/null +++ b/toolkit/components/antitracking/docs/tracking-lists/index.md @@ -0,0 +1,92 @@ +# Shavar Lists Documentation + +## Shavar - Brief Overview + +Shavar is a Python based service that provides Tracking Protection lists to Firefox clients. Every 6 hours, the Firefox client sends a POST request to the service for an updated list and, if there is an update, Shavar returns the CloudFront URL where the client can download the latest list from. Note that users can trigger the update manually using `about:url-classifier` + +## Updating Lists Flow + +[shavar-list-creation](https://github.com/mozilla-services/shavar-list-creation) fetches blocklist .json from [shavar-prod-lists](https://github.com/mozilla-services/shavar-prod-lists) and generates safebrowsing-compatible digest list files. + +Disconnect provides Mozilla with an updated blocklist every so often, with a pull request to the [https://github.com/mozilla-services/shavar-prod-lists](https://github.com/mozilla-services/shavar-prod-lists) repository, from which the responsible engineer has to manually merge the PR to trigger an automatic update on the shavar server. + +### The Lists + +The following lists are kept in the [shavar-prod-lists]([https://github.com/mozilla-services/shavar-prod-lists](https://github.com/mozilla-services/shavar-prod-lists)) repository. + +| List | Purpose | +| --- | ------- | +| [disconnect-blacklist.json](https://github.com/mozilla-services/shavar-prod-lists/blob/master/disconnect-blacklist.json)| This blocklist is the core of tracking protection in Firefox. Firefox consumes the list as follows:

Tracking: anything in the Advertising, Analytics, Social, Content, or Disconnect category. Firefox ships two versions of the tracking lists: the "Level 1" list, which excludes the "Content" category, and the "Level 2" list which includes the "Content" category

Cryptomining: anything in the Cryptomining category

Fingerprinting: anything in the FingerprintingInvasive category. By default, ETP's fingerprinting blocking only blocks Tracking Fingerprinters, that is domains which appear in both the FingerprintingInvasive category and one of the Tracking categories. Firefox does not use the FingerprintingGeneral category at this time. | +| [disconnect-entitylist.json](https://github.com/mozilla-services/shavar-prod-lists/blob/master/disconnect-entitylist.json) | A version controlled copy of Disconnect's list of entities. ETP classifies a resource as a tracking resource when it is present on the blocklist and loaded as a third-party. The Entity list is used to allow third-party subresources that are wholly owned by the same company that owns the top-level website that the user is visiting.| + +### Updating Process + +The Tracking Protection lists updates happen every two or three months. The Disconnect folks aggregate the changes within the latest time frame and create a PR to submit the list update to the [shavar-prod-lists](https://github.com/mozilla-services/shavar-prod-lists) repo. We then take the following steps to review and merge the changes to our production list. + +* An automation script first verifies the integrity of the updated list +* Shavar Reviewers inspect the commits in the PR manually. Normally, we accept the change sets and won’t request further modifications from Disconnect. However, we can request them to merge or divide commits to uplift changes to different versions easily. +* Shavar Reviewers merge the PR to the [master](https://github.com/mozilla-services/shavar-prod-lists/tree/master) branch +* Checking whether we need to uplift some commits to previous versions. This is required occasionally to deploy fixes for ETP Webcompat issues. +* Creating branches for the Firefox versions. Note that there is a special rule for creating the branches; we must create odd versions first if the Nightly channel is an even version. Otherwise, we need to create even versions first. Then, we need to wait for 30 minutes and then create branches for other versions. + +To ensure Firefox clients receive the appropriate update for their ETP lists, we leverage a branching strategy. This means we maintain separate branches for different Firefox versions. When a client running Firefox 80 (fx80) requests an ETP list update, it's directed to the branch named 80.0 within the [shavar-prod-lists](https://github.com/mozilla-services/shavar-prod-lists/branches) repository on Github. + +## Shavar Infrastructure +![alt_text](media/shavarPipeline.jpg) + +The infrastructure consists of a Jenkins Pipeline that builds the actual Tracking Protection lists and uploads them to an S3 Bucket. The lists are served to Firefox clients by the Shavar Service, which runs on an auto-scaling EC2 instance group behind a Cloudfront distribution. + +### .ini File Structure + +The shavar_list_creation.ini file is used for configuring the creation and management of tracking protection and block lists in the Mozilla Shavar service. It consists of multiple sections, each specifying different aspects of the list creation and uploading processes. + +Example .ini file: [sample_shavar_list_creation.ini](https://github.com/mozilla-services/shavar-list-creation/blob/main/sample_shavar_list_creation.ini) + +#### [main] section +The **[main]** section contains general configuration settings for the upload process. Key variables include: + +- `s3_upload`: Boolean indicating whether to upload the output to S3. +- `remote_settings_upload`: Boolean indicating whether to upload to remote settings. +- `default_disconnect_url`: URL to the default Disconnect blacklist JSON. + +#### Format of Other Sections + +Other sections in the `shavar_list_creation.ini` file configure specific lists and their settings. These sections typically follow a common format, including settings for categories, output filenames, and versioning requirements. + +Here is a general example of how these sections are structured: + +```ini +[section-name] +categories=Category1|Category2|Category3 +output=output-filename +versioning_needed=true +``` + +- `categories`: Specifies the categories to include, separated by `|`. +- `output`: Filename for the generated data file. +- `versioning_needed`: Boolean indicating if versioning is required. + +## Remote Settings + +Remote Settings (RS) is used to manage evergreen data in Firefox, which can be accessed with an API to sync data between clients and the server. You can find more about it here [Remote Settings — Firefox Source Docs documentation](https://firefox-source-docs.mozilla.org/services/settings/index.html) + +We intend to migrate the ETP list management to leverage RS. Benefits include, + +* **Reduced Maintenance:** RS is an existing service with established tooling and infrastructure, reducing the need for a dedicated Shavar maintenance team. +* **GCP Integration:** Since RS already integrates with GCP, no additional setup or team would be required for cloud storage and no migration would be required from aws to gcp. +* **Shavar Deprecation:** Shifting to RS allows for the complete deprecation of Shavar, simplifying the overall architecture. + +Code to publish ETP lists directly to RS already exists within the shavar-list-creation project ([https://github.com/mozilla-services/shavar-list-creation/blob/main/publish2cloud.py#L218](https://github.com/mozilla-services/shavar-list-creation/blob/main/publish2cloud.py#L218)). However, this functionality is currently disabled and requires addressing issues identified by the SRE team, such as incomplete updates on the RS side + +## Known Pain Points + +* **Frequent Build Errors:** We frequently encounter errors during the build process, as evidenced in the shavar-ci channel. Investigating and resolving these errors should be a priority to ensure a smooth publishing workflow. +* **Inconsistent Versioning Rules:** Branching for different versions currently follows a set of undocumented rules. These rules need to be reviewed, standardized, and documented to eliminate confusion and potential bugs. A thorough review can identify and address any lingering bugs from the system's inception. +* **Unverifiable Versioning System:** The current system lacks mechanisms to verify the integrity and accuracy of the versioning process. + +## Links + +* [https://github.com/mozilla-services/shavar](https://github.com/mozilla-services/shavar) +* [https://github.com/mozilla-services/shavar-prod-lists](https://github.com/mozilla-services/shavar-prod-lists) +* [https://github.com/mozilla-services/shavar-list-creation](https://github.com/mozilla-services/shavar-list-creation) +* [https://wiki.mozilla.org/Services/Shavar](https://wiki.mozilla.org/Services/Shavar) diff --git a/toolkit/components/antitracking/docs/tracking-lists/media/shavarPipeline.jpg b/toolkit/components/antitracking/docs/tracking-lists/media/shavarPipeline.jpg new file mode 100644 index 0000000000000000000000000000000000000000..446069c6157b43a41ad4aae0afc59f134da99c2e GIT binary patch literal 47931 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