Apigee API 분석을 위한 사용자 데이터 난독화

이 페이지는 Apigee에 적용되지만 Apigee Hybrid에는 적용되지 않습니다.

Apigee Edge 문서 보기

데이터 난독화는 민감한 정보를 가짜 데이터로 대체하여 악의적인 행위자가 사용할 수 없도록 하고 개인 정보 보호를 위해 보호하는 프로세스입니다. 이 기능을 사용하면 데이터를 분석 페이로드의 일부로 보내기 전에 숨길 수 있습니다. Apigee는 이 기능으로 런타임 영역에서 컨트롤 영역으로 통신하기 전에 원래 값을 SHA512로 해시합니다.

절차

features.analytics.data.obfuscation.enabled으로 설정하여 환경별로 이 기능을 사용 설정합니다.

데이터 상주 없음

curl -v -X PUT \
  https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
  "name" : "ENV_NAME",
  "properties" : {
    "property" : [ {
      "name" : "features.analytics.data.obfuscation.enabled",
      "value" : "true"
    },]
  }
}'

데이터 상주

curl -v -X PUT \
  https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
  "name" : "ENV_NAME",
  "properties" : {
    "property" : [ {
      "name" : "features.analytics.data.obfuscation.enabled",
      "value" : "true"
    },]
  }
}'

난독화가 사용 설정된 경우 Apigee는 정보를 애널리틱스 백엔드로 전송하기 전에 런타임 영역에서 다음 필드를 해싱합니다.

  • client_id
  • client_ip
  • developer_email
  • proxy_client_ip
  • proxy_pathsuffix
  • request_uri
  • request_path
  • target_basepath
  • target_url
  • x_forwarded_for_ip

Apigee는 맞춤 분석 보고서에서 다음 측정기준 값을 해싱합니다.

  • 클라이언트 ID
  • 클라이언트 IP 주소
  • 개발자 이메일
  • 프록시 클라이언트 IP
  • 프록시 경로 서픽스
  • 추천 클라이언트 IP
  • 요청 경로
  • 요청 URI
  • 확인된 클라이언트 IP
  • 대상 기본 경로
  • 대상 URL
  • X Forwarded For

분석 측정기준에 대한 자세한 설명은 애널리틱스 측정항목, 측정기준, 필터 참조를 참고하세요.

난독화된 결과 보기

난독화된 결과는 분석 대시보드에 표시됩니다. 해시된 결과가 UI에 표시되는 데 몇 분 정도 걸릴 수 있습니다.

다음 예는 난독화 전과 후의 데이터를 보여줍니다.

