From 2465beae7a4788d63fb1b342fa64a20a8bfc35c6 Mon Sep 17 00:00:00 2001 From: Niko Strijbol Date: Wed, 27 Nov 2019 14:30:30 +0100 Subject: [PATCH] Add first draft of privacy policy --- Rules | 11 + .../assets/stylesheets/includes/blogpost.scss | 33 --- .../assets/stylesheets/includes/privacy.scss | 17 ++ content/assets/stylesheets/includes/toc.scss | 35 +++ content/assets/stylesheets/main.scss | 2 + content/privacy.erb | 211 ++++++++++++++++++ content/privacy/12urenloop.md | 5 + content/privacy/blokmap.md | 10 + content/privacy/fathom.md | 6 + content/privacy/fk-enrolment.md | 4 + content/privacy/g2.md | 4 + content/privacy/gamification.md | 10 + content/privacy/gandalf.md | 6 + content/privacy/gitlab.md | 7 + content/privacy/hydra.md | 6 + content/privacy/lana.md | 4 + content/privacy/mattermost.md | 10 + content/privacy/saruman.md | 5 + content/privacy/website.md | 11 + layouts/blogpost.md | 2 +- layouts/generic.erb | 2 +- layouts/partials/_privacy.erb | 6 + layouts/partials/_up.erb | 4 + lib/helpers/privacy.rb | 7 + lib/helpers_.rb | 1 + 25 files changed, 384 insertions(+), 35 deletions(-) create mode 100644 content/assets/stylesheets/includes/privacy.scss create mode 100644 content/assets/stylesheets/includes/toc.scss create mode 100644 content/privacy.erb create mode 100644 content/privacy/12urenloop.md create mode 100644 content/privacy/blokmap.md create mode 100644 content/privacy/fathom.md create mode 100644 content/privacy/fk-enrolment.md create mode 100644 content/privacy/g2.md create mode 100644 content/privacy/gamification.md create mode 100644 content/privacy/gandalf.md create mode 100644 content/privacy/gitlab.md create mode 100644 content/privacy/hydra.md create mode 100644 content/privacy/lana.md create mode 100644 content/privacy/mattermost.md create mode 100644 content/privacy/saruman.md create mode 100644 content/privacy/website.md create mode 100644 layouts/partials/_privacy.erb create mode 100644 layouts/partials/_up.erb create mode 100644 lib/helpers/privacy.rb diff --git a/Rules b/Rules index 7c6eb3d..08cb94d 100644 --- a/Rules +++ b/Rules @@ -135,6 +135,17 @@ compile '/**/*.ics' do filter :erb end +# +# PRIVACY +# + +compile '/privacy/*' do + filter :kramdown + + # Don't write out the privacy items themselves for now + nil +end + # # REPORTS # diff --git a/content/assets/stylesheets/includes/blogpost.scss b/content/assets/stylesheets/includes/blogpost.scss index 7072df6..9b06104 100644 --- a/content/assets/stylesheets/includes/blogpost.scss +++ b/content/assets/stylesheets/includes/blogpost.scss @@ -1,36 +1,3 @@ -.blogpost { - position: relative; - - #table-of-contents { - @include tablet { - position: absolute; - left: 100%; - } - - @include mobile { - text-align: center; - } - - #markdown-toc { - @extend .menu-list; - - &, ul { - margin: 0; - list-style: none; - } - } - } -} - -$sel: ''; -@for $i from 1 through 9 { - $sel: if($i == 1, "ul", selector-nest($sel, "ul")) !global; - - #markdown-toc.toc-depth-#{$i} #{$sel} { - display: none; - } -} - @keyframes lineAnimation { to { width: 80px; diff --git a/content/assets/stylesheets/includes/privacy.scss b/content/assets/stylesheets/includes/privacy.scss new file mode 100644 index 0000000..2cba7ce --- /dev/null +++ b/content/assets/stylesheets/includes/privacy.scss @@ -0,0 +1,17 @@ +.example { + @extend .box; + &:before { + content: "Voorbeeld. "; + font-weight: bold; + } +} + +.to-top { + & a { + font-size: 0.8rem; + } + & hr { + margin-bottom: 0 + } + margin-bottom: 1.5rem; +} \ No newline at end of file diff --git a/content/assets/stylesheets/includes/toc.scss b/content/assets/stylesheets/includes/toc.scss new file mode 100644 index 0000000..252f50d --- /dev/null +++ b/content/assets/stylesheets/includes/toc.scss @@ -0,0 +1,35 @@ +// CSS related to the TOC + +#table-of-contents { + @include tablet { + position: absolute; + left: 100%; + } + + @include mobile { + text-align: center; + } + + #markdown-toc { + @extend .menu-list; + + &, ul { + margin: 0; + list-style: none; + } + } +} + +$sel: ''; +@for $i from 1 through 9 { + $sel: if($i == 1, "ul", selector-nest($sel, "ul")) !global; + + #markdown-toc.toc-depth-#{$i} #{$sel} { + display: none; + } +} + +// Must be applied to the element containing the toc +.toc-container { + position: relative; +} \ No newline at end of file diff --git a/content/assets/stylesheets/main.scss b/content/assets/stylesheets/main.scss index d9f94e9..9783375 100644 --- a/content/assets/stylesheets/main.scss +++ b/content/assets/stylesheets/main.scss @@ -40,3 +40,5 @@ body { @import "includes/navbar"; @import "includes/search"; @import "includes/about"; +@import "includes/privacy"; +@import "includes/toc"; \ No newline at end of file diff --git a/content/privacy.erb b/content/privacy.erb new file mode 100644 index 0000000..6ce3d57 --- /dev/null +++ b/content/privacy.erb @@ -0,0 +1,211 @@ +--- +title: Privacybeleid +narrow_page: true +typography: true +toc: true +--- +

