Autentikasi dan otorisasi di Spanner Omni

Dokumen ini menjelaskan cara deployment Spanner Omni yang aman mengontrol akses melalui autentikasi dan otorisasi. Anda membuat dan mengelola pengguna, serta menetapkan peran yang menentukan izin mereka. Pengguna dapat melakukan autentikasi menggunakan salah satu metode berikut:

  • Autentikasi sandi: Menggunakan protokol sandi OPAQUE. Protokol ini meningkatkan keamanan dengan menyediakan token akses bertanda tangan untuk permintaan berikutnya.
  • Autentikasi sertifikat klien: Menggunakan sertifikat yang ditandatangani oleh Certificate Authority (CA) yang sama dengan yang menandatangani sertifikat server API. Common Name sertifikat mengidentifikasi pengguna.

Otorisasi di Spanner Omni menggunakan nama peran dan izin Identity and Access Management (IAM), mirip dengan Spanner. Anda menetapkan peran kepada pengguna yang memberikan izin tertentu. IAM Spanner Omni berbeda dengan IAM Spanner. Misalnya, tidak mendukung peran kustom dan menyertakan izin Spanner Omni tertentu.

Pengguna

Dalam deployment yang aman, mengakses Spanner Omni API memerlukan pengguna. Anda dapat membuat, mengupdate, dan menghapus pengguna menggunakan Spanner Omni CLI. Setiap deployment Spanner Omni membuat satu pengguna admin secara default dengan sandi admin.

Buat pengguna

Buat pengguna baru agar Anda dapat menetapkan peran yang berbeda dan mengaudit penggunaan. Perintah berikut menetapkan peran roles/spanner.databaseUser kepada pengguna baru sehingga mereka dapat membaca dan menulis ke database Spanner Omni.

spanner users create USER_NAME --roles=roles/spanner.databaseUser

Menghapus pengguna

Menghapus pengguna yang tidak digunakan lagi dari sistem:

spanner users delete USER_NAME

Memperbarui pengguna

Perbarui status dan peran pengguna. Perintah ini akan menimpa status dan peran yang ada:

spanner users update USER_NAME --roles=NEW_ROLES --state=ACTIVE

Autentikasi

Dalam deployment yang aman, pengguna harus login sebelum mengakses deployment Spanner Omni.

Spanner Omni menyediakan dua mekanisme untuk mengautentikasi pengguna:

Mekanisme Deskripsi
Sandi Pengguna memasukkan nama pengguna dan sandi mereka.
Sertifikat klien Klien menggunakan sertifikat yang ditandatangani oleh Certificate Authority (CA) yang sama dengan yang menandatangani sertifikat server API.

Sandi

Autentikasi sandi mengharuskan Anda memasukkan nama pengguna dan sandi Anda. Fitur ini hanya berfungsi jika TLS diaktifkan di server.

spanner auth login USER_NAME

Spanner Omni menggunakan penerapan protokol OPAQUE untuk menghindari pengiriman sandi ke server, yang melindungi sistem dari serangan Man-in-the-Middle. Spanner Omni tidak menyimpan sandi di server, sehingga akses yang tidak diinginkan ke server tidak akan membahayakan kredensial pengguna. Setelah Anda berhasil melakukan autentikasi, Spanner Omni akan menampilkan token akses yang ditandatangani. Lampirkan token akses ke semua permintaan selanjutnya. Spanner Omni CLI menyimpan token akses di ~/.config/spanner/access_token/token.txt. Untuk menjaga keamanan sistem Anda, jangan bagikan token ini kepada orang lain.

Secara default, masa berlaku token akses adalah 60 menit. Setelah 60 menit berlalu, server tidak menerima token akses, dan Anda harus login lagi. Spanner Omni menandatangani token akses untuk mencegah gangguan.

Untuk mencegah sandi muncul di tempat Anda dapat melihatnya, seperti variabel lingkungan atau flag command line, perintah Spanner Omni CLI menerima sandi dengan dua cara:

  • Perintah yang menyamarkan input Anda.
  • String dalam file. Spanner Omni memverifikasi bahwa izin file adalah 600, mengganti file dengan data acak, dan menghapusnya setelah dibaca.

Untuk mengetahui detail selengkapnya, jalankan spanner auth --help.

Sertifikat klien

Autentikasi sertifikat klien mengharuskan klien menggunakan sertifikat yang ditandatangani oleh Certificate Authority (CA) yang sama dengan yang menandatangani sertifikat server API. Sertakan nama pengguna pengguna yang valid dan aktif di kolom Common Name sertifikat. Saat melakukan otorisasi, peran yang Anda tetapkan menentukan apakah Anda memiliki izin untuk melakukan operasi yang diminta. Untuk melampirkan sertifikat klien ke permintaan, gunakan flag --ca-certificate-file dan --client-certificate-directory. Berikut adalah contoh mencantumkan database:

spanner databases list --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR

Anda juga dapat menggunakan sertifikat klien untuk login:

spanner auth login USER_NAME --ca-certificate-file PATH_TO_CA_CERT --client-certificate-directory PATH_TO_CLIENT_CERT_DIR

Otorisasi

Spanner Omni menggunakan sebagian besar nama peran dan izin IAM yang sama dengan Spanner. Saat membuat pengguna, Anda dapat menetapkan satu atau beberapa peran kepada pengguna tersebut. Setiap peran berisi satu atau beberapa izin.

Untuk mencantumkan peran yang tersedia di Spanner Omni, gunakan perintah berikut:

spanner roles list

Untuk mempelajari izin IAM di Spanner Omni, lihat Ringkasan IAM.