Properti ID Bersama Vendor Google

Latar belakang

Dokumen ini membahas properti wajib untuk ID bersama yang digunakan dalam integrasi antara Google dan Vendor (atau Penerbit akun untuk pengguna). Pemahaman yang baik tentang ID bersama adalah bahwa ID ini adalah pointer buram ke tepi antara Akun Google dan Akun penerbit.

Oleh karena itu, penting untuk diingat bahwa ID bersama tidak merujuk ke Akun Google (atau pengguna atau entitas lain di penyimpanan Google) maupun Akun Vendor/Penerbit (atau entitas lainnya). Hal itu mengacu pada hubungan di antara keduanya.

Properti ID Bersama

Properti yang diwajibkan untuk ID bersama berasal dari pengalaman sebelumnya dan masalah teknis yang terjadi akibat kurangnya properti ini pada ID bersama.

Untuk integrasi antara Google dan partner eksternal, ID bersama yang digunakan harus memiliki properti berikut:

  1. Bersifat Unik Secara Global: ID bersama ini harus mengarah tepat ke satu link antara pengguna Google dan akun Penerbit. Tidak boleh ada ID lain yang dibagikan untuk Penerbit yang sama yang memiliki nilai yang sama.
  2. Tidak Dapat Diprediksi: ID bersama ini memiliki izin untuk mengambil tindakan atas nama pengguna, sehingga pihak ketiga tidak mungkin dapat menebak nilai ID yang dibagikan.
  3. Dapat Dibatalkan: ID yang dibagikan harus dapat dicabut oleh pengguna dan pencabutan ini harus melarang penggunaan nilai ID bersama di masa mendatang. Properti ini memiliki beberapa properti akibat yang berikut:
    • Tidak didasarkan pada properti yang tidak dapat diubah dari salah satu akun: Jika nilai ID yang dibagikan didasarkan pada properti yang tidak dapat diubah dari akun Penerbit atau Akun Google, pembuatan ulang ID bersama yang dicabut akan menghasilkan nilai yang sama dari ID bersama tersebut (sehingga mengurungkan pencabutan), sehingga nilai ID yang dibagikan tidak boleh berupa properti akun (mis. telepon atau nomor telepon).
    • Tidak hanya berupa <Akun Google, Akun Partner>: harus ada nilai lain (misalnya waktu) agar dapat melakukan pencabutan.
  4. Izinkan multi-link untuk akun di kedua sisi: Pembuatan nilai ID bersama harus memastikan bahwa satu pengguna Google tidak mustahil bagi satu pengguna Google untuk menautkan ke beberapa rekening bank atau lebih dari satu Akun Google untuk menautkan ke satu rekening bank (misalnya rekening orang tua dan anak yang tertaut ke rekening bank induk). Serupa dengan pencabutan, hal ini memiliki beberapa konsekuensi:
    • Sekali lagi, bukan berdasarkan properti yang tidak dapat diubah dari salah satu akun: Jika tidak, ID bersama akan memiliki nilai yang sama saat satu pengguna Google menautkan beberapa rekening bank (jika nilai ID bersama didasarkan pada Akun Google) atau jika beberapa Akun Google ditautkan dengan satu rekening bank (jika nilai ID bersama didasarkan pada properti rekening bank)
  5. Jangka Waktu Lama: ID bersama hanya valid dalam konteks yang aman (integrasi antara Google dan vendor, yang menggunakan perlindungan tingkat koneksi dan tingkat aplikasi (mis.PGP, SSL bersama, dll.), sehingga tidak memerlukan siklus proses yang singkat untuk tetap aman. Preferensi Google adalah agar masa berlaku ID yang dibagikan tidak pernah berakhir, tetapi jika suatu vendor memerlukan masa berlaku, ID tersebut harus memiliki jangka waktu yang lama (misalnya >1 tahun).

Properti ID bersama lainnya yang direkomendasikan adalah sebagai berikut:

  1. Base64: hal ini membuat pengangkutan dan mengomunikasikan nilai dalam integrasi dengan mudah melalui https.
  2. Panjang Minimum: Minimal 27 digit (sebelum encoding Base64) direkomendasikan untuk memastikan bahwa ada banyak ruang alamat untuk menghindari konflik.

Apa yang Bisa Terjadi Kesalahan?

Untuk membantu pembaca memahami properti yang diperlukan, berikut adalah beberapa studi kasus yang menggambarkan masalah yang dialami saat properti ini tidak dipenuhi.

Studi Kasus ID Bersama

Studi Kasus #1: Daur Ulang Nomor Telepon

Penerbit yang menggunakan nomor telepon pengguna sebagai ID bersama mereka. Saat Pengguna A berubah paket telepon, dia menyerahkan nomor teleponnya dan membeli nomor baru. Sebulan kemudian, perusahaan telepon itu mendaur ulang nomor telepon lama dan tiba-tiba pemilik baru nomor telepon tersebut, Pengguna B, mulai melihat tagihan di akunnya untuk hal-hal yang tidak mereka beli.

Penerbit telah melanggar banyak properti ID bersama, terutama properti #1. Hal-hal seperti nomor telepon dapat dimigrasikan dari satu pengguna ke pengguna lainnya, sehingga akan bersifat unik hanya selama snapshot waktu tertentu.

Studi Kasus #2: Pasta

Karyawan Google/Partner tidak sengaja menempelkan ID bersama ke dalam chat, bukan alat internal. Lapisan perlindungan tambahan mencegah siapa pun menggunakan ID bersama secara tidak semestinya. Namun, demi menjaga keamanan, Google ingin mencabut ID yang dibagikan dan menggantinya dengan yang baru. Saat Google/Partner mencoba mencabut ID yang dibagikan, mereka menemukan bahwa ID yang dibagikan hanyalah ID akun pengguna di sistem Penerbit dan ID bersama digunakan untuk mencari langsung akun pengguna. Oleh karena itu, ID bersama tidak dapat dicabut tanpa menghapus akun pengguna dan membuat akun baru untuknya.

Studi Kasus #3: Karyawan Buruk

Setelah insiden "Tempel" di atas, pihak tidak bertanggung jawab dalam Google/Partner menyadari bahwa karena ID bersama hanyalah ID akun pengguna, jika mereka dapat memasukkan ID akun orang lain ke dalam nilai ID bersama mereka, mereka dapat melakukan pembelian untuk akun orang lain tersebut. Pelanggaran Properti #2 telah membuat tempelan yang tidak disengaja ini lebih dari sekadar lubang keamanan untuk satu pengguna -- ini adalah lubang keamanan bagi setiap pengguna.

Studi Kasus #4: Rotasi

Setelah insiden "Tempel" di atas, Penerbit beralih ke UUID sebagai format ID bersama. Kali ini, karyawan Penerbit keliru mengirim email beberapa ID bersama dalam teks biasa sebagai bagian dari rangkaian email proses debug. Google mengatakan, jangan khawatir kami akan mencabut dan mengganti ID bersama pengguna.

Sebagai bagian dari rotasi, Google memberi tahu Penerbit bahwa setiap akun pengguna yang disusupi akan memiliki dua ID bersama yang aktif dalam waktu singkat saat pembersihan database sedang berlangsung. Namun, Penerbit tidak mengizinkan Properti #4 dan memberi tahu Google bahwa mereka memiliki batasan bahwa hanya satu ID bersama yang dapat aktif untuk akun pengguna tertentu. Hal ini menyebabkan rotasi yang sangat berantakan dengan kondisi race.