Skip to content

Generating a Data Map

Fides is capable of exporting a data map of your resources to generate an Article 30-compliant Record of Processing Activities (RoPA). This guide will walk through generating a mock RoPA using predefined resources included in the Fides repository.

To follow along, ensure you have the Fides repository cloned and Fides installed.

Export the Demo Resources

First, ensure fides is running with nox -s dev.

To push and export the provided demo_resources, run the following commands:

fides push demo_resources/
fides export datamap --output-dir demo_resources/

This will export a data map to the demo_resources/ directory.

Organization

The header block at the top of a data map is composed of properties found in the Organization resource. In a production deployment, this would be composed of publicly available information for your company/organization, but has been pre-populated here to allow exploration.

Organization Contact Info

The newly-generated data map is a direct result of the provided Organization resource manifest (demo_resources/demo_organization.yml):

organization:
  - fides_key: default_organization
    name: Demo Organization
    description: An e-commerce organization
    security_policy: https://ethyca.com/privacy-policy/
    controller:
      name: Con Troller
      address: 123 demo street, New York, NY, USA
      email: controller@demo_company.com
      phone: +1 555 555 5555
    data_protection_officer:
      name: DataPro Tection
      address: 123 demo street, New York, NY, USA
      email: dpo@demo_company.com
      phone: +1 555 555 5555
    representative:
      name: Rep Resentative
      address: 123 demo street, New York, NY, USA
      email: representative@demo_company.com
      phone: +1 555 555 5555

Each of controller, data_protection_officer, and representative are composed of Contact Detail properties populated in the exported data map.

Additionally, the link to the security policy of an organization can be populated from the Organization resource's security_policy field.

Dataset

The Dataset is primarily used to provide a list of Data Categories which populate the data map. Additional properties can optionally be applied for retention and third_country_transfers.

Demo Dataset Properties

The newly-generated data map is a direct result of the provided Dataset resource manifest (demo_resources/demo_dataset.yml):

dataset:
- fides_key: demo_users_dataset
  organization_fides_key: default_organization
  name: Demo Users Dataset
  description: Data collected about users for our analytics system.
  meta: null
  data_categories: []
  data_qualifiers:
  - aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
  retention: "30 days after account deletion"
  third_country_transfers:
    - GBR
    - CAN
  collections:
  - name: users
    description: User information
    data_categories: []
    data_qualifiers:
    - aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
    fields:
    - name: created_at
      description: User's creation timestamp
      data_categories:
      - system.operations
      data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified

    ...

data_categories and retention can be set at any/all of the Dataset, DatasetCollection, and DatasetField levels.

third_country_transfers should be set at the dataset level.

Any Datasets referenced by a System will have this information included as rows of your data map.

System

The System contains the remainder of the attributes on the initial data map.

Each populated property is referenced directly from an associated label in fides_resources/demo_system.yml:

Data Map LabelResource LabelDescription
Fides Datasetdataset_referencesUsed to join dataset(s) to the system.
Fides SystemnameThe name defined at the top level of the system.
Department or Business Functionadministering_departmentSet at the top level of the system.
Purpose of Processingdata_useThe data_use defined in the privacy_declaration.
Categories of Individualsdata_subjectA data_subject list defined in the privacy_declaration.
Categories of Personal Datadata_categoriesAny data_categories set as part of the privacy_declaration (see the output for Demo Marketing System as a clear example).
Role or Responsibilitydata_responsibility_titleSet at the top level of the system.
Source of the Personal Datadataset_referencesThe Fides dataset name, if referenced by the system.
Data Protection Impact Assessmentdata_protection_impact_assessmentAll the information related to a Data Protection Impact Assessment, set at the top level of the system.

Extend the Default Taxonomy

In your initial export, several data map columns are populated with N/A. The default Fides Taxonomy can be extended to replace these empty values with additional data required as part of a Record of Processing Activities.

Example manifest updates are included in demo_resources/demo_extended_taxonomy.yml.

Auditing Resources

