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 terhadap 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 telah habis masa berlakunya, 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 toko izin induk.
- ID resource data, yang merupakan deskripsi elemen data seperti jalur REST ke resource.
- Kumpulan key-value pair yang merepresentasikan 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 disetel ke
FULL
, metode ini akan menampilkan hasil untuk setiap izin yang dievaluasi. Jika tanda ini disetel keBASIC
, atau tidak ditentukan, metode hanya menampilkan apakah akses ke data yang ditentukan diizinkan oleh izin yang dievaluasi. Fitur opsional ini digunakan saat aplikasi Anda perlu memeriksa cara keputusan izin dibuat. - Daftar opsional izin
ACTIVE
atauDRAFT
yang akan dipertimbangkan oleh metode. Jika tidak ada izin yang ditentukan, metode ini akan mengevaluasi semua izinACTIVE
. Fitur opsional ini dapat digunakan untuk menguji perilaku izin baru atau tertentu. - 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 serupa 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 serupa 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 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 yang valid untuk penggunaan yang diusulkan.
Untuk meminta penentuan akses untuk semua elemen data yang terkait dengan pengguna, buat permintaan POST
dan tentukan informasi berikut dalam permintaan:
- Nama toko izin induk.
- ID pengguna yang menentukan elemen data dan izin yang akan dievaluasi.
- Kumpulan opsional key-value pair yang menentukan atribut
RESOURCE
dari elemen data yang akan dievaluasi. Contoh,dataIdentifiable == de-identified
. Jika Anda tidak menentukan serangkaian atributRESOURCE
, semua elemen data akan dievaluasi. - Kumpulan pasangan nilai kunci 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 disetel ke
FULL
, metode ini akan menampilkan hasil untuk setiap izin yang dievaluasi. Jika tanda ini disetel keBASIC
, atau tidak ditentukan, metode hanya menampilkan apakah akses ke data yang ditentukan diizinkan oleh izin yang dievaluasi. Fitur opsional ini digunakan saat aplikasi Anda perlu memeriksa cara keputusan izin dibuat. - Daftar opsional izin
ACTIVE
atauDRAFT
yang akan dipertimbangkan oleh metode. Jika tidak ada izin yang ditentukan, metode ini akan mengevaluasi semua izinACTIVE
. Fitur opsional ini dapat digunakan untuk menguji perilaku izin baru atau tertentu. - 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 serupa 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 serupa 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 izin
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 penentuan akses di seluruh penyimpanan izin, buat permintaan
POST
dan tentukan informasi berikut dalam permintaan:
- Nama penyimpanan izin induk
- Kumpulan pasangan nilai kunci yang menentukan atribut
REQUEST
yang relevan dan nilainya. Contoh,requesterIdentity == external-researcher
. - Kumpulan opsional key-value pair yang menentukan atribut
RESOURCE
dari elemen data yang akan dievaluasi. Contoh,dataIdentifiable == de-identified
. Jika Anda tidak menentukan serangkaian 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, lihat Izin Cloud Storage toko izin. - 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
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 ada 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 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 Cloud Audit Logs.