조직 간에 데이터를 공유할 수 있는 최소 실행 가능 데이터 공간 설정 - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

조직 간에 데이터를 공유할 수 있는 최소 실행 가능 데이터 공간 설정

작성자: Ramy Hcini(Think-it), Ismail Abdellaoui(Think-it), Malte Gasseling(Think-it), Jorge Hernandez Suarez(AWS) 및 Michael Miller(AWS)

환경: PoC 또는 파일럿

기술: 분석, 컨테이너 및 마이크로서비스, 데이터 레이크, 데이터베이스, 인프라

워크로드: 오픈 소스

AWS 서비스: Amazon Aurora, AWS Certificate Manager(ACM), AWS CloudFormation, Amazon EC2, Amazon EFS, Amazon EKS, Elastic Load Balancing(ELB), Amazon RDS, Amazon S3, AWS Systems Manager

요약

데이터 공간은 데이터 교환을 위한 페더레이션 네트워크로, 데이터를 핵심 원칙으로 신뢰하고 제어합니다. 이를 통해 조직은 비용 효율적이고 기술에 구애받지 않는 솔루션을 제공하여 대규모로 데이터를 공유, 교환 및 협업할 수 있습니다.

데이터 공간은 모든 관련 이해관계자가 참여하는 접근 방식을 통해 데이터 기반 문제 해결을 사용하여 지속 가능한 미래를 위한 노력을 크게 추진할 수 있는 잠재력이 end-to-end 있습니다.

이 패턴은 두 회사가 Amazon Web Services(AWS)에서 데이터 공간 기술을 사용하여 탄소 배출량 감소 전략을 추진하는 방법의 예를 안내합니다. 이 시나리오에서 회사 X는 Y가 소비하는 탄소 배출 데이터를 제공합니다. 다음 데이터 공간 사양 세부 정보는 추가 정보 섹션을 참조하세요.

  • Participants

  • 비즈니스 사례

  • 데이터 공간 권한

  • 데이터 공간 구성 요소

  • 데이터 공간 서비스

  • 교환할 데이터

  • 데이터 모델

  • Tractus-X EDC 커넥터

패턴에는 다음 단계가 포함됩니다.

  • 에서 두 명의 참가자가 실행되는 기본 데이터 공간에 필요한 인프라 배포 AWS.

  • 커넥터를 안전한 방식으로 사용하여 탄소 배출량-강도 데이터를 교환합니다.

이 패턴은 Amazon Elastic Kubernetes Service(Amazon )를 통해 데이터 공간 커넥터와 해당 서비스를 호스팅하는 Kubernetes 클러스터를 배포합니다EKS.

Eclipse Dataspace 구성 요소(EDC) 제어 영역과 데이터 영역은 모두 Amazon 에 배포됩니다EKS. 공식 Tractus-X Helm 차트는 PostgreSQL 및 HashiCorp Vault 서비스를 종속 항목으로 배포합니다.

또한 자격 증명 서비스는 Amazon Elastic Compute Cloud(Amazon EC2)에 배포되어 실행 가능한 최소 데이터 공간()의 실제 시나리오를 복제합니다MVDS.

사전 조건 및 제한 사항

사전 조건 

  • 선택한 에 인프라를 배포 AWS 계정 하는 활성 AWS 리전

  • 기술 사용자로 일시적으로 사용될 Amazon S3에 액세스할 수 있는 AWS Identity and Access Management (IAM) 사용자(현재 EDC 커넥터는 역할 사용을 지원하지 않습니다. 이 데모에 대해 특별히 한 명의 IAM 사용자를 생성하고 이 사용자에게는 연결된 제한된 권한이 있는 것이 좋습니다.)

  • AWS Command Line Interface (AWS CLI) 선택한 에 설치 및 구성됨 AWS 리전

  • AWS 보안 자격 증명

  • 워크스테이션의 eksctl

  • 워크스테이션의 Git

  • kubectl

  • Helm

  • 우체국

  • AWS Certificate Manager (ACM) SSL/TLS 인증서

  • Application Load Balancer를 가리키는 DNS 이름(이DNS름은 ACM 인증서에 포함되어야 함)

  • HashiCorp 볼트(비밀 관리에 를 사용하는 AWS Secrets Manager 방법에 대한 자세한 내용은 추가 정보 섹션을 참조하세요.)

제품 버전

제한 사항

  • 커넥터 선택 ‒ 이 배포는 EDC기반 커넥터를 사용합니다. 그러나 배포의 특정 요구 사항에 맞는 정보에 입각한 결정을 내리려면 EDCFIWARE True 커넥터 모두의 강점과 기능을 고려해야 합니다.

  • EDC 커넥터 빌드 ‒ 선택한 배포 솔루션은 잘 확립되고 광범위하게 테스트된 배포 옵션인 Tractus-X EDC Connector Helm 차트를 사용합니다. 이 차트를 사용하는 결정은 일반적인 사용량과 제공된 빌드에 필수 확장을 포함하기 때문에 결정됩니다. PostgreSQL 및 HashiCorp Vault는 기본 구성 요소이지만 필요한 경우 자체 커넥터 빌드를 사용자 지정할 수 있는 유연성을 가집니다.

  • 프라이빗 클러스터 액세스 ‒ 배포된 EKS 클러스터에 대한 액세스는 프라이빗 채널로 제한됩니다. 클러스터와의 상호 작용은 kubectl 및 를 사용하여 독점적으로 수행됩니다IAM. 클러스터 리소스에 대한 퍼블릭 액세스는 로드 밸런서와 도메인 이름을 사용하여 활성화할 수 있습니다. 로드 밸런서는 특정 서비스를 더 광범위한 네트워크에 노출하기 위해 선택적으로 구현해야 합니다. 그러나 퍼블릭 액세스 권한은 제공하지 않는 것이 좋습니다.

  • 보안 초점 ‒ EDC 커넥터 데이터 교환과 관련된 단계에 집중할 수 있도록 보안 구성을 기본 사양으로 추상화하는 데 중점을 둡니다. 기본 보안 설정은 유지되지만 클러스터를 퍼블릭 네트워크에 노출하기 전에 보안 통신을 활성화해야 합니다. 이 예방 조치는 안전한 데이터 처리를 위한 견고한 기반을 보장합니다.

  • 인프라 비용 ‒ 인프라 비용 추정은 를 사용하여 확인할 수 있습니다AWS Pricing Calculator. 간단한 계산을 통해 배포된 인프라에 대한 비용은 USD 매월 최대 162.92가 될 수 있습니다.

아키텍처

MVDS 아키텍처는 두 개의 가상 프라이빗 클라우드(VPCs)로 구성되며, 하나는 동적 속성 프로비저닝 시스템(DAPS) 자격 증명 서비스용이고 다른 하나는 Amazon용입니다EKS.

DAPS 아키텍처

