Vous trouverez sur cette page la procédure à suivre pour déterminer les accès à l'aide de l'API Consent Management.
Les applications peuvent demander des décisions d'accès à partir de l'API Consent Management pour un élément de données spécifique, pour tous les éléments de données associés à un utilisateur ou pour des datastores entiers. Pour chacun de ces cas, l'API Consent Management détermine les accès en évaluant les informations suivantes par rapport à celles contenues dans la requête d'accès :
- L'autorisation de l'utilisateur, par exemple les valeurs des attributs
REQUEST
- Les mappages de données utilisateur, tels que les valeurs des attributs
RESOURCE
Par défaut, les décisions d'accès évaluent uniquement les autorisations ACTIVE
. Les autorisations DRAFT
peuvent être incluses dans une décision d'accès en les spécifiant dans une requête de décision d'accès.
Les requêtes de décision d'accès ignorent toujours les autorisations expirées, révoquées ou refusées.
Déterminer les autorisations d'accès pour des éléments de données spécifiques
Vous pouvez effectuer une requête de décision d'accès pour un élément de données spécifique à l'aide de la méthode projects.locations.datasets.consentStores.checkDataAccess
. Cette méthode renvoie un message indiquant si l'élément UserDataMapping
spécifié dispose d'une autorisation valide pour l'utilisation proposée.
Pour demander une décision d'accès pour un élément de données spécifique, envoyez une requête POST
et spécifiez les informations suivantes dans la requête :
- Nom du magasin d'autorisations parent
- Un ID de ressource de données, correspondant à une description de l'élément de données tel que le chemin d'accès REST vers une ressource
- Un ensemble de paires clé/valeur représentant le demandeur en fonction des attributs
REQUEST
correspondants et de leurs valeurs. Exemple :requesterIdentity == external-researcher
. - Option facultative indiquant si des décisions d'accès détaillées doivent être renvoyées. Si cette option est définie sur
FULL
, la méthode renvoie les résultats pour chaque autorisation évaluée. Si cette option est définie surBASIC
ou n'est pas définie, la méthode ne renvoie que si l'accès aux données spécifiées est autorisé par les autorisations évaluées. Cette fonctionnalité facultative est utilisée lorsque l'application doit inspecter la façon dont une décision d'autorisation a été prise. - Liste facultative des autorisations
ACTIVE
ouDRAFT
à prendre en compte par la méthode. Si aucune autorisation n'est spécifiée, la méthode évalue toutes les autorisationsACTIVE
. Cette fonctionnalité facultative peut être utilisée pour tester le comportement d'autorisations nouvelles ou spécifiques. - Un jeton d'accès
curl
L'exemple suivant montre une requête POST
utilisant 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 requête aboutit, le serveur renvoie une réponse semblable à l'exemple suivant au format JSON ou un corps de réponse vide si aucune donnée utilisateur ne correspond à l'accès aux données spécifié. L'exemple de réponse utilise FULL
en tant que responseView
.
{ "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } }
EVALUATION_RESULT
correspond à NOT_APPLICABLE
, NO_MATCHING_POLICY
, NO_SATISFIED_POLICY
ou HAS_SATISFIED_POLICY
.
PowerShell
L'exemple suivant montre une requête POST
utilisant 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 requête aboutit, le serveur renvoie une réponse semblable à l'exemple suivant au format JSON ou un corps de réponse vide si aucune donnée utilisateur ne correspond à l'accès aux données spécifié. L'exemple de réponse utilise FULL
en tant que responseView
.
{ "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } }
EVALUATION_RESULT
correspond à NOT_APPLICABLE
, NO_MATCHING_POLICY
, NO_SATISFIED_POLICY
ou HAS_SATISFIED_POLICY
.
Déterminer un niveau d'accès pour toutes les autorisations d'un utilisateur
Vous pouvez effectuer une requête de décision d'accès pour tous les éléments de données associés à un utilisateur à l'aide de la méthode projects.locations.datasets.consentStores.evaluateUserConsents
. Cette méthode renvoie tous les éléments de données associés à un utilisateur spécifique disposant d'une autorisation valide pour l'utilisation proposée.
Pour demander une décision d'accès pour tous les éléments de données associés à un utilisateur, envoyez une requête POST
et spécifiez les informations suivantes dans la requête :
- Nom du magasin d'autorisations parent
- ID utilisateur définissant les éléments de données et les autorisations à évaluer
- Un ensemble facultatif de paires clé/valeur définissant les attributs
RESOURCE
des éléments de données à évaluer. Exemple :dataIdentifiable == de-identified
Si vous ne définissez pas un ensemble d'attributsRESOURCE
, tous les éléments de données sont évalués. - Un ensemble de paires clé/valeur définissant les attributs
REQUEST
pertinents et leurs valeurs. Exemple :requesterIdentity == external-researcher
- Option facultative indiquant si des décisions d'accès détaillées doivent être renvoyées. Si cette option est définie sur
FULL
, la méthode renvoie les résultats pour chaque autorisation évaluée. Si cette option est définie surBASIC
ou n'est pas définie, la méthode ne renvoie que si l'accès aux données spécifiées est autorisé par les autorisations évaluées. Cette fonctionnalité facultative est utilisée lorsque l'application doit inspecter la façon dont une décision d'autorisation a été prise. - Liste facultative des autorisations
ACTIVE
ouDRAFT
à prendre en compte par la méthode. Si aucune autorisation n'est spécifiée, la méthode évalue toutes les autorisationsACTIVE
. Cette fonctionnalité facultative peut être utilisée pour tester le comportement d'autorisations nouvelles ou spécifiques. - Un jeton d'accès
curl
L'exemple suivant montre une requête POST
utilisant 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 requête aboutit, le serveur renvoie une réponse semblable à l'exemple suivant au format JSON ou un corps de réponse vide si aucune donnée utilisateur ne correspond à l'accès aux données spécifié. L'exemple de réponse utilise FULL
en tant que 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
L'exemple suivant montre une requête POST
utilisant 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 requête aboutit, le serveur renvoie une réponse semblable à l'exemple suivant au format JSON ou un corps de réponse vide si aucune donnée utilisateur ne correspond à l'accès aux données spécifié. L'exemple de réponse utilise FULL
en tant que responseView
.
{ "results": [ { "dataId": "DATA_ID", "consentDetails": { "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": { "evaluationResult": "EVALUATION_RESULT" } } } ] }
Déterminer les niveaux d'accès des magasins d'autorisations
Vous pouvez demander une décision d'accès pour l'intégralité d'un magasin d'autorisations à l'aide de la méthode projects.locations.datasets.consentStores.queryAccessibleData
. Cette méthode renvoie tous les éléments de données d'un magasin d'autorisations qui disposent d'une autorisation valide.
Pour demander une décision d'accès à l'ensemble d'un magasin d'autorisations, envoyez une requête POST
et spécifiez les informations suivantes dans la requête :
- Nom du magasin d'autorisations parent
- Un ensemble de paires clé/valeur définissant les attributs
REQUEST
pertinents et leurs valeurs. Exemple :requesterIdentity == external-researcher
- Un ensemble facultatif de paires clé/valeur définissant les attributs
RESOURCE
des éléments de données à évaluer. Par exemple,dataIdentifiable == de-identified
. Si vous ne définissez pas un ensemble d'attributsRESOURCE
, tous les éléments de données sont évalués. - Destination Cloud Storage où la liste des résultats est enregistrée. Le compte de service de l'API Cloud Healthcare doit disposer du rôle IAM
roles/storage.objectAdmin
sur cette destination. Pour en savoir plus, consultez la section Autorisations Cloud Storage pour les magasins d'autorisations. - Un jeton d'accès
curl
L'exemple suivant montre une requête POST
utilisant 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 requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode 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 requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format 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" } }
Une fois l'opération de longue durée terminée, les résultats apparaissent dans un fichier texte situé dans le dossier que vous avez spécifié. Pour en savoir plus sur les opérations de longue durée, consultez la page Gérer les opérations de longue durée.
PowerShell
L'exemple suivant montre une requête POST
utilisant 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 requête aboutit, le serveur affiche une réponse semblable à l'exemple suivant au format JSON :
{ "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID" }
La réponse contient un nom d'opération. Pour suivre l'état de l'opération, vous pouvez utiliser la méthode 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 requête aboutit, le serveur renvoie une réponse avec l'état de l'opération au format 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" } }
Une fois l'opération de longue durée terminée, les résultats apparaissent dans un fichier texte situé dans le dossier que vous avez spécifié. Pour en savoir plus sur les opérations de longue durée, consultez la page Gérer les opérations de longue durée.
Requêtes et réponses de décision d'accès à la journalisation
Lorsque les journaux d'audit des accès aux données sont activés, l'API Consent Management consigne les requêtes effectuées à l'aide des méthodes checkDataAccess
, evaluateUserConsents
, et queryAccessibleData
. Ces journaux enregistrent les informations contenues dans la requête, telles que la cible UserDataMapping
ou les attributs RESOURCE
ou REQUEST
spécifiés. Les journaux contiennent également la réponse de l'API, qui inclut le résultat de la décision d'accès de l'API Consent Management. Chaque journal inclut l'identité de l'outil Google Cloud qui envoie la requête.
Pour en savoir plus sur l'activation des journaux d'audit des accès aux données, consultez la section Configurer les journaux d'audit pour l'accès aux données. Pour en savoir plus sur les journaux d'audit dans l'API Cloud Healthcare, consultez la page Afficher les journaux d'audit Cloud.