Bu konu, Hologres'in kullanıcıları nasıl doğruladığını açıklar ve geliştirme izinlerini vermek için kullanabileceğiniz üç izin modelini tanıtır: standart PostgreSQL modeli, SPM ve SLPM.
Hologres kimlik doğrulama akışı
Aşağıdaki şekil tam kimlik doğrulama akışını gösterir:
Kullanıcılar
Bir Alibaba Cloud hesabının Hologres'e erişebilmesi için yöneticinin bu hesabı Hologres kullanıcısı olarak kaydetmek üzere create user "xxx" komutunu çalıştırması gerekir. Aksi takdirde role "xxx" does not exist hatası döner. Kullanıcılar örnek düzeyinde bulunur. Bir kullanıcı eklemek veya silmek, kullanıcıyı örneğe ekler veya örnekten kaldırır. Tablo oluşturma gibi işlemler veritabanı düzeyinde izin gerektirir; bu izinler belirli bir veritabanı içinde verilir ve veritabanları arasında kullanılamaz.
Geçerli örneğin süper kullanıcısını görüntülemek için select * from pg_user; komutunu çalıştırın.
İzin modelleri
Hologres PostgreSQL 11 ile uyumludur ve standart PostgreSQL yetkilendirmesini (uzman modeli) destekler. PostgreSQL izinleri ayrıntılı olduğundan ve yetkilendirme söz dizimi karmaşık olduğundan Hologres iki basitleştirilmiş model de sunar: Simple Permission Model (SPM) ve Schema-level Permission Model (SLPM).
Aşağıdaki tabloda üç model karşılaştırılır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
İzin verme
Aşağıdaki tablolar standart PostgreSQL modeli ve basitleştirilmiş modeller (SPM/SLPM) altında her işlem için gereken izinleri listeler.
Süper kullanıcılar varsayılan olarak aşağıdaki tüm izinlere sahiptir.
|
Standart PostgreSQL yetkilendirme modelindeki işlemler |
Gerekli izinler |
Yetkilendirme ifadesi |
|
CREATE USER(ROLE) DROP USER(ROLE) |
CREATEROLE |
Kullanıcı A'ya CREATEROLE izni verin:
|
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
Veritabanında CONNECT ve hedef şemada CREATE |
Kullanıcı A'ya xx şemasında CREATE izni verin:
Varsayılan olarak tüm kullanıcılar public şemasında tablo oluşturabilir. |
|
SELECT |
İlgili şemada USAGE ve hedef tabloda SELECT |
Örnek:
|
|
INSERT UPDATE DELETE TRUNCATE |
İlgili şemada USAGE ve hedef tabloda ilgili DML izni (INSERT/UPDATE/DELETE/TRUNCATE) |
Örnek:
|
|
ALTER TABLE |
Tablo sahibi (ALTER OWNER ile değiştirilebilir) |
GRANT, tablo sahipliğini devredemez. Sahibi A olarak değiştirmek için |
|
DROP TABLE |
||
|
CREATE DATABASE |
CREATEDB |
Kullanıcı A'ya CREATEDB izni verin:
|
|
DROP DATABASE |
DB owner |
GRANT, veritabanı sahipliğini devredemez. Sahibi A olarak değiştirmek için |
|
CREATE EXTENSION |
DB owner |
- |
|
GRANT REVOKE |
İlgili izne ve GRANT OPTION'a sahip kullanıcı |
Kullanıcı A'ya GRANT OPTION verin:
|
|
İzin modeline göre yetkilendirme |
Simple Permission Model (SPM) |
Schema-level Permission Model (SLPM) |
||
|
İşlem |
Gerekli izinler |
Yetkilendirme ifadesi |
Gerekli izinler |
Yetkilendirme ifadesi |
|
CREATE USER(ROLE) DROP USER(ROLE) |
DB admin |
Bir kullanıcıya yönetici izinleri verin:
Önemli
SPM, kullanıcı adları |
DB admin |
Bir kullanıcıya yönetici izinleri verin:
Önemli
SLPM, kullanıcı adları |
|
CREATE TABLE VIEW TABLE FOREIGN TABLE |
Süper kullanıcı, yönetici veya geliştirici kullanıcı grubunun izinleri |
Yukarıdaki SPM ifadelerini kullanarak yönetici veya geliştirici izinleri verin. |
Süper kullanıcı veya şemanın yönetici ya da geliştirici kullanıcı grubunun izinleri |
Yukarıdaki SLPM ifadelerini kullanarak şemanın yönetici veya geliştirici izinlerini verin. |
|
SELECT |
Süper kullanıcı, yönetici, geliştirici, yazar veya görüntüleyici kullanıcı grubunun izinleri |
Yukarıdaki SPM ifadelerini kullanarak yönetici, geliştirici, yazar veya görüntüleyici izinleri verin. |
Süper kullanıcı veya şemanın yönetici, geliştirici, yazar ya da görüntüleyici kullanıcı grubunun izinleri |
Yukarıdaki SLPM ifadelerini kullanarak şemanın yönetici, geliştirici, yazar veya görüntüleyici izinlerini verin. |
|
INSERT UPDATE DELETE TRUNCATE |
Süper kullanıcı, yönetici, geliştirici veya yazar kullanıcı grubunun izinleri |
Yukarıdaki SPM ifadelerini kullanarak yönetici, geliştirici veya yazar izinleri verin. |
Süper kullanıcı veya şemanın yönetici, geliştirici ya da yazar kullanıcı grubunun izinleri |
Yukarıdaki SLPM ifadelerini kullanarak şemanın yönetici, geliştirici veya yazar izinlerini verin. |
|
ALTER TABLE |
Süper kullanıcı, yönetici veya geliştirici kullanıcı grubunun izinleri |
Yukarıdaki SPM ifadelerini kullanarak yönetici veya geliştirici izinleri verin. |
Süper kullanıcı veya şemanın yönetici ya da geliştirici kullanıcı grubunun izinleri |
Yukarıdaki SLPM ifadelerini kullanarak şemanın yönetici veya geliştirici izinlerini verin. |
|
DROP TABLE |
||||
|
CREATE DATABASE DROP DATABASE CREATE EXTENSION |
DB admin |
Yukarıdaki SPM ifadelerini kullanarak yönetici izinleri verin. |
DB admin |
Yukarıdaki SLPM ifadelerini kullanarak şemanın yönetici izinlerini verin. |
|
GRANT REVOKE |
DB admin |
Kullanıcı A için izin verin ve iptal edin:
|
DB admin |
Kullanıcı A için izin verin ve iptal edin:
|