다음 다이어그램은 Auto Scaling 그룹에서 제어하는 EC2 인스턴스에서 를 DAPS 실행하는 것을 보여줍니다. Application Load Balancer 및 라우팅 테이블은 DAPS 서버를 노출합니다. Amazon Elastic File System(Amazon EFS)은 DAPS 인스턴스 간에 데이터를 동기화합니다.

AWS 클라우드 architecture with VPC, availability zones, subnets, and DAPS servers in an auto-scaling group.

Amazon EKS 아키텍처

데이터 공간은 기술에 구애받지 않는 솔루션으로 설계되었으며 여러 구현이 존재합니다. 이 패턴은 Amazon EKS 클러스터를 사용하여 데이터 공간 기술 구성 요소를 배포합니다. 다음 다이어그램은 EKS 클러스터 배포를 보여줍니다. 작업자 노드는 프라이빗 서브넷에 설치됩니다. Kubernetes 포드는 프라이빗 서브넷에도 있는 PostgreSQL 인스턴스용 Amazon Relational Database Service(AmazonRDS)에 액세스합니다. Kubernetes 포드는 Amazon S3에 공유 데이터를 저장합니다.

AWS 클라우드 architecture with VPC, public and private subnets, NAT gateways, and Kubernetes nodes across two availability zones.

도구

AWS 서비스

  • AWS CloudFormation 는 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및 리전의 수명 주기 동안 관리할 수 있도록 지원합니다.

  • Amazon Elastic Compute Cloud(Amazon EC2)는 에서 확장 가능한 컴퓨팅 용량을 제공합니다 AWS 클라우드. 필요한 만큼 가상 서버를 시작하고 빠르게 스케일 업하거나 스케일 다운할 수 있습니다.

  • Amazon Elastic File System(Amazon EFS)은 에서 공유 파일 시스템을 생성하고 구성하는 데 도움이 됩니다 AWS 클라우드.

  • Amazon Elastic Kubernetes Service(Amazon EKS)를 사용하면 자체 Kubernetes 제어 영역 또는 노드를 설치하거나 유지 관리할 필요 AWS 없이 에서 Kubernetes를 실행할 수 있습니다.

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

  • Elastic Load Balancing(ELB)은 수신 애플리케이션 또는 네트워크 트래픽을 여러 대상에 분산합니다. 예를 들어 하나 이상의 가용 영역에 있는 EC2 인스턴스, 컨테이너 및 IP 주소 간에 트래픽을 분산할 수 있습니다.

기타 도구

  • eksctl은 Amazon 에서 Kubernetes 클러스터를 생성하고 관리하기 위한 명령줄 유틸리티입니다EKS.

  • Git은 오픈 소스, 분산 버전 제어 시스템입니다.

  • HashiCorp Vault는 보안 스토리지에 보안 인증 정보 및 기타 민감한 정보에 대한 액세스를 제어합니다.

  • Helm은 Kubernetes 클러스터에 애플리케이션을 설치하고 관리하는 데 도움이 되는 Kubernetes의 오픈 소스 패키지 관리자입니다.

  • kubectl는 Kubernetes 클러스터에 대해 명령의 실행을 돕는 명령줄 인터페이스입니다.

  • Postman은 API 플랫폼입니다.

코드 리포지토리

이 패턴에 대한 Kubernetes 구성 YAML 파일 및 Python 스크립트는 리포지토리에서 사용할 수 있습니다 GitHub aws-patterns-edc. 패턴은 Tractus-X EDC 리포지토리도 사용합니다.

모범 사례

Amazon EKS 및 참가자 인프라 격리

Kubernetes의 네임스페이스는 회사 X 공급자의 인프라를 이 패턴의 회사 Y 소비자의 인프라와 분리합니다. 자세한 내용은 EKS 모범 사례 가이드 섹션을 참조하세요.

보다 현실적인 상황에서 각 참가자는 자체 내에서 실행되는 별도의 Kubernetes 클러스터를 갖게 됩니다 AWS 계정. 공유 인프라(DAPS이 패턴)는 데이터 공간 참가자가 액세스할 수 있는 반면 참가자의 인프라와는 완전히 분리됩니다.

에픽

작업설명필요한 기술

리포지토리를 복제합니다.

리포지토리를 워크스테이션에 복제하려면 다음 명령을 실행합니다.

git clone https://github.com/Think-iT-Labs/aws-patterns-edc

워크스테이션은 에 액세스할 수 있어야 합니다 AWS 계정.

DevOps 엔지니어

Kubernetes 클러스터를 프로비저닝하고 네임스페이스를 설정합니다.

계정에 간소화된 기본 EKS 클러스터를 배포하려면 리포지토리를 복제한 워크스테이션에서 다음 eksctl 명령을 실행합니다.

eksctl create cluster

명령은 세 가지 가용 영역에 걸쳐 VPC 및 프라이빗 및 퍼블릭 서브넷을 생성합니다. 네트워크 계층이 생성된 후 명령은 Auto Scaling 그룹 내에 두 개의 m5.large EC2 인스턴스를 생성합니다.

자세한 내용과 예제 출력은 eksctl 가이드 단원을 참조하세요.

프라이빗 클러스터를 프로비저닝한 후 다음 명령을 실행하여 로컬 Kubernetes 구성에 새 EKS 클러스터를 추가합니다.

aws eks update-kubeconfig --name <EKS CLUSTER NAME> --region <AWS REGION>

이 패턴은 eu-west-1 AWS 리전 를 사용하여 모든 명령을 실행합니다. 그러나 원하는 에서 동일한 명령을 실행할 수 있습니다 AWS 리전.

EKS 노드가 실행 중이고 준비 상태인지 확인하려면 다음 명령을 실행합니다.

kubectl get nodes
DevOps 엔지니어

네임스페이스를 설정합니다.

공급자와 소비자의 네임스페이스를 생성하려면 다음 명령을 실행합니다.

kubectl create ns provider kubectl create ns consumer

이 패턴에서는 provider 및 를 네임스페이스consumer로 사용하여 다음 단계의 구성에 맞추는 것이 중요합니다.

DevOps 엔지니어
작업설명필요한 기술

DAPS 를 사용하여 배포합니다 AWS CloudFormation.

DAPS 작업을 쉽게 관리하기 위해 DAPS 서버가 EC2 인스턴스에 설치됩니다.

를 설치하려면 AWS CloudFormation 템플릿 을 DAPS사용합니다. 사전 조건 섹션에서 ACM 인증서와 DNS 이름이 필요합니다. 템플릿은 다음을 배포하고 구성합니다.

  • Application Load Balancer

  • Auto Scaling 그룹

  • EC2 필요한 모든 패키지를 설치하도록 사용자 데이터로 구성된 인스턴스

  • IAM 역할

  • DAPS

에 로그인 AWS Management Console 하고 AWS CloudFormation 콘솔 를 사용하여 AWS CloudFormation 템플릿을 배포할 수 있습니다. 다음과 같은 AWS CLI 명령을 사용하여 템플릿을 배포할 수도 있습니다.

