OrientDB - Güvenlik

RDBMS gibi, OrientDB de iyi bilinen kavramlara, kullanıcılara ve rollere dayalı güvenlik sağlar. Her veritabanının kendi kullanıcıları vardır ve her kullanıcının bir veya daha fazla rolü vardır. Roller, çalışma modları ve izinlerin birleşimidir.

Kullanıcılar

OrientDB, varsayılan olarak sunucudaki tüm veritabanı için üç farklı kullanıcı bulundurur -

  • Admin - Bu kullanıcı, veri tabanındaki tüm işlevlere sınırlama olmaksızın erişebilir.

  • Reader- Bu kullanıcı salt okunur bir kullanıcıdır. Okuyucu veritabanındaki herhangi bir kaydı sorgulayabilir, ancak bunları değiştiremez veya silemez. Kullanıcılar ve rollerin kendileri gibi dahili bilgilere erişimi yoktur.

  • Writer - Bu kullanıcı, kullanıcı okuyucuyla aynıdır, ancak aynı zamanda kayıtları oluşturabilir, güncelleyebilir ve silebilir.

Kullanıcılarla Çalışma

Bir veritabanına bağlandığınızda, veritabanındaki mevcut kullanıcıları kullanarak sorgulayabilirsiniz. SELECT sorgular OUser sınıf.

orientdb> SELECT RID, name, status FROM OUser

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

---+--------+--------+-------- 
#  | @CLASS | name   | status 
---+--------+--------+-------- 
0  | null   | admin  | ACTIVE 
1  | null   | reader | ACTIVE 
2  | null   | writer | ACTIVE 
---+--------+--------+-------- 
3 item(s) found. Query executed in 0.005 sec(s).

Yeni Bir Kullanıcı Oluşturma

Yeni bir kullanıcı oluşturmak için INSERT komutunu kullanın. Unutmayın, bunu yaparken durumu ETKİN olarak ayarlamanız ve ona geçerli bir rol vermeniz gerekir.

orientdb> INSERT INTO OUser SET 
               name = 'jay', 
               password = 'JaY',
               status = 'ACTIVE',
               roles = (SELECT FROM ORole WHERE name = 'reader')

Kullanıcıları Güncelleme

UPDATE ifadesiyle kullanıcının adını değiştirebilirsiniz.

orientdb> UPDATE OUser SET name = 'jay' WHERE name = 'reader'

Aynı şekilde kullanıcı şifresini de değiştirebilirsiniz.

orientdb> UPDATE OUser SET password = 'hello' WHERE name = 'reader'

OrientDB, şifreyi hash formatında kaydeder. TetikOUserTrigger Kaydı kaydetmeden önce parolayı şeffaf bir şekilde şifreler.

Kullanıcıları Devre Dışı Bırakma

Bir kullanıcıyı devre dışı bırakmak için, durumunu ETKİN'den ASKIYA ALDI'ya değiştirmek için GÜNCELLE'yi kullanın. Örneğin, yönetici dışındaki tüm kullanıcıları devre dışı bırakmak istiyorsanız, aşağıdaki komutu kullanın -

orientdb> UPDATE OUser SET status = 'SUSPENDED' WHERE name <> 'admin'

Roller

Rol, bir kullanıcının bir kaynağa karşı hangi işlemleri gerçekleştirebileceğini belirler. Esasen bu karar çalışma şekline ve kurallara bağlıdır. Çalışma moduna bağlı olarak kuralların kendileri farklı şekilde çalışır.

Rollerle Çalışma

Bir veritabanına bağlandığınızda, veritabanındaki mevcut rolleri kullanarak sorgulayabilirsiniz. SELECT sorgular ORole sınıf.

orientdb> SELECT RID, mode, name, rules FROM ORole

Yukarıdaki sorgu başarıyla yürütülürse, aşağıdaki çıktıyı alacaksınız.

--+------+----+--------+------------------------------------------------------- 
# |@CLASS|mode| name   | rules 
--+------+----+--------+------------------------------------------------------- 
0 | null | 1  | admin  | {database.bypassRestricted = 15} 
1 | null | 0  | reader | {database.cluster.internal = 2, database.cluster.orole = 0... 
2 | null | 0  | writer | {database.cluster.internal = 2, database.cluster.orole = 0... 
--+------+----+--------+------------------------------------------------------- 
3 item(s) found.  Query executed in 0.002 sec(s).

Yeni Roller Oluşturmak

Yeni bir rol oluşturmak için INSERT deyimini kullanın.

orientdb> INSERT INTO ORole SET name = 'developer', mode = 0

Modlarla Çalışma

Kuralların belirli rollere ait kullanıcıların veri tabanlarında neler yapabileceğini belirlediği durumlarda, çalışma modları OrientDB'nin bu kuralları nasıl yorumlayacağını belirler. 1 ve 0 ile gösterilen iki tür çalışma modu vardır.

  • Allow All But (Rules)- Varsayılan olarak süper kullanıcı modudur. Kuralları kullanarak bunun istisnalarını belirtin. OrientDB, talep edilen bir kaynak için hiçbir kural bulamazsa, kullanıcının işlemi yürütmesine izin verir. Bu modu esas olarak uzman kullanıcılar ve yöneticiler için kullanın. Varsayılan yönetici rolü, varsayılan olarak bu modu kullanır ve istisna kuralı yoktur. Veritabanına 1 olarak yazılır.

  • Deny All But (Rules)- Varsayılan olarak bu mod hiçbir şeye izin vermez. Kuralları kullanarak bunun istisnalarını belirtin. OrientDB, talep edilen bir kaynak için kurallar bulursa, kullanıcının işlemi yürütmesine izin verir. Bu modu tüm klasik kullanıcılar için varsayılan olarak kullanın. Varsayılan roller, okuyucu ve yazar, bu modu kullanır. Veritabanında 0 olarak yazılır.