Connectors

Yhdistä järjestelmiä GDPR-kontrollein

SaatavillaPerustamanifest

Mihin se on tarkoitettu ​

Connect other systems to the instance and let people connect their own accounts, with the controls that support GDPR compliance built in. Nothing leaves or enters without a recorded legal basis and a field allowlist; personal data goes out as keyed pseudonyms unless you decide otherwise, the sensitive classes stay withheld, every flow is logged without its payload, and withdrawing consent disconnects the service and purges its credentials. A processing register for Article 30 is generated from the connections. It provides technical controls; it is not legal advice or a certification, and the catalogue says for every service how much of it is implemented.

Mitä paketti tekee ja mitä ei ​

Connect external systems and let people connect their own accounts, with the controls that support GDPR compliance built in.

Mallit ​

connector_provider ​

A service or protocol a connection can use, from the catalogue shipped with obop

Lukuryhmä: connectors.user. Kirjoitusryhmä: connectors.admin.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
nametextnoneeiconnectors.userselkoisenaName of the provider
categoryselect (generic, messaging, payments, developer, calendar_contacts, automation)noneeiconnectors.userselkoisenaKind of service
maturityselect (working, generic_adapter, definition_only)noneeiconnectors.userselkoisenaHow much of it exists: working, generic adapter or definition only
engineselect (webhook_out, webhook_in, rest_pull, csv_export, none)noneeiconnectors.userselkoisenaThe generic engine that runs it
auth_kindselect (api_key, bearer_token, basic, oauth2, webhook_in, webhook_out, none)noneeiconnectors.userselkoisenaHow the connection authenticates
directionselect (inbound, outbound, both)noneeiconnectors.userselkoisenaWhether data flows in, out or both ways
max_classestextnoneeiconnectors.userselkoisenaData classes the provider may receive at most, comma separated
purposelongtextnoneeiconnectors.userselkoisenaWhat the provider is used for
descriptionlongtextnoneeiconnectors.userselkoisenaHow it works and what is tested
legal_nametextnoneeiconnectors.userselkoisenaLegal name of the recipient (sub-processor information)
countrytextnoneeiconnectors.userselkoisenaCountry of the recipient
dpa_urltextnoneeiconnectors.userselkoisenaWhere the provider publishes its data processing agreement
eu_adequateselect (yes, no, verify)noneeiconnectors.userselkoisenaWhether transfers rest on EU or adequate-country processing: yes, no or verify with the provider
verify_notelongtextnoneeiconnectors.userselkoisenaWhat to confirm with the provider before relying on these facts
allowed_hoststextnoneeiconnectors.userselkoisenaHosts the provider connects to, comma separated; empty means the connection names its own
config_fieldslongtextnoneeiconnectors.userselkoisenaSettings and credentials the provider needs, as a JSON list
setuplongtextnoneeiconnectors.userselkoisenaSetup instructions
webhook_schemeselect (standard, github, stripe)noneeiconnectors.userselkoisenaSignature scheme of inbound webhooks
oauth_scopestextnoneeiconnectors.userselkoisenaOAuth scopes requested, for OAuth providers
enabledboolnoneeiconnectors.userselkoisenaAn administrator enabled the provider
users_may_useboolnoneeiconnectors.userselkoisenaPeople may connect their own accounts with it
dpa_recordedboolnoneeiconnectors.userselkoisenaThe agreement with the provider is recorded
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)noneeiconnectors.userselkoisenaLegal basis the administrator set for this provider
legal_basis_textlongtextnoneeiconnectors.userselkoisenaText shown to people when they are asked for consent

provider_policy ​

What an administrator decided about one provider: enabled, for whom, legal basis, agreement and OAuth client

Lukuryhmä: connectors.admin. Kirjoitusryhmä: connectors.admin.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
providertextnoneeiconnectors.adminselkoisenaId of the provider this policy is for
enabledboolnoneeiconnectors.adminselkoisenaThe provider may be connected at all
users_may_useboolnoneeiconnectors.adminselkoisenaPeople with connectors.user may connect their own accounts
allowed_grouptextnoneeiconnectors.adminselkoisenaPermission group that may use it; empty means connectors.user
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)noneeiconnectors.adminselkoisenaLegal basis recorded for connections of this provider
legal_basis_textlongtextnoneeiconnectors.adminselkoisenaText shown to people when they are asked for consent
dpa_recordedboolnoneeiconnectors.adminselkoisenaA data processing agreement with the provider is in place
dpa_referencetextnoneeiconnectors.adminselkoisenaWhere the agreement is kept or its reference
default_policylongtextnoneeiconnectors.adminselkoisenaPolicy JSON that new connections of this provider start with
oauth_client_idtextinternaleiconnectors.adminselkoisenaOAuth client id you registered with the provider
oauth_client_secretlongtextsecreteiconnectors.adminpidätettyOAuth client secret; write-only, stored encrypted