aws cloudformation create-stack --stack-name daps \ --template-body file://aws-patterns-edc/cloudformation.yml --parameters \ ParameterKey=CertificateARN,ParameterValue=<ACM Certificate ARN> \ ParameterKey=DNSName,ParameterValue=<DNS name> \ ParameterKey=InstanceType,ParameterValue=<EC2 instance type> \ ParameterKey=EnvironmentName,ParameterValue=<Environment Name> --capabilities CAPABILITY_NAMED_IAM

환경 이름은 사용자가 직접 선택합니다. AWS 리소스 태그에 반영DapsInfrastructure되므로 와 같은 의미 있는 용어를 사용하는 것이 좋습니다.

이 패턴의 경우 t3.small는 Docker 컨테이너 3개가 있는 DAPS 워크플로를 실행할 수 있을 만큼 충분히 큽니다.

템플릿은 프라이빗 서브넷에 EC2 인스턴스를 배포합니다. 즉, 인터넷에서 SSH (Secure Shell)을 통해 인스턴스에 직접 액세스할 수 없습니다. 인스턴스는 의 기능인 Session Manager 를 통해 실행 중인 인스턴스에 대한 액세스를 활성화하는 데 필요한 IAM 역할 및 AWS Systems Manager 에이전트로 프로비저닝됩니다 AWS Systems Manager.

액세스에는 Session Manager를 사용하는 것이 좋습니다. 또는 인터넷에서 SSH 액세스할 수 있도록 Bastion 호스트를 프로비저닝할 수 있습니다. Bastion 호스트 접근 방식을 사용하는 경우 EC2 인스턴스 실행에 몇 분 정도 더 걸릴 수 있습니다.

AWS CloudFormation 템플릿이 성공적으로 배포되면 Application Load Balancer DNS 이름을 가리킵니다DNS. 확인하려면 다음 명령을 실행합니다.

dig <DNS NAME>

다음과 유사하게 출력됩니다.

; <<>> DiG 9.16.1-Ubuntu <<>> edc-pattern.think-it.io ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42344 ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;edc-pattern.think-it.io. IN A ;; ANSWER SECTION: edc-pattern.think-it.io. 276 IN CNAME daps-alb-iap9zmwy3kn8-1328773120.eu-west-1.elb.amazonaws.com. daps-alb-iap9zmwy3kn8-1328773120.eu-west-1.elb.amazonaws.com. 36 IN A 52.208.240.129 daps-alb-iap9zmwy3kn8-1328773120.eu-west-1.elb.amazonaws.com. 36 IN A 52.210.155.124
DevOps 엔지니어

참가자의 커넥터를 DAPS 서비스에 등록합니다.

에 프로비저닝된 EC2 인스턴스 내에서 참가자를 DAPS등록합니다.

  1. 루트 사용자를 사용하여 EC2 인스턴스에서 사용 가능한 스크립트를 실행합니다.

    cd /srv/mvds/omejdn-daps
  2. 공급자 등록:

    bash scripts/register_connector.sh <provider_name>
  3. 소비자 등록:

    bash scripts/register_connector.sh <consumer_name>

이름 선택은 다음 단계에 영향을 미치지 않습니다. providerconsumer 또는 companyx 및 중 하나를 사용하는 것이 좋습니다companyy.

또한 등록 명령은 생성된 인증서 및 키에서 가져온 필요한 정보로 DAPS 서비스를 자동으로 구성합니다.

DAPS 서버에 로그인한 상태에서 설치의 다음 단계에 필요한 정보를 수집합니다.

  1. 에서 공급자 및 소비자의 client idomejdn-daps/config/clients.yml 가져옵니다. client id 값은 16진수의 긴 문자열입니다.

  2. omejdn-daps/keys 디렉터리에서 , consumer.cert, consumer.key provider.certprovider.key 파일의 내용을 복사합니다.

워크스테이션daps-에서 접두사가 인 비슷한 이름의 파일에 텍스트를 복사하여 붙여넣는 것이 좋습니다.

공급자와 소비자의 클라이언트IDs가 있어야 하며 워크스테이션의 작업 디렉터리에 4개의 파일이 있어야 합니다.

  • 소스 파일 이름은 워크스테이션 파일 이름 이 consumer.cert 됩니다daps-consumer.cert.

  • 소스 파일 이름은 워크스테이션 파일 이름 이 consumer.key 됩니다daps-consumer.key.

  • 소스 파일 이름은 워크스테이션 파일 이름 이 provider.cert 됩니다daps-provider.cert.

  • 소스 파일 이름은 워크스테이션 파일 이름 이 provider.key 됩니다daps-provider.key.

DevOps 엔지니어
작업설명필요한 기술

Tractus-X EDC리포지토리를 복제하고 0.4.1 버전을 사용합니다.

Tractus-X EDC 커넥터의 빌드를 사용하려면 PostgreSQL(자산 데이터베이스) 및 HashiCorp Vault(비밀 관리) 서비스를 배포하고 사용할 수 있어야 합니다.

Tractus-X EDC Helm 차트에는 다양한 버전이 있습니다. 이 패턴은 DAPS 서버를 사용하기 때문에 버전 0.4.1을 지정합니다.

최신 버전은 ID 서비스의 분산 구현과 함께 Managed Identity Wallet(MIW)을 사용합니다.

두 개의 Kubernetes 네임스페이스를 생성한 워크스테이션에서 tractusx-edc 리포지토리를 복제하고 release/0.4.1브랜치를 확인합니다.

git clone https://github.com/eclipse-tractusx/tractusx-edc cd tractusx-edc git checkout release/0.4.1
DevOps 엔지니어

Tractus-X EDC Helm 차트를 구성합니다.

두 커넥터가 서로 상호 작용할 수 있도록 Tractus-X Helm 차트 템플릿 구성을 수정합니다.

이렇게 하려면 서비스 DNS 이름에 네임스페이스를 추가하여 클러스터의 다른 서비스에서 확인할 수 있도록 해야 합니다. 이러한 수정은 charts/tractusx-connector/templates/_helpers.tpl 파일을 수정해야 합니다. 이 패턴은 사용할 수 있는 이 파일의 최종 수정 버전을 제공합니다. 복사하여 파일의 daps 섹션에 넣습니다charts/tractusx-connector/templates/_helpers.tpl.

의 모든 DAPS 종속성에 주석을 달아야 합니다charts/tractusx-connector/Chart.yaml.

dependencies: # IDS Dynamic Attribute Provisioning Service (IAM) # - name: daps # version: 0.0.1 # repository: "file://./subcharts/omejdn" # alias: daps # condition: install.daps
DevOps 엔지니어

Amazon 에서 PostgreSQL를 사용하도록 커넥터를 구성합니다RDS.

(선택 사항) Amazon Relational Database Service(AmazonRDS) 인스턴스는 이 패턴에서 필요하지 않습니다. 하지만 Amazon RDS 또는 Amazon Aurora는 고가용성, 백업 및 복구와 같은 기능을 제공하기 때문에 사용을 적극 권장합니다.

