LindormTSDB verilerinizi çok katmanlı erişim kontrolü ile korur. Motor düzeyinde erişim kontrolü kullanıcı kimlik doğrulaması ve izin denetimiyle uygulanır; bu özellik varsayılan olarak devre dışı bırakılmıştır. Bu konuda kimlik doğrulamayı nasıl etkinleştireceğiniz, istemci bağlantılarına kimlik bilgilerini nasıl ekleyeceğiniz ve izin modelini nasıl anlayacağınız açıklanmaktadır.
LindormTSDB'de erişim kontrolü
LindormTSDB erişim kontrolünü üç katmanda uygular:
RAM — Alibaba Cloud tarafından sağlanan Resource Access Management (RAM), hangi Alibaba Cloud hesaplarının örneğe erişebileceğini yönetir.
Fiziksel katman — Örnek düzeyinde IP izin listeleri. Ayrıntılar için bkz. İzin listelerini yapılandırma.
Mantıksal katman — Motor düzeyinde kullanıcı kimlik doğrulaması ve izin denetimi; bu konuda ele alınmıştır.
Kimlik doğrulamayı etkinleştirmeden önce
Kimlik doğrulamayı etkinleştirmek, kimlik bilgisi içermeyen mevcut hizmet bağlantılarının başarısız olmasına neden olur. Etkinleştirmeden önce aşağıdaki adımları tamamlayın:
İlk kullanıcı kimlik bilgilerini doğrulayın. Bir Lindorm örneği bir ilk kullanıcı ile birlikte gelir. LindormTSDB 3.4.30 veya önceki sürümlerini çalıştıran örneklerde varsayılan kullanıcı adı ve parola
rootdeğerindedir. Daha sonraki sürümlerde ikisi deroot_tsdbdeğerindedir. Parolayı örnek oluşturulduktan hemen sonra değiştirin.Tüm uygulama bağlantı dizelerini kimlik bilgilerini içerecek şekilde güncelleyin.
Hizmet yeniden başlatmalarını planlayın. Kimlik doğrulama etkinleştirildikten sonra bağlantısında kimlik bilgisi bulunmayan çalışan herhangi bir hizmet başarısız olur. Bakım pencerelerini buna göre planlayın.
Kimlik doğrulamayı etkinleştirme
Kimlik doğrulamayı etkinleştirmek için aşağıdaki SQL ifadesini çalıştırın:
ALTER SYSTEM SET USER_AUTH=TRUE;
Kimlik doğrulamanın etkinleştirildiğini doğrulamak için:
SHOW PARAMETER USER_AUTH;
Kimlik doğrulamayı devre dışı bırakmak için ALTER SYSTEM SET USER_AUTH=FALSE; komutunu çalıştırın. Kimlik doğrulamayı devre dışı bırakmak tüm erişim kontrollerini kaldırır ve örneği güvenlik risklerine maruz bırakır. Üretim ortamlarında kimlik doğrulamayı etkin tutun.
Kimlik bilgileriyle bağlanma
Kimlik doğrulama etkinleştirildikten sonra tüm istemci bağlantıları bir kullanıcı adı ve parola içermelidir. Bağlanan kullanıcının ayrıca hedef veritabanı veya tabloda uygun izinlere sahip olması gerekir.
lindorm-cli
lindorm-cli -url <Endpoint for LindormTSDB SQL> -username <Username> -password <Password> -database <Database name>
Ayrıntılar için bkz. Lindorm-cli kullanarak LindormTSDB'ye bağlanma ve kullanma.
JDBC
String url = "<Endpoint for LindormTSDB SQL>";
String username = "<Username>";
String password = "<Password>";
Connection conn = null;
try {
conn = DriverManager.getConnection(url, username, password);
// Perform operations after the client is connected to LindormTSDB.
} catch (SQLException e) {
e.printStackTrace();
}
Ayrıntılar için bkz. Öğretici: Lindorm için JDBC sürücüsünü kullanarak LindormTSDB'ye bağlanma ve kullanma.
Druid bağlantı havuzu
dataSource.setDriver(DriverManager.getDriver("<Endpoint for LindormTSDB SQL>"))
dataSource.setUrl("<Endpoint for LindormTSDB SQL>")
dataSource.setUsername("<Username>")
dataSource.setPassword("<Password>")
Ayrıntılar için bkz. Öğretici: Druid bağlantı havuzunu kullanarak LindormTSDB'ye bağlanma.
HTTP API
OpenTSDB uyumlu HTTP API işlemlerini kullanan uygulamalar Base64 kodlu bir dize olarak Authorization üst bilgisinde kimlik bilgilerini içermelidir.
Aşağıdaki örnek yetkilendirme üst bilgisini oluşturur ve bir SQL isteği gönderir:
import base64
import requests
url = "<HTTP Endpoint for LindormTSDB>/api/v2/sql"
username = "<Username>"
password = "<Password>"
# Encode credentials as Base64
credentials = base64.b64encode(f"{username}:{password}".encode()).decode()
headers = {
"Content-Type": "text/plain",
"Authorization": f"Basic {credentials}"
}
response = requests.post(url, headers=headers, data="SELECT * FROM my_table LIMIT 10")
print(response.json())
TSDB SDK'larını kullanan uygulamalar için bir TSDBConfig nesnesi oluştururken kimlik bilgilerini basicAuth yöntemi aracılığıyla iletin.
Tam kimlik doğrulama belirtimi için bkz. Kimlik doğrulama için kullanıcı kimlik bilgilerini belirtme. İstek biçimi ayrıntıları için bkz. İstek içeriği.
İzin modeli
İzin türleri
LindormTSDB dört izin türü tanımlar:
| İzin | Açıklama |
|---|---|
| READ | Tablolardan veri sorgulamak için gereklidir. |
| WRITE | Tablolara veri yazmak için gereklidir. |
| ADMIN | Veri nesnelerini yönetmek (veritabanları ve tablolar oluşturma, değiştirme veya silme) için gereklidir. |
| SYSTEM | Tüm örneği etkileyen örnek düzeyindeki işlemler için gereklidir. |
Bir kullanıcının etkili izinleri verilen tüm izinlerin birleşimidir. Örneğin GLOBAL READ ve DB1 üzerinde DATABASE READ iznine sahip bir kullanıcı tüm veritabanlarında veri sorgulayabilir.
İzin kapsamları
İzinler iki kapsamdan birinde verilir:
GLOBAL — Örnekteki tüm veritabanları ve tablolar için geçerlidir. GLOBAL READ iznine sahip bir kullanıcı herhangi bir veritabanındaki herhangi bir zaman serisi tablosunu sorgulayabilir.
DATABASE — Belirli bir veritabanındaki tüm tablolar için geçerlidir.
DB1üzerinde READ iznine sahip bir kullanıcıDB1içindeki herhangi bir zaman serisi tablosunu sorgulayabilir.
Yetkilendirme kuralları
SYSTEM izin kapsamı her zaman GLOBAL'dir. Tek bir veritabanına daraltılamaz.
Yalnızca GLOBAL ADMIN veya SYSTEM izinlerine sahip kullanıcılar kullanıcıları oluşturabilir, silebilir, değiştirebilir veya yetkilendirebilir.
Kullanıcıları ve izinleri yönetme
SQL kullanma
Kullanıcıları ve izinleri yönetmek için aşağıdaki SQL ifadelerini kullanın:
| Görev | SQL referansı |
|---|---|
| Kullanıcı oluşturma | CREATE USER |
| Kullanıcı silme | DROP USER |
| Kullanıcı parolasını değiştirme | ALTER USER |
| Tüm kullanıcıları listeleme | SHOW |
| İzin verme | GRANT |
| İzinleri geri alma | REVOKE |
Küme yönetim sistemini kullanma
Kullanıcı ve izin verileri LindormTSDB ve LindormTable arasında paylaşılır. LindormTable etkinse kullanıcıları ve izinleri yönetmek için LindormTable küme yönetim sisteminde oturum açın. Ayrıntılar için bkz. Küme yönetim sisteminde oturum açma.
Küme yönetim sistemi LindormTSDB'de kullanılmayan TRASH iznini destekler.
LindormTable'daki bir ad alanı LindormTSDB'deki bir veritabanıyla aynı ada sahipse bu ad alanı üzerinde izin verilen herhangi bir kullanıcı otomatik olarak LindormTSDB'deki aynı adlı veritabanına erişim kazanır.
İzin referansı
SQL ifadeleri için gereken izinler
Aşağıdaki tabloda yaygın SQL ifadelerini çalıştırmak için gereken izinler listelenmiştir. Belirli bir ifade için gereken izinleri bulmak için ifade satırını bulun ve ○ ile işaretlenmiş sütunları kontrol edin.
○ = gerekli, × = gerekli değil.
| SQL ifadesi | GLOBAL READ | GLOBAL WRITE | GLOBAL ADMIN | GLOBAL SYSTEM | DATABASE READ | DATABASE WRITE | DATABASE ADMIN |
|---|---|---|---|---|---|---|---|
SELECT...FROM... |
○ | × | × | × | ○ | × | × |
INSERT INTO...VALUES... |
× | ○ | × | × | × | ○ | × |
INSERT INTO...SELECT... |
○ | ○ | × | × | ○ | ○ | × |
DESCRIBE DATABASE |
× | × | ○ | × | × | × | ○ |
CREATE DATABASE |
× | × | ○ | × | × | × | × |
ALTER DATABASE |
× | × | ○ | × | × | × | ○ |
DROP DATABASE |
× | × | ○ | × | × | × | ○ |
SHOW DATABASES |
× | × | ○ | × | × | × | × |
DESCRIBE TABLE |
○ | × | × | × | ○ | × | × |
CREATE TABLE |
× | × | ○ | × | × | × | ○ |
DROP TABLE |
× | × | ○ | × | × | × | ○ |
CREATE USER |
× | × | ○ | ○ | × | × | × |
ALTER USER |
× | × | ○ | ○ | × | × | × |
DROP USER |
× | × | ○ | ○ | × | × | × |
SHOW USERS |
× | × | ○ | ○ | × | × | × |
GRANT |
× | × | ○ | ○ | × | × | × |
REVOKE |
× | × | ○ | ○ | × | × | × |
SHOW PRIVILEGES |
× | × | ○ | ○ | × | × | × |
ALTER SYSTEM |
× | × | × | ○ | × | × | × |
SHOW PARAMETER |
× | × | × | ○ | × | × | × |
INSERT INTO...SELECT... ifadesi hedef tabloda WRITE ve kaynak tabloda READ izni gerektirir.
OpenTSDB uyumlu HTTP API işlemleri için gereken izinler
Tüm OpenTSDB uyumlu HTTP API işlemleri GLOBAL kapsamı izinleri gerektirir. ○ = gerekli, × = gerekli değil.
| API işlemi | GLOBAL WRITE | GLOBAL READ | GLOBAL ADMIN |
|---|---|---|---|
/api/put |
○ | × | × |
/api/query |
× | ○ | × |
/api/query/last |
× | ○ | × |
/api/mput |
○ | × | × |
/api/mquery |
× | ○ | × |
/api/query/mlast |
× | ○ | × |
/api/suggest |
× | ○ | × |
/api/dump_meta |
× | ○ | × |
/api/search/lookup |
× | ○ | × |
/api/ttl |
× | × | ○ |
/api/truncate |
× | × | ○ |