Closed RazvanZmau closed 7 months ago
Copyright (c) 2024 Robert Bosch Manufacturing Solutions GmbH
This document describes scalable access control to Asset Administration Shells and Submodel Servers based on EDC in the Catena-X context.
Extension of reference implementation of Digital Twin Registry (DTR) in Catena-X for scalable access management to Asset Administration Shells (AAS) and adhering Submodel server(s).
Prior to Catena-X R23.09, a hotfix fulfilling the rudimentary access control requirements (e.g. compliance to antitrust law) has been implemented. It is currently used in all AAS-based Catena-X usecases. To succeed long-term, Data Providers require more flexibility, maintainability, and scalability than the current solution delivers. An architecture concept for this is proposed here.
The following components play a role in this access control concept:
These components are displayed in the
/lookup/shells
Data request from consumer EDC to provider EDC (A1)
BPNL
) membership credential for authentication, and specific asset identifiers (specificAssetIds
) as search parameter.API request by consumer EDC to DTR via provider EDC (A2)
BPNL
is forwarded by the provider EDC in the header to DTR API /lookup/shells
.BPNL
to access rule(s).specificAssetIds
from matching access rule(s) are enforced to be used; see Example).DTR receives request and sends response to consumer EDC (A3)
specificAssetIds
) are looked up in DTR and decoded as AAS identifiers./shell-descriptors/{aasIdentifier}
Data request from consumer EDC to provider EDC (B1)
BPNL
) membership credential, and AAS identifier (aasIdentifier
).API request by consumer EDC to DTR via provider EDC (B2)
BPNL
is forwarded by the provider EDC in the header to DTR API /shell-descriptors/{aasIdentifier}
with AAS identifier (aasIdentifier
) as request parameter.BPNL
to access rule(s).aasIdentifier
) as request parameter.DTR receives request and sends response to consumer EDC (B3)
aasIdentifier
) is looked up in DTR if overall access granted with respect to BPNL
and matching access rule(s).specificAssetIds
and semanticIds
(→ Submodel server endpoints) is filtered with respect to BPNL
and matching access rule(s).aasIdentifier
) is sent back to consumer EDC.aasIdentifier
) is not matching to the mandatory access rule definition of subset(s) of all Asset Administration Shells, the response is empty.Data request from consumer EDC to provider EDC (C1)
BPNL
) membership credential, and Submodel server endpoint.BPNL
.API request by consumer EDC to DTR for check on access (C2i)
BPNL
to match access rule(s).True
otherwise False
True
.API request by consumer EDC to Submodel server via provider EDC and EDC Extension (C2ii)
True
the API request from consumer EDC is forwarded to Submodel server.Response from Submodel Server to consumer EDC via provider EDC(C3)
Business Partner Number (BPNL ) of the defined data consumer where an access rule applies to |
(Ω): Definition of subset of Asset Administration Shells via specific asset identifier(s) which are overall allowed to be requested by the defined data consumer (→ BPNL ) |
(σ): Definition of visible specific asset identifier(s) within the predefined subset of Asset Administration Shells (Ω), which are allowed to be filtered by and visible to the defined data consumer (→ BPNL ) |
Definition of Submodel(s) which are visible to the defined data consumer (→ BPNL ) via semantic identifier(s) |
---|---|---|---|
ACME_A |
[manufacturerPartId = 4711 , customerPartId = ACME_A111 ] |
[manufacturerPartId , customerPartId , partInstanceId ] |
[ProductCarbonFootprintv1.1.0 ] |
ACME_B |
[manufacturerPartId = 4711 , customerPartId = ACME_B222 ] |
[manufacturerPartId , customerPartId , partInstanceId ] |
[ProductCarbonFootprintv1.1.0 ] |
AAS Identifier | Specific Asset Identifier(s) | Semantic Identifier(s) |
---|---|---|
10001 |
[manufacturerPartId = 4711 , customerPartId = ACME_A111 , partInstanceId = abc001 , nameAtManufacturer = ESPv9 ] |
[SerialPartv1.1.0 → https://edc.dataplane/TRACE/4711-abc001 , ProductCarbonFootprintv1.1.0 → https://edc.dataplane/PCF/4711-abc001 ] |
10002 |
[manufacturerPartId = 4711 , customerPartId = ACME_A111 , partInstanceId = abc002 , nameAtManufacturer = ESPv9 ] |
[SerialPartv1.1.0 → https://edc.dataplane/TRACE/4711-abc002 , ProductCarbonFootprintv1.1.0 → https://edc.dataplane/PCF/4711-abc002 ] |
10004 |
[manufacturerPartId = 4711 , customerPartId = ACME_B222 , partInstanceId = abc003 , nameAtManufacturer = ESPv9 ] |
[SerialPartv1.1.0 → https://edc.dataplane/TRACE/4711-abc003 , ProductCarbonFootprintv1.1.0 → https://edc.dataplane/PCF/4711-abc003 ] |
/lookup/shells
"Input Assume a data consumer with
BPNL = ACME_A
(membership credential)specificAssetIds
= [manufacturerPartId = 4711
, customerPartId = ACME_A111
, partInstanceId = abc002
]Output These input parameters lead to the
10002
The user BPNL = ACME_A
is with repsect to the access rules allowed to access Asset Administration Shells with the specificAssetIds
being manufacturerPartId = 4711
and customerPartId = ACME_A111
.
This matches to the Asset Administration Shells with identifiers 10001
, and 10002
.
The further filtering by the data consumer is partInstanceId = abc002
, which excludes the Asset Administration Shell with the identifier 10001
.
/shell-descriptors/{aasIdentifier}
"Input Assume a data consumer with
BPNL = ACME_A
(membership credential)/shell-descriptors/10002
from Asset Administration Shell 10002
Output The response by the Digital Twin Registry is a pre-filtered content of
10002
with AAS Identifier | Specific Asset Identifier(s) | Semantic Identifier(s) |
---|---|---|
10002 |
[manufacturerPartId = 4711 , customerPartId = ACME_A111 , partInstanceId = abc002 , nameAtManufacturer = ESPv9 |
[SerialPartv1.1.0 → https://edc.dataplane/TRACE/4711-abc002 ProductCarbonFootprintv1.1.0 → https://edc.dataplane/PCF/4711-abc002 ] |
The actual request by the data consumer BPNL = ACME_A
to the content of the Asset Administration Shell with the identifier 10002
is further filtered by the matching access rule. This matching access rule specifies manufacturerPartId
, customerPartId
, and partInstanceId
as enabled parameters for filtering and display to the data consumer. Therefore, any further filtering parameter by the data consumer is suppressed and not displayed. In this case here, it means, the nameAtManufacturer = ESPv9
from Asset Administration Shell with iedntifier 10002
is suppressed.
Furthermore, the access rule grants access to Submodel server endpoints, which follow the aspect model ProductCarbonFootprintv1.1.0
. This as a consequence suppresses the display and access to the second Submodel server endpoint from Asset Administration Shell with identifier 10002
, namely SerialPartv1.1.0
.
Input
BPNL = ACME_A
(membership credential)https://edc.dataplane/PCF/4711-abc002
Output (C2i)
Since access is granted to Submodel server endpoints, which follow the aspect model ProductCarbonFootprintv1.1.0
in Asset Administration Shell 10002
, the API call to https://edc.dataplane/PCF/4711-abc002
is granted and the Digital Twin Registry responds with
True
for the given input parameters.Output (C2ii)
In conclusion the concept enables scalable access control to Asset Administration Shells (AAS) and its adhering Submodel servers in the context of Catena-X.
Since the enforcement point for access to AAS is close to the Digital Twin Registry the same concept will also work with adaption in a context outside of Catena-X.
The AAS APIs of the DTR will remain unchanged within this concept. In addition to the AAS APIs of the DTR, two additional APIs are needed within this concept. One API for maintenance of the access rules, and another (purely machine-to-machine API) to check if access to a Submodel server endpoint is granted.
An extension to the Eclipse Dataspace Components is needed to serve as a gateway to the Submodel servers. This requires the here mentioned machine-to-machine API at the DTR. This extension enables the access enforcement to the Submodel servers endpoint(s).
An EDC-extension as policy enforcement is needed to properly treat these access rules.
Two additional APIs in the Digital Twin Registry, beside the API definition of the Asset Administration Shell, are needed. One CRUD-API for the management of the access rules, and another purely for machine-to-machine communication between the Digital Twin Registry and this EDC-extension.
Data providers, who use this scalable access management to Asset Administration Shells and adhering Submodel server(s) can make use of this. The former access managament to Asset Administration Shells remains optionally available.
Purpose: to maintain the access to digital twins via EDC brings enhancements over the Access Management on single digital twins.