Kubernetes의 PostgreSQL를 Amazon 로 바꾸려면 다음을 RDS수행합니다.

  1. Amazon RDS for PostgreSQL 인스턴스를 프로비저닝합니다.

  2. 에서 PostgreSQL 섹션에 Chart.yaml주석을 추가합니다.

  3. provider_values.yml 및 에서 다음과 같이 postgresql 섹션을 consumer_values.yml구성합니다.

postgresql: auth: database: edc password: <RDS PASSWORD> username: <RDS Username> jdbcUrl: jdbc:postgresql://<RDS DNS NAME>:5432/edc username: <RDS Username> password: <RDS PASSWORD> primary: persistence: enabled: false readReplicas: persistence: enabled: false
DevOps 엔지니어

공급자 커넥터와 해당 서비스를 구성하고 배포합니다.

공급자 커넥터와 해당 서비스를 구성하려면 다음을 수행합니다.

  1. edc_helm_configs 디렉터리에서 현재 Helm 차트 폴더로 provider_edc.yaml 파일을 다운로드하려면 다음 명령을 실행합니다.

    wget -q https://raw.githubusercontent.com/Think-iT-Labs/aws-patterns-edc/main/edc_helm_configs/provider_edc.yaml> -P charts/tractusx-connector/

  2. 다음 변수(파일에도 표시됨)를 해당 값으로 바꿉니다.

    • CLIENT_ID ‒ 에서 생성한 ID입니다DAPS. 는 DAPS 서버에서 /srv/mvds/omejdn-daps/config/clients.yml/config/clients.ymlCLIENT_ID 있어야 합니다. 16진수 문자의 문자열이어야 합니다.

    • DAPS_URL ‒ DAPS 서버의 URL . AWS CloudFormation 템플릿을 실행할 때 설정한 DNS 이름을 https://{DNS name} 사용해야 합니다.

    • VAULT_TOKEN ‒ 볼트 권한 부여에 사용할 토큰입니다. 값을 선택합니다.

    • vault.fullnameOverridevault-provider.

    • vault.hashicorp.urlhttp://vault-provider:8200/.

    이전 값은 배포 이름과 네임스페이스 이름이 공급자라고 가정합니다.

  3. 워크스테이션에서 Helm 차트를 실행하려면 다음 명령을 사용합니다.

    cd charts/tractusx-connector helm dependency build helm upgrade --install provider ./ -f provider_edc.yaml -n provider
DevOps 엔지니어

공급자 저장소에 인증서와 키를 추가합니다.

혼동을 방지하려면 tractusx-edc/charts 디렉터리 외부에서 다음 인증서를 생성합니다.

예를 들어 다음 명령을 실행하여 홈 디렉터리로 변경합니다.

cd ~

이제 공급자가 필요로 하는 보안 암호를 볼트에 추가해야 합니다.

볼트 내의 보안 암호 이름은 provider_edc.yml 파일 secretNames: 섹션의 키 값입니다. 기본적으로 다음과 같이 구성됩니다.

secretNames: transferProxyTokenSignerPrivateKey: transfer-proxy-token-signer-private-key transferProxyTokenSignerPublicKey: transfer-proxy-token-signer-public-key transferProxyTokenEncryptionAesKey: transfer-proxy-token-encryption-aes-key dapsPrivateKey: daps-private-key dapsPublicKey: daps-public-key

고급 암호화 표준(AES) 키, 프라이빗 키, 퍼블릭 키 및 자체 서명된 인증서는 처음에 생성됩니다. 그런 다음 볼트에 보안 암호로 추가됩니다.

또한 이 디렉터리에는 DAPS 서버에서 복사한 daps-provider.certdaps-provider.key 파일이 포함되어야 합니다.

  1. 다음 명령을 실행합니다.

    # generate a private key openssl ecparam -name prime256v1 -genkey -noout -out provider-private-key.pem # generate corresponding public key openssl ec -in provider-private-key.pem -pubout -out provider-public-key.pem # create a self-signed certificate openssl req -new -x509 -key provider-private-key.pem -out provider-cert.pem -days 360 # generate aes key openssl rand -base64 32 > provider-aes.key
  2. 볼트에 보안 암호를 추가하기 전에 줄 바꿈을 로 대체하여 여러 줄에서 단일 줄로 변환합니다\n.

    cat provider-private-key.pem | sed 's/$/\\\\n/'|tr -d '\\n' > provider-private-key.pem.line cat provider-public-key.pem | sed 's/$/\\\\n/'|tr -d '\\n' > provider-public-key.pem.line cat provider-cert.pem | sed 's/$/\\\\n/'|tr -d '\\n' > provider-cert.pem.line cat provider-aes.key | sed 's/$/\\\\n/'|tr -d '\\n' > provider-aes.key.line ## The following block is for daps certificate and key openssl x509 -in daps-provider.cert -outform PEM | sed 's/$/\\\\n/'|tr -d '\\n' > daps-provider.cert.line cat daps-provider.key | sed 's/$/\\\\n/'|tr -d '\\n' > daps-provider.key.line
  3. Vault에 추가할 보안 암호를 포맷하려면 다음 명령을 실행합니다.

    JSONFORMAT='{"content": "%s"}' #create a single line in JSON format printf "${JSONFORMAT}\\n" "`cat provider-private-key.pem.line`" > provider-private-key.json printf "${JSONFORMAT}\\n" "`cat provider-public-key.pem.line`" > provider-public-key.json printf "${JSONFORMAT}\\n" "`cat provider-cert.pem.line`" > provider-cert.json printf "${JSONFORMAT}\\n" "`cat provider-aes.key.line`" > provider-aes.json printf "${JSONFORMAT}\\n" "`cat daps-provider.key.line`" > daps-provider.key.json printf "${JSONFORMAT}\\n" "`cat daps-provider.cert.line`" > daps-provider.cert.json

    보안 암호는 이제 JSON 형식이며 볼트에 추가할 준비가 되었습니다.

  4. 볼트의 포드 이름을 가져오려면 다음 명령을 실행합니다.

    kubectl get pods -n provider|egrep "vault|NAME"

    포드 이름은 와 유사합니다"vault-provider-0". 이 이름은 볼트로 포트 전달을 생성할 때 사용됩니다. 포트 전달을 사용하면 볼트에 액세스하여 보안 암호를 추가할 수 있습니다. 자격 AWS 증명이 구성된 워크스테이션에서 이 작업을 실행해야 합니다.

  5. 볼트에 액세스하려면 kubectl를 사용하여 포트 전달을 구성합니다.

    kubectl port-forward <VAULT_POD_NAME> 8200:8200 -n provider

이제 브라우저 또는 를 통해 볼트에 액세스할 수 있습니다CLI.

