注册用户数据

本页面介绍如何向 Consent Management API 注册用户数据。

您需要向 Consent Management API 注册数据元素,并使用用户数据映射将数据元素连接到用户许可。用户数据不会存储在 Consent Management API 中。

UserDataMappings 资源表示的用户数据映射包含以下元素:

  • 标识用户的用户 ID。此 ID 与应用在注册许可时向 Consent Management API 提供的 ID 一致。
  • 标识存储在其他位置(例如 Google Cloud 或本地)的用户数据的数据 ID。数据 ID 可以是不透明 ID、网址或任何其他标识符。
  • 使用资源特性值描述用户数据特征的资源特性,资源特性值是使用特性定义为许可存储区配置的。例如,数据可能包含值为 de-identifiedattribute_definition_id data_identifiable

下图展示了创建用户数据映射的数据流:

用户数据映射

注册用户数据映射

要创建用户数据映射,请使用 projects.locations.datasets.consentStores.userDataMappings.create 方法。发出 POST 请求并在请求中指定以下信息:

  • 父许可存储区的名称
  • 唯一且不透明的 userID,表示数据元素关联的用户
  • 用户数据资源的标识符,例如唯一资源的 REST 路径
  • 一组描述数据元素的 RESOURCE 特性
  • 访问令牌

curl

以下示例展示了使用 curlPOST 请求。

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/consent+json; charset=utf-8" \
    --data "{
       'user_id': 'USER_ID',
       'data_id' : 'DATA_ID',
       'resource_attributes': [{
           'attribute_definition_id': 'data_identifiable',
           'values': ['de-identified']
      }]
    }" \
"https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings"

如果请求成功,则服务器返回 JSON 格式的类似下列示例的响应:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings/USER_DATA_MAPPING_ID",
  "dataId": "DATA_ID",
  "userId": "USER_ID",
  "resourceAttributes": [
    {
      "attributeDefinitionId": "data_identifiable",
      "values": [
        "de-identified"
      ]
    }
  ]
}

PowerShell

以下示例展示了使用 Windows PowerShell 的 POST 请求:

$cred = gcloud auth application-default print-access-token
$headers = @{ Authorization = "Bearer $cred" }

Invoke-WebRequest `
  -Method Post `
  -Headers $headers `
  -ContentType: "application/consent+json; charset=utf-8" `
  -Body "{
       'user_id': 'USER_ID',
       'data_id' : 'DATA_ID',
       'resource_attributes': [{
           'attribute_definition_id': 'data_identifiable',
           'values': ['de-identified']
      }]
    }" `
  -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings" | Select-Object -Expand Content

如果请求成功,则服务器返回 JSON 格式的类似下列示例的响应:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/userDataMappings/USER_DATA_MAPPING_ID",
  "dataId": "DATA_ID",
  "userId": "USER_ID",
  "resourceAttributes": [
    {
      "attributeDefinitionId": "data_identifiable",
      "values": [
        "de-identified"
      ]
    }
  ]
}

配置数据 ID

用户数据映射资源的 data_id 字段包含客户指定的字符串,用于描述用户数据映射资源所引用的数据。允许使用任何字符串,例如不透明 ID 或 URI。

数据 ID 可以根据应用的要求细化。如果您注册的数据可以在表级层或存储桶级层进行描述,请将 data_id 定义为该资源的 REST 路径。如果您注册的数据需要更高的细化程度,您可能需要指定特定的行或单元。如果您的应用使用概念性资源(例如允许的数据操作或类别),则应该定义惯例支持这些用例的 data_id

描述不同服务和各种粒度级别存储的数据的 data_id 示例包括但不限于以下内容:

Google Cloud Storage 对象

  'data_id' : 'gs://BUCKET_NAME/OBJECT_NAME'
  

Amazon S3 对象

  'data_id' : 'https://BUCKET_NAME.s3.REGION.amazonaws.com/OBJECT_NAME'
  

BigQuery 表

  'data_id' : 'bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID'
  

BigQuery 行(BigQuery 行没有 REST 路径,因此您自己的标识符是必需的,可能的方案如下所示)

  'data_id' : 'bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID/myRows/ROW_ID'
  

BigQuery 单元格(BigQuery 单元格没有 REST 路径,因此您自己的标识符是必需的,可能的方法如下所示)

  'data_id' : 'bigquery/v2/projects/PROJECT_ID/datasets/DATASET_ID/tables/TABLE_ID/myRows/ROW_ID/myColumns/COLUMN_ID'
  

FHIR 资源

  'data_id' : 'https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient/PATIENT_ID'
  

概念表示

  'data_id' : 'wearables/fitness/step_count/daily_sum'