Membuat penentuan akses

Halaman ini menjelaskan cara membuat penentuan akses menggunakan Consent Management API.

Aplikasi dapat meminta penentuan akses dari Consent Management API untuk elemen data tertentu, untuk semua elemen data yang terkait dengan pengguna, atau untuk seluruh penyimpanan data. Dalam setiap kasus, Consent Management API membuat penentuan akses dengan mengevaluasi informasi berikut berdasarkan informasi yang terdapat dalam permintaan akses:

  • Izin pengguna, seperti nilai atribut REQUEST
  • Pemetaan data pengguna, seperti nilai atribut RESOURCE.

Secara default, penentuan akses hanya mengevaluasi izin ACTIVE. Izin DRAFT dapat disertakan dalam penentuan akses dengan menentukannya dalam permintaan penentuan akses.

Permintaan penentuan akses selalu mengabaikan izin yang sudah tidak berlaku, dicabut, atau ditolak.

Anda dapat meminta penentuan akses untuk elemen data tertentu menggunakan metode projects.locations.datasets.consentStores.checkDataAccess. Metode ini menampilkan pesan yang menunjukkan apakah UserDataMapping yang ditentukan memiliki izin yang valid untuk penggunaan yang diusulkan.

Untuk meminta penentuan akses untuk elemen data tertentu, buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Nama penyimpanan persetujuan induk.
  • ID resource data, yang merupakan deskripsi elemen data, seperti jalur REST ke resource.
  • Serangkaian key-value pair yang mewakili pemohon dalam hal atribut REQUEST yang relevan dan nilainya. Misalnya, requesterIdentity == external-researcher.
  • Tanda opsional yang menunjukkan apakah penentuan akses mendetail harus ditampilkan. Jika tanda ini disetel ke FULL, metode akan menampilkan hasil untuk setiap izin yang dievaluasi. Jika tanda ini ditetapkan ke BASIC, atau tidak ditentukan, metode ini hanya akan menampilkan apakah akses ke data yang ditentukan diizinkan oleh izin yang dievaluasi. Fitur opsional ini digunakan ketika aplikasi Anda perlu memeriksa bagaimana penentuan izin dibuat.
  • Daftar opsional yang berisi ACTIVE atau DRAFT mengizinkan metode yang akan dipertimbangkan. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izin ACTIVE. Fitur opsional ini dapat digunakan untuk menguji perilaku izin baru atau spesifik.
  • Token akses

curl

Contoh berikut menunjukkan permintaan POST menggunakan 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"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON, atau isi respons kosong jika tidak ada data pengguna yang cocok dengan akses data yang ditentukan. Contoh respons menggunakan FULL sebagai responseView.

{
  "consentDetails": {                                                                                                                         "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": {
      "evaluationResult": "EVALUATION_RESULT"
    }
  }
}

EVALUATION_RESULT adalah salah satu dari NOT_APPLICABLE, NO_MATCHING_POLICY, NO_SATISFIED_POLICY, atauHAS_SATISFIED_POLICY.

PowerShell

Contoh berikut menunjukkan permintaan POST menggunakan 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

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON, atau isi respons kosong jika tidak ada data pengguna yang cocok dengan akses data yang ditentukan. Contoh respons menggunakan FULL sebagai responseView.

{
  "consentDetails": {                                                                                                                         "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": {
      "evaluationResult": "EVALUATION_RESULT"
    }
  }
}

EVALUATION_RESULT adalah salah satu dari NOT_APPLICABLE, NO_MATCHING_POLICY, NO_SATISFIED_POLICY, atauHAS_SATISFIED_POLICY.

Membuat penentuan akses untuk semua izin bagi pengguna

Anda dapat meminta penentuan akses untuk semua elemen data yang terkait dengan pengguna menggunakan metode projects.locations.datasets.consentStores.evaluateUserConsents. Metode ini menampilkan semua elemen data yang terkait dengan pengguna tertentu yang memiliki izin valid untuk penggunaan yang diusulkan.