브라우저

  1. 브라우저를 사용하여 http://127.0.0.1:8200 이동합니다. 그러면 구성한 포트 전달을 사용합니다.

  2. 이전에 에서 구성한 토큰을 사용하여 로그인합니다provider_edc.yml. 보안 암호 엔진에서 세 개의 보안 암호를 생성합니다. 각 보안 암호에는 다음 목록에 표시된 보안 암호 이름인 Path for this secret 값이 있습니다. secret data 섹션 내에서 키의 이름은 content 이고 값은 라는 각 파일의 단일 텍스트 줄이 됩니다.line.

  3. 보안 암호 이름은 provider_edc.yml 파일의 secretNames 섹션에서 소싱됩니다.

  4. 다음 보안 암호를 생성합니다.

    • 파일 이름이 transfer-proxy-token-signer-private-key 있는 보안 암호 provider-private-key.pem.line

    • 파일 이름이 transfer-proxy-token-signer-public-key 있는 보안 암호 provider-cert.pem.line

    • 파일 이름이 transfer-proxy-token-encryption-aes-key 있는 보안 암호 provider-aes.key.line

    • 파일 이름이 daps-private-key 있는 보안 암호 daps-provider.key.line

    • 파일 이름이 daps-public-key 있는 보안 암호 daps-provider.cert.line

볼트 CLI

또한 CLI는 구성한 포트 전달을 사용합니다.

  1. 워크스테이션에서 볼트 설명서의 지침에 CLI 따라 Vault를 설치합니다. HashiCorp

  2. 에서 설정한 토큰을 사용하여 볼트에 로그인하려면 다음 명령을 provider_edc.yml실행합니다.

    vault login -address=http://127.0.0.1:8200

    올바른 토큰을 사용하면 메시지가 표시됩니다. "Success! You are now authenticated."

  3. 이전에 생성한 JSON 형식이 지정된 파일을 사용하여 보안 암호를 생성하려면 다음 코드를 실행합니다.

    vault kv put -address=http://127.0.0.1:8200 secret/transfer-proxy-token-signer-private-key @provider-private-key.json vault kv put -address=http://127.0.0.1:8200 secret/transfer-proxy-token-signer-public-key @provider-cert.json vault kv put -address=http://127.0.0.1:8200 secret/transfer-proxy-token-encryption-aes-key @provider-aes.json vault kv put -address=http://127.0.0.1:8200 secret/daps-private-key @daps-provider.key.json vault kv put -address=http://127.0.0.1:8200 secret/daps-public-key @daps-provider.cert.json
DevOps 엔지니어

소비자 커넥터와 해당 서비스를 구성하고 배포합니다.

소비자를 구성하고 배포하는 단계는 공급자에 대해 완료한 단계와 유사합니다.

  1. aws-patterns-edc 리포지토리consumer_edc.yaml에서 tractusx-edc/charts/tractusx-connector 폴더로 를 복사하려면 다음 명령을 실행합니다.

    cd tractusx-edc wget -q https://raw.githubusercontent.com/Think-iT-Labs/aws-patterns-edc/main/edc_helm_configs/consumer_edc.yaml -P charts/tractusx-connector/
  2. 다음 변수를 실제 값으로 업데이트합니다.

    • CONSUMER_CLIENT_ID ‒ 에서 생성한 ID입니다DAPS. 는 DAPS 서버에서 config/clients.yml에 있어야 CONSUMER_CLIENT_ID 합니다.

    • DAPS_URL ‒ 공급자에 사용한 DAPS URL 것과 동일합니다.

    • VAULT_TOKEN ‒ 볼트 권한 부여에 사용할 토큰입니다. 값을 선택합니다.

    • vault.fullnameOverridevault-consumer

    • vault.hashicorp.urlhttp://vault-provider:8200/

    이전 값은 배포 이름과 네임스페이스 이름이 라고 가정합니다consumer.

  3. Helm 차트를 실행하려면 다음 명령을 사용합니다.

    cd charts/tractusx-connector helm upgrade --install consumer ./ -f consumer_edc.yaml -n consumer

소비자 저장소에 인증서와 키를 추가합니다.

보안 관점에서 각 데이터 공간 참가자의 인증서와 키를 다시 생성하는 것이 좋습니다. 이 패턴은 소비자의 인증서와 키를 재생성합니다.

단계는 공급자의 단계와 매우 유사합니다. consumer_edc.yml 파일에서 보안 암호 이름을 확인할 수 있습니다.

볼트 내의 보안 암호 이름은 secretNames: 섹션의 키 값입니다consumer_edc.yml file. 기본적으로 다음과 같이 구성됩니다.

secretNames: transferProxyTokenSignerPrivateKey: transfer-proxy-token-signer-private-key transferProxyTokenSignerPublicKey: transfer-proxy-token-signer-public-key transferProxyTokenEncryptionAesKey: transfer-proxy-token-encryption-aes-key dapsPrivateKey: daps-private-key dapsPublicKey: daps-public-key

DAPS 서버에서 복사한 daps-consumer.certdaps-consumer.key 파일이 이 디렉터리에 이미 있어야 합니다.

  1. 다음 명령을 실행합니다.

    # generate a private key openssl ecparam -name prime256v1 -genkey -noout -out consumer-private-key.pem # generate corresponding public key openssl ec -in consumer-private-key.pem -pubout -out consumer-public-key.pem # create a self-signed certificate openssl req -new -x509 -key consumer-private-key.pem -out consumer-cert.pem -days 360 # generate aes key openssl rand -base64 32 > consumer-aes.key
  2. 파일을 수동으로 편집하여 줄 바꿈을 로 바꾸\n거나 다음과 유사한 세 가지 명령을 사용합니다.

    cat consumer-private-key.pem | sed 's/$/\\\\n/'|tr -d '\\n' > consumer-private-key.pem.line cat consumer-public-key.pem | sed 's/$/\\\\n/'|tr -d '\\n' > consumer-public-key.pem.line cat consumer-cert.pem | sed 's/$/\\\\n/'|tr -d '\\n' > consumer-cert.pem.line cat consumer-aes.key | sed 's/$/\\\\n/'|tr -d '\\n' > consumer-aes.key.line cat daps-consumer.cert | sed 's/$/\\\\n/'|tr -d '\\n' > daps-consumer.cert.line cat daps-consumer.key | sed 's/$/\\\\n/'|tr -d '\\n' > daps-consumer.key.line
  3. Vault에 추가할 보안 암호를 포맷하려면 다음 명령을 실행합니다.

    JSONFORMAT='{"content": "%s"}' #create a single line in JSON format printf "${JSONFORMAT}\\n" "`cat consumer-private-key.pem.line`" > consumer-private-key.json printf "${JSONFORMAT}\\n" "`cat consumer-public-key.pem.line`" > consumer-public-key.json printf "${JSONFORMAT}\\n" "`cat consumer-cert.pem.line`" > consumer-cert.json printf "${JSONFORMAT}\\n" "`cat consumer-aes.key.line`" > consumer-aes.json printf "${JSONFORMAT}\\n" "`cat daps-consumer.key.line`" > daps-consumer.key.json printf "${JSONFORMAT}\\n" "`cat daps-consumer.cert.line`" > daps-consumer.cert.json

    보안 암호는 이제 JSON 형식이며 볼트에 추가할 준비가 되었습니다.

  4. 소비자 저장소의 포드 이름을 가져오려면 다음 명령을 실행합니다.

    kubectl get pods -n consumer | egrep "vault|NAME"

    포드 이름은 와 유사합니다"vault-consumer-0". 이 이름은 볼트로 전달되는 포트를 생성할 때 사용됩니다. 포트 전달을 사용하면 볼트에 액세스하여 보안 암호를 추가할 수 있습니다. 자격 AWS 증명이 구성된 워크스테이션에서 이 작업을 실행해야 합니다.

  5. 볼트에 액세스하려면 kubectl를 사용하여 포트 전달을 구성합니다.

    kubectl port-forward <VAULT_POD_NAME> 8201:8200 -n consumer

