암호화된 데이터 수집
작성 대상:
- 개발자
클라우드 스토리지 배치 소스를 사용하여 Adobe Experience Platform에 암호화된 데이터 파일을 수집할 수 있습니다. 암호화된 데이터 수집을 통해 비대칭 암호화 메커니즘을 활용하여 배치 데이터를 Experience Platform으로 안전하게 전송할 수 있습니다. 현재 지원되는 비대칭 암호화 메커니즘은 PGP와 GPG이다.
암호화된 데이터 수집 프로세스는 다음과 같습니다.
- Experience Platform API를 사용하여 암호화 키 쌍을 만듭니다. 암호화 키 쌍은 개인 키(private key)와 공개 키(public key)로 구성된다. 만든 후에는 해당 공개 키 ID 및 만료 시간과 함께 공개 키를 복사하거나 다운로드할 수 있습니다. 이 프로세스 중에 개인 키는 Experience Platform에 의해 보안 저장소에 저장됩니다. 참고: 응답의 공개 키는 Base64로 인코딩되며 사용하기 전에 디코딩해야 합니다.
- 공개 키를 사용하여 수집할 데이터 파일을 암호화합니다.
- 암호화된 파일을 클라우드 저장소에 저장합니다.
- 암호화된 파일이 준비되면 클라우드 저장소 원본의 원본 연결 및 데이터 흐름을 만듭니다. 흐름 만들기 단계에서
encryption
매개 변수를 제공하고 공개 키 ID를 포함해야 합니다. - Experience Platform은 보안 저장소에서 개인 키를 검색하여 수집 시 데이터를 해독합니다.
이 문서에서는 데이터를 암호화하고 클라우드 저장소 소스를 사용하여 암호화된 데이터를 Experience Platform에 수집하는 암호화 키 쌍을 생성하는 방법에 대한 단계를 제공합니다.
시작하기
이 자습서를 사용하려면 Adobe Experience Platform의 다음 구성 요소를 잘 알고 있어야 합니다.
- 소스: Experience Platform을 사용하면 Experience Platform 서비스를 사용하여 들어오는 데이터를 구조화하고 레이블을 지정하고 향상시키는 기능을 제공하는 동시에 다양한 소스에서 데이터를 수집할 수 있습니다.
- 클라우드 저장소 원본: 데이터 흐름을 만들어 클라우드 저장소 원본에서 Experience Platform으로 일괄 데이터를 가져옵니다.
- 샌드박스: Experience Platform은 단일 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
끝점에 대한 GET 요청을 만드십시오=nt.
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}"
}
고객 관리 키 쌍 만들기
선택적으로 서명 확인 키 쌍을 만들어 암호화된 데이터에 서명하고 수집할 수 있습니다.
이 단계에서는 개인 키와 공개 키 조합을 생성한 다음 개인 키를 사용하여 암호화된 데이터에 서명해야 합니다. 다음으로, Experience Platform에서 서명을 확인하려면 Base64에서 공개 키를 인코딩한 다음 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 요청을 만듭니다. 암호화된 데이터를 수집하려면 transformations
속성에 encryption
섹션을 추가하고 이전 단계에서 만든 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가 공개 키 ID와 함께 Active
상태를 반환합니다.
{
"publicKeyId": "{PUBLIC_KEY_ID}",
"status": "Active"
}
잘못된 공개 키 ID가 공개 키 ID와 함께 Expired
상태를 반환합니다.
{
"publicKeyId": "{PUBLIC_KEY_ID}",
"status": "Expired"
}
반복 수집 제한 사항
암호화된 데이터 수집은 소스에서 반복 또는 다중 수준 폴더의 수집을 지원하지 않습니다. 암호화된 모든 파일은 단일 폴더에 포함되어야 합니다. 단일 소스 경로에 여러 폴더가 있는 와일드카드도 지원되지 않습니다.
다음은 지원되는 폴더 구조의 예입니다. 원본 경로는 /ACME-customers/*.csv.gpg
입니다.
이 시나리오에서는 굵게 표시된 파일이 Experience Platform에 수집됩니다.
-
ACME-customer
- File1.csv.gpg
- File2.json.gpg
- 파일3.csv.gpg
- File4.json
- 파일5.csv.gpg
다음은 원본 경로가 /ACME-customers/*
인 지원되지 않는 폴더 구조의 예입니다.
이 시나리오에서는 흐름 실행이 실패하고 소스에서 데이터를 복사할 수 없다는 오류 메시지가 반환됩니다.
-
ACME-customer
-
File1.csv.gpg
-
File2.json.gpg
-
하위 폴더1
- File3.csv.gpg
- File4.json.gpg
- File5.csv.gpg
-
-
ACME-충성도
- File6.csv.gpg
다음 단계
이 자습서에 따라 클라우드 저장소 데이터에 대한 암호화 키 쌍과 Flow Service API을(를) 사용하여 암호화된 데이터를 수집하기 위한 데이터 흐름을 만들었습니다. 데이터 흐름의 완결성, 오류 및 지표에 대한 상태 업데이트는 API를 사용하여 데이터 흐름 모니터링 Flow Service 2}에 대한 안내서를 참조하십시오.