Mengenkripsi & mendekripsi data

Panduan ini menjelaskan cara kerja enkripsi dan dekripsi menggunakan API Enkripsi Sisi Klien Google Workspace.

Anda harus mengizinkan layanan Penyedia Identitas (IdP) yang digunakan oleh pengguna berbagi file terenkripsi. Anda biasanya dapat menemukan detail IdP yang diperlukan di file .well-known yang tersedia secara publik; jika tidak, hubungi Administrator Google Workspace untuk mengetahui detail IdP-nya.

Mengenkripsi data

Saat pengguna Google Workspace meminta untuk menyimpan atau menyimpan file terenkripsi sisi klien (CSE), Google Workspace mengirimkan wrap ke URL endpoint KACLS Anda untuk enkripsi. Selain opsi pemeriksaan keamanan, seperti pemeriksaan perimeter dan berbasis klaim JWT, KACLS Anda harus lakukan langkah-langkah berikut:

  1. Validasi pengguna yang meminta.

    • Memvalidasi kedua token autentikasi dan token otorisasi.
    • Periksa apakah token otorisasi dan otentikasi ditujukan untuk pengguna yang sama dengan melakukan pencocokan tak peka huruf besar/kecil pada klaim email.
    • Ketika token autentikasi berisi klaim google_email opsional, harus dibandingkan dengan klaim email dalam token otorisasi menggunakan pendekatan yang peka huruf besar/kecil. Jangan gunakan klaim email dalam token autentikasi untuk perbandingan ini.
    • Jika token autentikasi tidak memiliki google_email klaim, klaim email dalam token autentikasi harus dibandingkan dengan klaim email dalam token otorisasi, menggunakan metode tidak peka huruf besar/kecil.
    • Dalam skenario di mana Google mengeluarkan token otorisasi untuk email yang yang terkait dengan Akun Google, klaim email_type harus ada. Ini merupakan bagian penting dari fitur Akses Tamu, yang memberikan informasi bagi KACLS untuk menerapkan langkah keamanan tambahan pada pihak eksternal pengguna.
      • Beberapa contoh cara KACLS menggunakan informasi ini mencakup:
      • Untuk menerapkan persyaratan logging tambahan.
      • Untuk membatasi penerbit token autentikasi ke IdP Tamu khusus.
      • Untuk mewajibkan klaim tambahan pada token autentikasi.
      • Jika pelanggan belum mengonfigurasi Akses Tamu, semua permintaan dengan email_type ditetapkan ke google-visitor atau customer-idp dapat berupa ditolak. Permintaan dengan email_type sebesar google atau dengan status tidak ditetapkan email_type harus tetap diterima.
    • Pastikan klaim role dalam token otorisasi adalah "writer" atau "upgrader".
    • Pastikan klaim kacls_url dalam token otorisasi cocok dengan URL KACLS saat ini. Pemeriksaan ini memungkinkan mendeteksi potensi server {i>man-in-the-middle<i} yang dikonfigurasi oleh orang dalam atau domain jahat Google Workspace for Education.
    • Lakukan pemeriksaan perimeter menggunakan autentikasi dan otorisasi klaim.
  2. Enkripsi bagian berikut menggunakan algoritma enkripsi yang diautentikasi:

    • Kunci Enkripsi Data (DEK)
    • Nilai resource_name dan perimeter_id dari token otorisasi
    • Data sensitif tambahan
  3. Catat operasi tersebut, termasuk pengguna asalnya, resource_name, dan alasan yang diteruskan dalam permintaan.

  4. Menampilkan objek biner buram untuk disimpan oleh Google Workspace bersama dengan objek terenkripsi dan dikirim apa adanya dalam pembukaan kunci berikutnya operasi. Atau, berikan balasan error terstruktur.

    • Objek biner harus berisi satu-satunya salinan DEK terenkripsi, data yang spesifik tentang implementasi dapat disimpan di dalamnya.

Mendekripsi data

Saat pengguna Google Workspace meminta untuk membuka data terenkripsi sisi klien (CSE), Google Workspace mengirimkan permintaan unwrap ke URL endpoint KACLS Anda untuk dekripsi. Selain keamanan opsional pemeriksaan, seperti pemeriksaan perimeter dan berbasis klaim JWT, KACLS Anda harus menjalankan langkah-langkah berikut:

  1. Validasi pengguna yang meminta.

    • Memvalidasi kedua token autentikasi dan token otorisasi.
    • Periksa apakah token otorisasi dan otentikasi ditujukan untuk pengguna yang sama dengan melakukan pencocokan tak peka huruf besar/kecil pada klaim email.
    • Ketika token autentikasi berisi klaim google_email opsional, harus dibandingkan dengan klaim email dalam token otorisasi menggunakan pendekatan yang peka huruf besar/kecil. Jangan gunakan klaim email dalam token autentikasi untuk perbandingan ini.
    • Jika token autentikasi tidak memiliki google_email klaim, klaim email dalam token autentikasi harus dibandingkan dengan klaim email dalam token otorisasi, menggunakan metode tidak peka huruf besar/kecil.
    • Dalam skenario di mana Google mengeluarkan token otorisasi untuk email yang yang terkait dengan Akun Google, klaim email_type harus ada. Ini merupakan bagian penting dari fitur Akses Tamu, yang memberikan informasi bagi KACLS untuk menerapkan langkah keamanan tambahan pada pihak eksternal pengguna.
      • Beberapa contoh cara KACLS menggunakan informasi ini mencakup:
      • Untuk menerapkan persyaratan logging tambahan.
      • Untuk membatasi penerbit token autentikasi ke IdP Tamu khusus.
      • Untuk mewajibkan klaim tambahan pada token autentikasi.
      • Jika pelanggan belum mengonfigurasi Akses Tamu, semua permintaan dengan email_type ditetapkan ke google-visitor atau customer-idp dapat berupa ditolak. Permintaan dengan email_type sebesar google atau dengan status tidak ditetapkan email_type harus tetap diterima.
    • Pastikan klaim role dalam token otorisasi adalah "pembaca" atau "penulis".
    • Pastikan klaim kacls_url dalam token otorisasi cocok dengan URL KACLS saat ini. Hal ini memungkinkan deteksi potensi man-in-the-middle server yang dikonfigurasi oleh orang dalam atau administrator domain jahat.
  2. Dekripsi bagian berikut menggunakan algoritma enkripsi yang diautentikasi:

    • Kunci Enkripsi Data (DEK)
    • Nilai resource_name dan perimeter_id dari token otorisasi
    • Data sensitif tambahan
  3. Pastikan resource_name dalam token otorisasi dan blob yang didekripsi yang cocok.

  4. Lakukan pemeriksaan perimeter menggunakan klaim autentikasi dan otorisasi.

  5. Catat operasi tersebut, termasuk pengguna asalnya, resource_name, dan alasan yang diteruskan dalam permintaan.

  6. Menampilkan DEK yang belum digabungkan atau balasan error terstruktur.