Implementasi Authentication & Authorization Pada CockroachDB

0
405

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