Your Organization and System datasets can also be assessed using the --audit flag as part of the evaluate command, which will identify how your resources could be extended to generate a compliant data map.

  1. fides evaluate demo_resources/ --audit

The output of this command will highlight any missing information:

...
"Auditing Organization Resource Compliance"
Found 1 Organization resource(s) to audit...
Auditing Organization: Demo Organization
controller for default_organization in Demo Organization is compliant
data_protection_officer for default_organization in Demo Organization is compliant
representative for default_organization in Demo Organization is compliant
security_policy for default_organization in Demo Organization is compliant
All audited organization resource(s) compliant!
----------
"Auditing System Resource Compliance"
Found 2 System resource(s) to audit...
"Auditing System: Demo Analytics System"
improve.system missing recipients in Demo Analytics System.
improve.system missing legal_basis in Demo Analytics System.
improve.system missing special_category in Demo Analytics System.
customer missing rights in Demo Analytics System.
customer missing automated_decisions_or_profiling in Demo Analytics System.
"Auditing System: Demo Marketing System"
advertising missing recipients in Demo Marketing System.
advertising missing legal_basis in Demo Marketing System.
advertising missing special_category in Demo Marketing System.
customer missing rights in Demo Marketing System.
customer missing automated_decisions_or_profiling in Demo Marketing System.
10 issue(s) were detected in auditing system completeness.

Data Use

Below is an extended Data Use example. Each of these properties is responsible for populating a field on your data map.

data_use:
  - fides_key: third_party_sharing.personalized_advertising.direct_marketing
    name: Direct Marketing
    description: User information for direct marketing purposes
    recipients:
    - Processor - marketing co.
    legal_basis: Legitimate Interests
    special_category: Vital Interests
    legitimate_interest_impact_assessment: https://example.org/legitimate_interest_assessment
    parent_key: third_party_sharing.personalized_advertising

Apply this data_subject by adding it to the Demo Marketing System in demo_system.yml.

Replace the Demo Marketing System's Data Use of advertising with the above fides_key of third_party_sharing.personalized_advertising.direct_marketing to include its information in your data map.

Data Subject

A Data Subject, shown below, can also be extended to populate your data map with additional information.

data_subject:
  - fides_key: potential_customer
    name: Potential Customer
    description: A prospective individual or other organization that purchases goods or services from the organization.
    rights:
      strategy: INCLUDE
      values:
      - Informed
      - Access
      - Rectification
      - Erasure
      - Object
    automated_decisions_or_profiling: true

Apply this data_subject by adding it to the Demo Marketing System in demo_system.yml.

Replace the Demo Marketing System's Data Subject of customer with the above fides_key of potential_customer to include its information in your data map.

Testing Your Changes

Your resulting demo_system.yml should look like the following:

system:
  - fides_key: demo_analytics_system
    name: Demo Analytics System
    description: A system used for analyzing customer behavior.
    system_type: Service
    administrating_department: Engineering
    data_responsibility_title: Controller
    third_country_transfers:
    - USA
    - CAN
    data_protection_impact_assessment:
      is_required: True
      progress: Complete
      link: https://example.org/analytics_system_data_protection_impact_assessment
    privacy_declarations:
      - name: Analyze customer behavior for improvements.
        data_categories:
          - user.provided.identifiable.contact
          - user.derived.identifiable.device.cookie_id
        data_use: improve.system
        data_subjects:
          - customer
        data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
        dataset_references:
          - demo_users_dataset

  - fides_key: demo_marketing_system
    name: Demo Marketing System
    description: Collect data about our users for marketing.
    system_type: Service
    administrating_department: Marketing
    data_responsibility_title: Processor
    privacy_declarations:
      - name: Collect data for marketing
        data_categories:
          #- user.provided.identifiable.contact # uncomment to add this category to the system
          - user.derived.identifiable.device.cookie_id
        data_use: third_party_sharing.personalized_advertising.direct_marketing
        data_subjects:
          - potential_customer
        data_qualifier: aggregated.anonymized.unlinked_pseudonymized.pseudonymized.identified
    data_use:
      - fides_key: third_party_sharing.personalized_advertising.direct_marketing
        name: Direct Marketing
        description: User information for direct marketing purposes
        recipients:
        - Processor - marketing co.
        legal_basis: Legitimate Interests
        special_category: Vital Interests
        legitimate_interest_impact_assessment: https://example.org/legitimate_interest_assessment
        parent_key: third_party_sharing.personalized_advertising
    data_subject:
      - fides_key: potential_customer
        name: Potential Customer
        description: A prospective individual or other organization that purchases goods or services from the organization.
        rights:
          strategy: INCLUDE
          values:
          - Informed
          - Access
          - Rectification
          - Erasure
          - Object
        automated_decisions_or_profiling: true

