3rd party anonymization functions. Java API

Overview

“Data Protection and Security Toolkit API” is a library for Atlassian plugins "Data Protection and Security Toolkit for Jira" and "Data Protection and Security Toolkit for Confluence" (https://marketplace.atlassian.com/apps/1218962/gdpr-dsgvo-and-security-for-jira?hosting=server&tab=overview, https://marketplace.atlassian.com/apps/1219041/gdpr-dsgvo-and-security-for-confluence?hosting=server&tab=overview). The library provides the API for integration with 3rd party apps and plugins for Jira and Confluence. Through this integration and using the library, other plugins may extend anonymization functionality and clean-up some special content during the "User Anonymization process".

Anonymization architecture

Steps to build an integration

  1. Add “gdpr-api” library to pom.xml

  2. Implement IGDPRAnonymizer


pom.xml example:

<dependencies> <dependency> <groupId>de.actonic</groupId> <artifactId>gdpr-api</artifactId> <version>1.0.2</version> </dependency> </dependencies> ... <Export-Package> de.actonic.gdpr.api.*, </Export-Package> ... <DynamicImport-Package> de.actonic.jira.gdpr.api.*;resolution:="optional", </DynamicImport-Package>


Anonymization function implementation example:

package com.other.test.testGDPRApiPlugin; import java.util.*; import com.atlassian.jira.component.*; import de.actonic.gdpr.api.*; import org.springframework.beans.factory.*; import org.springframework.stereotype.*; @Component public class Anonymizer implements IGDPRAnonymizer, InitializingBean, DisposableBean { ... // class constructor and some other unnecessary parts are skipped ... @Override public List<GDPRAnonymizeObject> search(List<String> sourceUserKeys) { List<GDPRAnonymizeObject> anonymizeObjects = new ArrayList<>(); for (String sourceUserKey : sourceUserKeys) { ApplicationUser applicationUser = userManager.getUserByKey(sourceUserKey); if (applicationUser != null) { Collection<PortalPage> portalPages = portalPageManager.getAllOwnedPortalPages(applicationUser); for (PortalPage portalPage : portalPages) { anonymizeObjects.add(new GDPRAnonymizeObject(portalPage.getName(), "Dashboard", "/secure/Dashboard.jspa?selectPageId=" + portalPage.getId())); } } } return anonymizeObjects; } @Override public List<GDPRAnonymizeObject> anonymize(List<String> sourceUserKeys, String targetUserKey) { // here you anonymize all data by incoming parameters and return the result return null; } @Override public void stop() { // here you interrupt the search/anonymization process } @Override public String getPluginName() { return "Plugin #2"; } @Override public String getAnonymizerName() { return "User actions anonymizer"; } @Override public void afterPropertiesSet() throws Exception { IGDPRAnonymizeService anonymizeService = ComponentAccessor.getOSGiComponentInstanceOfType(IGDPRAnonymizeService.class); if (anonymizeService != null) { anonymizeService.addAnonymizer(this); } } @Override public void destroy() throws Exception { IGDPRAnonymizeService anonymizeService = ComponentAccessor.getOSGiComponentInstanceOfType(IGDPRAnonymizeService.class); if (anonymizeService != null) { anonymizeService.removeAnonymizer(this); } } }

How to check the integration

  1. Install the latest version of Data Protection and Security Toolkit for Jira (https://marketplace.atlassian.com/apps/1218962/gdpr-dsgvo-and-security-for-jira?hosting=server&tab=overview)

  2. Install your app to the same server

  3. Open the “Data Cleaner” module https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner.jspa

  4. Find your app in the “Anonymization post-functions” list

  5. Try to search some personal content for a user, who is working with your app (check that your post function was selected)

  6. Look at the search results at https://%your-jira-server%/jira/secure/admin/actonic-gdpr-data-cleaner-results.jspa?templateId=-1

In case of any difficulties, please contact us by https://actonic.atlassian.net/servicedesk/customer/portal/8