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.
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 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 keBASIC
, 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
atauDRAFT
opsional yang akan dipertimbangkan oleh metode. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izinACTIVE
. 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 atributRESOURCE
, 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 keBASIC
, 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
atauDRAFT
opsional yang akan dipertimbangkan oleh metode. Jika tidak ada izin yang ditentukan, metode akan mengevaluasi semua izinACTIVE
. 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" } } } ] }
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 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 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 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.