Configurare intestazioni HTTP personalizzate per gli audit log

In questa pagina viene spiegato come completare le attività seguenti:

  1. Configura intestazioni HTTP personalizzate nelle richieste all'API Cloud Healthcare.
  2. Utilizza Cloud Audit Logs per cercare le richieste e le intestazioni HTTP personalizzate corrispondenti per effettuare le seguenti operazioni:

    • Vedi chi ha inviato una richiesta e quando.
    • Semplifica il deployment e il debug individuando la richiesta che ha causato un determinato errore.

Per ulteriori informazioni sull'utilizzo di Cloud Audit Logs nell'API Cloud Healthcare, consulta Visualizzazione di Cloud Audit Logs.

Metodi configurabili

Puoi configurare intestazioni HTTP personalizzate per i metodi dell'API Cloud Healthcare nelle seguenti risorse REST:

Configurare intestazioni HTTP personalizzate

Esistono due tipi di intestazioni HTTP personalizzate che puoi specificare nelle richieste dell'API Cloud Healthcare e che puoi visualizzare negli audit log. Puoi utilizzare ciascun tipo in modo esclusivo o combinarli.

  • Logging degli ID personalizzati. Puoi specificare un'intestazione HTTP personalizzata X-Request-Id per assegnare a ciascuna richiesta il proprio ID personalizzato, quindi cercare negli audit log una richiesta contenente l'ID. Per fornire un ID personalizzato, specifica l'intestazione HTTP personalizzata nel seguente formato:

    X-Request-Id: REQUEST_ID
    

    Specifica un valore univoco per REQUEST_ID in ogni richiesta.

    La maggior parte dei linguaggi di programmazione ha un modo per generare ID casuali da usare per creare l'ID richiesta. Ad esempio, il modulo Python uuid ha una funzione uuid.uuid4() che puoi utilizzare per generare ID automaticamente per ogni richiesta. L'API Cloud Healthcare non genera ID richiesta.

  • Logging dei metadati. Puoi includere ulteriori informazioni sui metadati nelle intestazioni HTTP personalizzate utilizzando l'intestazione X-Goog-Healthcare-Audit-IDENTIFIER. L'intestazione identifica in modo univoco il tipo di informazioni dei metadati.

    I metadati vengono archiviati nell'audit log per ogni richiesta. Per fornire informazioni sui metadati, specifica una o più intestazioni HTTP personalizzate nel seguente formato:

    X-Goog-Healthcare-Audit-IDENTIFIER: VALUE
    

    Sostituisci IDENTIFIER con un identificatore leggibile. Sostituisci VALUE con un valore per i metadati. Puoi specificare più valori in un elenco separato da virgole utilizzando la seguente sintassi:

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

    Ad esempio:

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

    Puoi anche specificare più intestazioni HTTP personalizzate con i propri valori univoci:

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

Visualizza gli audit log in Cloud Audit Logs

Vedi Visualizzazione dei log.

Esempio

L'esempio seguente mostra uno scenario in cui specifichi intestazioni HTTP personalizzate in una richiesta fhir.create.

Supponiamo che tu stia eseguendo uno studio e che tu abbia un'applicazione mobile per i pazienti chiamata PatientApp. I pazienti nello studio sono divisi in due coorti: Cohort1 e Cohort2. Per identificare ogni richiesta proveniente da Cohort1 con un ID univoco e il nome dell'applicazione mobile, specifica le seguenti intestazioni HTTP personalizzate in ogni richiesta:

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

Le intestazioni HTTP personalizzate vengono visualizzate nel campo metadata dell'audit log di ogni richiesta in Cloud Audit Logs.

Il seguente esempio mostra come utilizzare curl per creare una nuova risorsa Patient in un archivio FHIR. La richiesta contiene le seguenti intestazioni HTTP personalizzate:

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

Prima di inviare la richiesta, sostituisci quanto segue:

  • PROJECT_ID: l'ID del tuo progetto Google Cloud
  • LOCATION: la posizione del set di dati
  • DATASET_ID: set di dati padre dell'archivio FHIR
  • FHIR_STORE_ID: l'ID archivio 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"

L'output è il seguente:

{
  "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"
}

Se cerchi la richiesta in Cloud Audit Logs, l'audit log avrà il seguente aspetto:

{
  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"]
    }
    ...
  }
   ...
}