감사 로그용 커스텀 HTTP 헤더 구성

이 페이지에서는 다음 작업을 완료하는 방법을 설명합니다.

  1. Cloud Healthcare API에 대한 요청에 커스텀 HTTP 헤더를 구성합니다.
  2. Cloud 감사 로그를 사용하여 다음을 수행하도록 요청 및 일치하는 커스텀 HTTP 헤더를 검색합니다.

    • 요청을 보낸 사용자와 시기를 확인합니다.
    • 특정 오류를 야기한 요청을 파악하여 배포 및 디버깅을 간소화합니다.

Cloud Healthcare API에서 Cloud 감사 로그 사용에 대한 자세한 내용은 Cloud 감사 로그 보기를 참조하세요.

구성 가능한 메서드

다음 REST 리소스에서 Cloud Healthcare API 메서드의 커스텀 HTTP 헤더를 구성할 수 있습니다.

커스텀 HTTP 헤더 구성

Cloud Healthcare API 요청에 지정하고 감사 로그에서 볼 수 있는 2가지 유형의 커스텀 HTTP 헤더가 있습니다. 각 유형을 독점적으로 사용하거나 결합할 수 있습니다.

  • 커스텀 ID 로깅. X-Request-Id 커스텀 HTTP 헤더를 지정하여 각 요청에 자체 커스텀 ID를 지정한 후 감사 로그를 통해 ID가 포함된 요청을 검색할 수 있습니다. 커스텀 ID를 제공하려면 다음 형식으로 커스텀 HTTP 헤더를 지정합니다.

    X-Request-Id: REQUEST_ID
    

    각 요청에 REQUEST_ID에 고유한 값을 지정합니다.

    대부분의 프로그래밍 언어에는 요청 ID를 만드는 데 사용할 수 있는 임의 ID를 생성하는 방법이 있습니다. 예를 들어 Python uuid 모듈에는 각 요청에 대해 ID를 자동으로 생성하는 데 사용할 수 있는 uuid.uuid4() 함수가 있습니다. Cloud Healthcare API는 요청 ID를 생성하지 않습니다.

  • 메타데이터 로깅. X-Goog-Healthcare-Audit-IDENTIFIER 헤더를 사용하여 커스텀 HTTP 헤더에 추가 메타데이터 정보를 포함할 수 있습니다. 헤더는 메타데이터 정보의 유형을 고유하게 식별합니다.

    메타데이터는 각 요청의 감사 로그에 저장됩니다. 메타데이터 정보를 제공하려면 다음 형식으로 커스텀 HTTP 헤더를 하나 이상 지정합니다.

    X-Goog-Healthcare-Audit-IDENTIFIER: VALUE
    

    IDENTIFIER를 사람이 읽을 수 있는 식별자로 바꿉니다. 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의 두 사용자 집단으로 나뉩니다. Cohort1에서 고유 ID와 모바일 애플리케이션 이름을 사용하여 각 요청을 식별하려면 각 요청에 다음 커스텀 HTTP 헤더를 지정합니다.

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

커스텀 HTTP 헤더는 Cloud 감사 로그에서 각 요청 감사 로그의 metadata 필드에 표시됩니다.

다음 샘플은 curl을 사용하여 FHIR 스토어에 새 환자 리소스를 만드는 방법을 보여줍니다. 요청에는 다음 커스텀 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"]
    }
    ...
  }
   ...
}