connection ​

A link to one external system, with its credentials, field allowlist, policy and state

Lukuryhmä: connectors.user. Kirjoitusryhmä: connectors.user.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
nametextnoneeiconnectors.userselkoisenaA name that tells you what the connection is for
providertextnoneeiconnectors.userselkoisenaId of the provider from the catalogue
owner_scopeselect (instance, user)noneeiconnectors.userselkoisenaWhether the connection belongs to the instance or to one person
owner_usertextinternalkylläconnectors.usermaskattuThe person who owns the connection
owner_groupstextnoneeiconnectors.adminselkoisenaPermission groups the owner held when the connection was last changed
stateselect (draft, connected, paused, error, revoked)noneeiconnectors.userselkoisenaWhere the connection is: draft, connected, paused, error or revoked
configlongtextnoneeiconnectors.userselkoisenaNon-secret settings as a JSON object
credentialslongtextsecreteiconnectors.userpidätettyCredentials as a JSON object; write-only, stored encrypted, never returned
credentials_hinttextnoneeiconnectors.userselkoisenaWhether credentials are set, with at most the last four characters
oauth_tokenslongtextsecreteiconnectors.userpidätettyOAuth tokens; write-only, stored encrypted, never returned
field_allowlistlongtextnoneeiconnectors.userselkoisenaFields that may leave or be accepted, as a JSON object of model to field names; empty means nothing
policylongtextnoneeiconnectors.userselkoisenaTreatment overrides by class or field and impact-assessment acknowledgements, as JSON
rate_limit_per_hournumbernoneeiconnectors.userselkoisenaMost flows per hour
volume_cap_per_daynumbernoneeiconnectors.userselkoisenaMost records per day
retention_daysnumbernoneeiconnectors.userselkoisenaDays flow logs and runs are kept
created_attextnoneeiconnectors.userselkoisenaWhen the connection was created
last_sync_attextnoneeiconnectors.userselkoisenaWhen the connection last ran
last_errortextnoneeiconnectors.userselkoisenaSummary of the last failure, without payloads
resultlongtextnoneeiconnectors.userselkoisenaOutput of the last command (test, sync, authorisation link); never stored

The legal basis recorded for a connection: who, why, which data classes, and whether it was withdrawn

Lukuryhmä: connectors.user. Kirjoitusryhmä: connectors.user.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
connectionref → connectionnoneeiconnectors.userselkoisenaThe connection this basis is for
owner_usertextinternalkylläconnectors.usermaskattuOwner of the connection
stateselect (active, withdrawn, superseded)noneeiconnectors.userselkoisenaactive, withdrawn, or superseded by a newer record
subject_kindselect (user, party, instance)noneeiconnectors.userselkoisenaWhose basis it is: a user, a party or the instance
subjecttextinternalkylläconnectors.usermaskattuId of the party when the subject is a party
given_bytextinternalkylläconnectors.usermaskattuWho recorded it
purposelongtextnoneeiconnectors.userselkoisenaThe purpose the data is processed for
legal_basisselect (consent, contract, legitimate_interest, legal_obligation)noneeiconnectors.userselkoisenaconsent, contract, legitimate interest or legal obligation
notelongtextnoneeiconnectors.userselkoisenaExplanation; for legitimate interest the balancing test
classestextnoneeiconnectors.userselkoisenaData classes that may flow under this record, computed from the connection
fields_summarylongtextnoneeiconnectors.userselkoisenaModels and fields that may flow, computed from the connection
recorded_attextnoneeiconnectors.userselkoisenaWhen it was recorded
withdrawn_attextnoneeiconnectors.userselkoisenaWhen it was withdrawn, if it was
withdrawn_bytextinternalkylläconnectors.usermaskattuWho withdrew it

sync_run ​

One run of a connection: when, how many records, and how it ended; never the data