Privacybeleid

+ +
+ +

Laatst bijgewerkt op . +

+ +

Zeus WPI biedt een waaier aan diensten en projecten aan aan haar leden en het algemene publiek. Met dit privacybeleid wilt ze aangeven hoe en waarvoor ze data verzamelt.

+ +

Opbouw

+ +

Het privacybeleid is opgebouwd uit twee grote delen: een algemeen deel en een project-specifiek deel. Het eerste deel is het eigenlijk beleid, en legt algemeen uit welke data Zeus verzamelt, waarom ze dat doet en wat ze met de verzamelde data doet. Bepaalde projecten hebben echter uitzonderingen of vergen meer uitleg. Dit komt in deel twee van het privacybeleid, dat per project bepaald hoe het algemene beleid van toepassing is, indien nodig. Staat een project niet in deel twee, dan is uiteraard deel een nog steeds van toepassing.

+ +

Wanneer en waar is dit privacybeleid van toepassing?

+ +

Zeus WPI stelt een waaier aan projecten beschikbaar aan haar leden en het publiek in het algemeen. Daarbovenop worden de diensten en projecten van Zeus ook door derden gebruikt.

+ +

Zeus als dataverantwoordelijke

+ +

Voor het aanbieden van haar projecten, verzamelt Zeus WPI data. In dit geval treedt Zeus op als "Verwerker" in de terminologie van de AVG. Dit betekent dat Zeus de data zelf verzamelt, of opdracht geeft aan derden om de data te verzamelen.

+ +
+ Voorbeelden van projecten waarbij Zeus de dataverantwoordelijke is, zijn Haldis, Tab, Hydra, enz. +
+ +

Zeus als verwerker

+ +

Zeus biedt niet alleen projecten aan aan haar leden en andere personen, maar biedt ook diensten aan aan derden. In dat geval dient u zich te wenden tot het privacybeleid van de derde in wiens naam Zeus de data verwerkt. Zeus treedt dan op als "Verwerker".

+ +
+ Zeus kan de websites van andere verenigingen hosten op haar servers. Dan is niet het privacybeleid van Zeus van toepassing, maar dat van de vereniging wier website bij Zeus gehost wordt. +
+ +

Als Zeus optreedt als verwerker, zal Zeus in het algemeen slechts de absoluut noodzakelijke data verzamelen voor de integriteit en goede werking van haar systemen in stand te houden verzamelen. Meer informatie kan u krijgen bij de verantwoordelijke vereniging of personen die gebruik maken van de diensten van Zeus.

+ +

Wie heeft toegang tot de verzamelde data?

+ +

In de eerste plaats heeft het bestuur van Zeus WPI toegang tot de gegevens, en in het bijzonder hebben de systeemadministrators toegang tot de data. Het bestuur beperkt zijn inzage in de gegevens tot het strikt noodzakelijke om zijn mandaat te vervullen.

