Halo sobat sekolahlinux pada tutorial kali ini kita akan melanjutkan pembahasan tentang cockroachdb, namun kali ini kita akan berfokus pada pembahasan tentang authentication & authorization di cockroachdb, sebelum melanjutkan pada bahasan pastikan kamu sudah install cockroachdb dalam mode secure, nah sekarang yuk mari kita masuk ke pembahasan
Authentication
adalah feature security yang menjadikan cockroachdb servermu menjadi lebih secure karena setiap aplikasi atau service yang ingin terhubung dengan cockroachdb server diharuskan memiliki ca certificate, dan jika service atau aplikasi ingin langsung mendapatkan akses root maka kalian perlu juga menggunakan client certificate yang dibuat untuk user root, untuk tutorialnya kalian bisa lihat di article saya yang sebelumnya di link berikut (https://sekolahlinux.com/setup-cockcroachdb-cluster-pada-ubuntu-18-x/)
- jadi agar kamu bisa terhubung atau membuat koneksi dengan secure cockroachdb, kamu membuatuhkan ca.crt atau ca certificate yang sebelumnya telah di generate
- lalu agar kamu bisa masuk dan login kedalamnya tanpa user dan password kamu membutuhkan client certificate yang sebelumnya telah di generate
Authorization
adalah feature lanjutan dari feature Authentication, yang mana feature ini hanya bisa digunakan jika kamu menggunakan feature Authentication atau mode secure, feature ini bekerja dengan cara menggunakan user dan password untuk securitynya, user tersebut juga bisa dilimit privilegenya khusus untuk database yang sudah di grant ke user tersebut, dan pada feature ini kamu tidak memerlukan client certificate, kamu hanya perlu ca certificate, oke sekarang mari kita coba
pertama kamu harus membuat database dulu
CREATE DATABASE sekolahlinux;
jika sudah masuk kedalam database tersebut
USE sekolahlinux;
selanjutnya buat user beserta password
CREATE USER dbadmin WITH PASSWORD 'qwerty12345';
lalu grant user yang telah kita buat ke database sekolahlinux yang tadi kita buat juga
GRANT ALL ON DATABASE sekolahlinux TO dbadmin;
selanjutnya grant semua table yang ada di dalam database sekolahlinux ke user dbadmin
GRANT ALL ON TABLE * TO dbadmin;
jika sudah jalankan perintah dibawah untuk check privileges yang dimiliki oleh user dbadmin
SHOW GRANTS FOR dbadmin;
maka akan tampil output seperti dibawah ini
database_name | schema_name | table_name | grantee | privilege_type +---------------+--------------------+------------+---------+----------------+ sekolahlinux | crdb_internal | NULL | dbadmin | ALL sekolahlinux | information_schema | NULL | dbadmin | ALL sekolahlinux | pg_catalog | NULL | dbadmin | ALL sekolahlinux | public | NULL | dbadmin | ALL (4 rows) Time: 21.831872ms
jika sudah keluar dari cockroachdb sql cli, lalu buat folder sekolahlinux
mkdir sekolahlinux
jika sudah sekarang copy file ca.crt yang ada di folder cert hasil generate di tutorial sebelumnya ke folder sekolahlinux
cp certs/ca.crt sekolahlinux
sekarang coba ls folder certs dan folder sekolahlinux
root@ubuntu01:/opt/cockroachdb# ls certs/ ca.crt ca.key client.root.crt client.root.key node.crt node.key root@ubuntu01:/opt/cockroachdb# ls sekolahlinux/ ca.crt
oke jika kita lihat diatas, file ca.crt berhasil kita copy, sekarang kita coba login menggunakan user dbadmin yang tadi kita buat dengan command seperti dibawah ini
cockroach sql --certs-dir=sekolahlinux --user=dbadmin --host=192.168.99.10:26257
maka outputnya kurang lebih seperti dibawah, kita akan diminta password
root@ubuntu01:/opt/cockroachdb# cockroach sql --certs-dir=sekolahlinux --user=dbadmin --host=192.168.99.10:26257 # # Welcome to the CockroachDB SQL shell. # All statements must be terminated by a semicolon. # To exit, type: \q. # Enter password: # Server version: CockroachDB CCL v19.2.5 (x86_64-unknown-linux-gnu, built 2020/03/16 18:27:12, go1.12.12) (same version as client) # Cluster ID: f5e56815-3b98-46a0-8b79-b8ff15083647 # # Enter \? for a brief introduction. # dbadmin@192.168.99.10:26257/defaultdb>
lalu bagaimana jika saya ingin login menggunakan user dbadmin tanpa diminta password? solusinya adalah kamu harus membuat client certificate, contohnya seperti dibawah ini saya akan membuat client certificate untuk user dbadmin
cockroach cert create-client dbadmin --certs-dir=sekolahlinux --ca-key=certs/ca.key
maka didalam folder sekolahlinux akan ada 2 file certificate & key seperti dibawah ini
root@ubuntu01:/opt/cockroachdb# ls sekolahlinux/ ca.crt client.dbadmin.crt client.dbadmin.key
selanjutnya coba kamu login kembali ke cockroachdb sql cli menggunakan perintah berikut
cockroach sql --certs-dir=sekolahlinux --user=dbadmin --host=192.168.99.10:26257
maka outputnya adalah seperti dibawah
root@ubuntu01:/opt/cockroachdb# cockroach sql --certs-dir=sekolahlinux --user=dbadmin --host=192.168.99.10:26257 # # Welcome to the CockroachDB SQL shell. # All statements must be terminated by a semicolon. # To exit, type: \q. # # Server version: CockroachDB CCL v19.2.5 (x86_64-unknown-linux-gnu, built 2020/03/16 18:27:12, go1.12.12) (same version as client) # Cluster ID: f5e56815-3b98-46a0-8b79-b8ff15083647 # # Enter \? for a brief introduction. # dbadmin@192.168.99.10:26257/defaultdb>
kita tidak diminta password seperti sebelumnya, karena kita auth nya menggunakan client certificate
nah sekian tutorial dari sekolahlinux, selamat mencoba
sumber:
- https://www.cockroachlabs.com/docs/stable/authentication.html
- https://www.cockroachlabs.com/docs/stable/authorization.html