Guna meminta penentuan akses untuk semua elemen data yang terkait dengan pengguna, buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Nama penyimpanan persetujuan induk.
  • ID pengguna yang menentukan elemen data dan izin untuk dievaluasi.
  • Kumpulan opsional pasangan nilai kunci yang menentukan atribut RESOURCE elemen data yang akan dievaluasi. Contoh, dataIdentifiable == de-identified. Jika Anda tidak menetapkan serangkaian atribut RESOURCE, semua elemen data akan dievaluasi.
  • Serangkaian key-value pair yang menentukan atribut REQUEST yang relevan dan nilainya. Contoh, requesterIdentity == external-researcher.
  • Tanda opsional yang menunjukkan apakah penentuan akses mendetail harus ditampilkan. Jika tanda ini disetel ke FULL, metode akan menampilkan hasil untuk setiap izin yang dievaluasi. Jika tanda ini ditetapkan ke BASIC, atau tidak ditentukan, metode ini hanya akan menampilkan apakah akses ke data yang ditentukan diizinkan oleh izin yang dievaluasi. Fitur opsional ini digunakan ketika aplikasi Anda perlu memeriksa bagaimana penentuan izin dibuat.
  • Daftar opsional yang berisi ACTIVE atau DRAFT mengizinkan metode yang akan dipertimbangkan. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izin ACTIVE. Fitur opsional ini dapat digunakan untuk menguji perilaku izin baru atau spesifik.
  • Token akses

curl

Contoh berikut menunjukkan permintaan POST menggunakan 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"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON, atau isi respons kosong jika tidak ada data pengguna yang cocok dengan akses data yang ditentukan. Contoh respons menggunakan FULL sebagai 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

Contoh berikut menunjukkan permintaan POST menggunakan 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

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON, atau isi respons kosong jika tidak ada data pengguna yang cocok dengan akses data yang ditentukan. Contoh respons menggunakan FULL sebagai responseView.

{
  "results": [
    {
      "dataId": "DATA_ID",
      "consentDetails": {
       "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/consentStores/CONSENT_STORE_ID/consents/CONSENT_ID": {
       "evaluationResult": "EVALUATION_RESULT"
        }
      }
    }
  ]
}

Anda dapat meminta penentuan akses untuk seluruh penyimpanan persetujuan menggunakan metode projects.locations.datasets.consentStores.queryAccessibleData. Metode ini menampilkan semua elemen data dalam penyimpanan Consent yang memiliki izin yang valid.

Untuk meminta penentuan akses di seluruh penyimpanan izin, buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Nama penyimpanan persetujuan orang tua
  • Serangkaian key-value pair yang menentukan atribut REQUEST yang relevan dan nilainya. Contoh, requesterIdentity == external-researcher.
  • Kumpulan opsional pasangan nilai kunci yang menentukan atribut RESOURCE elemen data yang akan dievaluasi. Contoh, dataIdentifiable == de-identified. Jika Anda tidak menetapkan kumpulan atribut RESOURCE, semua elemen data akan dievaluasi
  • Tujuan Cloud Storage tempat daftar hasil disimpan. Akun layanan Cloud Healthcare API harus memiliki peran IAM roles/storage.objectAdmin di tujuan ini. Untuk mengetahui informasi selengkapnya, baca artikel Izin penyimpanan Cloud Storage yang diizinkan.
  • Token akses

curl

Contoh berikut menunjukkan permintaan POST menggunakan 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"

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

Respons berisi nama operasi. Untuk melacak status operasi, Anda dapat menggunakan metode get Operasi:

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"

Jika permintaan berhasil, server akan menampilkan respons dengan status operasi dalam 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"
  }
}

Setelah operasi yang berjalan lama selesai, hasilnya akan muncul dalam file teks di folder yang Anda tentukan. Untuk mengetahui informasi tentang operasi yang berjalan lama, lihat Mengelola operasi yang berjalan lama.

PowerShell

Contoh berikut menunjukkan permintaan POST menggunakan 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

Jika permintaan berhasil, server akan menampilkan respons yang mirip dengan contoh berikut dalam format JSON:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/datasets/DATASET_ID/operations/OPERATION_ID"
}

Respons berisi nama operasi. Untuk melacak status operasi, Anda dapat menggunakan metode get Operasi:

$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

Jika permintaan berhasil, server akan menampilkan respons dengan status operasi dalam 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"
  }
}

Setelah operasi yang berjalan lama selesai, hasilnya akan muncul dalam file teks di folder yang Anda tentukan. Untuk mengetahui informasi tentang operasi yang berjalan lama, lihat Mengelola operasi yang berjalan lama.

Mencatat permintaan dan respons penentuan akses ke dalam log

Jika log audit Akses Data diaktifkan, permintaan log Consent Management API yang dibuat menggunakan metode checkDataAccess, evaluateUserConsents, dan queryAccessibleData. Log ini mencatat informasi yang terdapat dalam permintaan, seperti UserDataMapping target atau atribut RESOURCE atau REQUEST yang ditentukan. Log juga akan berisi respons API, yang mencakup hasil penentuan akses Consent Management API. Setiap log mencakup identitas alat Google Cloud yang membuat permintaan.

Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan log audit Akses Data, lihat Mengonfigurasi log audit Akses Data. Untuk mengetahui informasi selengkapnya tentang logging audit di Cloud Healthcare API, lihat Melihat Log Audit Cloud.