Privacy
Overview
In many countries there exist regulation of data protection. For operators of BigBlueButton services, especially private data protection regulations are an important topic. In the European Union the relevant regulation is the General Data Protection Regulation (GDPR). Many other countries also adopted similar regulations (for example the California Consumer Privacy Act (CCPA) in California USA or the Lei Geral de Proteção de Dados (LGPD) in Brazil) and some of these regulation even have to be complied with outside of these countries under certain conditions. The following documentation is supposed to help understand where private data gets processed and stored in a typical setup of BigBlueButton, and what configuration options there are.
Disclaimer: the following documentation is neither legal advice, nor complete. This is work-in-progress.
BigBlueButton
This section documents privacy related settings, defaults, and configuration options in BigBlueButton itself. Keep in mind that your configration changes here may be silently overwritten upon upgrades via apt, see issue 9111
To prevent this, make sure to use the apply-config.sh script to ensure changes are retained upon upgrades and restarts.
Recordings
BigBlueButton either records all of a session or does not record at all
When a room is created in BigBlueButton that allows recordings (i.e., the recording button is visible) BigBlueButton will record the entire session. This is independent of the recording-button actually being pressed or not. The technical reason behind this is that parts of the recordings (esp. the SVG files for the Whiteboard) depend on earlier state to be properly processed, see: Recording By default these files are stored for two weeks (see 'Retention of Cache Files' below). Furthermore, depending on the use-case and jurisdiction it might be prudent to retain the option to create 'retroactive' recordings, e.g., when users forgot to click the recording button.
If the frontend (which uses the BigBlueButton API to create/start a room) specifies record=true, the entire session will be recorded, unless recording is disabled for all rooms in BigBlueButton. If the frontend specifies record=false or does not specify this parameter, then the session will not be recorded and the "start"/"stop" recording button will not be available during the session.
Resolution
Operators have at least these two options for handling this:
Globally disable recordings in BigBlueButton
Server operators can overwrite default value for disableRecordingDefault initially set in /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties by overwriting it in /etc/bigbluebutton/bbb-web.properties - set disableRecordingDefault=false to disableRecordingDefault=true for globally disabling recordings. Furthermore, recording of breakout rooms should be disabled by setting breakoutRoomsRecord=false. In general, this is an advisable idea (independently of disableRecordingDefault=true, because break-out rooms might imply a certain level of privacy for typical users.
Post-recording script to remove recordings without any recording markers
Server operators can deploy a custom script which purges recordings and cache-files of recordings for which no recording markers were created.
Simple version:
/etc/sudoers:
bigbluebutton ALL = NOPASSWD: /usr/bin/bbb-record
and
/usr/local/bigbluebutton/core/scripts/archive/archive.rb (after line 242):
BigBlueButton.logger.info("There are no recording marks for #{meeting_id}, deleting the recording.")
system('sudo', 'bbb-record', '--delete', "#{meeting_id}") || raise('Failed to delete local recording')
For a more complete version that also explicitly deletes cache files of recordings for freeswitch/kurento, please see: bbb-recording-archive-workaround
BigBlueButton stores presentations uploaded during sessions
BigBlueButton stores the presentations of sessions in /var/bigbluebutton even if the room is started with record=false.