parse-community / parse-server

Parse Server for Node.js / Express
https://parseplatform.org
Apache License 2.0
20.85k stars 4.78k forks source link

GDPR compliance #5378

Open mtrezza opened 5 years ago

mtrezza commented 5 years ago

TL;DR: This feature request describes data access and modification logging which is a legal requirement that presumably 99% of app providers using Parse Server / Parse Dashboard currently fail to meet.


Is your feature request related to a problem? Please describe. Parse Server offers data access and manipulation via its Parse Dashboard. For the dashboard to be usable in a business (or even "hobby developer") environment, Parse Server needs to comply with GDPR if it handles data of "EU users"*.

The dashboard is the main (and only?) tool of Parse Server for quick and easy manual data view and manipulation. It would be beneficial for many users if the dashboard (in connection with parse server) complied with GDPR.

Describe the solution you'd like A mechanism that logs:

The easiest way would probably be to add a logging mechanism to the Parse Dashboard alone, without any modification of Parse Server, if that's possible. It should store the logs in a separate file, so these logs files can be easily dealt with according to archiving requirement of GDPR (audit-proof, etc).

Describe alternatives you've considered Not making the dashboard GRPD compliant would render it legally unusable for aforementioned data. Alternatives:

Additional context

acinader commented 5 years ago

I assume that doing this at the data level (i.e. mongo logging) would not be adequate cause we don't have the user associated with the changes.

Adding to the dashboard seems reasonable to me. Would you be willing to open a pr to get it started?

mtrezza commented 5 years ago

Logging on DB level was just meant as alternative if someone decides to not use Parse Dashboard and wants to be GDPR compliant.

Without committing to a PR at this point, I would like to start a conceptual discussion about how / where to implement it. So we can estimate the effort and someone can pick it up.

Suggestion 1 - dashboard centric

  1. parse server is initialized with parameter for log file path; can be set as environment variable
  2. dashboard logs commands it sends to the server at a central point
  3. dashboard calls function in parse server to log command
  4. parse server writes log entry to a log file as set in the parse server

Suggestion 2 - server centric

We could leverage the client key and instruct parse server to log commands of selected clients. IIRC each parse client SDK has a client key property based on which the server could identify clients and determine whether to log the command.

var api = new ParseServer({
    log: {
        clients: [
            {
                key: "parseDashboard",
                logging: true
            },
            {
                key: "customAdminClient",
                logging: true
            }
        ]
    }
});

I prefer suggestion 2.

mrmarcsmith commented 5 years ago

Even for apps that don’t require GDPR I think this is a awesome idea. I don’t have a ton of time to help with a PR but would love to weigh in on the conceptual. I would much rather see the “server centric” solution than the parse dashboard one aswell. “In theory” those with dashboard access could potentially retrieve the master key and cercumvent the dashboard logging all together. Where as, when it’s baked into parse server there isn’t any way around the logging.

stale[bot] commented 5 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

mtrezza commented 5 years ago

don't close, open issue

stale[bot] commented 5 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

mtrezza commented 5 years ago

don't close, still relevant

TomWFox commented 5 years ago

It won’t be closed now I’ve added the ‘help wanted’ label 🙂

mtrezza commented 4 years ago

Stumbled across Parse Auditor, which addresses this issue. Not sure yet whether it is fully GDRP compliant.

https://github.com/Blackburn-Labs/parse-auditor

mtrezza commented 3 years ago

Related: https://github.com/netreconlab/parse-hipaa

dblythy commented 2 years ago

Is this in progress at all?

RahulLanjewar93 commented 1 year ago

Stumbled across Parse Auditor, which addresses this issue. Not sure yet whether it is fully GDRP compliant.

https://github.com/Blackburn-Labs/parse-auditor

This package overwrites the triggers, which is not feasible. So I created another package that pretty much does the same. It's not GDPR Compliant but if someone wants to use it here's the link https://github.com/RahulLanjewar93/parse-audit-log

Suggestions are appreciated thanks!