為稽核記錄設定自訂 HTTP 標頭

本頁面說明如何完成下列工作:

  1. 在對 Cloud Healthcare API 的要求中設定自訂 HTTP 標頭。
  2. 使用 Cloud 稽核記錄搜尋要求及其相符的自訂 HTTP 標頭,即可執行下列操作:

    • 查看誰傳送了要求,以及傳送時間。
    • 找出導致特定錯誤的要求,簡化部署和偵錯作業。

如要進一步瞭解如何在 Cloud Healthcare API 中使用 Cloud 稽核記錄,請參閱「查看 Cloud 稽核記錄」。

可設定的方法

您可以在下列 REST 資源中,為 Cloud Healthcare API 方法設定自訂 HTTP 標頭:

設定自訂 HTTP 標頭

您可以在 Cloud Healthcare API 要求中指定兩種自訂 HTTP 標頭,並在稽核記錄中查看。您可以單獨使用每種類型,也可以合併使用。

  • 記錄自訂 ID。您可以指定X-Request-Id自訂 HTTP 標頭,為每項要求提供專屬的自訂 ID,然後在稽核記錄中搜尋含有該 ID 的要求。如要提供自訂 ID,請指定下列格式的自訂 HTTP 標頭:

    X-Request-Id: REQUEST_ID
    

    在每個要求中,為 REQUEST_ID 指定不重複的值。

    大多數程式設計語言都有產生隨機 ID 的方法,可用於建立要求 ID。舉例來說,Python uuid 模組具有 uuid.uuid4() 函式,可用於為每項要求自動產生 ID。Cloud Healthcare API 不會產生要求 ID。

  • 記錄中繼資料。您可以使用 X-Goog-Healthcare-Audit-IDENTIFIER 標頭,在自訂 HTTP 標頭中加入其他中繼資料資訊。標頭會明確指出中繼資料資訊的類型。

    每個要求的稽核記錄都會儲存中繼資料。如要提供中繼資料資訊,請指定一或多個自訂 HTTP 標頭,格式如下:

    X-Goog-Healthcare-Audit-IDENTIFIER: VALUE
    

    IDENTIFIER 替換為一般人可判讀的 ID。 將 VALUE 替換為中繼資料的值。 您可以使用下列語法,在以半形逗號分隔的清單中指定多個值:

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

    例如:

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

    您也可以指定多個自訂 HTTP 標頭,各自具有專屬值:

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

在 Cloud 稽核記錄中查看稽核記錄

請參閱「查看記錄」。

範例

以下範例說明在 fhir.create 要求中指定自訂 HTTP 標頭的情境。

假設您正在進行研究,並為患者提供名為 PatientApp 的行動應用程式。研究中的患者分為兩個群組:Cohort1Cohort2。如要使用專屬 ID 和行動應用程式名稱識別 Cohort1 的每個要求,請在每個要求中指定下列自訂 HTTP 標頭:

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

自訂 HTTP 標頭會顯示在 Cloud Audit Logs 中,每個要求稽核記錄的 metadata 欄位。

下列範例說明如何使用 curl 在 FHIR 存放區中建立新的 Patient 資源。要求包含下列自訂 HTTP 標頭:

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

傳送要求前,請先替換下列項目:

  • PROJECT_ID:您的 Google Cloud 專案 ID
  • LOCATION:資料集位置
  • DATASET_ID:FHIR 儲存庫的父項資料集
  • FHIR_STORE_ID:FHIR 儲存庫 ID
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"

輸出內容如下:

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

如果您在 Cloud 稽核記錄中搜尋要求,稽核記錄會如下所示:

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