로컬 포트는 이번에는 8201이므로 생산자와 소비자 모두에 대해 포트 전달을 사용할 수 있습니다.

브라우저

브라우저를 사용하여 http://localhost:8201/에 연결하여 소비자 저장소에 액세스하고 설명된 대로 이름과 콘텐츠로 보안 암호를 생성할 수 있습니다.

콘텐츠가 포함된 보안 암호와 파일은 다음과 같습니다.

  • 파일 이름이 transfer-proxy-token-signer-private-key 있는 보안 암호 consumer-private-key.pem.line

  • 파일 이름이 transfer-proxy-token-signer-public-key 있는 보안 암호 consumer-cert.pem.line

  • 파일 이름이 transfer-proxy-token-encryption-aes-key 있는 보안 암호 consumer-aes.key.line

볼트 CLI

볼트 를 사용하여 다음 명령을 실행하여 볼트에 로그인하고 보안 암호를 생성할 CLI수 있습니다.

  1. 내에서 구성한 토큰을 사용하여 볼트에 로그인합니다consumer_edc.yml.

    vault login -address=http://127.0.0.1:8201

    올바른 토큰을 사용하면 메시지가 표시됩니다. "Success! You are now authenticated."

  2. 이전에 생성한 JSON 형식이 지정된 파일을 사용하여 보안 암호를 생성하려면 다음 코드를 실행합니다.

    vault kv put -address=http://127.0.0.1:8201 secret/transfer-proxy-token-signer-private-key @consumer-private-key.json vault kv put -address=http://127.0.0.1:8201 secret/transfer-proxy-token-signer-public-key @consumer-cert.json vault kv put -address=http://127.0.0.1:8201 secret/transfer-proxy-token-encryption-aes-key @consumer-aes.json vault kv put -address=http://127.0.0.1:8201 secret/daps-private-key @daps-consumer.key.json vault kv put -address=http://127.0.0.1:8201 secret/daps-public-key @daps-consumer.cert.json
DevOps 엔지니어
작업설명필요한 기술

포트 전달을 설정합니다.

  1. 포드의 상태를 확인하려면 다음 명령을 실행합니다.

    kubectl get pods -n provider kubectl get pods -n consumer
  2. Kubernetes 배포가 성공했는지 확인하려면 다음 명령을 실행하여 공급자 및 소비자 Kubernetes 포드의 로그를 확인하세요.

    kubectl logs -n provider <producer control plane pod name> kubectl logs -n consumer <consumer control plane pod name>

클러스터는 비공개이며 공개적으로 액세스할 수 없습니다. 커넥터와 상호 작용하려면 Kubernetes 포트 전달 기능을 사용하여 시스템에서 생성된 트래픽을 커넥터 제어 영역으로 전달합니다.

  1. 첫 번째 터미널에서 포트 8300을 API 통해 소비자의 요청을 경영진에 전달합니다.

    kubectl port-forward deployment/consumer-tractusx-connector-controlplane 8300:8081 -n consumer
  2. 두 번째 터미널에서는 포트 8400을 API 통해 공급자의 요청을 관리 부서에 전달합니다.

    kubectl port-forward deployment/provider-tractusx-connector-controlplane 8400:8081 -n provider
DevOps 엔지니어

공급자와 소비자를 위한 S3 버킷을 생성합니다.

현재 EDC 커넥터는 역할을 수임하여 제공된 것과 같은 임시 AWS 자격 증명을 사용하지 않습니다. EDC 는 IAM 액세스 키 ID 및 보안 액세스 키 조합 만 지원합니다.

이후 단계에서는 두 개의 S3 버킷이 필요합니다. 공급자가 사용할 수 있는 데이터를 저장하는 데 S3 버킷 하나가 사용됩니다. 다른 S3 버킷은 소비자가 수신한 데이터를 위한 것입니다.

IAM 사용자는 이름이 지정된 두 버킷에서만 객체를 읽고 쓸 수 있는 권한이 있어야 합니다.

액세스 키 ID와 보안 액세스 키 페어를 생성하고 안전하게 유지해야 합니다. 이 작업이 해제MVDS된 후에는 IAM 사용자를 삭제해야 합니다.

