From af321a3a1b527f37eb896de03e8ae8cace28634a Mon Sep 17 00:00:00 2001 From: Sebastian Steinbuss <23654606+ssteinbuss@users.noreply.github.com> Date: Fri, 14 Oct 2022 12:06:07 +0200 Subject: [PATCH] 64 business layer (#158) (#192) * Integrating ParIS section into the Business Layer. * Minor spelling changes to prepare the PR. * Update 3_1_x_ParIS.md chore: Add link to IDS Rule Book; Insert Certification Authority * Adding layers of the RAM * Create 3-1-Business-layer.md Adding basic content from RAM3 * editorial update removing remainder of functinal layer * dividing file into subsections splitted the section into files * Editorial changes Business Layer * editorial changes * Editorial changes * Update Business Lager Usage Contracts Adding connection to Rule Book in the Business Layer with regard the usage contracts * editorial changes moving fihgures and changing links * editorial changes * Editorial changes Editorial changes * Update Role model updating role model * editorial changes updating links * Merging ParIS Merging ParIS file to difgital identities section. * Update Changelog Adding Changes on Business Layer * Fix formatting Co-authored-by: Sebastian Bader Co-authored-by: HeinrichPet <59964830+HeinrichPet@users.noreply.github.com> Co-authored-by: Sebastian Bader Co-authored-by: HeinrichPet <59964830+HeinrichPet@users.noreply.github.com> --- CHANGELOG.md | 7 + .../3_1_Business_Layer/3-1-Business-layer.md | 16 + .../3_1_1_Roles_in_the_IDS.md | 557 ++++++++++++++++++ .../3_1_2_Interaction_of_Roles,md | 42 ++ .../3_1_3_Digital_Identities.md | 100 ++++ .../3_1_4_Usage_Contracts.md | 37 ++ .../3_1_Business_Layer/3_1_x_ParIS.md | 7 - .../media/DigitalIdentities.png | Bin .../3_1_Business_Layer}/media/image18.png | Bin .../3_1_Business_Layer/media/image20_new.png | Bin 0 -> 10580 bytes .../3_Layers-of-the-RAM | 5 + .../media/image11.png | Bin 0 -> 50908 bytes 12 files changed, 764 insertions(+), 7 deletions(-) create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3-1-Business-layer.md create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_1_Roles_in_the_IDS.md create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_2_Interaction_of_Roles,md create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_3_Digital_Identities.md create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_4_Usage_Contracts.md delete mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_x_ParIS.md rename documentation/{ => 3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer}/media/DigitalIdentities.png (100%) rename documentation/{ => 3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer}/media/image18.png (100%) create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/image20_new.png create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/3_Layers-of-the-RAM create mode 100644 documentation/3_Layers_of_the_Reference_Architecture_Model/media/image11.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 665f909f..1507c4a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] ### Added + +- none +- Business Layer: Adding Participant Information Service +- Business Layer: Adding activities in relation to roles. - IDSA Rulebook + ### Changed - none +- Business Layer: editorial changes. ### Removed - none @@ -20,6 +26,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - none +- Business Layer: fixed consistency in Role Interaction table. ### Security - none diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3-1-Business-layer.md b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3-1-Business-layer.md new file mode 100644 index 00000000..847c7536 --- /dev/null +++ b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3-1-Business-layer.md @@ -0,0 +1,16 @@ +## Business Layer ## + +The Business Layer of the Reference Architecture Model defines and +categorizes the different roles the participants in the International +Data Spaces may assume. Furthermore, it specifies basic patterns of +interaction taking place between these roles. It thereby contributes to +the development of innovative business models and digital, data-driven +services to be used by the participants in the International Data +Spaces. + +While the Business Layer provides an abstract description of the roles +in the International Data Spaces, it can be considered a blueprint for +the other, more technical layers. The Business Layer can therefore be +used to verify the technical architecture of the International Data +Spaces. In this sense, the Business Layer specifies the requirements to +be addressed by the [Functional Layer](../../3_2_Functional_Layer/3_2_FunctionalLayer.md). diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_1_Roles_in_the_IDS.md b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_1_Roles_in_the_IDS.md new file mode 100644 index 00000000..29957c2e --- /dev/null +++ b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_1_Roles_in_the_IDS.md @@ -0,0 +1,557 @@ +### ROLES IN THE INTERNATIONAL DATA SPACES ### + +In the following, each role a participant can assume in the +International Data Spaces is described in detail, together with the +tasks assigned to it. The Reference Architecture model distinguishes +four "categories" containing "business roles" that, depending on the +individual business model, can assume one or more of the "basic roles". + +#### Basic Roles in the International Data Space ### + +The ecosystem of the IDS comprises several basic tasks being carried out +by the various participants. The set of these tasks can be derived from +relevant objects in the IDS and the activities along the respective life +cycle. IDS objects that participants in the IDS have to handle are: + +1. **Connector**: technical core component required for a participant + to join the International Data Spaces + +2. **Data**: here synonym to Data Asset, i.e. content exposed for + exchange by the Data Provider + +3. **Vocabulary**: ontologies, reference data models, or metadata + elements that can be used to annotate and describe datasets, usage + policies, apps, services data sources etc. + +4. **Identity**: information of and for participants in the IDS + +5. **App**: applications that can be deployed inside the connector. + Apps facilitate data processing workflows. They may be certified by + a Certification Body, following the certification procedures defined + in the [Certification Perspective](../../4_Perspectives_of_the_Reference_Architecture_Model/4_2_Certification_Perspective/README.md). + +6. **Transaction**: comprises all activities performed in the course of + a data exchange + +7. **Service**: software running in a connector and provided as a + service (algorithm and computing time) + +For each of these IDS objects, the Reference Architecture Model defines +activities along the life cycle define. The set of activities, or a +subset of it, that describe the life cycle of the objects are: + +1. **Create**: create an object, e.g. software by programming or data + from reading a sensor + +2. **Own**: own an object or hold the corresponding license or right + according to local rules and regulations + +3. **Certify/verify**: e.g. certify software according to the IDS + certification scheme or verify authenticity of data + +4. **Publish**: share meta data on objects such as data, apps, services + etc. + +5. **Provide**: technically provide the object + +6. **Consume**: technically receive the object + +7. **Use**: make use of an object in a business model that does not + consist of an intermediary function (see below) + +8. **Delete**: Delete, eliminate or turn object off + +Each activity along the life cycle of an IDS object is carried out by a +participant of the IDS. A role that a participant takes to carry out +these activities is called "basic role". As some combinations from an +IDS object and an activity (e.g. "verify data", "delete identity") may +be relevant in other contexts than the IDS RAM or may become relevant in +the future, some potential basic roles are declared as (currently) "out +of IDS RAM scope". The table below shows the basic roles defined in the IDS. + +| | **Create** | **Own** | **Certify / Verify** | **Publish** | **Provide** | **Consume | **Use** | **Delete** | | | | | | +|-----------------|:---------------------:|:------------------:|:--------------------:|:-----------------------:|:----------------------:|:-------------------:|:-----------------------:|:-------------------:|:-:|:-:|:-:|:-:|:-:| +| **Connector** | Connector Creator | Connector Owner | Connector Certifier | Connector Publisher | Connector Provider | (Out of RAM scope) | Connector User | (Out of RAM scope) | | | | | | +| **Data** | Data Creator | Data Owner | (Out of RAM scope) | Connector / Data Broker | Data Provider | Data Consumer | Data User | Data Eraser | | | | | | +| **Vocabulary** | Vocabulary Creator | Vocabulary Owner | (Out of RAM scope) | Vocabulary Publisher | Vocabulary Provider | Vocabulary Consumer | Vocabulary User | (Out of RAM scope) | | | | | | +| **Identity** | Identity Creator | Identity Owner | Identity Verificator | Identitiy Publisher | Identity Authenticator | (Out of RAM scope) | Identity User | Identity Eliminator | | | | | | +| **App** | App Creator | App Owner | App Certifier | App Broker | App Provider | App Consumer | App User | App Deleter (?) | | | | | | +| **Transaction** | Transaction Initiator | (Out of RAM scope) | Transaction Clearer | (Out of RAM scope) | (Out of RAM scope) | (Out of RAM scope) | Transaction Participant | (Out of RAM scope) | | | | | | +| **Service** | Service Creator | Service Owner | Service Certifier | Service Broker | Service Provider | Service Consumer | Service User | (Out of RAM scope) | | | | | | + +These basic roles are suitable to define technical tasks in the IDS and +roles of the participants in detail. As this quite large number is, +however, bulky especially for early discussions, grouping basic roles to +business roles is advisable. The basic roles are explained in a suitable +context of the business roles. + +#### Business Roles in the International Data Space #### + +On the level of the business layer, depending on the use case, it might +not be crucial to distinguish between basic roles. E.g. if an industrial +company intends to provide quality check data to a supply chain partner, +the distinction between data owner and data creator is unnecessary. +Hence, business roles are introduced. Business roles comprise one or +more basic role. Their exact scope of comprised basic roles depends on +the individual business model of the participant as individual business +models (including pricing models) may be applied as deemed appropriate. +E.g. a data intermediary (see details below) operating a data hub may +store data as a trustee, act as a broker or do both -- depending on the +business model. Therefore, as the assignment of basic roles to a +business role may vary, the assignment is marked with the following +symbols: + +- **T** (typical): basic role typically taken by a business role + +- **M** (mandatory): required role from a technical perspective + +There are four categories of roles: + +» Category 1: Core Participant + +» Category 2: Intermediary + +» Category 3: Software Developer + +» Category 4: Governance Body + +#### CATEGORY 1: CORE PARTICIPANT #### + +Core Participants are involved and required every time data is exchanged +in the International Data Spaces. Roles assigned to this category are +Data Supplier and Data Customer. The role of a Core Participant can be +assumed by any organization that owns, wants to provide, and/or wants to +consume or use data. + +Benefit for participants in the International Data Spaces is created by +these roles as they create, potentially own and possibly provide data as +well as receive, process and most likely at some point in time delete +data. + +##### DATA SUPPLIER #### + +The Data Supplier is a role that induces data into the IDS ecosystem. +Depending on the individual business and technical operation model, the +business role Data Supplier typically assumes the basic roles Data +Creator, Data Owner, and/or Data Provider. + +The **Data Creator** creates data, e.g. by generating data such as from +a sensor or accessing data in backend IT systems. + +As the legal situation regarding data ownership is very complicated (as +discussed in the [Governance Perspective](#)), the term '**Data Owner'** is not used in a +legal understanding in this document. The Reference Architecture Model +takes an operational data management perspective, defining a Data Owner +as a legal entity or natural person executing control over data. This +enables the Data Owner to define Data Usage Policies and provide access +to its data. Data Ownership includes at least two major concepts: + +» having the (technical) means and the responsibility to define Usage +Contracts and Usage Policies, and to provide access to data; and + +» having the (technical) means and the responsibility to define the +Payment Model, including the model for reuse of data by third parties. + +The **Data Provider** makes data technically available in the IDS for +being transmitted to a Data Customer on behalf of the Data Owner. To +submit metadata to a Broker, or exchange data with a Data Consumer, the +Data Provider uses software components that are compliant with the +Reference Architecture Model of the International Data Spaces. Compliant +software is available from Software Developers and App Developers. + +Usually, a participant acting as a Data Creator automatically assumes +the role of the Data Owner. However, if rights or licenses on data are +given to different participant, the same assumes the role of the Data +Owner. In this case, Data Owner and Data Creator would be different +participants. + +Initially, a participant acting as a Data Creator automatically assumes +the role of the Data Provider as well. However, there may be cases in +which the Data Provider is not the Data Creator, e.g. if the data is +technically managed by a different entity than the Data Creator. This +can be the case of a company using an external IT service provider for +data management, or if data management activities are handed over to a +Data Intermediary (cf. below) as a data trustee. + +In cases in which the Data Owner does not act as the Data Provider at +the same time, the only activity of the Data Owner is to authorize a +Data Provider to make its data available to be used by a Data Consumer. +Any such authorization should be documented by a contract, which should +include data usage policy information for the data provided (see +[Usage Control in IDS](#)). The contract needs not necessarily be a paper +document, but may be an electronic file as well. + +At the end of a complete or partial data transaction, for example, the +Data Provider may log the details of the successful (or unsuccessful) +completion of the transaction at a Clearing House (see below) to +facilitate billing or resolve a conflict. Furthermore, the Data Provider +can use Apps in the IDS connector to enrich or transform the data in +some way, or to improve its quality. Data Apps are specific applications +that can be loaded into the IDS connector and, thus, linked into the +data exchange workflow. + +##### DATA CUSTOMER ##### + +The **Data Consumer** receives data from a Data Provider. From a +business process modeling perspective, the Data Consumer is the mirror +entity of the Data Provider; the activities performed by the Data +Consumer are therefore similar to the activities performed by the Data +Provider. + +If data is processed by a Service Provider (see below), the Data +Customer takes the role of a **Service Consumer**. This constellation my +occur, e.g. when the Data Owner/Provider attaches usage policies to the +data that require data being processed by a third-party service (i.e. +Service Provider) before being handed to the consumer. Then, the Data +Customer is both Data Consumer and Service Consumer. + +Similar to the Data Owner being the legal entity that has the legal +control over its data, the **Data User** is the legal entity that has +the legal right to use the data of a Data Owner as specified by the +usage policy. The Data User can be identical with the Data Consumer. +However, there may be scenarios in which these roles are assumed by +different participants. For example, a patient could use a web-based +software system to manage their personal health data and grant access to +this data to a health coach. The data could be received from a hospital. +In this case, the health coach would be the Data User and the provider +of the web-based software system would be the Data Consumer. + +In existing, mostly quite static relations, the Data Customer and Data +Supplier already know each other and intend to exchange specific data +sets (e.g. capacity information for a particular part to be produced). +In these cases, the Data Consumer directly requests data (and the +corresponding metadata) from the Data Provider or the Data Provider +pushes data directly to the Data Consumer. + +If the Data Customer searches for a type of data that is provided by +many suppliers, .e.g. weather data, the Data Consumer can search for +existing datasets by making an inquiry at a Data Intermediary that +assumes the basic role of a Data Broker (cf. according section below). +The Data Intermediary (Data Broker) then provides the required metadata +for the Data Consumer to connect to a Data Provider. + +Like a Data Provider, the Data Consumer may log the details of a +successful (or unsuccessful) data exchange transaction at a Clearing +House, use Apps to enrich, transform, etc. the data received, or use a +Data Broker to retrieve data sources. + +#### CATEGORY 2: INTERMEDIARY ##### + +Intermediaries act as trusted entities and are commonly considered as +"platforms". They assume a rather central role compared to the great +number of data suppliers and customers, though multiple, especially +competitive platforms of the same role may and shall exist. Business +Roles assigned to this category are Data Intermediary, Services +Intermediary, App Store, Vocabulary Intermediary, Clearing House, and +Identity Authority. Most likely, the business models of intermediaries +will lead to a combination of some of the business roles, e.g. act as +both Data and Service Intermediary. + +The Intermediary roles may be assumed only by trusted organizations. +They create benefit for participants in the IDS by establishing trust, +providing metadata, and creating a business model around their services. + +##### Data Intermediary ##### + +The Data Intermediary is a platform operator that assumes mainly the +data-related basic roles Data Provider/Data Consumer and Data Broker. + +Assuming the basic role of a **Data Provider** or **Data Consumer**, the +Data Intermediary is responsible for the execution of the data exchange +on behalf of the Data Owner or User respectively. Providing a Data +Consumer with data is, hence, the main activity of the Data Provider. + +To facilitate a data request from a Data Consumer, the Data Intermediary +would provide a **Data Broker** with proper metadata about the data. +Acting as a Data Broker, the Data Intermediary stores and manages +information about the data sources available in the International Data +Spaces. An organization offering data brokering in the International +Data Spaces may assume other intermediary basic roles at the same time +(e.g. Service Broker, Clearing House or Identity Authority, see below). +Assuming further basic roles consequently means additional tasks a +participant has to execute. + +The activities of the Data Broker mainly focus on receiving and +providing metadata. The Data Broker must provide an interface for Data +Creators to send their metadata. The metadata should be stored in an +internal repository for being queried by Data Consumers in a structured +manner. While the core of the metadata model must be specified by the +International Data Spaces (i.e. by the Information Model, see + [Information Layer](#)), a Data Broker may extend the metadata model to manage additional +metadata elements. + +After the Data Broker has provided the Data Consumer with the metadata +about a certain Data Provider, it is not involved in the subsequent data +exchange process. + +##### Service Intermediary ##### + +A service offers e.g. data analysis, data integration, data cleansing, +or semantic enrichment to improve the quality of the data exchanged in +the International Data Spaces. Analogously to the Data Intermediary, the +Service Intermediary is a platform operator providing metadata on +services, the services itself (i.e. app including computing time as a +trustee), or both. Hence, the Service Intermediary typically assumes +mainly the service-related basic roles of the Service Provider and/or +Service Broker. + +A **Service Provider** receives data from a Data Provider (or another +Service Provider) and either returns the calculation result to the same +or directs it to an indicated Data Consumer (which then is a Service +Consumer at the same time). The participant who receives processed data +from a Service Intermediary could be again a Service Intermediary as +data can be routed through an arbitrary number of instances of services +in the IDS. + +In order to provide the service, the Service Provider installs apps in +its IDS connector that can be developed by the participant himself or +from a third-party App Provider. The Service Intermediary is then an App +Consumer. Just like in the case of data, the Service Owner might be a +different organization than the Service Provider. The Service Provider +then operates the service on behalf of the owner. + +To allow other participants in the IDS to retrieve available services, +Service Intermediaries may also assume the role of the **Service +Broker**. The Service Broker provides metadata on present services in +the IDS analogously to the Data Broker. + +##### APP STORE ##### + +The business role of the App Store is responsible to distribute data +apps. In contrary to the Service Provider, the algorithm is not executed +in the platform of the App Store, but provided for download to the IDS +connector of the App Consumer. App Consumer and App Owner may be +different, if the owner acquires (purchases) an app, but lets it be +distributed to Service Provider. The App Store role typically comprises +the basic roles of the App Broker and App Provider. Apps are programmed +by the App Creator that can, but does not have to be identical to the +App Owner (cf. Data Owner/Creator above). + +The App Store is first responsible for managing information about apps. +This is the **Data Broker** role. The App Store should provide +interfaces for publishing and retrieving apps plus corresponding +metadata. In most cases, the App Store will, secondly, also assume the +basic role of the **App Provider** as it is common for mobile phone app +stores. The App Store then technically provides the app on behalf of the +App Owner. However, not only data, but also apps may be sensitive and, +therefore, shall be stored in the sphere of the App Owner. In this case, +the App Broker and App Provider roles would be taken be different +participants. + +Depending on the business model, an App Store could also comprise the +**App Owner** role as the store may own the license for particular apps. +As the App Store might take responsibility for the validity and +functionality of the apps provided, the App Store could also act as an +**App Certifier**. + +##### VOCABULARY Intermediary ##### + +The Vocabulary Intermediary technically manages and offers vocabularies +(i.e. ontologies, reference data models, or metadata elements). The +Vocabulary Intermediary typically assumes the basis roles of the +Vocabulary Publisher and Vocabulary Provider. Vocabularies are owned and +governed by the according Standardization Organization (cf. category 4). + +Vocabularies can be used to annotate and describe data assets. These +data assets may comprise at least: + +- **Information Model** of the International Data Spaces, which is the + basis for the description of data sources (see [Information Layer](#)). There + is only one information model in the IDS governed by the IDSA. + +- **Domain-specific vocabularies**: They are essential for the + scalability and success of the IDS. Domains are e.g. represented in + the very common set of linked open data (LOD). For example, "gene + ontology" is a unified vocabulary for parts of life sciences, "GAO" + for the automotive industry, etc. + +- **Legal terms**: To describe usage policies and to enable smart + contracting, legal terms must be coded in a machine-readable and + -understandable manner. The IDS Information Model defines the Open + Digital Rights Language (ODRL) to describe usage policies. Still, + IDS communities such as a (closed) supply chain network or a + domain-specific IDS initiative could define additional + (complementary or alternative) vocabularies, e.g. depict the + International Commercial Terms (Incoterms) as an ontology or + reference to the iShare Scheme. + +There is no dedicated or exclusive role that creates vocabularies. +Usually, standardization organizations such as ISO, EN, IEEE etc., but +also industrial associations define standards that can be formulated as +a vocabulary (Vocabulary Creators and Owners). Except the IDS +information model, there can be multiple vocabularies describing the +same context (e.g. different types of smart contracts or usage policy +descriptions). A single vocabulary for the same context support +standardization and, thus, compatibility efforts. Multiple vocabularies +provide flexibility and competitiveness. + +To find the right and latest vocabulary, they must be retrievable with +the help of a **Vocabulary Publisher**. This is a repository of +vocabulary metadata. In most cases, as vocabularies are usually (for the +sake of their purpose) open, the Vocabulary Intermediary will also act +as a **Vocabulary Provider**, i.e. providing the vocabulary technically +for download. + +Vocabulary Users are all instances using vocabularies, e.g. Data +Suppliers, Data Customers, Service Intermediaries, Data Intermediaries, +App Stores, etc. Also the Vocabulary Intermediary possibly may use a +vocabulary to describe the vocabulary repository. + +##### CLEARING HOUSE ##### + +The Clearing House is an intermediary that provides clearing and +settlement services for all financial and data exchange transactions. In +the International Data Spaces, clearing activities are separated from +broker services, since these activities are technically different from +maintaining a metadata repository. As already stated above, it might +still be possible that the role Clearing House and other intermediary +roles are assumed by the same organization, as both roles require acting +as a trusted intermediary between the Data Supplier and the Data +Customer. + +The Clearing House logs all activities performed in the course of a data +exchange, thus, assuming the role of the **Transaction Clearer**. After +a data exchange, or parts of it, has been completed, both the Data +Supplier and the Data Customer confirm the data transfer by logging the +details of the transaction at the Clearing House, e.g. by means of +distributed ledger technologies. Based on this logging information, the +transaction can then be billed. The logging information can also be used +to resolve conflicts (e.g., to clarify whether a data package has been +received by the Data Customer or not). The Clearing House also provides +reports on the performed (logged) transactions for billing, conflict +resolution, etc. + +##### Identity Authority ##### + +The Identity Authority should offer a service to create, maintain, +manage, monitor, and validate identity information of and for +participants in the International Data Spaces. This is imperative for +secure operation of the International Data Spaces and to avoid +unauthorized access to data. Hence, every participant in the IDS +inevitably owns an identity (describing the respective participant) and +uses an identity for authentication. + +The Identity Authority consist of a Certification Authority (managing +digital certificates for the participants of the International Data +Spaces), a Dynamic Attribute Provisioning Service (DAPS, managing the +dynamic attributes of the participants), and a service named Dynamic +Trust Monitoring (DTM, for continuous monitoring of the security and +behavior of the network. More details about identity management can be +found in the [security perspective](#). + +Typically, identities are created by the Identity Authority, then acting +as an **Identity Creator**. In the sense of a directory, the authority +would also publish the identity if desired by the owner and especially +provide certificates, DAPS etc. for authentication purposes. These are +the basic roles **Identity Publisher** and **Identity Authenticator**. + +#### CATEGORY 3: SOFTWARE DEVELOPER #### + +This category comprises IT companies providing software to the +participants of the International Data Spaces. Roles subsumed under this +category are the business roles App Developer and Connector Developer. + +Benefit is created by these roles by providing software to the +participants of the International Data Spaces. Please note that the +process of providing software to be used for establishing the endpoints +of a data exchange transaction (e.g. Enterprise Systems like ERP or MES, +or other platforms) is not part of the International Data Spaces, as it +takes place before an organization joins the IDS. + +##### App Developer ##### + +App Developers develop data apps to be used in an IDS Connector. Thus, +the App Developer typically covers the basic roles **App Creator** and, +as long as the data app is not created on behalf, **App Owner**. + +To be deployable, a data app has to be compliant with the system +architecture of the International Data Spaces (see [system layer](#)). In +addition, data Apps can be certified by a Certification Body in order to +increase trust in these applications (especially with regard to Data +Apps processing sensitive information). + +Data apps are published and most likely provided in the App Store to +Data Customers, Data Suppliers, or Intermediaries. App Developers should +describe each Data App using metadata (in compliance with a metadata +model) with regard to its semantics, functionality, interfaces, etc. + +##### Connector Developer ##### + +A Connector Developer provides software for implementing the +functionality required by the International Data Spaces (i.e., through +software components, as described in the [system layer](#)). Unlike Data Apps, +software is not provided by the App Store, but delivered over the +Connector Developer's usual distribution channels, and used on the basis +of individual agreements between the Connector Developer and the user +(e.g., a Data Customer, a Data Supplier, or an Intermediary). This +procedure implies that the agreements (e.g. licenses) for deployment and +software usage remain outside the scope of the International Data +Spaces. + +The Connector Developer typically assumes the basic roles **Connector +Creator**, **Connector Owner**, and -- considering the way of software +distribution described above -- **Connector Provider**. + +#### CATEGORY 4: GOVERNANCE BODY ##### + +Governance Bodies in the IDS have the authority and task to set and +enforce guidelines to standardize data exchange, to create trust and, in +the end, to enable sustainable operation of the IDS. The Certification +Body, Evaluation Facilities, Standardization Organizations, and the +International Data Spaces Association are the business roles in the +category of Governance Bodies. + +##### CERTIFICATION BODY AND EVALUATION FACILITIES ##### + +The participants in the International Data Spaces benefit from the +Certification Body and the Evaluation Facilities as these roles take +care of the certification process and issue certificates (both with +regard to organizations that want to participate and with regard to +software components that are to be used). + +The Certification Body, together with selected Evaluation Facilities, is +in charge of the certification of the participants and the core +technical components in the International Data Spaces. These Governance +Bodies make sure that only compliant organizations are granted access to +the trusted business ecosystem. In this process, the Certification Body +supervises the actions and decisions of the Evaluation Facilities. + +Thus, from the technical perspective, the basic roles **Connector +Certifier**, **App Certifier** and **Service Certifier**. + +The Certification Scheme applied in the process is described in the [Certification Perspective](#). + +##### Standardization Organization ##### + +Standardization Organizations govern standards that are typically +describe as an ontology or vocabulary. In general, there is neither a +claim for exclusiveness of a standard nor an obligation apply it. One +example could be the International Commercial Terms (Incoterms) that are +a common legal foundation in logistics, but does have to be applied. A +domain-specific Standardization Organization is, e.g., Odette, a +European organization setting data standards for the automotive +industry. + +The business role Standardization Organization, therefore, comprises the +basic roles **Vocabulary Creator** and **Vocabulary Owner**. + +Among the standardization organizations, the IDSA assumes a special +role, as it is exclusively entitled to govern the IDS Reference +Architecture Model and the Information Model. + +##### INTERNATIONAL DATA SPACES ASSOCIATION (IDSA) ##### + +The International Data Spaces Association (IDSA) is a non-profit +organization promoting the continuous development of the International +Data Spaces. More specifically, it supports and governs the continuous +development of the Reference Architecture Model and the participant +certification process. The International Data Spaces Association is +currently organized across several working groups, each one addressing a +specific topic (e.g., architecture, use cases and requirements, or +certification). Members of the Association are primarily large +industrial enterprises, IT companies, SMEs, research institutions, and +industry associations. + +As the International Data Spaces Association is not directly involved in +the data exchange activities of the International Data Spaces, its role +will not be further addressed in the sections on the other Layers. diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_2_Interaction_of_Roles,md b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_2_Interaction_of_Roles,md new file mode 100644 index 00000000..edcb4380 --- /dev/null +++ b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_2_Interaction_of_Roles,md @@ -0,0 +1,42 @@ +### Interaction of Roles ### + +#### Basic interactions for data exchange and data sharing in the International Data Spaces #### + +The figure below gives an overview of the roles and the interactions taking place between +them. As some of the roles (Certification Body and Evaluation +Facilities) are not actively involved in the everyday operations of the +International Data Spaces, they are omitted from the illustration. Also, +the figure does not include Software Providers and Identity Providers, +because of the necessary connection of those roles with all other roles. +The Software Provider would be connected to all other roles with the +relation _provides software_. Likewise, the Identity Provider +would be connected to all other roles with the relation _provides +identity_. + +![ Roles and interactions in the International Data +Spaces](./media/image18.png) + +This shows only the basic interactions taking place between the different +roles in the International Data Spaces. For data exchange, additional, +more specific interactions are necessary. These interactions are +described in the [Process Layer](#) section of the Reference Architecture +Model. + +The table below gives an overview of possible (mandatory are marked with X +or optional marked with (X)) interactions taking place in the IDS. + +| | Data Owner | Data Provider | Data Consumer | Data User | Broker | Clearing House | Identity Provider | Service Provider | App Provider | App Store | Vocabulary Provider | Certification Body | Evaluation Facility | +|------------------------- |:----------: |:-------------: |:-------------: |:---------: |:------: |:--------------: |:-----------------: |:----------------: |:------------: |:---------: |:------------------: |:------------------: |:--------------------: | +| **Data Owner** | - | X | - | - | - | (X) | - | (X) | (X) | (X) | (X) | - | (X) | +| **Data Provider** | X | - | X | - | X | (X) | X | (X) | (X) | (X) | (X) | - | X | +| **Data Consumer** | - | X | - | X | (X) | (X) | X | (X) | (X) | (X) | (X) | - | X | +| **Data User** | - | - | X | - | - | (X) | - | (X) | (X) | (X) | (X) | - | (X) | +| **Broker** | - | (X) | (X) | - | - | - | X | (X) | - | - | ? | - | X | +| **Clearing House** | (X) | (X) | (X) | (X) | - | - | X | (X) | (X) | (X) | (X) | - | X | +| **Identity Provider** | - | X | X | - | X | X | Federation | - | (X)? | (X)? | - | - | X | +| **Service Provider** | (X) | (X) | (X) | (X) | (X) | (X) | - | - | (X) | (X) | (X) | - | X | +| **App Provider** | (X) | (X) | (X) | (X) | - | (X) | (X) | (X) | - | (X) | - | - | (X) | +| **App Store** | (X) | (X) | (X) | (X) | - | (X) | (X) | (X) | (X) | - | (X) | - | (X) | +| **Vocabulary Provider** | (X) | (X) | (X) | (X) | ? | (X) | (X) | (X) | (X) | (X) | - | - | X | +| **Certification Body** | - | - | - | - | - | - | - | - | - | - | - | - | X | +| **Evaluation Facility** | (X) | X | X | X | X | X | X | X | (X) | X | X | X | - | diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_3_Digital_Identities.md b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_3_Digital_Identities.md new file mode 100644 index 00000000..05f32109 --- /dev/null +++ b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_3_Digital_Identities.md @@ -0,0 +1,100 @@ +### Digital Identities ### + +Establishing trust for data sharing and data exchange is a fundamental +requirement. The IDS-RAM defines two basic types of trust: 1) Static +Trust, based on the certification of operational environment and core technical +components, and 2) Dynamic Trust, based on active monitoring of +operational environment and core technical components. For data sharing and data +exchange in the IDS, some preliminary actions and interactions are +required. These are necessary for every participant, and involve the +Certification Body, Evaluation Facilities, the Dynamic Attribute +Provisioning Service (DAPS), and the Participant Information Service (ParIS). +The figure below illustrates the roles and interactions required for issuing a digital +identity in the IDS. + +![ Interactions required for issuing a digital identity in the +IDS](./media/DigitalIdentities.png) + +#### Participant #### + +Certification is required for every participant and the majority of +roles in the IDS, as defined above. Certification refers both to the +organizational capabilities of the participant and the technical +capabilities of the core technical components. + +#### Certification #### + +Certification of a operational environment or core component involves the +[Certification Body](#) and an [Evaluation Facility](#). +Evaluation of a operational environment or a core component is executed upon request +of the participant and relies on the contract between the participant +and the Evaluation Facility. In the same way, a Service Provider can +request evaluation of a component. In this process, the Certification +Body is responsible for supervision of the Evaluation Facility involved. + +#### Certificate Authority #### + +The Certificate Authority is responsible for issuing, validating and +revoking [digital certificates](#). A digital certificate +is provided for a participant if both a valid certification for the +operational environment and a valid certification for the core component is +available. This means that the Certificate Authority provides an +IDS-ID for a combination of operational environment and core component. The digital +certificate is valid not exceeding the validity of both certifications, +operational environment certification and the certification of core component used +by the participant. The Certification Authority provides the digital +certificate to the participant upon request. + +#### Dynamic Attribute Provisioning Service (DAPS) #### + +The information resulting from the certification process is passed on to +the Dynamic Attribute Provisioning Service (DAPS). This includes master +data and information on [security profiles](#). The CA provides the details on the digital certificate +(public key and IDS-ID). The participant registers at the DAPS after +successfully deploying the digital certificate inside the component. + +#### Participant Information Service (ParIS) #### + +One of the most important value propositions of the IDS is the enablement of business interactions between previously unrelated Participants. That aims in particular at companies that have not met before in the digital or non-digital world but now start business agreements solely relying on the IDS. The therefore necessary trust in the opposite party is technically achieved by a verifiable identity management process through the Certification Authority and the DAPS. Both components equip each Participant with the necessary attributes and cryptographic proofs for the IDS handshakes. The establishment of a secure and uncompromised communication channel is however only the necessary requirement for a business interaction. In addition, the respective Participants need to understand their opposite’s state in regards of business workflows. For instance, every business actor needs to know its customers tax identification or VAT number to create correct invoices. Furthermore, the registered address is critical to understand the responsible jurisdiction for the unfortunate cases when only courts can solve conflicts. + +Such information is provided and maintained by a support organization in an IDS, a legal entity that administers the ecosystem (see [IDSA Rule Book section 4.2.1.1.1](https://internationaldataspaces.org/download/19008/)). This organization introduces a new Participant by creating its digital identity and at the same time registers security-critical at the DAPS and business-relevant attributes at another technical component. This component is the Participant Information Service. The ParIS provides access to these attributes to the other IDS Participants and components and connects the unique Participant identifier – a URI – with additional metadata. Usually, each IDS ecosystem operates only a small number of ParIS instances, usually only one. IDS Participants therefore know the location where to ask for more information about a potential business partner and can decide whether to start a data exchange. + +Different to other IDS components, the trustworthiness of ParIS' provisioned information is not grounded on technical measures, like for instance signatures or certificates, but on the administrative process controlled by the Support Organization. A direct consequence of this process is the necessity that each change request is manually verified before added to the ParIS database. + +#### Dynamic Trust Monitoring (DTM) #### + +Continuous monitoring of participants is necessary for classification of +the trustworthiness of all participants in the ecosystem. Dynamic Trust +Monitoring (DTM) implements a monitoring function for every IDS +Component. The DTM shares information with the DAPS to notify each of +the two participant in a data exchange transaction of the current level +of trustworthiness of the other participant. + +#### Interactions #### + +The roles described above interact with each other in a structured way. +In the following, a brief description of these interactions is given +(they are described in more detail in the remaining layers and perspectives of the RAM): + +1. **Certification request:** This is a direct interaction between a + participant and an evaluation facility to trigger an evaluation + process based on IDS certification criteria. + +2. **Notification of successful certification:** The Certification Body + notifies the Certificate Authority of the successful certification + of the Operational Environment and the Core Component. Validity of both + certifications must be provided. + +3. **Generating the IDS-ID:** The CA generates a unique ID for the pair + (operational environment and component) and issues a digital certificate. + +4. **Provisioning of X.509 Certificate:** The Certification Authority + sends a digital certificate (X.509) to the participant in a secure + and trustworthy way and notifies the DAPS. + +5. **Register:** After the digital certificate (X.509) is deployed + inside the component, the component registers at the DAPS. + +6. **DTM Interaction**: The DTM and the DAPS exchange information on + the behavior of the component, e.g. about security issues + (vulnerabilities) or attempted attacks. diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_4_Usage_Contracts.md b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_4_Usage_Contracts.md new file mode 100644 index 00000000..14c0ecd7 --- /dev/null +++ b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_4_Usage_Contracts.md @@ -0,0 +1,37 @@ +### Usage Contracts ### + +A legally valid contract is the foundation of any business transaction. +The IDS cannot, and does not intend to, replace legal contracts or +licensing agreements. Instead, the IDS provides a technical framework +for technically enforced agreements in addition to existing, legally +binding contracts. The connection of legally binding contracts and Usage +Contracts is part of the [IDSA Rulebook](#). + +Many details of a business relationship cannot be modeled in +machine-readable form. Nevertheless, the IDS specifies methods to define +categories of applicable contracts, and it presents patterns to observe +their usage and report validations. For this purpose, the IDS makes use +of the [Information Layer](#). + +![Technical Enforcement and organizational enforcement of usage +policies](./media/image20_new.png) + + +A Usage Contract comprises a set of Usage Policies. Each policy +describes a certain permission or obligation of an [IDS Resource](). +Usage Contracts are written in a machine-readable +format (according to the [IDS Usage Policy Language](#)) and must +be interpreted as defined in [section 4.1.3.6](#). In any +case, a Usage Contract must always be regarded as an extension of an +existing legal agreement between two IDS participants, which can be +overruled by them. As neither the IDS nor any other known technology +stack can sufficiently interpret legal texts, any Usage Contract must +always be in line with the concluded agreements. Each contract between +IDS participants consists of a technical part and a non-technical part. +The technical part focuses on the description of technical interfaces +(Application Programming Interfaces) and the Usage Policy. Negotiation +of the technical part of a contract must be supported by the Information +Layer of the IDS-RAM. The non-technical part focuses on legal aspects of +the intended data exchange. For automatic negotiation of contracts and +conditions standard contracts are necessary (but not yet available +today). diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_x_ParIS.md b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_x_ParIS.md deleted file mode 100644 index 3d8ba64e..00000000 --- a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/3_1_x_ParIS.md +++ /dev/null @@ -1,7 +0,0 @@ -# Participant Information Service (ParIS) - -One of the most important value propositions of the IDS is the enablement of business interactions between previously unrelated Participants. That aims in particular at companies that have not met before in the digital or non-digital world but now start business agreements solely relying on the IDS. The therefore necessary trust in the opposite party is technically achieved by a verifiable identity management process through the Certification Authority and the DAPS. Both components equip each Participant with the necessary attributes and cryptographic proofs for the IDS handshakes. The establishment of a secure and uncompromised communication channel is however only the necessary requirement for a business interaction. In addition, the respective Participants need to understand their opposite’s state in regards of business workflows. For instance, every business actor needs to know its customers tax identification or VAT number to create correct invoices. Furthermore, the registered address is critical to understand the responsible jurisdiction for the unfortunate cases when only courts can solve conflicts. - -Such information is provided and maintained by a support organization in an IDS, a legal entity that administers the ecosystem (see [IDSA Rule Book section 4.2.1.1.1](https://internationaldataspaces.org/download/19008/)). This organization introduces a new Participant by creating its digital identity and at the same time registers security-critical at the DAPS and business-relevant attributes at another technical component. This component is the Participant Information Service. The ParIS provides access to these attributes to the other IDS Participants and components and connects the unique Participant identifier – a URI – with additional metadata. Usually, each IDS ecosystem operates only a small number of ParIS instances, usually only one. IDS Participants therefore know the location where to ask for more information about a potential business partner and can decide whether to start a data exchange. - -Different to other IDS components, the trustworthiness of ParIS' provisioned information is not grounded on technical measures, like for instance signatures or certificates, but on the administrative process controlled by the Support Organization. A direct consequence of this process is the necessity that each change request is manually verified before added to the ParIS database. diff --git a/documentation/media/DigitalIdentities.png b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/DigitalIdentities.png similarity index 100% rename from documentation/media/DigitalIdentities.png rename to documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/DigitalIdentities.png diff --git a/documentation/media/image18.png b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/image18.png similarity index 100% rename from documentation/media/image18.png rename to documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/image18.png diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/image20_new.png b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_1_Business_Layer/media/image20_new.png new file mode 100644 index 0000000000000000000000000000000000000000..40a1979ca6545e671806aaaa91089f9f9e212bab GIT binary patch literal 10580 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 literal 0 HcmV?d00001 diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/3_Layers-of-the-RAM b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_Layers-of-the-RAM new file mode 100644 index 00000000..dac9bbd8 --- /dev/null +++ b/documentation/3_Layers_of_the_Reference_Architecture_Model/3_Layers-of-the-RAM @@ -0,0 +1,5 @@ +#Layers of the Reference Architecture Model + +The five layers of the Reference Architecture Model are presented in detail in the following subsections. + +![](./media/image11.png) diff --git a/documentation/3_Layers_of_the_Reference_Architecture_Model/media/image11.png b/documentation/3_Layers_of_the_Reference_Architecture_Model/media/image11.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf8c378fe2dc2342bdd0a91faf05023eda0180b GIT binary patch literal 50908 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