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.
Membuat penentuan akses izin untuk elemen data tertentu
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 keBASIC
, 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
atauDRAFT
mengizinkan metode yang akan dipertimbangkan. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izinACTIVE
. 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 atributRESOURCE
, 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 keBASIC
, 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
atauDRAFT
mengizinkan metode yang akan dipertimbangkan. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izinACTIVE
. 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" } } } ] }
Membuat penentuan akses untuk penyimpanan persetujuan
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 atributRESOURCE
, 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.