Lukuryhmä: connectors.user. Kirjoitusryhmä: connectors.admin.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
connectionref → connectionnoneeiconnectors.userselkoisenaThe connection that ran
owner_usertextinternalkylläconnectors.usermaskattuOwner of the connection
directionselect (inbound, outbound)noneeiconnectors.userselkoisenaWhether data went out or came in
kindselect (manual, event, pull, webhook, test)noneeiconnectors.userselkoisenaWhat started it
started_attextnoneeiconnectors.userselkoisenaWhen it started
finished_attextnoneeiconnectors.userselkoisenaWhen it ended
statusselect (running, succeeded, partial, failed, retrying, dead_letter)noneeiconnectors.userselkoisenaHow it ended
recordsnumbernoneeiconnectors.userselkoisenaRecords sent or accepted
rejectednumbernoneeiconnectors.userselkoisenaRecords refused
proposednumbernoneeiconnectors.userselkoisenaChanges held for approval
error_summarytextnoneeiconnectors.userselkoisenaWhy it failed, without payloads

data_flow_log ​

Append-only record of every flow: when, what, how many, which fields, how treated, and a hash of the payload; never the payload

Lukuryhmä: connectors.user. Kirjoitusryhmä: connectors.admin.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
connectionref → connectionnoneeiconnectors.userselkoisenaThe connection the flow belongs to
owner_usertextinternalkylläconnectors.usermaskattuOwner of the connection
attextnoneeiconnectors.userselkoisenaWhen it happened
directionselect (outbound, inbound)noneeiconnectors.userselkoisenaWhether data went out or came in
modeltextnoneeiconnectors.userselkoisenaThe model the records belong to
record_countnumbernoneeiconnectors.userselkoisenaHow many records
fields_senttextnoneeiconnectors.userselkoisenaFields that left or were accepted, comma separated
fields_deniedtextnoneeiconnectors.userselkoisenaFields the policy withheld, comma separated
masking_modetextnoneeiconnectors.userselkoisenaTreatments applied, for example pseudonymise=2;allow=1
payload_hashtextnoneeiconnectors.userselkoisenaSHA-256 of the payload after treatment
outcomeselect (released, received, refused, rejected, erased)noneeiconnectors.userselkoisenareleased, received, refused, rejected or erased
reasontextnoneeiconnectors.userselkoisenaWhy a flow was refused or a record rejected

processing_register ​

The record of processing activities (GDPR Article 30) generated from the connections; exportable as CSV

Lukuryhmä: connectors.admin. Kirjoitusryhmä: connectors.admin.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
connectionref → connectionnoneeiconnectors.adminselkoisenaThe connection this row describes
nametextnoneeiconnectors.adminselkoisenaName of the connection
statetextnoneeiconnectors.adminselkoisenaState of the connection
owner_scopetextnoneeiconnectors.adminselkoisenaInstance or user
owner_usertextinternalkylläconnectors.adminmaskattuOwner of the connection
providertextnoneeiconnectors.adminselkoisenaProvider id
recipientlongtextnoneeiconnectors.adminselkoisenaWho receives the data (legal name)
recipient_countrytextnoneeiconnectors.adminselkoisenaWhere the recipient is
purposelongtextnoneeiconnectors.adminselkoisenaPurpose of the processing
legal_basistextnoneeiconnectors.adminselkoisenaRecorded legal basis
consent_recorded_attextnoneeiconnectors.adminselkoisenaWhen the basis was recorded
data_subjectslongtextnoneeiconnectors.adminselkoisenaCategories of data subjects
personal_data_categorieslongtextnoneeiconnectors.adminselkoisenaCategories of personal data, with class and treatment
transfer_basislongtextnoneeiconnectors.adminselkoisenaBasis for transfers to third countries
agreement_recordedtextnoneeiconnectors.adminselkoisenaWhether the agreement with the recipient is recorded
retention_daystextnoneeiconnectors.adminselkoisenaRetention of logs, in days
safeguardslongtextnoneeiconnectors.adminselkoisenaTechnical and organisational measures
csvlongtextnoneeiconnectors.adminselkoisenaThe register as CSV; filled by the export command, never stored

egress_policy ​

Instance-wide switches for data flows: the master switch, EU-only providers, the agreement requirement and the host allow-list