다음 코드는 사용자를 위한 예제 IAM 정책입니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1708699805237", "Action": [ "s3:GetObject", "s3:GetObjectVersion", "s3:ListAllMyBuckets", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:ListBucketVersions", "s3:PutObject" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::<S3 Provider Bucket>", "arn:aws:s3:::<S3 Consumer Bucket>", "arn:aws:s3:::<S3 Provider Bucket>/*", "arn:aws:s3:::<S3 Consumer Bucket>/*" ] } ] }
DevOps 엔지니어

커넥터와 상호 작용하도록 Postman을 설정합니다.

이제 EC2 인스턴스를 통해 커넥터와 상호 작용할 수 있습니다. Postman을 HTTP 클라이언트로 사용하고 공급자와 소비자 커넥터 모두에 Postman 컬렉션을 제공합니다.

aws-pattern-edc포지토리에서 Postman 인스턴스로 컬렉션을 가져옵니다.

이 패턴은 Postman 컬렉션 변수를 사용하여 요청에 입력을 제공합니다.

앱 개발자, 데이터 엔지니어
작업설명필요한 기술

공유할 탄소 배출 강도 데이터를 준비합니다.

먼저 공유할 데이터 자산을 결정해야 합니다. 회사 X의 데이터는 차량 플릿의 탄소 배출량 발자국을 나타냅니다. 무게는 총 차량 무게(GVW)를 톤 단위로, 배출량은 (WTW) 측정치에 Wheel-to-Well 따라 톤당 CO2 그램(예: CO2 e/t-km) 단위로 표시됩니다.

  • 차량 유형: Van, 무게: < 3.5, 배출량: 800

  • 차량 유형: 도시 트럭, 무게: 3.5‒7.5, 배출량: 315

  • 차량 유형: 중형 상품 차량(MGV), 무게: 7.5‒20, 배출량: 195

  • 차량 유형: 중형 차량(HGV), 무게: > 20, 배출량: 115

예제 데이터는 aws-patterns-edc리포지토리의 carbon_emissions_data.json 파일에 있습니다.

X사는 Amazon S3를 사용하여 객체를 저장합니다.

S3 버킷을 생성하고 예제 데이터 객체를 여기에 저장합니다. 다음 명령은 기본 보안 설정으로 S3 버킷을 생성합니다. Amazon S3에 대한 보안 모범 사례를 참조하는 것이 좋습니다.

aws s3api create-bucket <BUCKET_NAME> --region <AWS_REGION> # You need to add '--create-bucket-configuration # LocationConstraint=<AWS_REGION>' if you want to create # the bucket outside of us-east-1 region aws s3api put-object --bucket <BUCKET_NAME> \ --key <S3 OBJECT NAME> \ --body <PATH OF THE FILE TO UPLOAD>

S3 버킷 이름은 전역적으로 고유해야 합니다. 이름 지정 규칙에 대한 자세한 내용은 AWS 설명서 섹션을 참조하세요.

데이터 엔지니어, 앱 개발자

Postman을 사용하여 공급자의 커넥터에 데이터 자산을 등록합니다.

EDC 커넥터 데이터 자산에는 데이터의 이름과 위치가 포함됩니다. 이 경우 EDC 커넥터 데이터 자산은 S3 버킷에서 생성된 객체를 가리킵니다.

  • 커넥터: 공급자

  • 요청:자산 생성

  • 컬렉션 변수: 업데이트ASSET_NAME. 자산을 나타내는 의미 있는 이름을 선택합니다.

  • 요청 본문: 공급자에 대해 생성한 S3 버킷으로 요청 본문을 업데이트합니다.

    "dataAddress": { "edc:type": "AmazonS3", "name": "Vehicle Carbon Footprint", "bucketName": "<REPLACE WITH THE SOURCE BUCKET NAME>", "keyName": "<REPLACE WITH YOUR OBJECT NAME>", "region": "<REPLACE WITH THE BUCKET REGION>", "accessKeyId": "<REPLACE WITH YOUR ACCESS KEY ID>", "secretAccessKey": "<REPLACE WITH SECRET ACCESS KEY>" }
  • 응답: 요청이 성공하면 생성된 시간과 새로 생성된 자산의 자산 ID가 반환됩니다.

    { "@id": "c89aa31c-ec4c-44ed-9e8c-1647f19d7583" }
  • 컬렉션 변수 ASSET_ID: Postman 컬렉션 변수를 생성 후 EDC 커넥터에서 자동으로 생성된 IDASSET_ID로 업데이트합니다.

앱 개발자, 데이터 엔지니어

자산의 사용 정책을 정의합니다.

EDC 데이터 자산은 명확한 사용 정책과 연결되어야 합니다. 먼저 공급자 커넥터에서 정책 정의를 생성합니다.

회사 X의 정책은 데이터 공간의 참가자가 탄소 배출 풋프린트 데이터를 사용하도록 허용하는 것입니다.

  • 요청 본문:

    • 커넥터: 공급자

    • 요청: 정책 생성

    • 컬렉션 변수: 정책 이름으로 Policy Name 변수를 업데이트합니다.

  • 응답: 요청이 성공하면 생성된 시간과 새로 생성된 정책의 정책 ID가 반환됩니다. 생성 후 EDC 커넥터에서 생성된 정책의 IDPOLICY_ID로 컬렉션 변수를 업데이트합니다.

앱 개발자, 데이터 엔지니어

자산 및 해당 사용 정책에 대한 EDC 계약 제안을 정의합니다.

다른 참가자가 데이터에 대한 액세스를 요청할 수 있도록 하려면 사용 조건 및 권한을 지정하는 계약에서 제공합니다.

  • 커넥터: 공급자

  • 요청: 계약 정의 생성

  • 컬렉션 변수: 변수를 계약 제안 또는 정의의 이름으로 업데이트합니다. Contract Name

앱 개발자, 데이터 엔지니어
작업설명필요한 기술

회사 X에서 공유하는 데이터 카탈로그를 요청합니다.

데이터 공간의 데이터 소비자로서 회사 Y는 먼저 다른 참가자가 공유하고 있는 데이터를 검색해야 합니다.

이 기본 설정에서는 소비자 커넥터에 공급자 커넥터에서 사용 가능한 자산의 카탈로그를 직접 요청하도록 요청하여 이 작업을 수행할 수 있습니다.

  • 커넥터: 소비자

  • 요청: 요청 카탈로그

  • 응답: 공급자에서 사용할 수 있는 모든 데이터 자산과 연결된 사용 정책. 데이터 소비자는 관심 있는 계약을 찾아 다음 컬렉션 변수를 적절하게 업데이트합니다.

    • CONTRACT_OFFER_ID ‒ 소비자가 협상하려는 계약 제안의 ID

    • ASSET_ID ‒ 소비자가 협상하려는 자산의 ID

    • PROVIDER_CLIENT_ID ‒ 협상할 공급자 커넥터의 ID

앱 개발자, 데이터 엔지니어

X사의 탄소 배출 강도 데이터에 대한 계약 협상을 시작합니다.

이제 소비하려는 자산을 식별했으므로 소비자 커넥터와 공급자 커넥터 간에 계약 협상 프로세스를 시작합니다.

  • 커넥터: 소비자

  • 요청: 계약 협상

  • 컬렉션 변수: 협상할 소비자 커넥터의 ID로 변수를 업데이트합니다. CONSUMER_CLIENT_ID

프로세스가 VERIFIED 상태에 도달하는 데 시간이 걸릴 수 있습니다.

Get Negotiation 요청을 사용하여 계약 협상의 상태와 해당 계약 ID를 확인할 수 있습니다.

앱 개발자, 데이터 엔지니어
작업설명필요한 기술

HTTP 엔드포인트에서 데이터를 소비합니다.

(옵션 1) HTTP 데이터 영역을 사용하여 데이터 공간의 데이터를 소비하려면 webhook.site를 사용하여 HTTP 서버를 에뮬레이션하고 소비자 커넥터에서 전송 프로세스를 시작할 수 있습니다.

  • 커넥터: 소비자

  • 요청: 계약 협상

  • 컬렉션 변수: 커넥터에서 생성된 계약 계약의 ID로 변수를 업데이트합니다. Contract Agreement ID EDC

  • 요청 본문: 요청 본문을 업데이트하여 웹후크 와 dataDestination 함께 HTTP로 지정합니다URL.

    { "dataDestination": { "type": "HttpProxy" }, "privateProperties": { "receiverHttpEndpoint": "<WEBHOOK URL>" } }

    커넥터는 파일을 웹후크 에 직접 다운로드하는 데 필요한 정보를 전송합니다URL.

    수신된 페이로드는 다음과 유사합니다.

    { "id": "dcc90391-3819-4b54-b401-1a005a029b78", "endpoint": "http://consumer-tractusx-connector-dataplane.consumer:8081/api/public", "authKey": "Authorization", "authCode": "<AUTH CODE YOU RECEIVE IN THE ENDPOINT>", "properties": { "https://w3id.org/edc/v0.0.1/ns/cid": "vehicle-carbon-footprint-contract:4563abf7-5dc7-4c28-bc3d-97f45e32edac:b073669b-db20-4c83-82df-46b583c4c062" } }

    수신된 자격 증명을 사용하여 공급자가 공유한 S3 자산을 가져옵니다.

이 마지막 단계에서는 페이로드()에 명시된 대로 소비자 데이터 영역(정확히 전달 포트)으로 요청을 보내야 합니다endpoint.

앱 개발자, 데이터 엔지니어

S3 버킷의 데이터를 직접 소비합니다.

(옵션 2) EDC 커넥터와 Amazon S3 통합을 사용하고 소비자 인프라의 S3 버킷을 대상으로 직접 가리킵니다.

  • 요청 본문: 요청 본문을 업데이트하여 S3 버킷을 로 지정합니다dataDestination.

    소비자가 수신한 데이터를 저장하기 위해 이전에 생성한 S3 버킷이어야 합니다.

    { "dataDestination": { "type": "AmazonS3", "bucketName": "{{ REPLACE WITH THE DESTINATION BUCKET NAME }}", "keyName": "{{ REPLACE WITH YOUR OBJECT NAME }}", "region": "{{ REPLACE WITH THE BUCKET REGION }}", "accessKeyId": "{{ REPLACE WITH YOUR ACCESS KEY ID }}", "secretAccessKey": "{{ REPLACE WITH SECRET ACCESS KEY }}" } } }
데이터 엔지니어, 앱 개발자

문제 해결

문제Solution

커넥터가 인증서 PEM 형식에 문제를 일으킬 수 있습니다.

를 추가하여 각 파일의 내용을 한 줄로 연결합니다\n.

관련 리소스

추가 정보

데이터 공간 사양

참가자

참가자

회사에 대한 설명

회사의 초점

회사 X

유럽 및 남미 전역에서 다양한 상품을 운송하기 위해 차량 플릿을 운영합니다.

탄소 배출량 발자국 강도를 줄이기 위해 데이터 기반 결정을 내리는 것을 목표로 합니다.

회사 Y

환경 규제 기관

탄소 배출 강도를 포함하여 비즈니스 및 산업의 환경 영향을 모니터링하고 완화하도록 설계된 환경 규정 및 정책을 적용합니다.

비즈니스 사례

X사는 데이터 공간 기술을 사용하여 규정 준수 감사자인 Y사와 탄소 발자국 데이터를 공유하여 X사 물류 운영의 환경적 영향을 평가하고 해결합니다.

데이터 공간 권한

데이터 공간 권한은 데이터 공간을 관리하는 조직의 컨소시엄입니다. 이 패턴에서 회사 X와 회사 Y는 모두 거버넌스 본문을 형성하고 페더레이션 데이터 공간 권한을 나타냅니다.

데이터 공간 구성 요소

구성 요소

선택한 구현

추가 정보

데이터 세트 교환 프로토콜

Dataspace 프로토콜 버전 0.8

데이터 스페이스 커넥터

Tractus-X EDC Connector 버전 0.4.1

데이터 교환 정책

기본 USE 정책

데이터 공간 서비스

서비스

구현

추가 정보

자격 증명 서비스

동적 속성 프로비저닝 시스템(DAPS)

“동적 속성 프로비저닝 시스템(DAPS)은 조직 및 커넥터에 대한 특정 속성을 확인할 의도가 있습니다. 따라서 제3자는 DAPS어설션을 신뢰하는 경우 후자를 신뢰할 필요가 없습니다. — DAPS

커넥터의 로직에 초점을 맞추기 위해 데이터 공간은 Docker Compose를 사용하여 Amazon EC2 시스템에 배포됩니다.

검색 서비스

Gaia-X 페더레이션 카탈로그

“연합 카탈로그는 공급자 및 해당 서비스 제공의 검색 및 선택을 가능하게 하는 Gaia-X 자체 설명의 인덱싱된 리포지토리를 구성합니다. 자체 설명은 참가자가 속성 및 클레임의 형태로 자신과 서비스에 대해 제공한 정보입니다. — Gaia-X 에코시스템 킥스타터

교환할 데이터

데이터 자산

설명

형식

탄소 배출량 데이터

전체 차량 플릿에서 지정된 리전(유럽 및 남미)의 다양한 차량 유형에 대한 강도 값

JSON 파일

데이터 모델

{ "region": "string", "vehicles": [ // Each vehicle type has its Gross Vehicle Weight (GVW) category and its emission intensity in grams of CO2 per Tonne-Kilometer (g CO2 e/t-km) according to the "Well-to-Wheel" (WTW) measurement. { "type": "string", "gross_vehicle_weight": "string", "emission_intensity": { "CO2": "number", "unit": "string" } } ] }

Tractus-X EDC 커넥터

각 Tractus-X EDC 파라미터에 대한 설명서는 원본 값 파일 을 참조하세요.

다음 표에는 모든 서비스와 해당 노출된 포트 및 엔드포인트가 참조용으로 나열되어 있습니다.

서비스 이름

포트 및 경로

컨트롤 플레인

관리 : ‒ 포트: 8081 경로: /management

제어 ‒ 포트: 8083 경로: /control

프로토콜 포트: 8084 경로: /api/v1/dsp

지표 ‒ 포트: 9090 경로: /metrics

관찰 가능성 ‒ 포트: 8085 경로: /observability

데이터 영역

기본 ‒ 포트: 8080 경로: /api

퍼블릭 ‒ 포트: 8081 경로: /api/dataplane/control

프록시 ‒ 포트: 8186 경로: /proxy

지표 ‒ 포트: 9090 경로: /metrics

관측성 ‒ 포트: 8085 경로: /observability

볼트

포트: 8200

PostgreSQL

포트: 5432

AWS Secrets Manager Manager 사용

HashiCorp Vault 대신 Secrets Manager를 보안 암호 관리자로 사용할 수 있습니다. 이렇게 하려면 에서 확장을 AWS Secrets Manager EDC 사용하거나 빌드해야 합니다.

Tractus-X는 Secrets Manager에 대한 지원을 제공하지 않으므로 자체 이미지를 생성하고 유지 관리하는 것은 사용자의 책임입니다.

이렇게 하려면 확장을 도입하여 커넥터의 제어 영역데이터 영역의 빌드 Gradle 파일을 수정한 다음(예는 이 maven 아티팩트 참조) Docker 이미지를 빌드, 유지 관리 및 참조해야 합니다 AWS Secrets Manager EDC.

Tractus-X 커넥터 Docker 이미지 리팩터링에 대한 자세한 내용은 리팩터 Tractus-X EDC Helm 차트를 참조하세요.

간소화를 위해 커넥터 이미지를 이 패턴으로 다시 빌드하지 않고 HashiCorp Vault를 사용합니다.