
Clickhouse DBMS de Role-Base Access Control (RBAC) yaklaşım ile User ve Role yönetimi yapmaktadır. Ana Başlıkları;
- USER ACCOUNT
- ROLE
- ROW POLICY
- PROFILE
- QUOTA
Clickhouse kurulduğunda varsayılan olarak default user ile gelmektedir. Bu default kullanıcı tüm yetkilere sahip olarak gelir bir nevi superuser gibidir, ancak kullanıcı oluşturma ve role yetki verme gibi bazı özellikleri aktif olarak gelmemektedir, aktif hale getirmek için, users.xml içerisinde, default user için bir konfig girilmelidir. Başlanıç için bir kullanıcı (user) oluşturmak, bu kullanıcıya yetki verebilmek için başlangıçta gelen default kullanıcısına aşağıdaki yetkileri users.xml içerisinde tanımlamalıyız (tüm cluster nodları için), Sonrasında admin user oluşturulur yetkileri verilir ve tavsiye olarak default kullanıcı diğer tüm yetkilerin alınması tavsiye edilmektedir.
<default>
.......
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
<show_named_collections>1</show_named_collections>
<show_named_collections_secrets>1</show_named_collections_secrets>
........
</default>
clikhouse_admin user oluşturulur;
clickhouse :) create user clickhouse_admin on cluster my_cluster identified by 'Welcome123' ;
defaul user ile bağlanılarak clikhouse_admin kullanıcısının yetkilerine bakalım ve ardından yetkileri verelim;
clickhouse :) show grants for clickadmin
0 rows in set. Elapsed: 0.001 sec.
clickhouse :) GRANT ALL ON *.* TO clickadmin WITH GRANT OPTION on cluster mycluster;
--Tekrar yetkilere bakalım;
clickhouse :) show grants for clickadmin
SHOW GRANTS FOR clickadmin
Query id: 8b20c5ce-b305-4d66-ba82-b1d2c178ba82
┌─GRANTS FOR clickhouse_admin────────────────────────────┐
│ GRANT ALL ON *.* TO clickadmin WITH GRANT OPTION │
└────────────────────────────────────────────────────────┘
1 row in set. Elapsed: 0.001 sec.
Yukarıda clickhouse admin kullanıcısına tüm yetkileri yani admin yetkilerini vermiş olduk, burada doğrudan kullanıcıya yetki verdik fakat doğru olan yöntem ROL oluşturarak bu Rollere yetki vermekrolleri ise kullanıclara vermek olmalıdır, O halde bir admin rolu create edelim ve bu rolü de admin usera verelim.
clickhouse :) create role admin on cluster mycluster
clickhouse :) grant all on *.* to admin on cluster mycluster
clickhouse :) grant admin to clickadmin on cluster mycluster
###### Yetkileri Görelim ############
clickhouse :) show grants for clickadmin
SHOW GRANTS FOR clickadmin
Query id: 15b30c66-71af-48f5-b149-cf9d60a2e4f0
┌─GRANTS FOR clickhouse_admin─────┐
│ GRANT admin TO clickadmin │
└─────────────────────────────────┘
1 row in set. Elapsed: 0.001 sec.
users.xml içerisinden defaul user taglerinden aşağıdaki satırlar kaldırılır ve clickadmin xml tagleri arasında bu satırlar eklenir; (Cluster içerisindeki bütün node lar için yapılmalıdır) , ayrıca users.d dizini altında eğer bir dosyamız varsa orada da default user kaldırılmalıdır.
### <default> </default> tagleri arasından aşağıdaki satırlar kalıdırılır
<access_management>1</access_management><named_collection_control>1</named_collection_control><show_named_collections>1</show_named_collections><show_named_collections_secrets>1</show_named_collections_secrets>
### clickadmin eklenir password alanı unutulmaz yoksa yeniden başlayamaz #####
<users>
<default remove="remove">
</default>
<clickadmin><password_sha256_hex>3a7306a7751a1079497609b718251c4a4d76a375f3d893280f1e50db6cbaf5a8</password_sha256_hex>
<access_management>1</access_management>
<named_collection_control>1</named_collection_control>
<show_named_collections>1</show_named_collections>
<show_named_collections_secrets>1</show_named_collections_secrets>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
<!-- <access_management>1</access_management> -->
</clickadmin>
Şimdi kontrol edelim;
clickhouse :) show users
SHOW USERS
Query id: ca10a3c3-5445-4719-b17f-83e0f5b451cd
┌─name───────┐
│ clickadmin │
└────────────┘
1 row in set. Elapsed: 0.001 sec.
Bir yetki veya role GRANT ile verilir, REVOKE ile geri alınır.
GRANT ..... ON .... TO ... –> Yetki ve Role verilir, Veya Role yetki verilir
REVOKE .... ON .... FROM ..... –> Yetki ve Role alınır, veya Rolden yetki alınır
SHOW GRANTS FOR <USER OR ROLE> –> User Veya Role üzerindeki yetkiler görülür.
Bir çok kullanıcı yetkileri SQL yordaamı GRANT ve REVOKE ifadeleri ile verilebilirken bazı yetkiler GLOBAL Configuration File üzerinden verilebilir (config.xml).
2. ROLE : Roller yetkilerin guruplandırılmasını sağlar yönetimesel kolaylık getirir. Komutları;
3.ROW POLICY : Tablolar için satır bazlı filterelemeler yapılmasına olanak verir.
Aşağıdaki örnekte tablo type=1 olan kayıtlar frk ve zyn kullanıcları görebilecektir., bu policy nin etkin olarak çalışabilmesi için frk ve zyn userlarının bu tablo üzerinde alter yetkisi olmamalıdır aksi durumda bu policy geçersiz olacaktır. yani clickadmin için bu policy nin bir anlamı yoktur. Aşağıda bu durumu görelim;
clickhouse :) create row policy pol1 on db1.rpl_table USING type=1 TO frk,zyn on cluster mycluster;
clickhouse :) create row policy pol2 on db1.rpl_table USING type<>1 TO clickadmin on cluster mycluster;
--frk ve zyn user ile;
clickhouse :) select * from db1.rpl_table;
SELECT *
FROM db1.rpl_table
Query id: 6e3c1a7c-7f21-4e9d-95dd-50931081575e
┌─id─┬─text1─┬─type─┐
│ 1 │ text1 │ 1 │
└────┴───────┴──────┘
1 row in set. Elapsed: 0.003 sec.
clickhouse :) exit
Bye.
--clickadmin ile
clickhouse :) select * from db1.rpl_table;
SELECT *
FROM db1.rpl_table
Query id: 727421f9-ce15-497f-ab53-fc5f6fe3a95d
┌─id─┬─text1─┬─type─┐
│ 2 │ text2 │ 2 │
└────┴───────┴──────┘
┌─id─┬─text1─┬─type─┐
│ 3 │ text3 │ 3 │
└────┴───────┴──────┘
2 rows in set. Elapsed: 0.009 sec.
3.SETTING PROFILE : Belli userların kaynak kullanımlarını kontrol altında tutmak kaynakların doğru kullanılmasını, sağlamak için resource limitler PROFILE içerisine tanımlanır ve bunlar iligli userlara verilir, PROFILE Golabal Server Settings (config.xml) içerisine tanımlanabileceği gibi bunun bir alt kümesi olarak SQL ifadeler ilede oluşturulup userlara verilebilir. Userlar oluşturulduğuda default profile özellikleri ile oluşmaktadır, eğer bir tanım yapılmadı ise buda unlimited olarak gelmektedir.
- CREATE SETTINGS PROFILE
- ALTER SETTINGS PROFILE
- DROP SETTINGS PROFILE
- SHOW CREATE SETTINGS PROFILE
- SHOW PROFILES
4.QUOTA Kaynak kullanımlarını belli bir ROLE veya USER için sınırlamamızı sağlar.
ALTER PERMISSION
Clickhouse da bir tabloyu , user, role veya database üzerinde bir değişiklik (alter) yapılmak isteniyorsa yapacak user ın ya admin olarak tüm yetkilere veya ilgili Alter yetkisinde de sahip olması gerekmektedir. Alter hiyerarşisi aşağıdaki gibidir;
.
├── ALTER (only for table and view)/
│ ├── ALTER TABLE/
│ │ ├── ALTER UPDATE
│ │ ├── ALTER DELETE
│ │ ├── ALTER COLUMN/
│ │ │ ├── ALTER ADD COLUMN
│ │ │ ├── ALTER DROP COLUMN
│ │ │ ├── ALTER MODIFY COLUMN
│ │ │ ├── ALTER COMMENT COLUMN
│ │ │ ├── ALTER CLEAR COLUMN
│ │ │ └── ALTER RENAME COLUMN
│ │ ├── ALTER INDEX/
│ │ │ ├── ALTER ORDER BY
│ │ │ ├── ALTER SAMPLE BY
│ │ │ ├── ALTER ADD INDEX
│ │ │ ├── ALTER DROP INDEX
│ │ │ ├── ALTER MATERIALIZE INDEX
│ │ │ └── ALTER CLEAR INDEX
│ │ ├── ALTER CONSTRAINT/
│ │ │ ├── ALTER ADD CONSTRAINT
│ │ │ └── ALTER DROP CONSTRAINT
│ │ ├── ALTER TTL/
│ │ │ └── ALTER MATERIALIZE TTL
│ │ ├── ALTER SETTINGS
│ │ ├── ALTER MOVE PARTITION
│ │ ├── ALTER FETCH PARTITION
│ │ └── ALTER FREEZE PARTITION
│ └── ALTER LIVE VIEW/
│ ├── ALTER LIVE VIEW REFRESH
│ └── ALTER LIVE VIEW MODIFY QUERY
├── ALTER DATABASE
├── ALTER USER
├── ALTER ROLE
├── ALTER QUOTA
├── ALTER [ROW] POLICY
└── ALTER [SETTINGS] PROFILE
Bir yanıt yazın