// JSON data sent to AX before obfuscating
{
  "proxy_basepath":"/APP_NAME",
  "x-apigee.edge.execution.stats.request_flow_endtimestamp":1582770652814,
  "apiproxy":"APP_NAME",
  "x-apigee.edge.is_policy_error":0,
  "client_sent_start_timestamp":1582770652817,
  "x-apigee.edge.is_target_error":0,
  "client_received_start_timestamp":1582770652813,
  "client_ip":"10.10.0.99",
  "is_error":false,
  "x-apigee.edge.stats.steps":"{\"JS1.0\":1}",
  "request_size":0,
  "x-apigee.intelligence.client_ip_header":"10.10.0.99",
  "virtual_host":"default",
  "x-apigee.edge.mp_host":"mp",
  "sla":false,
  "x-apigee.intelligence.service":"{}",
  "client_sent_end_timestamp":1582770652817,
  "request_uri":"/APP_NAME",
  "proxy":"default",
  "proxy_client_ip":"10.10.0.99",
  "x-apigee.edge.dn.region":"dc-1",
  "apigee.edge.execution.is_apigee_fault":0,
  "x-apigee.edge.target.latency.stats":"{\"targetList\":[]}",
  "useragent":"Apache-HttpClient/4.3.6 (java 1.6)",
  "proxy_pathsuffix":"",
  "x-apigee.edge.execution.stats.request_flow_start_timestamp":1582770652814,
  "x_forwarded_for_ip":"10.10.0.99",
  "x_forwarded_proto":"http",
  "response_status_code":200,
  "request_verb":"GET",
  "x-apigee.edge.execution.stats.response_flow_end_timestamp":1582770652816,
  "gateway_source":"message_processor",
  "environment":"env_82hw",
  "client_received_end_timestamp":1582770652814,
  "organization":"Org_1582769880344",
  "x-apigee.edge.execution.stats.response_flow_start_timestamp":1582770652814,
  "request_path":"/APP_NAME",
  "gateway_flow_id":"rt-8644-188-1",
  "apiproxy_revision":"1"
}
// JSON data sent to AX after obfuscating
{
  "proxy_basepath":"/APP_NAME",
  "x-apigee.edge.execution.stats.request_flow_endtimestamp":1582749361836,
  "apiproxy":"APP_NAME",
  "x-apigee.edge.is_policy_error":0,
  "client_sent_start_timestamp":1582749361884,
  "x-apigee.edge.is_target_error":0,
  "client_received_start_timestamp":1582749361790,
  "client_ip":"090cdae81ea6e58e55093f702661cf2325cef6a68aa801f1209e73bb0649c2b931bcad468911da887a42ce1d1daee07b24933e3dbbde6eb7438cfc9020a25445",
  "is_error":false,
  "x-apigee.edge.stats.steps":"{\"JS1.0\":30}",
  "request_size":0,
  "x-apigee.intelligence.client_ip_header":"090cdae81ea6e58e55093f702661cf2325cef6a68aa801f1209e73bb0649c2b931bcad468911da887a42ce1d1daee07b24933e3dbbde6eb7438cfc9020a25445",
  "virtual_host":"default",
  "x-apigee.edge.mp_host":"mp",
  "sla":false,
  "x-apigee.intelligence.service":"{}",
  "client_sent_end_timestamp":1582749361886,
  "request_uri":"0176937d9c4a33094d3c3f38ac8b15fa05dd6380a6bb544e4002c98de9f27bdbfea754901b0acb487f4980b09f7d312ad1e7027b96b2c8bfd8b9c24e833fbb5a",
  "proxy":"default",
  "proxy_client_ip":"090cdae81ea6e58e55093f702661cf2325cef6a68aa801f1209e73bb0649c2b931bcad468911da887a42ce1d1daee07b24933e3dbbde6eb7438cfc9020a25445",
  "x-apigee.edge.dn.region":"dc-1",
  "apigee.edge.execution.is_apigee_fault":0,
  "x-apigee.edge.target.latency.stats":"{\"targetList\":[]}",
  "useragent":"Apache-HttpClient/4.3.6 (java 1.6)",
  "proxy_pathsuffix":"cf83e1.67eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81.638327af927da3e",
  "x-apigee.edge.execution.stats.request_flow_start_timestamp":1582749361833,
  "x_forwarded_for_ip":"090cdae81ea6e58e55093f702661cf2325cef6a68aa801f1209e73bb0649c2b931bcad468911da887a42ce1d1daee07b24933e3dbbde6eb7438cfc9020a25445",
  "x_forwarded_proto":"http",
  "response_status_code":200,
  "request_verb":"GET",
  "x-apigee.edge.execution.stats.response_flow_end_timestamp":1582749361874,
  "gateway_source":"message_processor",
  "environment":"env_xj25",
  "client_received_end_timestamp":1582749361821,
  "organization":"Org_1582749068984",
  "x-apigee.edge.execution.stats.response_flow_start_timestamp":1582749361836,
  "request_path":"0176937d9c4a33094d3c3f38ac8b15fa05dd6380a6bb544e4002c98de9f27bdbfea754901b0acb487f4980b09f7d312ad1e7027b96b2c8bfd8b9c24e833fbb5a",
  "gateway_flow_id":"rt-6290-57-1",
  "apiproxy_revision":"1"
}