
Przegląd
W wielu krajach istnieją regulacje dotyczące ochrony danych. Dla operatorów usług BigBlueButton ważnym tematem są zwłaszcza regulacje dotyczące ochrony danych prywatnych. W Unii Europejskiej właściwym rozporządzeniem jest Ogólne rozporządzenie o ochronie danych (RODO). Wiele innych krajów również przyjęło podobne przepisy (na przykład California Consumer Privacy Act (CCPA) w Kalifornii w USA lub Lei Geral de Proteção de Dados (LGPD) w Brazylii), a niektóre z tych przepisów muszą być przestrzegane nawet poza tymi krajami pod pewnymi warunkami. Poniższa dokumentacja ma pomóc zrozumieć, gdzie prywatne dane są przetwarzane i przechowywane w typowej konfiguracji BigBlueButton oraz jakie są dostępne opcje konfiguracji.
Zastrzeżenie: poniższa dokumentacja nie stanowi porady prawnej ani nie jest kompletna. To jest coś w toku.
BigBlueButton
W tej sekcji opisano ustawienia związane z prywatnością, wartości domyślne i opcje konfiguracji w samym BigBlueButton. Pamiętaj, że wprowadzone tutaj zmiany konfiguracyjne mogą zostać po cichu nadpisane podczas aktualizacji za pośrednictwem apt, zobacz problem 9111
Aby temu zapobiec, upewnij się, że korzystasz z katalogu /etc/bigbluebutton, aby mieć pewność, że zmiany zostaną zachowane po aktualizacjach i ponownym uruchomieniu.
Nagrania
BigBlueButton albo nagrywa całą sesję, albo nie nagrywa wcale
Gdy w BigBlueButton zostanie utworzony pokój, który umożliwia nagrywanie (tzn. przycisk nagrywania jest widoczny) BigBlueButton nagra całą sesję. Jest to niezależne od tego, czy przycisk nagrywania jest faktycznie wciśnięty, czy nie. Technicznym powodem jest to, że części nagrań (szczególnie pliki SVG dla tablicy) zależą od wcześniejszego stanu, aby mogły zostać prawidłowo przetworzone, patrz: Nagranie Domyślnie te pliki są przechowywane przez dwa tygodnie (patrz „Przechowywanie plików pamięci podręcznej” poniżej). Ponadto, w zależności od przypadku użycia i jurysdykcji, rozsądne może być zachowanie opcji w celu tworzenia nagrań „z mocą wsteczną”, np. gdy użytkownicy zapomną kliknąć przycisk nagrywania.
Jeśli frontend (który wykorzystuje API BigBlueButton do tworzenia/uruchamiania pokoju) określi record=true, cała sesja zostanie nagrana, chyba że nagrywanie zostanie wyłączone dla wszystkich pomieszczeń w BigBlueButton. Jeśli frontend określi record=false lub nie określi tego parametru, sesja nie zostanie nagrana, a przycisk „start”/„stop” nagrywania nie będzie dostępny podczas sesji.
Rozdzielczość
Operatorzy mają co najmniej dwie opcje obsługi tego problemu:
Globalnie wyłącz nagrania w BigBlueButton
Operatorzy serwerów mogą nadpisać domyślną wartość disableRecordingDefault początkowo ustawioną w /usr/share/bbb-web/WEB-INF/classes/bigbluebutton.properties, nadpisując ją w /etc/bigbluebutton/bbb-web.properties - ustaw disableRecordingDefault=false na disableRecordingDefault=true, aby globalnie wyłączyć nagrania. Ponadto należy wyłączyć nagrywanie pokojów podgrup, ustawiając breakoutRoomsRecord=false. Generalnie jest to godny polecenia pomysł (niezależnie od disableRecordingDefault=true, ponieważ pokoje typu breakout mogą wiązać się z pewnym poziomem prywatności typowych użytkowników.
Skrypt po nagraniu usuwający nagrania bez żadnych znaczników nagrywania
Operatorzy serwerów mogą wdrożyć niestandardowy skrypt, który czyści nagrania i pliki pamięci podręcznej nagrań, dla których nie utworzono znaczników nagrań.
Wersja prosta:
/etc/sudoers:
bigbluebutton ALL = NOPASSWD: /usr/bin/bbb-record
i
/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')
Pełniejszą wersję, która również wyraźnie usuwa pliki pamięci podręcznej nagrań dla Freeswitch/kurento, zobacz: bbb-recording-archive-obejście
BigBlueButton przechowuje prezentacje przesłane podczas sesji
BigBlueButton przechowuje prezentacje sesji w /var/bigbluebutton nawet jeśli pokój zaczyna się od record=false.
Rozdzielczość
Nieznane, niejasne, jakie działania po nagraniu zostaną uruchomione, jeśli nie zostanie utworzone żadne nagranie. DO ZROBIENIA: dodaj tutaj kilka najlepszych praktyk
BigBlueButton przechowuje pełne nieprzetworzone dane nagrań
BigBlueButton przechowuje surowe dane nagrań spotkań, które mają znaczniki nagrywania przez czas nieokreślony. Dotyczy to części sesji, w których prezenter/moderator nie kliknął jeszcze przycisku nagrywania.
Rozwiązanie
Można to rozwiązać, usuwając surowe dane nagrań po pomyślnej archiwizacji spotkania. W przypadku wdrożeń wykorzystujących Scalelite można to osiągnąć poprzez następujące zmiany:
/etc/sudoers:
bigbluebutton ALL = NOPASSWD: /usr/bin/bbb-record
/usr/local/bigbluebutton/core/scripts/post_publish/scalelite_post_publish.rb, po wierszu 66:
system('sudo', 'bbb-record', '--delete', "#{meeting_id}") || raise('Failed to delete local recording')
W przypadku innych wdrożeń należy dodać usunięcie /var/bigbluebutton/recording/raw/$meeting/ do skryptu poarchiwalnego.
Dane te można również usuwać okresowo, patrz Retention of cache files
Wszystkie nagrania są zawsze dostępne
Domyślnie nagrania BigBlueButton są dostępne, patrz np. numer 8505
Dodatkowo adresy URL nagrań są łatwo przeliczalne, patrz numer 1466 i numer 9443
Rozdzielczość
Administratorzy serwerów mogą zmienić konfigurację Nginx, aby ograniczyć dostęp do adresów URL nagrań. W zależności od przypadku użycia instrukcja auth w nginx może wchodzić w interakcję z używanym frontendem w celu wymuszenia dalszych ograniczeń (np. żądania tych samych danych uwierzytelniających co frontend). Na przykład opcje konfiguracji i wywołanie zwrotne uwierzytelniania do frontendu Greenlight zobacz: bbb-rec-perm
Pliki pamięci podręcznej
Stos BigBlueButton tworzy różne pliki pamięci podręcznej, gdy włączone są nagrania. Konkretnie w:
/var/bigbluebutton/recording/raw/
/var/bigbluebutton/unpublished/
/var/bigbluebutton/published/presentation/
/usr/share/red5/webapps/video/streams/
/usr/share/red5/webapps/screenshare/streams/
/usr/share/red5/webapps/video-broadcast/streams/
/var/kurento/recordings/
/var/kurento/screenshare/
/var/freeswitch/meetings/
Rozdzielczość
Informacje na temat automatycznego czyszczenia tych plików po nagraniach można znaleźć w BigBlueButton always records when recording of a room is enabled. Ponadto, aby zapobiec zapisywaniu tych danych na dysku, pliki te można zamontować za pomocą tmpfs, aby zachować pamięć podręczną zapisów w pamięci.
W tym celu do /etc/fstab należy dodać następujące wiersze:
tmpfs /var/bigbluebutton/recording/raw/ tmpfs rw,nosuid,noatime,uid=998,gid=998,size=16G,mode=0755 0 0
tmpfs /var/bigbluebutton/unpublished/ tmpfs rw,nosuid,noatime,uid=998,gid=998,size=16G,mode=0755 0 0
tmpfs /var/bigbluebutton/published/presentation/ tmpfs rw,nosuid,noatime,uid=998,gid=998,size=16G,mode=0755 0 0
tmpfs /usr/share/red5/webapps/video/streams/ tmpfs rw,nosuid,noatime,uid=999,gid=999,size=16G,mode=0755 0 0
tmpfs /usr/share/red5/webapps/screenshare/streams/ tmpfs rw,nosuid,noatime,uid=999,gid=999,size=16G,mode=0755 0 0
tmpfs /usr/share/red5/webapps/video-broadcast/streams/ tmpfs rw,nosuid,noatime,uid=999,gid=999,size=16G,mode=0755 0 0
tmpfs /var/kurento/recordings/ tmpfs rw,nosuid,noatime,uid=996,gid=996,size=16G,mode=0755 0 0
tmpfs /var/kurento/screenshare/ tmpfs rw,nosuid,noatime,uid=996,gid=996,size=16G,mode=0755 0 0
tmpfs /var/freeswitch/meetings/ tmpfs rw,nosuid,noatime,uid=997,gid=997,size=16G,mode=0755 0 0
Po zastosowaniu tego administrator serwera musi wykonać bbb-conf --stop; mount -a; bbb-conf --start.
Ponadto wartości uid/gid muszą zostać dostosowane do lokalnej instalacji. W powyższym przykładzie przyjęto:
red5:x:999:999:red5 user-daemon:/usr/share/red5:/bin/false
bigbluebutton:x:998:998:bigbluebutton:/home/bigbluebutton:/bin/false
freeswitch:x:997:997:freeswitch:/opt/freeswitch:/bin/bash
kurento:x:996:996::/var/lib/kurento:
DO ZROBIENIA: wyjaśnij, jakie są te wartości uid/gid i jak uzyskać prawidłowe
Usunięte nagrania pozostają na dysku
Kiedy nagrania są usuwane za pomocą deleteRecordings API, BigBlueButton nie usuwa ich natychmiast z dysku. Zamiast tego przenosi je do katalogu /var/bigbluebutton/deleted/ w ramach mechanizmu miękkiego usuwania. Podejście to pozwala na tymczasowe zachowanie nagrań na wypadek konieczności ich odzyskania, jednak administratorzy powinni mieć świadomość, że pliki te w dalszym ciągu zajmują miejsce na dysku i mogą zawierać wrażliwe dane, z zastrzeżeniem wymogów zgodności. Ta implementacja służy jako środek zabezpieczający przed przypadkowym usunięciem, ale wymaga wyraźnych działań administratora w celu całkowitego usunięcia nagrań i odzyskania miejsca na dysku.
System nie usuwa automatycznie tych plików, co oznacza, że usunięte nagrania pozostaną w pamięci na czas nieokreślony, aż do ręcznego usunięcia. Chociaż metadane nadal pojawiają się w odpowiedziach API, same usunięte nagrania pozostają na dysku (niedostępne publicznie) do czasu ręcznego usunięcia.
Rozdzielczość
Aby całkowicie zwolnić miejsce na dysku, administratorzy muszą ręcznie usunąć pliki z systemu. Najbardziej bezpośrednią metodą jest uruchomienie:
rm -rf /var/bigbluebutton/deleted/*
To polecenie trwale usunie całą zawartość usuniętego katalogu nagrań. Ponieważ ta czynność jest nieodwracalna, zalecamy sprawdzenie kopii zapasowych przed kontynuowaniem.
Przechowywanie plików pamięci podręcznej
BigBlueButton przechowuje różne pliki pamięci podręcznej i dziennika. Ogólny okres przechowywania tych plików można skonfigurować w /etc/cron.daily/bigbluebutton.
historyto okres przechowywania prezentacji, pamięci podręcznych Red5, pamięci podręcznej Kurento i pamięci podręcznej Freeswitch w dniachunrecorded_daysokresy przechowywania nagrań ze spotkań, dla których nie ustawiono znaczników nagrywania (oczekiwania użytkownika: Nie zostały zarejestrowane)published_daysokres przechowywania surowych danych nagrań, jeżeli zostały one opublikowane. Aby to wyłączyć, należy skomentować linięremove_raw_of_published_recordings.
Aby bezpośrednio usunąć te pamięci podręczne, zobacz 'Skrypt po nagraniu usuwający nagrania bez żadnych znaczników nagrywania'
Logi
Ogólna rotacja logów
Jeżeli operatorzy serwerów zdecydują się na przechowywanie plików nagrań i logów, powinni znać i zmienić:
- czas przechowywania plików nagrań
/etc/cron.daily/bigluebutton, przy użyciu ustawienialog_history - ustawienia logrotate w
/etc/logrotate.d/(bbb-record-core.logrotate|bbb-webrtc-sfu.logrotate), które obracają kłody w/var/log/bbb-webrtc-sfu/co 7 dni i/var/log/bigbluebutton/(bbb-rap-worker.log|sanity.log)co 8 dni - ustawienia logrotate w
/usr/share/bbb-web/WEB-INF/classes/logback.xml, które codziennie zmieniają dzienniki o/var/log/bigbluebutton/bbb-web.logi przechowują je przez 14 dni
Rejestrowanie BigBlueButton
BigBlueButton rejestruje wszystkie interakcje z pokojami, tj. kiedy zostały utworzone, kto dołączył i kiedy opuścił /var/log/bigbluebutton/bbb-web.log
Szczegółowość logów aplikacji podstawowej można zmniejszyć, ustawiając
appLogLevel=Error
/etc/bigbluebutton/bbb-web.properties
i dostosowując indywidualne ustawienia w /usr/share/bbb-web/WEB-INF/classes/logback.xml.
Aby uniknąć rejestrowania adresów IP w bbb-webrtc-sfu, ustaw
level: error w
/usr/local/bigbluebutton/bbb-webrtc-sfu/config/default.yml.
Te pliki zawierają również poziomy dziennika dotyczące użytkowania czatu i wiadomości czatu:
- /etc/bbb-apps-akka/application.conf i /etc/bbb-apps-akka/logback.xml
nginx
Domyślnie BigBlueButton ma włączone „dzienniki pełnego dostępu” dla nginx. Dotyczy to adresów IP użytkowników, nazw użytkowników, dołączonych spotkań itp.
Można to wyłączyć, przełączając poziom logowania na „ERROR” tylko w /etc/nginx/sites-available/bigbluebutton i /etc/nginx/nginx.conf:
error_log /var/log/nginx/bigbluebutton.error.log;
access_log /dev/null;
freeswitch
Domyślna instalacja FreeSWITCH domyślnie loguje się z poziomem logowania DEBUG. Można to zmienić w /etc/bbb-fsesl-akka/application.conf i /etc/bbb-fsesl-akka/logback.xml. Domyślna konfiguracja przechowuje nazwy użytkowników, połączone sesje i znaczniki czasu.
Integracje
TURN serwer
BigBlueButton używa serwera TURN do przechodzenia przez NAT. Domyślnie serwer STUN z freeswitch.org jest skonfigurowany dla BigBlueButton. Możesz skonfigurować własny serwer TURN/STUN i skonfigurować go w /usr/share/bbb-web/WEB-INF/classes/spring/turn-stun-servers.xml.
Greenlight
Greenlight zawsze rozpoczyna nowe pokoje z nagraniem=true
Domyślnie, gdy Greenlight tworzy konferencję, wartość 'record=true' jest przekazywana do BigBlueButton. Konferencje te zostaną nagrane nawet jeśli przycisk nagrywania nie zostanie naciśnięty. Zobacz także: Nagranie
Rozdzielczość
Możesz wyłączyć nagrywanie globalnie w ustawieniach pokoju Greenlight dla wszystkich lub opcjonalnie dla wszystkich w ich pokoju. zobacz: pull request 1296 Alternatywnie, jeśli to konieczne, całkowicie wyłącz funkcję nagrywania w konfiguracji serwera BigBlueButton.
Greenlight nie prosi o zgodę na politykę prywatności i/lub nagrywanie sesji podczas dołączania do pokoju jako gość.
BigBlueButton nie ma funkcji zmuszającej uczestników do wyrażenia zgody na politykę prywatności lub bycia nagrywanym przed dołączeniem do pokoju. Greenlight posiada opcjonalną funkcję, którą należy włączyć w ustawieniach podstawowych: „Wymaga zgody inicjatora pokoju i uczestników na nagranie”. Dzięki temu wszyscy uczestnicy przed wejściem na konferencję otrzymają ostrzeżenie, że to pomieszczenie będzie nagrywane.
Rozdzielczość
W numerze 1163 omówiono, w jaki sposób można uwzględnić wymaganą zmianę. linia 21 dodaje zastrzeżenie. Kod można rozszerzyć o link do polityki prywatności oraz pole wyboru, które użytkownicy muszą kliknąć, aby potwierdzić, że spotkanie, do którego mają zamiar dołączyć, zostanie zarejestrowane i że wyrażą na to zgodę; Przycisk dołączania powinien być włączony tylko wtedy, gdy ten znacznik wyboru jest ustawiony.
Bardziej istotna zmiana w BigBlueButton i Greenlight polegałaby na nagrywaniu selektywnym, tj. wykluczaniu treści wideo, audio, czatów i rysunków od użytkowników, którzy nie wyrazili zgody na nagrywanie.
Greenlight zawiera nazwy użytkowników w adresach URL pokoi
W Greenlight adresy URL pokoi zawierają nazwę użytkownika właściciela, która może być również danymi prywatnymi w zależności od lokalnych przepisów. Rozwiązanie tego zależy od problemu 1057
Warunki korzystania z usługi
Greenlight obsługuje wyświetlanie warunków dla zarejestrowanych użytkowników lub po rejestracji.
Wszystkie nagrania są zawsze dostępne
Domyślnie dostępne są nagrania BigBlueButton, patrz np. numer 8505 . Dodatkowo adresy URL nagrań są łatwo przeliczalne, patrz numer 1466 i numer 9443.
Greenlight domyślnie udostępnia dwa ustawienia nagrań: publiczne, tj. nagranie jest wymienione na stronie pokoju i niepubliczne, tj. nagranie jest dostępne wyłącznie poprzez (wyliczalny) bezpośredni link.
Rozdzielczość
Greenlight można załatać, aby umożliwić bardziej precyzyjną kontrolę widoczności nagrań i publikacji. Za pomocą opcji rec_restrictions do menu rozwijanego widoczności nagrania (public/unlisted/private) dodawana jest trzecia wartość, która prowadzi do ustawienia odpowiednich metadanych nagrania (gl-listed=true/unlisted/false) w nagraniu albo w Scalelite, albo na hoście BigBlueButton.
bbb-rec-perm można następnie użyć do sprawdzenia żądań nagrań pod kątem tych metadanych, zwracając kod 403, jeśli nagranie jest ustawione jako prywatne, i zwracając nagranie, jeśli jest ustawione jako niepubliczne lub publiczne.
Logi
Logi Railsów
Domyślnie Greenlight loguje się do $GREENLIGHTDIR/logs/production.log. Usunięcie tej linii z pliku .env powoduje zachowanie dzienników, ale nie udostępnia ich hostowi okna dokowanego. Najłatwiejszym rozwiązaniem jest połączenie $GREENLIGHTDIR/logs/production.log z /dev/null
Logi nginx
Domyślnie Greenlight ma włączone logi pełnego dostępu dla nginx. Obejmuje to adresy IP użytkowników, nazwy użytkowników, dołączone spotkania itp. Można to wyłączyć, przełączając poziom logowania na „ERROR” tylko w /etc/nginx/sites-available/bigbluebutton i /etc/nginx/nginx.conf:
error_log /var/log/nginx/bigbluebutton.error.log;
access_log /dev/null;
powrót
Domyślnie przywraca logi do /var/log/coturn.log, z regularną rotacją dzienników. Ten plik dziennika zawiera adresy IP użytkowników korzystających z serwera TURN oraz używane przez nich porty. Razem z innymi dziennikami BigBlueButton umożliwia to identyfikację sesji, do których dołączyli ci użytkownicy.
coturn nie ma możliwości ograniczenia logowania. Najlepszą opcją jest tutaj połączenie
/var/log/coturn.log z /dev/null
Scalelite
Logi
Logi Nginx
Scalelite używa kontenera z uruchomionym Nginx jako frontendem, który gromadzi standardowe logi dostępu. Domyślnie Scalelite ma włączone logi pełnego dostępu dla nginx. Dotyczy to adresów IP użytkowników, nazw użytkowników, dołączonych spotkań, obserwowanych spotkań itp. Najłatwiejszym sposobem rozwiązania tego problemu jest migracja nginx do hosta, a tym samym pozbycie się Dockera.
Następnie można wyłączyć logowanie poprzez zmianę poziomu logowania na 'ERROR' w /etc/nginx/sites-available/bigbluebutton i /etc/nginx/nginx.conf:
error_log /var/log/nginx/bigbluebutton.error.log;
access_log /dev/null;
Dzienniki Scalelite-API-Container
Kontener obrazu Scalelite-API-Image (blindsidenetwks/scalelite:v1-api) rejestruje także działania użytkownika. Na przykład: Kto dołączył do którego spotkania:
{"log":"I, [<timestamp>] INFO -- : [<some_identifier>] Redirected to https://<URL>/bigbluebutton/api/join?meetingID=<meeting_ID>\u0026fullName=<name>\u0026password=<hashed_pw>... }
W wersji Scalelite 1.0.9 wprowadzono rotację logów. Są one automatycznie usuwane po jednym dniu.
Ogólne uwagi dotyczące RODO
RODO wymienia kilka ważnych kwestii, w szczególności:
- Prawo do żądania zbioru (do odczytu maszynowego) wszystkich przechowywanych prywatnych danych
- Prawo do usunięcia wszystkich danych osobowych
- Ograniczenie celu
- Minimalizacja danych
- Ograniczenie przechowywania
Powyższe stwarza wyzwania w kontekście BigBlueButton, zwłaszcza biorąc pod uwagę możliwość anonimowego łączenia pokoi. Oznacza to, że operator może nie być w stanie łatwo zidentyfikować wszystkich przechowywanych prywatnych informacji powiązanych z użytkownikiem, nawet jeśli są to dane osobowe/prywatne, np. nagrania z kamery internetowej pokoju, do którego dołączono jako gość pod pseudonimem .
W wielu przypadkach najłatwiejszym rozwiązaniem jest w ogóle nie przechowywać żadnych prywatnych danych użytkowników. Obejmuje to zmniejszenie poziomu rejestrowania lub wyłączenie rejestrowania (log do /dev/null), przechowywanie danych tymczasowych wyłącznie w pamięci (tmpfs) zamiast na dysku oraz wyłączenie funkcji nagrywania sesji. Nawet po wykonaniu tej czynności serwer BigBlueButton nadal przetwarza wszystkie te dane. Dlatego zazwyczaj konieczna jest umowa powierzenia przetwarzania danych od firmy hostingowej, a także należy przekazać użytkownikom usługi informacje o przetwarzaniu danych prywatnych.