+ +
+ De systeemadministrators hebben toegang tot alle gegevens, daar zij toegang hebben tot alle infrastructuur van Zeus. Uiteraard houden zij zich niet bezig met het bekijken van de verzamelde data; dit gebeurt enkel indien nodig, zoals wanneer een server crasht. +
+ +

Ook kunnen ontwikkelaars van een bepaald project toegang krijgen tot de data van dat project, indien dit nodig zou blijken voor de ontwikkeling van het project. Het bestuur, en de systeemadministrators in het bijzonder, kijken er op toe dat ontwikkelaars van projecten nooit meer toegang hebben dan nodig en dat de data niet misbruikt wordt.

+ +
+ De ontwikkelaars van Hydra krijgen toegang de API-server en kunnen zo aan de serverlogs. +
+ +

Welke data worden verzameld en waarvoor worden ze gebruikt?

+ + Zeus verzamelt vier grote categorieën van data. + +

Administratieve gegevens

+ +

Zeus houdt een reeks administratieve gegevens bij over haar leden, zoals vereist door de statuten of om de goede werking van de vereniging te bewerkstelligen. Onder deze data valt onder meer:

+ + + +

Deze gegevens worden door u aan Zeus verstrekt op het moment dat u zich inschrijft.

+ +

Indien u gebruik maakt van het Google Formulier voor uw inschrijving, worden de gegevens die u daar invult, opgeslagen in Google Drive. Deze zijn onderhevig aan het privacybeleid van Google.

+ +

Bij het opheffen van het lidmaatschap worden de data niet automatisch verwijderd, vanwege het ontbreken van een technische oplossing. Indien gewenst, kan u zich wenden tot de vereniging voor een manuele verwijdering van uw administratieve gegevens.

+ + <%= render '/partials/_up.erb' %> +

Technische gegevens

+ +

Hieronder vallen de data nodig om de goede werking van de projecten te garanderen. Concreet betekent de serverlogs. Dit zijn logboeken van de verzoeken die gestuurd worden naar een van de servers van Zeus. In de logboeken zitten volgende data:

+ + + +

