En esta página se describe cómo tomar decisiones de acceso mediante la API Consent Management.
Las aplicaciones pueden solicitar determinaciones de acceso a la API Consent Management para un elemento de datos específico, para todos los elementos de datos asociados a un usuario o para almacenes de datos completos. En cada caso, la API Consent Management determina el acceso evaluando la siguiente información en comparación con la información incluida en la solicitud de acceso:
- El consentimiento del usuario, como los valores de los atributos
REQUEST
- Las asignaciones de datos de usuario, como los valores de los atributos
RESOURCE
.
De forma predeterminada, las determinaciones de acceso solo evalúan los consentimientos ACTIVE
. DRAFT
Los consentimientos se pueden incluir en una determinación de acceso especificándolos en una
solicitud de determinación de acceso.
Las solicitudes de determinación de acceso siempre ignoran los consentimientos que han caducado, se han revocado o se han rechazado.
Determinar el acceso con consentimiento a elementos de datos específicos
Puede solicitar una determinación de acceso para un elemento de datos específico mediante el método
projects.locations.datasets.consentStores.checkDataAccess
. Este método devuelve un mensaje que indica si el UserDataMapping
especificado tiene un consentimiento válido para el uso propuesto.
Para solicitar una determinación de acceso a un elemento de datos específico, haz una solicitud POST
y especifica la siguiente información en la solicitud:
- Nombre del almacén de consentimientos superior.
- Un ID de recurso de datos, que es una descripción del elemento de datos, como la ruta REST a un recurso.
- Conjunto de pares clave-valor que representan al solicitante en términos de los
REQUEST
atributos relevantes y sus valores. Por ejemplo,requesterIdentity == external-researcher
. - Marca opcional que indica si se deben devolver determinaciones de acceso detalladas. Si esta marca se define como
FULL
, el método devuelve resultados de cada consentimiento evaluado. Si se le asigna el valorBASIC
a esta marca o no se define, el método solo devuelve si los consentimientos evaluados permiten acceder a los datos especificados. Esta función opcional se usa cuando tu aplicación necesita inspeccionar cómo se ha tomado una decisión sobre el consentimiento. - Lista opcional de consentimientos de
ACTIVE
oDRAFT
que debe tener en cuenta el método. Si no se especifica ningún consentimiento, el método evalúa todos los consentimientos deACTIVE
. Esta función opcional se puede usar para probar el comportamiento de consentimientos nuevos o específicos. - Un token de acceso
curl
En el siguiente ejemplo se muestra una solicitud POST
que utiliza curl
:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/consent+json; charset=utf-8" \ --data "{ 'dataId' : 'DATA_ID', 'requestAttributes': { 'requesterIdentity': 'external-researcher'}, 'consentList':{ 'consents':[ 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_NAME' ] }, 'responseView': 'DETAILED_ACCESS_LEVEL' }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID:checkDataAccess"
Si la solicitud se realiza correctamente, el servidor devuelve una respuesta similar a la del siguiente ejemplo en formato JSON o un cuerpo de respuesta vacío si no hay datos de usuario que coincidan con el acceso a datos especificado. La respuesta de ejemplo usa FULL
como responseView
.
{ "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } }
EVALUATION_RESULT
es uno de los siguientes valores: NOT_APPLICABLE
, NO_MATCHING_POLICY
, NO_SATISFIED_POLICY
o HAS_SATISFIED_POLICY
.
PowerShell
En el siguiente ejemplo se muestra una solicitud POST
que utiliza Windows PowerShell:
$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 "{ 'dataId' : 'DATA_ID', 'requestAttributes': { 'requesterIdentity': 'external-researcher' }, 'consentList': { 'consents':[ 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID' ] }, 'responseView': 'DETAILED_ACCESS_LEVEL' }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID:checkDataAccess" | Select-Object -Expand Content
Si la solicitud se realiza correctamente, el servidor devuelve una respuesta similar a la del siguiente ejemplo en formato JSON o un cuerpo de respuesta vacío si no hay datos de usuario que coincidan con el acceso a datos especificado. La respuesta de ejemplo usa FULL
como responseView
.
{ "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } }
EVALUATION_RESULT
es uno de los siguientes valores: NOT_APPLICABLE
, NO_MATCHING_POLICY
, NO_SATISFIED_POLICY
o HAS_SATISFIED_POLICY
.
Tomar una decisión de acceso para todos los consentimientos de un usuario
Puede solicitar una determinación de acceso para todos los elementos de datos asociados a un usuario mediante el método projects.locations.datasets.consentStores.evaluateUserConsents
. Este método devuelve todos los elementos de datos asociados a un usuario específico que tengan un consentimiento válido para el uso propuesto.
Para solicitar una determinación de acceso para todos los elementos de datos asociados a un usuario, haz una solicitud POST
y especifica la siguiente información en la solicitud:
- Nombre del almacén de consentimientos superior.
- Un ID de usuario que define los elementos de datos y los consentimientos que se van a evaluar.
- Conjunto opcional de pares clave-valor que definen los atributos
RESOURCE
de los elementos de datos que se van a evaluar. Por ejemplo,dataIdentifiable == de-identified
. Si no define un conjunto de atributosRESOURCE
, se evaluarán todos los elementos de datos. - Un conjunto de pares clave-valor que definen los atributos
REQUEST
relevantes y sus valores. Por ejemplo,requesterIdentity == external-researcher
. - Marca opcional que indica si se deben devolver determinaciones de acceso detalladas. Si esta marca se define como
FULL
, el método devuelve resultados de cada consentimiento evaluado. Si se le asigna el valorBASIC
a esta marca o no se define, el método solo devuelve si los consentimientos evaluados permiten acceder a los datos especificados. Esta función opcional se usa cuando tu aplicación necesita inspeccionar cómo se ha tomado una decisión sobre el consentimiento. - Lista opcional de consentimientos de
ACTIVE
oDRAFT
que debe tener en cuenta el método. Si no se especifica ningún consentimiento, el método evalúa todos los consentimientos deACTIVE
. Esta función opcional se puede usar para probar el comportamiento de consentimientos nuevos o específicos. - Un token de acceso
curl
En el siguiente ejemplo se muestra una solicitud POST
que utiliza curl
:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/consent+json; charset=utf-8" \ --data "{ 'userId' : 'USER_ID', 'consentList':{ 'consents':[ 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID' ] }, 'resourceAttributes': { 'dataIdentifiable': 'de-identified' }, 'requestAttributes': { 'requesterIdentity': 'external-researcher' }, 'responseView': 'DETAILED_ACCESS_LEVEL' }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID:evaluateUserConsents"
Si la solicitud se realiza correctamente, el servidor devuelve una respuesta similar a la del siguiente ejemplo en formato JSON o un cuerpo de respuesta vacío si no hay datos de usuario que coincidan con el acceso a datos especificado. La respuesta de ejemplo usa FULL
como responseView
.
{ "results": [ { "dataId": "DATA_ID", "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } } ] }
PowerShell
En el siguiente ejemplo se muestra una solicitud POST
que utiliza Windows PowerShell:
$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 "{ 'userId' : 'USER_ID', 'consentList':{ 'consents':[ 'projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_NAME' ] }, 'resourceAttributes': { 'dataIdentifiable': 'de-identified'}, 'requestAttributes': { 'requesterIdentity': 'external-researcher'}, 'responseView': 'DETAILED_ACCESS_LEVEL' }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID:evaluateUserConsents" | Select-Object -Expand Content
Si la solicitud se realiza correctamente, el servidor devuelve una respuesta similar a la del siguiente ejemplo en formato JSON o un cuerpo de respuesta vacío si no hay datos de usuario que coincidan con el acceso a datos especificado. La respuesta de ejemplo usa FULL
como responseView
.
{ "results": [ { "dataId": "DATA_ID", "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } } ] }
Determinar el acceso a almacenes de consentimientos
Puede solicitar una determinación del acceso para todo un almacén de consentimientos mediante el método projects.locations.datasets.consentStores.queryAccessibleData
. Este método devuelve todos los elementos de datos de un almacén de consentimientos que tengan un consentimiento válido.
Para solicitar una determinación de acceso en todo un almacén de consentimiento, haz una solicitud POST
y especifica la siguiente información:
- Nombre del almacén de consentimientos principal
- Un conjunto de pares clave-valor que definen los atributos
REQUEST
relevantes y sus valores. Por ejemplo,requesterIdentity == external-researcher
. - Conjunto opcional de pares clave-valor que definen los atributos
RESOURCE
de los elementos de datos que se van a evaluar. Por ejemplo,dataIdentifiable == de-identified
. Si no define un conjunto de atributosRESOURCE
, se evalúan todos los elementos de datos. - Un destino de Cloud Storage donde se guarda la lista de resultados. La cuenta de servicio de la API Cloud Healthcare debe tener el rol de gestión de identidades y accesos
roles/storage.objectAdmin
en este destino. Para obtener más información, consulta Permisos de Cloud Storage para almacenes de consentimiento. - Un token de acceso
curl
En el siguiente ejemplo se muestra una solicitud POST
que utiliza curl
:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/consent+json; charset=utf-8" \ --data "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'resourceAttributes': { 'dataIdentifiable': 'de-identified' }, 'requestAttributes': { 'requesterIdentity': 'external-researcher' } }" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID:queryAccessibleData"
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta similar a la siguiente en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para hacer un seguimiento del estado de la operación, puedes usar el método Operation get
:
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.consent.consentService.queryAccessibleData", "createTime": "CREATE_TIME", "endTime": "END_TIME" "logsUrl": "LOGS_URL", "counter": { "success": "SUCCESS_COUNT" } }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Una vez que se haya completado la operación de larga duración, los resultados aparecerán en un archivo de texto en la carpeta que hayas especificado. Para obtener información sobre las operaciones de larga duración, consulta Gestionar operaciones de larga duración.
PowerShell
En el siguiente ejemplo se muestra una solicitud POST
que utiliza Windows PowerShell:
$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 "{ 'gcsDestination': { 'uriPrefix': 'gs://BUCKET/DIRECTORY' }, 'resourceAttributes': { 'dataIdentifiable': 'de-identified' }, 'requestAttributes': { 'requesterIdentity': 'external-researcher' } }" ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID:queryAccessibleData" | Select-Object -Expand Content
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta similar a la siguiente en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La respuesta contiene un nombre de operación. Para hacer un seguimiento del estado de la operación, puedes usar el método Operation get
:
$cred = gcloud auth application-default print-access-token $headers = @{ Authorization = "Bearer $cred" } Invoke-WebRequest ` -Method Get ` -Headers $headers ` -Uri "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" | Select-Object -Expand Content
Si la solicitud se realiza de forma correcta, el servidor devuelve una respuesta con el estado de la operación en formato JSON:
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID", "metadata": { "@type": "type.googleapis.com/google.cloud.healthcare.v1beta1.OperationMetadata", "apiMethodName": "google.cloud.healthcare.v1beta1.consent.consentService.queryAccessibleData", "createTime": "CREATE_TIME", "endTime": "END_TIME" "logsUrl": "LOGS_URL", "counter": { "success": "SUCCESS_COUNT" } }, "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
Una vez que se haya completado la operación de larga duración, los resultados aparecerán en un archivo de texto en la carpeta que hayas especificado. Para obtener información sobre las operaciones de larga duración, consulta Gestionar operaciones de larga duración.
Registrar solicitudes y respuestas de determinación del acceso
Cuando los registros de auditoría de acceso a datos están habilitados, la API Consent Management registra las solicitudes realizadas mediante los métodos checkDataAccess
, evaluateUserConsents
y queryAccessibleData
. En estos registros se incluye la información contenida en la solicitud, como el UserDataMapping
de destino o los atributos RESOURCE
o REQUEST
especificados. Los registros también contendrán la respuesta de la API, que incluye el resultado de la determinación del acceso a la API Consent Management. Cada registro incluye la identidad de la herramienta Google Cloud que hace la solicitud.
Para obtener más información sobre cómo habilitar los registros de auditoría de acceso a datos, consulta el artículo Configurar registros de auditoría de acceso a datos. Para obtener más información sobre el registro de auditoría en la API Cloud Healthcare, consulta Ver registros de auditoría de Cloud.