加密的数据摄取
创建对象:
- 开发人员
您可以使用云存储批处理源将加密的数据文件摄取到Adobe Experience Platform。 通过加密的数据摄取,您可以利用非对称加密机制将批量数据安全地传输到Experience Platform。 目前,支持的不对称加密机制有PGP和GPG。
加密数据摄取过程如下:
- 使用Experience Platform API创建加密密钥对。 加密密钥对由私钥和公钥组成。 创建后,您可以复制或下载公钥及其对应的公钥ID和到期时间。 在此过程中,私钥将由Experience Platform存储在安全保险库中。 注意: 响应中的公钥采用Base64编码,必须在使用之前进行解码。
- 使用公钥加密要摄取的数据文件。
- 将加密文件放入云存储中。
- 加密文件准备就绪后,为您的云存储源创建源连接和数据流。 在流创建步骤中,必须提供
encryption
参数并包含公钥ID。 - Experience Platform会从安全保险库中检索私钥,以在摄取数据时解密数据。
本文档提供了有关如何生成加密密钥对以加密您的数据,以及使用云存储源将该加密数据摄取到Experience Platform的步骤。
快速入门
本教程要求您实际了解Adobe Experience Platform的以下组件:
使用Experience Platform API
有关如何成功调用Experience Platform API的信息,请参阅Experience Platform API快速入门指南。
加密文件支持的文件扩展名
加密文件支持的文件扩展名列表为:
- .csv
- .tsv
- .json
- .parquet
- .csv.gpg
- .tsv.gpg
- .json.gpg
- .parquet.gpg
- .csv.pgp
- .tsv.pgp
- .json.pgp
- .parquet.pgp
- .gpg
- .pgp
创建加密密钥对
将加密数据摄取到Experience Platform的第一步是通过向Connectors API的/encryption/keys
端点发出POST请求来创建您的加密密钥对。
API格式
POST /data/foundation/connectors/encryption/keys
请求
以下请求使用PGP加密算法生成加密密钥对。
curl -X POST \
'https://platform.adobe.io/data/foundation/connectors/encryption/keys' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
-H 'x-sandbox-name: {{SANDBOX_NAME}}' \
-H 'Content-Type: application/json'
-d '{
"name": "acme-encryption",
"encryptionAlgorithm": "PGP",
"params": {
"passPhrase": "{{PASSPHRASE}}"
}
}'
name
encryptionAlgorithm
PGP
和GPG
。params.passPhrase
响应
成功的响应将返回Base64编码的公共密钥、公共密钥ID以及密钥的过期时间。 到期时间自动设置为生成密钥日期后的180天。 到期时间当前不可配置。
{
"publicKey": "{PUBLIC_KEY}",
"publicKeyId": "{PUBLIC_KEY_ID}",
"expiryTime": "1684843168"
}
publicKey
publicKeyId
expiryTime
检索加密密钥
要检索组织中的所有加密密钥,请向/encryption/keys
终结点=nt发出GET请求。
API格式
GET /data/foundation/connectors/encryption/keys
请求
以下请求将检索您组织中的所有加密密钥。
curl -X GET \
'https://platform.adobe.io/data/foundation/connectors/encryption/keys' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
响应
成功的响应将返回加密算法、名称、公共密钥、公共密钥ID、密钥类型以及相应的密钥到期时间。
{
"encryptionAlgorithm": "{ENCRYPTION_ALGORITHM}",
"name": "{NAME}",
"publicKeyId": "{PUBLIC_KEY_ID}",
"publicKey": "{PUBLIC_KEY}",
"keyType": "{KEY_TYPE}",
"expiryTime": "{EXPIRY_TIME}"
}
按ID检索加密密钥
要检索一组特定的加密密钥,请向/encryption/keys
端点发出GET请求,并提供您的公共密钥ID作为标头参数。
API格式
GET /data/foundation/connectors/encryption/keys/{PUBLIC_KEY_ID}
请求
curl -X GET \
'https://platform.adobe.io/data/foundation/connectors/encryption/keys/{publicKeyId}' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
响应
成功的响应将返回加密算法、名称、公共密钥、公共密钥ID、密钥类型以及相应的密钥到期时间。
{
"encryptionAlgorithm": "{ENCRYPTION_ALGORITHM}",
"name": "{NAME}",
"publicKeyId": "{PUBLIC_KEY_ID}",
"publicKey": "{PUBLIC_KEY}",
"keyType": "{KEY_TYPE}",
"expiryTime": "{EXPIRY_TIME}"
}
创建客户管理的密钥对
您可以选择创建签名验证密钥对,以对您的加密数据进行签名和摄取。
在此阶段,您必须生成自己的私钥和公钥组合,然后使用私钥对加密数据进行签名。 接下来,您必须在Base64中对公钥进行编码,然后将其共享到Experience Platform,以便Experience Platform验证您的签名。
将您的公钥共享到Experience Platform
要共享公钥,请在提供加密算法和Base64编码公钥的同时向/customer-keys
端点发出POST请求。
API格式
POST /data/foundation/connectors/encryption/customer-keys
请求
curl -X POST \
'https://platform.adobe.io/data/foundation/connectors/encryption/customer-keys' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
-H 'x-sandbox-name: {{SANDBOX_NAME}}' \
-H 'Content-Type: application/json'
-d '{
"name": "acme-sign-verification-keys"
"encryptionAlgorithm": {{ENCRYPTION_ALGORITHM}},
"publicKey": {{BASE_64_ENCODED_PUBLIC_KEY}},
"params": {
"passPhrase": {{PASS_PHRASE}}
}
}'
encryptionAlgorithm
PGP
和GPG
。publicKey
响应
{
"publicKeyId": "e31ae895-7896-469a-8e06-eb9207ddf1c2"
}
publicKeyId
检索客户管理的密钥对
要检索您的客户托管密钥,请向/customer-keys
端点发出GET请求。
API格式
GET /data/foundation/connectors/encryption/customer-keys
请求
curl -X GET \
'https://platform.adobe.io/data/foundation/connectors/encryption/customer-keys' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
响应
[
{
"encryptionAlgorithm": "{ENCRYPTION_ALGORITHM}",
"name": "{NAME}",
"publicKeyId": "{PUBLIC_KEY_ID}",
"publicKey": "{PUBLIC_KEY}",
"keyType": "{KEY_TYPE}",
}
]
使用Flow Service API将您的云存储源连接到Experience Platform
在检索到加密密钥对后,您现在可以继续为云存储源创建源连接,并将加密数据导入Experience Platform。
首先,必须创建基本连接以针对Experience Platform验证源。 要创建基本连接并验证源,请从以下列表中选择要使用的源:
创建基本连接后,您必须按照教程中有关为云存储源创建源连接的步骤进行操作,以便创建源连接、目标连接和映射。
为加密数据创建数据流
要创建数据流,请向Flow Service API的/flows
端点发出POST请求。 要摄取加密数据,您必须将encryption
部分添加到transformations
属性中,并包含在先前步骤中创建的publicKeyId
。
API格式
POST /flows
请求
以下请求会创建数据流以摄取云存储源的加密数据。
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/flows' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
-H 'x-sandbox-name: {{SANDBOX_NAME}}' \
-H 'Content-Type: application/json' \
-d '{
"name": "ACME Customer Data",
"description": "ACME Customer Data (Encrypted)",
"flowSpec": {
"id": "9753525b-82c7-4dce-8a9b-5ccfce2b9876",
"version": "1.0"
},
"sourceConnectionIds": [
"655f7c1b-1977-49b3-a429-51379ecf0e15"
],
"targetConnectionIds": [
"de688225-d619-481c-ae3b-40c250fd7c79"
],
"transformations": [
{
"name": "Mapping",
"params": {
"mappingId": "6b6e24213dbe4f57bd8207d21034ff03",
"mappingVersion":"0"
}
},
{
"name": "Encryption",
"params": {
"publicKeyId":"311ef6f8-9bcd-48cf-a9e9-d12c45fb7a17"
}
}
],
"scheduleParams": {
"startTime": "1675793392",
"frequency": "once"
}
}'
flowSpec.id
sourceConnectionIds
targetConnectionIds
transformations[x].params.mappingId
transformations.name
Encryption
作为数据流的附加转换参数。transformations[x].params.publicKeyId
scheduleParams.startTime
scheduleParams.frequency
once
、minute
、hour
、day
或week
。scheduleParams.interval
once
时不需要间隔,其他频率值应大于或等于15
。响应
成功的响应返回已加密数据新创建的数据流的ID (id
)。
{
"id": "dbc5c132-bc2a-4625-85c1-32bc2a262558",
"etag": "\"8e000533-0000-0200-0000-5f3c40fd0000\""
}
请求
curl -X POST \
'https://platform.adobe.io/data/foundation/flowservice/flows' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
-H 'x-sandbox-name: {{SANDBOX_NAME}}' \
-H 'Content-Type: application/json' \
-d '{
"name": "ACME Customer Data (with Sign Verification)",
"description": "ACME Customer Data (with Sign Verification)",
"flowSpec": {
"id": "9753525b-82c7-4dce-8a9b-5ccfce2b9876",
"version": "1.0"
},
"sourceConnectionIds": [
"655f7c1b-1977-49b3-a429-51379ecf0e15"
],
"targetConnectionIds": [
"de688225-d619-481c-ae3b-40c250fd7c79"
],
"transformations": [
{
"name": "Mapping",
"params": {
"mappingId": "6b6e24213dbe4f57bd8207d21034ff03",
"mappingVersion":"0"
}
},
{
"name": "Encryption",
"params": {
"publicKeyId":"311ef6f8-9bcd-48cf-a9e9-d12c45fb7a17",
"signVerificationKeyId":"e31ae895-7896-469a-8e06-eb9207ddf1c2"
}
}
],
"scheduleParams": {
"startTime": "1675793392",
"frequency": "once"
}
}'
params.signVerificationKeyId
响应
成功的响应返回已加密数据新创建的数据流的ID (id
)。
{
"id": "dbc5c132-bc2a-4625-85c1-32bc2a262558",
"etag": "\"8e000533-0000-0200-0000-5f3c40fd0000\""
}
删除加密密钥
要删除您的加密密钥,请向/encryption/keys
端点发出DELETE请求,并提供您的公共密钥ID作为标头参数。
API格式
DELETE /data/foundation/connectors/encryption/keys/{PUBLIC_KEY_ID}
请求
curl -X DELETE \
'https://platform.adobe.io/data/foundation/connectors/encryption/keys/{publicKeyId}' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
响应
成功的响应返回HTTP状态204(无内容)和一个空白正文。
验证加密密钥
要验证您的加密密钥,请向/encryption/keys/validate/
端点发出GET请求,并提供要作为标头参数验证的公钥ID。
GET /data/foundation/connectors/encryption/keys/validate/{PUBLIC_KEY_ID}
请求
curl -X GET \
'https://platform.adobe.io/data/foundation/connectors/encryption/keys/validate/{publicKeyId}' \
-H 'Authorization: Bearer {{ACCESS_TOKEN}}' \
-H 'x-api-key: {{API_KEY}}' \
-H 'x-gw-ims-org-id: {{ORG_ID}}' \
响应
成功的响应会返回确认ID有效或无效的消息。
有效的公钥ID返回Active
状态以及您的公钥ID。
{
"publicKeyId": "{PUBLIC_KEY_ID}",
"status": "Active"
}
无效的公钥ID返回状态Expired
以及您的公钥ID。
{
"publicKeyId": "{PUBLIC_KEY_ID}",
"status": "Expired"
}
定期摄取的限制
加密的数据摄取不支持在源中摄取循环或多级别文件夹。 所有加密文件必须包含在单个文件夹中。 不支持在单个源路径中包含多个文件夹的通配符。
以下是受支持的文件夹结构的示例,其中源路径为/ACME-customers/*.csv.gpg
。
在此方案中,会将粗体格式的文件摄取到Experience Platform中。
-
ACME客户
- 文件1.csv.gpg
- File2.json.gpg
- 文件3.csv.gpg
- File4.json
- 文件5.csv.gpg
以下是不受支持的文件夹结构的示例,其中源路径为/ACME-customers/*
。
在此方案中,流运行将失败,并返回一则错误消息,指示无法从源复制数据。
-
ACME客户
-
File1.csv.gpg
-
File2.json.gpg
-
子文件夹1
- File3.csv.gpg
- File4.json.gpg
- File5.csv.gpg
-
-
ACME忠诚度
- File6.csv.gpg
后续步骤
通过完成本教程,您已为云存储数据创建加密密钥对,并使用Flow Service API创建数据流以摄取加密数据。 有关数据流完整性、错误和量度的状态更新,请参阅使用 Flow Service API监视数据流的指南。