Deze informatie wordt gebruikt om de toestand van de server in de gaten te houden, teneinde de dienstverlening van de server te garanderen. Zo kunnen we de belasting van de server in de gaten houden, misbruik detecteren en foute verzoeken (bv. missende webpagina's) verhelpen.

+ +
Een typische gebeurtenis in het logboek ziet er als volgt uit:
+

+ 94.XXX.XXX.XXX - [11/Sep/2019:11:18:59 +0200] "GET /api/2.0/association/logo/js.png HTTP/1.1" 200 34464 "-" "okhttp/3.12.2" +

+

Deze informatie zegt ons:

+
    +
  • Het IP-adres van de gebruiker (hier onherkenbaar gemaakt).
  • +
  • Het tijdstip waarop het verzoek naar de API gestuurd werd.
  • +
  • Technische informatie over het verzoek: wat is er opgevraagd, welk protocol is er gebruikt, hoeveel bytes zijn er verstuurd om aan het verzoek te voldoen.
  • +
  • De + useragent van het verzoek: welk apparaat stuurde het verzoek en waarmee. In dit voorbeeld gaat het bijvoorbeeld over de Android-app. +
  • +
+

Specifiek vraagt dit verzoek het logo van een studentenvereniging op, meer bepaald + dit logo.

+
+ +

Deze data worden niet automatisch verwerkt; ze dienen om manueel de oorzaken van problemen te vinden. Serverlogs worden onbeperkt bijgehouden.

+ + <%= render '/partials/_up.erb' %> +

Projectdata

+ +

Veel projecten hebben data nodig om te kunnen functioneren, dus verzameld Zeus die uiteraard ook. Vaak zijn dit gegevens die u zelf ingeeft of laat genereren door het project dat u gebruikt.

+ +
+ Als u bijvoorbeeld gebruik maakt van Haldis, moet Zeus opslaan wat u besteld hebt, of Haldis zal niet werken. +
+ +

Afhankelijk van de applicatie is het niet altijd mogelijk om de gegevens te verwijderen of aanpassen zonder de integriteit of goede werking van het project op de helling te zetten. In dat geval probeert Zeus de data zoveel mogelijk te anonimiseren als u een verwijderverzoek stuurt of zoveel mogelijk data aan te passen als u een aanpassingsverzoek stuurt.

+ +
+ Bij Tab kan u bijvoorbeeld geen transacties laten verwijderen, maar wel anonimiseren. +
+ + <%= render '/partials/_up.erb' %> +

Videobeelden

+ +

Ter beveiliging van de kelder van Zeus hangt er een camera "Cammie" in de kelder. De beelden van deze camera worden live uitgezonden op de website van de vereniging.

+ + TODO: opgelsagen? + +

Bij het inschrijven hebben alle leden zich akkoord verklaard om opgenomen te worden door Cammie als zij zich in de kelder begeven.

+ +

Overzicht der projecten

+ +

Project-specifieke bepalingen

+ +

Deze projecten hebben meer uitleg of hebben uitzonderingen.

+ + <% @responsible = privacy_projects("responsible") %> + <% @responsible.each do |project| %> + <%= render '/partials/_privacy.erb', project: project %> + <%= render '/partials/_up.erb' %> + <% end %> + +

Niet-gebruikte projecten

+ +

Deze projecten worden niet (meer) gebruikt door Zeus. Indien u deze toch gebruikt moet u zich wenden tot degene die de projecten gebruiken.

+ + + + <%= render '/partials/_up.erb' %> +

Projecten/diensten als verwerker

+ +

Zeus werkt mee aan volgende projecten of diensten als verwerker, zoals bepaald hierboven.

+ + + + <%= render '/partials/_up.erb' %> +

Projecten in ontwikkeling

+ +

Deze projecten zijn nog in ontwikkeling. Het is u verboden persoonlijke data aan deze projecten mee te delen. Indien u dit toch zou doen, dient u ons zo snel mogelijk te contacteren, zodat de data verwijderd kunnen worden.

+ + + +
diff --git a/content/privacy/12urenloop.md b/content/privacy/12urenloop.md new file mode 100644 index 0000000..05d9760 --- /dev/null +++ b/content/privacy/12urenloop.md @@ -0,0 +1,5 @@ +--- +name: 12urenloop +status: processor +link: https://12urenloop.be/ +--- diff --git a/content/privacy/blokmap.md b/content/privacy/blokmap.md new file mode 100644 index 0000000..a9970e8 --- /dev/null +++ b/content/privacy/blokmap.md @@ -0,0 +1,10 @@ +--- +name: Blokmap +status: responsible +--- + +TODO + +- Facebook button +- Google Analytics +- Mapbox \ No newline at end of file diff --git a/content/privacy/fathom.md b/content/privacy/fathom.md new file mode 100644 index 0000000..fd64765 --- /dev/null +++ b/content/privacy/fathom.md @@ -0,0 +1,6 @@ +--- +name: Fathom +status: responsible +--- + +TODO \ No newline at end of file diff --git a/content/privacy/fk-enrolment.md b/content/privacy/fk-enrolment.md new file mode 100644 index 0000000..f025204 --- /dev/null +++ b/content/privacy/fk-enrolment.md @@ -0,0 +1,4 @@ +--- +name: FK Enrolment +status: external +--- \ No newline at end of file diff --git a/content/privacy/g2.md b/content/privacy/g2.md new file mode 100644 index 0000000..f271378 --- /dev/null +++ b/content/privacy/g2.md @@ -0,0 +1,4 @@ +--- +name: G2 +status: development +--- diff --git a/content/privacy/gamification.md b/content/privacy/gamification.md new file mode 100644 index 0000000..b53063c --- /dev/null +++ b/content/privacy/gamification.md @@ -0,0 +1,10 @@ +--- +name: Gamification +status: responsible +--- + +Met Gamification wordt het project bedoeld dat beschikbaar is via https://zeus.ugent.be/game. + +- De website gebruikt de Google Charts-api voor het tonen van grafieken. Hierop is het privacybeleid van Google Charts van toepassing, dat [hier](https://developers.google.com/chart/interactive/docs/security_privacy) beschikbaar is. Zoals ook vermeld op die laatstgenoemde pagina, is het [algemene privacybeleid](https://policies.google.com/privacy) van Google van toepassing. +- De applicatie verzamelt automatisch data vanop Github, zoals commits en issues. Deze data worden verzameld van uit de repositories van Zeus WPI. Deze gegevens zijn uiteraard essentieel voor de werking van Gamification. Daar de gegevens op geautomatiseerde wijze van Github gehaald worden, zijn verwijder- of aanpasverzoeken niet mogelijk. +- Bij het bezoeken van Gamification worden avatars geladen van Github. Hierop is het [privacybeleid van Github](https://help.github.com/en/github/site-policy/github-privacy-statement) van toepassing. \ No newline at end of file diff --git a/content/privacy/gandalf.md b/content/privacy/gandalf.md new file mode 100644 index 0000000..c19c896 --- /dev/null +++ b/content/privacy/gandalf.md @@ -0,0 +1,6 @@ +--- +name: Gandalf +status: external +--- + +TODO: host Zeus dit nog? \ No newline at end of file diff --git a/content/privacy/gitlab.md b/content/privacy/gitlab.md new file mode 100644 index 0000000..8189003 --- /dev/null +++ b/content/privacy/gitlab.md @@ -0,0 +1,7 @@ +--- +name: Gitlab +status: responsible +--- + +- Data die je ingeeft +- Wordt niets mee gedaan \ No newline at end of file diff --git a/content/privacy/hydra.md b/content/privacy/hydra.md new file mode 100644 index 0000000..618da76 --- /dev/null +++ b/content/privacy/hydra.md @@ -0,0 +1,6 @@ +--- +name: Hydra +status: responsible +--- + +Dit privacybeleid is niet van toepassing op Hydra, dat zijn eigen [privacybeleid](https://hydra.ugent.be/privacy-policy.html) heeft. diff --git a/content/privacy/lana.md b/content/privacy/lana.md new file mode 100644 index 0000000..80938c0 --- /dev/null +++ b/content/privacy/lana.md @@ -0,0 +1,4 @@ +--- +name: Lana +status: external +--- \ No newline at end of file diff --git a/content/privacy/mattermost.md b/content/privacy/mattermost.md new file mode 100644 index 0000000..d79c994 --- /dev/null +++ b/content/privacy/mattermost.md @@ -0,0 +1,10 @@ +--- +name: Mattermost +status: responsible +--- + +Bij Mattermost is het [standaardprivacybeleid](https://github.com/mattermost/mattermost-server/blob/master/build/PRIVACY_POLICY.md) van een zelf-gehoste Mattermost-applicatie van toepassing. + +Op Mattermost kunnen berichten in twee categorieën ingedeeld worden: openbare berichten en private berichten. Onder private berichten worden alle berichten in private gesprekken of besloten kanalen verstaan. Berichten in openbare kanalen vallen onder openbare berichten. + +Daar de private berichten mogelijk een gevoelig karakter hebben, worden deze berichten standaard na een termijn van 1 jaar gewist. U kan een uitzondering bekomen op deze standaardtermijn door contact op te nemen met de systeemadministrators van Zeus. diff --git a/content/privacy/saruman.md b/content/privacy/saruman.md new file mode 100644 index 0000000..e8c44b3 --- /dev/null +++ b/content/privacy/saruman.md @@ -0,0 +1,5 @@ +--- +name: Saruman +status: external +link: https://12urenloop.be/ +--- \ No newline at end of file diff --git a/content/privacy/website.md b/content/privacy/website.md new file mode 100644 index 0000000..3565dba --- /dev/null +++ b/content/privacy/website.md @@ -0,0 +1,11 @@ +--- +name: Website +status: responsible +--- + +De website van Zeus verzamelt bijkomende data: + +- De website laadt bibliotheken via een content delivery network van derden, MaxCDN. Zie [hun privacybeleid](https://www.bootstrapcdn.com/privacy-policy/) (Engels). +- Bezoekersstatistieken worden bijgehouden met Fathom, dat Zeus zelf host. Zie [Fathom](#fathom) voor een overzicht van de verzamelde gegevens en waarvoor ze gebruikt worden. +- Op de startpagina wordt data van Gamification geladen, zie [Gamification](#gamification). +- Bepaalde pagina's over evenementen bevatten kaarten van OpenStreetMaps. Zie [hun privacybeleid](https://wiki.osmfoundation.org/wiki/Privacy_Policy) (Engels). diff --git a/layouts/blogpost.md b/layouts/blogpost.md index a2aa3e5..9e62a23 100644 --- a/layouts/blogpost.md +++ b/layouts/blogpost.md @@ -1,4 +1,4 @@ -
+
<% if item[:toc] %>