Lukuryhmä: connectors.admin. Kirjoitusryhmä: connectors.admin.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
flows_enabledboolnoneeiconnectors.adminselkoisenaMaster switch: when off nothing leaves and nothing is accepted
eu_onlyboolnoneeiconnectors.adminselkoisenaPersonal data only goes to providers with an EU or adequacy basis
require_dpaboolnoneeiconnectors.adminselkoisenaPersonal data, even pseudonymised, only goes to providers whose agreement is recorded
host_allowlisttextnoneeiconnectors.adminselkoisenaHosts connections may reach, comma separated; empty means no extra restriction
default_retention_daysnumbernoneeiconnectors.adminselkoisenaRetention for logs of connections that no longer exist
resultlongtextnoneeiconnectors.adminselkoisenaOutput of the last command (checklist, purge); never stored

privacy_preview ​

What a sample outbound record looks like after the policy: the exact payload and the treatment of each field

Lukuryhmä: connectors.user. Kirjoitusryhmä: connectors.user.

KenttäTyyppiTietoluokkaHenkilötietoRyhmäAgentit näkevätKuvaus
providertextnoneeiconnectors.userselkoisenaProvider the preview is for
connectiontextnoneeiconnectors.userselkoisenaAn existing connection to preview, instead of a provider
target_modeltextnoneeiconnectors.userselkoisenaThe model to preview
record_idtextnoneeiconnectors.userselkoisenaA record to use as the sample; empty means the first one
field_allowlistlongtextnoneeiconnectors.userselkoisenaFields to include, as a JSON object of model to field names
policylongtextnoneeiconnectors.userselkoisenaPolicy JSON to preview
payloadlongtextnoneeiconnectors.userselkoisenaThe payload after treatment, as JSON; never stored
treatmentslongtextnoneeiconnectors.userselkoisenaEach field with its class and treatment, as JSON; never stored

Työnkulut ​

connection ​

ToimintoSiirtääKuka voi suorittaaHyväksyntä
connection.connectstate: draft → connectedconnectors.userkyllä
connection.pausestate: connected → pausedconnectors.userkyllä
connection.resumestate: paused → connectedconnectors.userkyllä
connection.retrystate: error → connectedconnectors.userkyllä
connection.revokestate: * → revokedconnectors.userkyllä
connection.test-connectors.userei
connection.sync-connectors.userkyllä
connection.oauth_start-connectors.userei
ToimintoSiirtääKuka voi suorittaaHyväksyntä
consent.withdrawstate: active → withdrawnconnectors.userkyllä

processing_register ​

ToimintoSiirtääKuka voi suorittaaHyväksyntä
processing_register.export_csv-connectors.adminei

egress_policy ​

ToimintoSiirtääKuka voi suorittaaHyväksyntä
egress_policy.checklist-connectors.adminei
egress_policy.purge-connectors.adminkyllä

privacy_preview ​

ToimintoSiirtääKuka voi suorittaaHyväksyntä
privacy_preview.render-connectors.userei

Käyttöoikeusryhmät ​

Tämän sovelluksen käyttämät ryhmät:

  • connectors.admin
  • connectors.user

Hyväksyntävaiheet ​

Vaiheet, joita agentti voi vain ehdottaa:

  • connection.connect
  • connection.pause
  • connection.resume
  • connection.retry
  • connection.revoke
  • connection.sync
  • consent.withdraw
  • egress_policy.purge

Mitä agentit voivat ja eivät voi tehdä ​

Agentti voi lukea, hakea, luoda ja päivittää tämän sovelluksen tietueita sekä suorittaa toiminnot, jotka eivät vaadi hyväksyntää, tunnisteensa käyttöoikeusryhmien rajoissa.

Se voi vain ehdottaa näitä vaiheita, ja ihmisen on hyväksyttävä ne: connection.connect, connection.pause, connection.resume, connection.retry, connection.revoke, connection.sync, consent.withdraw, egress_policy.purge, connector_provider.delete, provider_policy.delete, connection.delete, consent.delete, sync_run.delete, data_flow_log.delete, processing_register.delete, egress_policy.delete, privacy_preview.delete.

Henkilötiedot maskataan paikkamerkeiksi: connection.owner_user, consent.owner_user, consent.subject, consent.given_by, consent.withdrawn_by, sync_run.owner_user, data_flow_log.owner_user, processing_register.owner_user.

Nämä kentät pidätetään agenteilta kokonaan: provider_policy.oauth_client_secret, connection.credentials, connection.oauth_tokens.

Riippuvuudet ​

Ei ole.

Asennus ​

Sisäänrakennettu. Se on käytettävissä jokaisessa instanssissa, eikä sitä voi poistaa.

Tee oma ​

Moduulioppaassa näytetään, miten tällaiset sovellukset kirjoitetaan