本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
設定最小的可行資料空間,以便在組織之間共用資料
創建者:拉米·赫奇尼(想想),伊斯梅爾·阿卜杜勒勞伊(Think-It),馬爾特·加塞林(Think-It),豪爾赫·埃爾南德斯蘇亞雷斯(AWS)和邁克爾·米勒(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 |
Summary
數據空間是用於數據交換的聯合網絡,以信任和控制數據作為核心原則。透過提供符合成本效益且與技術無關的解決方案,讓組織能夠大規模地共用、交換和協作資料。
數據空間有可能通過使用涉及所有相關利益相關者的 end-to-end 方法來解決數據驅動的問題,以顯著推動可持續發展的 future 努力。
此模式會引導您瞭解兩家公司如何使用 Amazon Web Services (AWS) 上的資料空間技術來推動碳排放和減少策略向前發展的範例。在這種情況下,X 公司提供了 Y 公司消耗的碳排放數據。如需下列資料空間規格詳細資訊,請參閱「其他資訊」一節:
參加者
商業案例
数据空间权威
資料空間元件
資料空間服務
要交換的數據
資料模型
氣管-X EDC 連接器
該陣列包括以下步驟:
此模式會部署將透過 Amazon 彈性 Kubernetes 服務 (Amazon EKS) 託管資料空間連接器及其服務的 Kubernetes 叢集。
Eclipse 資料空間元件 (EDC) 控制平面和資料平面都部署在 Amazon EKS 上。Tractus-X 掌舵官方圖表將 PostgreSQL 和保管庫服務作為依賴項部署。 HashiCorp
此外,身分識別服務部署在 Amazon Elastic Compute Cloud (Amazon EC2) 上,以複寫最小可行資料空間 (MVDS) 的真實案例。
先決條件和限制
先決條件
產品版本
限制
連接器選擇-此部署使用 EDC 型連接器。但是,請務必考慮嵌入式設計中心和 FIWARE True 連接器的優勢和功能,以做出符合部署特定需求的明智決策。
嵌入式設計中心連接器構建-選擇的部署解決方案依賴 Tractus-X EDC 連接器頭盔圖,這是一個完善且經過廣泛測試的部署選項。使用此圖表的決定是由其常見用法以及在提供的組建中包含基本擴充功能所驅動。雖然 PostgreSQL 和文件 HashiCorp 庫是預設元件,但您可以根據需要彈性自訂自己的連接器組建。
私有叢集存取-對已部署 EKS 叢集的存取僅限於私有通道。與叢集的互動僅透過使用kubectl
和 IAM 來執行。您可以使用負載平衡器和網域名稱來啟用叢集資源的公用存取權,這些平衡器和網域名稱必須選擇性地實作,才能將特定服務公開給更廣泛的網路。但是,我們不建議提供公共訪問權限。
安全性焦點-重點放在將安全性組態抽象為預設規格,以便您可以專注於 EDC 連接器資料交換所涉及的步驟。雖然會維護預設安全性設定,但必須先啟用安全通訊,然後再將叢集公開給公用網路。此預防措施可確保安全資料處理的穩健基礎。
基礎設施成本-基礎設施成本的估計可以使用 AWS Pricing Calculator. 一個簡單的計算表明,部署的基礎設施每月成本可以高達 162.92 美元。
架構
MVDS 架構由兩個虛擬私有雲 (VPC) 組成,一個用於動態屬性佈建系統 (DAPS) 身分識別服務,另一個用於 Amazon EKS。
DAP 架構
下圖顯示在由 Auto Scaling 群組控制的 EC2 執行個體上執行的 DAPS。應用程式負載平衡器和路由資料表會公開 DAPS 伺服器。Amazon Elastic File System (Amazon EFS) 可在 DAPS 執行個體之間同步資料。
Amazon EKS 架構
數據空間被設計為與技術無關的解決方案,並且存在多個實現。此模式使用 Amazon EKS 叢集部署資料空間技術元件。下圖顯示 EKS 叢集的部署。工作者節點安裝在私有子網路中。Kubernetes 網繭可存取適用於 PostgreSQL 執行個體的 Amazon Relational Database Service 服務 (Amazon RDS),該執行個體也位於私有子網路中。Kubernetes 網繭會在 Amazon S3 中存放共用資料。
AWS 服務
其他工具
eksctl 是一個命令列公用程式,用於在 Amazon EKS 上建立和管理 Kubernetes 叢集。
Git 是一個開源的,分佈式版本控制系統。
HashiCorp 保管箱提供安全的儲存空間,並可控制憑證和其他敏感資訊的存取
Helm 是 Kubernetes 的開放原始碼套件管理員,可協助您在 Kubernetes 叢集上安裝和管理應用程式。
kubectl 是一種命令列介面,可協助您針對 Kubernetes 叢集執行命令。
郵遞員是一個 API 平台。
代碼存儲庫
此模式的 Kubernetes 設定 YAML 檔案和 Python 指令碼可在儲存庫中取得。 GitHub aws-patterns-edc該模式還使用 Tractus-X 嵌入式設計中心存儲庫。
最佳實務
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 指南。 佈建私人叢集之後,請執行下列命令,將新的 EKS 叢集新增至您的本機 Kubernetes 組態: 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 工程師 |
任務 | 描述 | 所需技能 |
---|
使 AWS CloudFormation用部署 DAPS。 | 為了便於管理 DAPS 操作,DAPS 伺服器安裝在 EC2 執行個體上。 若要安裝 DAPS,請使用AWS CloudFormation 範本。您將需要 [必要條件] 區段中的 ACM 憑證和 DNS 名稱。範本會部署並設定下列項目: 您可以登入並使用AWS CloudFormation 主控台 AWS Management Console來部署 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
環境名稱是您自己的選擇。我們建議您使用有意義的術語DapsInfrastructure ,例如,因為它會反映在 AWS 資源標籤中。 對於此模式,t3.small 足以執行具有三個 Docker 容器的 DAPS 工作流程。 範本會在私有子網路中部署 EC2 執行個體。這表示執行個體無法透過網際網路透過 SSH (安全殼層) 直接存取。這些執行個體會佈建必要的 IAM 角色和 AWS Systems Manager 代理程式,以透過工作階段管理員存取執行中的執行個體,此功能具有的功能 AWS Systems Manager。 我們建議使用工作階段管理員來存取。或者,您可以佈建防禦主機,以允許從網際網路存取 SSH。使用防禦主機方法時,EC2 執行個體可能需要幾分鐘的時間才能開始執行。 成功部署 AWS CloudFormation 範本後,請將 DNS 名稱指向您的 Application Load Balancer 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 服務。 | 在為 DAPS 佈建的任何 EC2 執行個體中,註冊參與者: 使用 root 使用者在 EC2 執行個體上執行可用的指令碼: cd /srv/mvds/omejdn-daps
註冊提供者: bash scripts/register_connector.sh <provider_name>
註冊消費者: bash scripts/register_connector.sh <consumer_name>
名稱的選擇不會影響後續步驟。我們建議使用 provider and consumer 或companyx 和companyy 。 註冊命令還將自動配置 DAPS 服務,並使用從創建的證書和密鑰中獲取所需的信息。 當您登入 DAPS 伺服器時,請收集安裝後續步驟所需的資訊: 從omejdn-daps/config/clients.yml 獲取提client id 供者和消費者。這些client id 值是十六進制數字的長字符串。 從目omejdn-daps/keys 錄中複製、consumer.cert consumer.key provider.cert 、和provider.key 檔案的內容。
我們建議您將文字複製並貼到工作站daps- 上以前綴的類似名稱檔案中。 您應該擁有提供者和消費者的用戶端 ID,而且工作站上的工作目錄中應該有四個檔案: 來源檔案名稱consumer.cert 會變成工作站檔案名稱daps-consumer.cert 。 來源檔案名稱consumer.key 會變成工作站檔案名稱daps-consumer.key 。 來源檔案名稱provider.cert 會變成工作站檔案名稱daps-provider.cert 。 來源檔案名稱provider.key 會變成工作站檔案名稱daps-provider.key 。
| DevOps 工程師 |
任務 | 描述 | 所需技能 |
---|
複製 Tractus-X 嵌入式設計中心儲存庫並使用 0.4.1 版本。 | Tractus-X 嵌入式設計中心連接器的組建需要 PostgreSQL (資產資料庫) 和文件 HashiCorp 庫 (密碼管理) 服務才能部署並可供使用。 有許多不同版本的 Tractus-X EDC 頭盔圖表。此病毒碼會指定 0.4.1 版,因為它使用 DAPS 伺服器。 最新版本使用託管身份錢包(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 嵌入式設計中心頭盔圖表。 | 修改 Tractus-X Helm 圖表範本組態,使兩個連接器能夠一起互動。 若要這麼做,您可以將命名空間新增至服務的 DNS 名稱,以便叢集中的其他服務可以解析該名稱空間。應對charts/tractusx-connector/templates/_helpers.tpl 檔案進行這些修改。此病毒碼提供此檔案的最終修改版本供您使用。複製它並將其放在文件的daps 部分中charts/tractusx-connector/templates/_helpers.tpl 。 確保在charts/tractusx-connector/Chart.yaml 以下位置註釋所有 DAPS 依賴關係: dependencies:
# IDS Dynamic Attribute Provisioning Service (IAM)
# - name: daps
# version: 0.0.1
# repository: "file://./subcharts/omejdn"
# alias: daps
# condition: install.daps
| DevOps 工程師 |
設定連接器以在 Amazon RDS 上使用 PostgreSQL。 | (選用) 此模式不需要 Amazon 關聯式資料庫服務 (Amazon RDS) 執行個體。不過,我們強烈建議您使用 Amazon RDS 或 Amazon Aurora,因為它們提供高可用性以及備份和復原等功能。 若要以 Amazon RDS 取代庫伯尼特斯上的 PostgreSQL,請執行下列動作: 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 工程師 |
設定和部署提供者連接器及其服務。 | 若要設定提供者連接器及其服務,請執行下列動作: 若要將provider_edc.yaml 檔案從edc_helm_configs 目錄下載到目前的 Helm 圖表資料夾,請執行下列命令: wget -q https://raw.githubusercontent.com/Think-iT-Labs/aws-patterns-edc/main/edc_helm_configs/provider_edc.yaml> -P charts/tractusx-connector/
將下列變數 (也標記在檔案中) 取代為其值: CLIENT_ID ‒ DAPS 所產生的識別碼。CLIENT_ID 應該位/srv/mvds/omejdn-daps/config/clients.yml/config/clients.yml 於 DAPS 伺服器上。它應該由十六進制字符組成的字符串。
DAPS_URL ‒ DAPS 伺服器的網址。它應該https://{DNS name} 使用您在運行 AWS CloudFormation 模板時設置的 DNS 名稱。
VAULT_TOKEN ‒ 用於保管庫授權的令牌。選擇任何值。
vault.fullnameOverride ‒ vault-provider .
vault.hashicorp.url ‒ http://vault-provider:8200/ .
先前的值假設部署名稱和命名空間名稱是 Provider。 若要從工作站執行 Helm 圖表,請使用下列指令: cd charts/tractusx-connector
helm dependency build
helm upgrade --install provider ./ -f provider_edc.yaml -n provider
| DevOps 工程師 |
將憑證和金鑰新增至提供者儲存庫。 | 為避免混淆,請在tractusx-edc/charts 目錄之外產生下列憑證。 例如,執行下列命令以變更為您的主目錄: cd ~
現在,您需要將提供者所需的密碼新增至 Vault。 Vault 中密碼的名稱是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) 金鑰、私密金鑰、公開金鑰和自我簽署憑證。這些隨後會作為密碼新增至 Vault。 此外,此目錄應包含您從 DAPS 伺服器複製的daps-provider.cert 和daps-provider.key 檔案。 執行下列命令: # 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
在將密碼加入 Vault 之前,請透過以下方式取代換行符號,將密碼從多行轉換為單行\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
若要格式化將加入至 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 格式,可以新增至保存庫。 若要取得儲存庫的網繭名稱,請執行下列命令: kubectl get pods -n provider|egrep "vault|NAME"
網繭名稱將類似於"vault-provider-0" 。建立轉寄至資料保險箱的連接埠時會使用此名稱。端口轉發使您可以訪問文件庫以添加密碼。您應該從已設定 AWS 登入資料的工作站執行此指令。 若要存取資料保險箱,請使用kubectl 來規劃連接埠轉發: kubectl port-forward <VAULT_POD_NAME> 8200:8200 -n provider
您現在應該可以透過瀏覽器或 CLI 存取保管庫。 瀏覽器 使用瀏覽器瀏覽至 http://127.0.0.1:8200,這將使用您設定的連接埠轉送。 使用您先前設定的權杖登入provider_edc.yml 。在秘密引擎中,建立三個密碼。每個密碼都會有一個Path for this secret 值,這是下列清單中顯示的秘密名稱。在該secret data 部分中,密鑰的名稱將是content ,該值將是命名的相應文件中的單行文本.line 。 密碼名稱來自provider_edc.yml 檔案中的secretNames 區段。 建立下列密碼: 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 也會使用您設定的連接埠轉送。 在您的工作站上,依照 Vault 文件中的指示安裝 HashiCorp Vault CLI。 若要使用您設定的權杖登入 Vaultprovider_edc.yml ,請執行下列命令: vault login -address=http://127.0.0.1:8200
使用正確的令牌,您應該會看到該消息 "Success! You are now authenticated." 若要使用先前建立的 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 工程師 |
設定和部署用戶連接器及其服務。 | 設定和部署用戶的步驟與您為提供者完成的步驟類似: 要consumer_edc.yaml 從 aws-patterns-edcrepo 複製到 tractusx-edc/charts/tractusx-connecto r 文件夾中,請運行以下命令: 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/
使用其實際值更新下列變數: CONSUMER_CLIENT_ID ‒ DAPS 所產生的識別碼。CONSUMER_CLIENT_ID 應該位config/clients.yml 於 DAPS 伺服器上。
DAPS_URL ‒ 與您用於提供者的 DAPS 網址相同。
VAULT_TOKEN ‒ 用於保管庫授權的令牌。選擇任何值。
vault.fullnameOverride ‒ vault-consumer
vault.hashicorp.url ‒ http://vault-provider:8200/
先前的值假設部署名稱和命名空間名稱為consumer 。 要運行頭盔圖,請使用以下命令: 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.cert 和daps-consumer.key 檔案應該已存在於此目錄中。 執行下列命令: # 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
手動編輯要取代換行符號的檔案\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
若要格式化將加入至 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 格式,可以新增至保存庫。 若要取得用戶儲存庫的網繭名稱,請執行下列命令: kubectl get pods -n consumer | egrep "vault|NAME"
網繭名稱將類似於"vault-consumer-0" 。建立轉寄至資料保險箱的連接埠時會使用此名稱。端口轉發使您可以訪問文件庫以添加密碼。您應該從已設定 AWS 認證的工作站執行此指令。 若要存取資料保險箱,請使用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 使用 Vault CLI,您可以執行下列命令來登入儲存庫並建立密碼: 使用您在以下內容中設定的權杖登入資料保管庫consumer_edc.yml : vault login -address=http://127.0.0.1:8201
使用正確的令牌,您應該會看到該消息 "Success! You are now authenticated." 若要使用先前建立的 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 工程師 |
任務 | 描述 | 所需技能 |
---|
設定連接埠轉送。 | 若要檢查網繭的狀態,請執行下列命令: kubectl get pods -n provider
kubectl get pods -n consumer
若要確定 Kubernetes 部署成功,請執行下列命令來查看提供者和取用者 Kubernetes 網繭的記錄檔: kubectl logs -n provider <producer control plane pod name>
kubectl logs -n consumer <consumer control plane pod name>
叢集是私有的,不可公開存取。若要與連接器互動,請使用 Kubernetes 連接埠轉送功能將機器產生的流量轉送至連接器控制平面。 在第一個終端機上,透過連接埠 8300 將消費者的要求轉寄至管理 API: kubectl port-forward deployment/consumer-tractusx-connector-controlplane 8300:8081 -n consumer
在第二個終端機上,透過連接埠 8400 將提供者的要求轉寄至管理 API: kubectl port-forward deployment/provider-tractusx-connector-controlplane 8400:8081 -n provider
| DevOps 工程師 |
為提供者和消費者建立 S3 儲存貯體。 | EDC 連接器目前不使用臨時 AWS 登入資料,例如假定角色所提供的登入資料。嵌入式設計中心僅支援使用 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 工程師 |
設定郵差以與連接器互動。 | 您現在可以透過 EC2 執行個體與連接器互動。使用 Postman 做為 HTTP 用戶端,並為提供者和取用者連接器提供郵遞員集合。 將集合從aws-pattern-edc 儲存庫匯入 Postman 執行個體。 此模式使用 Postman 集合變量為您的請求提供輸入。 | 應用程式開發人員、資料 |
任務 | 描述 | 所需技能 |
---|
索取 X 公司共用的資料目錄。 | 身為資料空間中的資料消費者,Y 公司首先需要探索其他參與者共用的資料。 在此基本設定中,您可以要求取用者連接器直接向提供者連接器要求可用資產目錄來執行此操作。 | 應用程式開發人員、資料 |
就 X 公司的碳排放強度數據展開合同談判。 | 現在您已經識別出要使用的資產,請啟動取用者與提供者連接器之間的合約協商程序。 該過程可能需要一些時間才能到達「已驗證」狀態。 您可以使用Get Negotiation 請求來檢查「合約協議」的狀態和對應的「合約 ID」。 | 應用程式開發人員、資料 |
任務 | 描述 | 所需技能 |
---|
使用來自 HTTP 端點的資料。 | (選項 1)要使用 HTTP 數據平面消耗數據空間中的數據,可以使用 webhook.site 模擬 HTTP 服務器,並在消費者連接器中啟動傳輸過程: 連接器:消費者 請求:合同談判 收集Contract Agreement ID 變數:使用 EDC 連接器所產生之合約的 ID 來更新變數。 請求主體:更新請求主體以指定HTTP 為dataDestination 與 webhook URL 旁邊的一個: {
"dataDestination": {
"type": "HttpProxy"
},
"privateProperties": {
"receiverHttpEndpoint": "<WEBHOOK URL>"
}
}
連接器會將直接下載檔案所需的資訊傳送至 Webhook 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) 使用 Amazon S3 與 EDC 連接器整合,並直接指向消費者基礎設施中的 S3 儲存貯體做為目的地: 要求主體:更新要求主體,將 S3 儲存貯體指定為資料目標。 這應該是您先前為存放取用者接收到的資料而建立的 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 }}"
}
}
}
| 資料工程師、App 開發人員 |
故障診斷
問題 | 解決方案 |
---|
連接器可能會引發有關憑證 PEM 格式的問題。 | 通過添加將\n 每個文件的內容連接到單行。 |
相關資源
其他資訊
資料空間規格
參加者
參與者 | 公司描述 | 公司焦點 |
公司 X | 經營整個歐洲和南美洲的車隊運輸各種貨物。 | 旨在做出數據驅動的決策,以減少碳排放強度。 |
Y 公司名稱 | 環境監管機構 | 執行環境法規和政策,以監察和減輕企業和行業的環境影響,包括碳排放強度。 |
商業案例
X 公司使用數據空間技術與合規審核員 Y 公司共享碳足跡數據,以評估和解決 X 公司物流運營對環境的影響。
数据空间权威
數據空間權威是管理數據空間的組織的聯盟。在此模式中,X 公司和 Y 公司都會組成治理主體,並代表聯合資料空間授權單位。
資料空間元件
元件 | 選擇的實作 | 其他資訊 |
資料集交換協定 | 資料空間通訊協定 0.8 版 | |
資料空間連接器 | 拖曳-X 嵌入式設計中心連接器 0.4.1 版 | |
資料交換政策 | 預設使用原則 | |
資料空間服務
服務 | 實施 | 其他資訊 |
身份服務 | 動態屬性佈建系統 (DAPS) | 「動態屬性佈建系統 (DAPS) 旨在確定組織和連接器的某些屬性。因此,只要他們信任 DAPS 斷言,第三方就不需要信任後者。」 — DAP 為了專注於連接器的邏輯,資料空間會使用 Docker 撰寫在 Amazon EC2 機器上部署。 |
探索服務 | 蓋亞-X 聯邦產品目錄 | 「聯合目錄構成了 Gaia-X 自我描述的索引存儲庫,以便發現和選擇提供者及其服務產品。自我描述是參與者以屬性和索賠形式提供的有關自己和他們的服務的信息。」 — 蓋亞-X 生態系統啟動器 |
要交換的數據
資料資產 | Description | Format (格式) |
碳排放數據 | 指定地區(歐洲和南美洲)不同車輛類型的強度值來自整個車隊 | 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"
}
}
]
}
氣管-X EDC 連接器
如需每個 Tractus-X 嵌入式設計中心參數的說明文件,請參閱原始值檔案。
下表列出所有服務,以及其對應的暴露連接埠和端點,以供參考。
服務名稱 | 連接埠和路徑 |
控制平台 | ● 管理:-港口:8081 路徑:/management ● 控制-港口:8083 路徑:/control ● 通訊協定連接埠:8084 路徑:/api/v1/dsp ● 指標-港口:9090 路徑:/metrics ● 可觀察性-港口:8085 路徑:/observability |
資料平面 | 預設-連接埠:8080 路徑:/api 公共-港口:8081 路徑:/api/dataplane/control 代理伺服器-連接埠:8186 路徑:/proxy 度量-港口:9090 路徑:/metrics 可觀測性-港口:8085 路徑:/observability |
保存庫 | 連接埠: |
PostgreSQL | 連接埠: |
使用 AWS Secrets Manager 管理員
可以使用 Secrets Manager 而不是 HashiCorp 保管庫作為秘密管理器。若要這麼做,您必須使用或建置 AWS Secrets Manager EDC 延伸模組。
您將負責創建和維護自己的圖像,因為 Tractus-X 不為 Secrets Manager 提供支持。
為此,您需要通過引入 AWS Secrets Manager EDC 擴展來修改控制平面和連接器數據平面的構建 Gradle 文件(請參閱此 Maven 工件的示例),然後構建,維護和引用 Docker 映像。
如需有關重構 Tractus-X 連接器泊塢視窗影像的詳細資訊,請參閱重構 Tractus-X 嵌入式設計中心頭盔圖表。
為了簡單起見,我們避免以此樣式重建連接器影像並使用 HashiCorp Vault。