Running fides push demo_resources/ will push your changes.

Now, auditing this resource with fides evaluate demo_resources --audit will show the Demo Marketing System issues are resolved:

...
"Auditing Organization Resource Compliance"
Found 1 Organization resource(s) to audit...
Auditing Organization: Demo Organization
controller for default_organization in Demo Organization is compliant
data_protection_officer for default_organization in Demo Organization is compliant
representative for default_organization in Demo Organization is compliant
security_policy for default_organization in Demo Organization is compliant
All audited organization resource(s) compliant!
----------
"Auditing System Resource Compliance"
Found 2 System resource(s) to audit...
"Auditing System: Demo Analytics System"
improve.system missing recipients in Demo Analytics System.
improve.system missing legal_basis in Demo Analytics System.
improve.system missing special_category in Demo Analytics System.
customer missing rights in Demo Analytics System.
customer missing automated_decisions_or_profiling in Demo Analytics System.
"Auditing System: Demo Marketing System"
recipients for third_party_sharing.personalized_advertising.direct_marketing in Demo Marketing System is compliant
legal_basis for third_party_sharing.personalized_advertising.direct_marketing in Demo Marketing System is compliant
special_category for third_party_sharing.personalized_advertising.direct_marketing in Demo Marketing System is compliant
rights for potential_customer in Demo Marketing System is compliant
automated_decisions_or_profiling for potential_customer in Demo Marketing System is compliant
5 issue(s) were detected in auditing system completeness.

Generate a RoPA

Now that you have added the additional information around privacy notices and data subject rights, you can export a fresh copy of your data map:

$ fides push demo_resources/
$ fides export datamap --output-dir demo_resources/

Populated Fields

Opening the new data map will show the previously N/A columns are now populated, resulting in an Article 30-compliant RoPA for one of the two systems defined in demo_resources/.

Below is a mapping of the newly populated columns with their respective values:

Data Map LabelDescription
Purpose of ProcessingThe name of your newly extended data_use set in a Privacy Declaration.
Categories of IndividualsThe name of your newly extended data_subject set in a Privacy Declaration.
Categories of RecipientsThe recipients defined in your extended Data Use.
Article 6 Lawful Basis for Processing Personal DataThe legal_basis defined in your extended Data Use.
Article 9 Condition for Processing Special Category DataThe special_category defined in your extended Data Use.
Legitimate Interests for the ProcessingIf the legal_basis is "Legitimate Interests", the Data Use name is used to identify what the legitimate interest data use is.
Link to Record of Legitimate Interests AssessmentIf the legal_basis is "Legitimate Interests", a legitimate interests impact assessment is required and should be set using the legitimate_interest_impact_assessment property.
Rights Available to IndividualsThe rights defined in your extended Data Subject based on the strategy used.
Existence of Automated Decision-Making, Including ProfilingThe boolean value for automated_decisions_or_profiling, defined in your extended Data Subject.

Additional Learning

The provided demo_system.yml includes a second System, Demo Analytics, which can be enhanced in the same way as the Demo Marketing System.

Follow the guide to extend the taxonomy again, this time for the Demo Analytics System, to have both systems fully compliant.