-
Notifications
You must be signed in to change notification settings - Fork 448
GdprCompliance
This document is WORK IN PROGRESS (WIP).
This document provides what are considered the best-practices for GDPR compliance. This is not a legal document nor should it be considered legal advice. It is up to each project to individually decide upon how GDPR affects them and what is to be configured for each project.
These are the short and quick instructions to enable GDPR related features. Read the explanation below for more details about these features.
- See this page for details.
- In the project config file
config.xml
, setenable_login_mustagree_termsofuse
to true (1):<enable_login_mustagree_termsofuse>1</enable_login_mustagree_termsofuse>
- On the ops page, select "Manage consent types" and enable "Enroll and Stats Export"
- In the project config file
config.xml
, set enable_privacy_by_default to true (1):<enable_privacy_by_default>1</enable_privacy_by_default>
- In the project config file
config.xml
, set disable_account_creation_rpc to true (1):<disable_account_creation_rpc>1</disable_account_creation_rpc>
- In the web project config file:
html/project/project.inc
, add:define("TERMSOFUSE_FILE", "../../terms_of_use.txt");
- Please note that this will show the same text in the browser as in the TermsOfUse pop-up of the BOINC manager. If you wish to further customize the text shown on the web page, you could use a copy of the terms of use file in
html/user
and add html code with links.
- In project config file
config.xml
, set enable_delete_account to either 1 or 2 (see below for explanation of settings):<enable_delete_account>1</enable_delete_account>
- In project config file
config.xml
, add the following project tasks:
<task>
<cmd>run_in_ops ./delete_expired_tokens.php</cmd>
<period>24 hours</period>
<disabled>0</disabled>
<output>delete_expired_tokens.out</output>
</task>
<task>
<cmd>run_in_ops ./delete_expired_users_and_hosts.php</cmd>
<period>24 hours</period>
<disabled>0</disabled>
<output>delete_expired_users_and_hosts.out</output>
</task>
A Presentation on GDPR and BOINC.
Brief Summary
- Projects should have a TermsOfUse.
- Users need to consent to a projects terms-of-use. And consent to other policies.
- Users have a 'right-of-access' in obtaining their own user's data.
- Users have a 'right-of-erasure', being able to delete their own accounts.
- Data protection by design and default. The initial settings for user accounts maximize their privacy.
This document discusses
- How to enable GDPR related features
- Consent to policies,
- User deletion,
- Data protection by design and default.
= =
The following describes the GDPR features and what they do.
There are two types of consent that come with all BOINC projects: ENROLL
and STATSEXPORT
: corresponding to a consent to the project's terms-of-use during enrollment and consent to statistics exports. By default, these consent types are disabled. To enable these policies, use the Manage consent types page accessible from the main OPS page.
When ENROLL
consent type is enabled, users must agree to the project's terms-of-use before creating an account. This must be an 'active' measure: clicking a checkbox. In order to by fully-compliant with GDPR, only allow users to create accounts through the Web site.
How may a user create an account?
- A BOINC client. The GUI BOINC Manager is a client.
- The BOINC CLI
boinccmd
is a client. - Project's Web site allows for account creation.
- The
config.xml
option disable_web_account_creation must be set to false (0).
- The
- An account manager (AM) may create an account for a user.
Of these, only the Web site is guaranteed to have the user see and consent to the project's terms-of-use. To configure this:
- In
config.xml
, set disable_account_creation_rpc to true (1):<disable_account_creation_rpc>1</disable_account_creation_rpc>
- If this is configured, account managers will not be able to create accounts for users. They are able to configure existing users' accounts.
BOINC Client GUI: Versions after v6.10.0 show the project's terms-of-use to the user, who must click-through in order to continue and create an account. Thus the create_account RPC has been modified to detect BOINC clients greater than or equal to this version. If the client is greater than or equal to, we assume consent has been given and the database is updated accordingly.
Also - to force users who may not have previously consented to the terms of user, the flag <enable_login_mustagree_termsofuse>1</enable_login_mustagree_termsofuse>
will cause users who log into the website but who have not yet agreed to the terms of user to be redirected to a page where they will be required to consent in order to continue to use the website.
STATSEXPORT
, if enabled will only export statistics for users who have consented to having their statistics exported. This consent is disabled by default for each user.
- The user must go to their project preferences page and then enable the corresponding checkbox.
GDPR provides a right to users to have their data deleted from the system. See Article 17 of the GDPR. This capability was implemented within BOINC in the design outlined here in Server Release 1.0.
BOINC projects can enable this feature by setting the field <enable_delete_account/> with the project config file to one of the following options:
- 0 = Users are not given the option to delete their account (Default value)
- 1 = User data is anonymized. This means that user records and host records are left in the database but personal information is replaced with nonsense data. Other user related records not required for processing are deleted.
- 2 = All user data is deleted. This means that all user related records are deleted from the database.
- 3 = Project defined implementation. Projects can implement a function in project.inc: project_delete_account($user) and this function will then be used when a user delete's their account.
Projects should also enable the following tasks in their project tasks in their project config file in order to ensure proper processing:
<task>
<cmd>run_in_ops ./delete_expired_tokens.php</cmd>
<period>24 hours</period>
<disabled>0</disabled>
<output>delete_expired_tokens.out</output>
</task>
<task>
<cmd>run_in_ops ./delete_expired_users_and_hosts.php</cmd>
<period>24 hours</period>
<disabled>0</disabled>
<output>delete_expired_users_and_hosts.out</output>
</task>