Configurer des en-têtes HTTP personnalisés pour les journaux d'audit

Cette page explique comment effectuer les tâches suivantes :

  1. Configurez des en-têtes HTTP personnalisés dans les requêtes adressées à l'API Cloud Healthcare.
  2. Utilisez Cloud Audit Logging pour rechercher des requêtes et leurs en-têtes HTTP personnalisés correspondants afin de :

    • Découvrez qui a envoyé une demande et quand.
    • Simplifiez le déploiement et le débogage en identifiant la requête à l'origine d'une erreur spécifique.

Pour en savoir plus sur l'utilisation de Cloud Audit Logs dans l'API Cloud Healthcare, consultez la section Afficher les journaux d'audit Cloud.

Méthodes configurables

Vous pouvez configurer des en-têtes HTTP personnalisés pour les méthodes de l'API Cloud Healthcare dans les ressources REST suivantes:

Configurer des en-têtes HTTP personnalisés

Vous pouvez spécifier deux types d'en-têtes HTTP personnalisés dans les requêtes de l'API Cloud Healthcare et les afficher dans les journaux d'audit. Vous pouvez utiliser chaque type exclusivement ou les combiner.

  • Journalisation des ID personnalisés Vous pouvez spécifier l'en-tête HTTP personnalisé X-Request-Id attribuer un ID personnalisé à chaque requête, puis effectuer une recherche dans les journaux d'audit pour une requête contenant cet ID. Pour fournir un ID personnalisé, spécifiez l'en-tête HTTP personnalisé au format suivant :

    X-Request-Id: REQUEST_ID
    

    Spécifiez une valeur unique pour REQUEST_ID dans chaque requête.

    La plupart des langages de programmation permettent de générer des ID aléatoires que vous pouvez utiliser pour créer l'ID de requête. Par exemple, le fichier Le module uuid comporte un uuid.uuid4() que vous pouvez utiliser pour générer automatiquement des ID pour chaque requête. L'API Cloud Healthcare ne génère pas d'ID de requête.

  • Journalisation des métadonnées. Vous pouvez inclure des informations de métadonnées supplémentaires dans le protocole HTTP personnalisé. à l'aide de X-Goog-Healthcare-Audit-IDENTIFIER en-tête. L'en-tête identifie de manière unique le type d'informations de métadonnées.

    Les métadonnées sont stockées dans le journal d'audit de chaque requête. Pour fournir des informations sur les métadonnées, spécifiez un ou plusieurs en-têtes HTTP personnalisés au format suivant :

    X-Goog-Healthcare-Audit-IDENTIFIER: VALUE
    

    Remplacez IDENTIFIER par un identifiant lisible. Remplacez VALUE par une valeur pour les métadonnées. Vous pouvez spécifier plusieurs valeurs dans une liste d'éléments séparés par une virgule à l'aide de la syntaxe suivante :

    X-Goog-Healthcare-Audit-IDENTIFIER: VALUE_1, VALUE_2, VALUE_n ...
    

    Exemple :

    X-Goog-Healthcare-Audit-MyIdentifier: Value1, Value2, Value3
    

    Vous pouvez également spécifier plusieurs en-têtes HTTP personnalisés avec leurs propres valeurs uniques :

    X-Goog-Healthcare-Audit-MyIdentifier1: Value1, Value2
    X-Goog-Healthcare-Audit-MyIdentifier2: Value3
    

Afficher les journaux d'audit dans Cloud Audit Logs

Consultez Afficher les journaux.

Exemple

L'exemple suivant montre un scénario dans lequel vous spécifiez des en-têtes HTTP personnalisés dans une requête fhir.create.

Supposons que vous réalisiez une étude et que vous ayez une application mobile pour les patients nommés PatientApp. Les patients de l'étude sont divisés en deux cohortes: Cohort1 et Cohort2. Identifier chaque demande à partir de Cohort1 par un identifiant unique et le nom de l'application mobile ; spécifiez les en-têtes HTTP personnalisés suivants dans chaque requête:

X-Request-Id: REQUEST_ID
X-Goog-Healthcare-Audit-AppName: PatientApp
X-Goog-Healthcare-Audit-CohortName: Cohort1

Les en-têtes HTTP personnalisés s'affichent dans le champ metadata du journal d'audit de chaque requête dans les journaux d'audit Cloud.

L'exemple suivant montre comment utiliser curl pour créer une ressource Patient dans un datastore FHIR. La requête contient les en-têtes HTTP personnalisés suivants:

  • X-Request-Id: 123
  • X-Goog-Healthcare-Audit-AppName: PatientApp
  • X-Goog-Healthcare-Audit-CohortName: Cohort1

Avant d'envoyer la demande, remplacez les éléments suivants:

  • PROJECT_ID : ID de votre projet Google Cloud
  • LOCATION : emplacement de l'ensemble de données
  • DATASET_ID : ensemble de données parent du magasin FHIR.
  • FHIR_STORE_ID : ID du magasin FHIR.
curl -X POST \
    -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -H "X-Request-Id: 123" \
    -H "X-Goog-Healthcare-Audit-AppName: PatientApp" \
    -H "X-Goog-Healthcare-Audit-CohortName: Cohort1" \
    --data '{
      "name": [
        {
          "use": "official",
          "family": "Smith",
          "given": [
            "Darcy"
          ]
        }
      ],
      "gender": "female",
      "birthDate": "1970-01-01",
      "resourceType": "Patient"
    }' "https://healthcare.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/fhirStores/FHIR_STORE_ID/fhir/Patient"

Le résultat est le suivant :

{
  "birthDate": "1970-01-01",
  "gender": "female",
  "id": "PATIENT_ID",
  "meta": {
    "lastUpdated": "YYYY-MM-DDTHH:MM:SS+ZZ:ZZ",
    "versionId": "VERSION_ID"
  },
  "name": [
    {
      "family": "Smith",
      "given": [
        "Darcy"
      ],
      "use": "official"
    }
  ],
  "resourceType": "Patient"
}

Si vous recherchez la requête dans Cloud Audit Logs, le journal d'audit se présente comme suit :

{
  logName: "projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fdata_write"
  protoPayload: {
    @type: "type.googleapis.com/google.cloud.audit.AuditLog"
    metadata: {
      X-Request-Id: [123]
      X-Goog-Healthcare-Audit-AppName: ["PatientApp"]
      X-Goog-Healthcare-Audit-CohortName: ["Cohort1"]
    }
    ...
  }
   ...
}