Membuat penentuan akses

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

Aplikasi dapat meminta penetapan 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 determinasi 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 penetapan akses untuk elemen data tertentu, buat permintaan POST dan tentukan informasi berikut dalam permintaan:

  • Nama penyimpanan izin induk.
  • ID resource data, yang merupakan deskripsi elemen data seperti jalur REST ke resource.
  • Kumpulan key-value pair yang mewakili pemohon dalam hal atribut REQUEST yang relevan dan nilainya. Contoh, requesterIdentity == external-researcher.
  • Flag opsional yang menunjukkan apakah penentuan akses mendetail harus ditampilkan. Jika tanda ini ditetapkan 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 saat aplikasi Anda perlu memeriksa cara penetapan izin dibuat.
  • Daftar izin ACTIVE atau DRAFT opsional yang akan dipertimbangkan oleh metode. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izin ACTIVE. Fitur opsional ini dapat digunakan untuk menguji perilaku izin baru atau tertentu.
  • Token akses

curl

Contoh berikut menunjukkan permintaan POST yang 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 penetapan 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 yang valid untuk penggunaan yang diusulkan.

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

  • Nama penyimpanan izin induk.
  • ID pengguna yang menentukan elemen data dan izin untuk dievaluasi.
  • Kumpulan key-value pair opsional yang menentukan atribut RESOURCE elemen data yang akan dievaluasi. Contoh, dataIdentifiable == de-identified. Jika Anda tidak menentukan kumpulan atribut RESOURCE, semua elemen data akan dievaluasi.
  • Kumpulan key-value pair yang menentukan atribut REQUEST yang relevan dan nilainya. Contoh, requesterIdentity == external-researcher.
  • Flag opsional yang menunjukkan apakah penentuan akses mendetail harus ditampilkan. Jika tanda ini ditetapkan 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 saat aplikasi Anda perlu memeriksa cara penetapan izin dibuat.
  • Daftar izin ACTIVE atau DRAFT opsional yang akan dipertimbangkan oleh metode. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izin ACTIVE. Fitur opsional ini dapat digunakan untuk menguji perilaku izin baru atau tertentu.
  • Token akses

curl

Contoh berikut menunjukkan permintaan POST yang 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 izin menggunakan metode projects.locations.datasets.consentStores.queryAccessibleData. Metode ini menampilkan semua elemen data dalam penyimpanan izin yang memiliki izin yang valid.

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

  • Nama penyimpanan izin induk
  • Kumpulan key-value pair yang menentukan atribut REQUEST yang relevan dan nilainya. Contoh, requesterIdentity == external-researcher.
  • Kumpulan key-value pair opsional yang menentukan atribut RESOURCE elemen data yang akan dievaluasi. Contoh, dataIdentifiable == de-identified. Jika Anda tidak menentukan 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, lihat Izin menyimpan izin Cloud Storage.
  • Token akses

curl

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

Membuat logging permintaan dan respons penentuan akses

Jika Log audit Akses Data diaktifkan, Consent Management API akan mencatat permintaan 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 menyertakan identitas alat Google Cloud yang membuat permintaan.

Untuk 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 Cloud Audit Logs.