Cassandra JMX Kimlik Doğrulaması ve Yetkilendirme: Kullanıcı Oluştur

⚡ Akıllı Özet

Cassandra Güvenlik, dahili kimlik doğrulama, rol izinleri, güvenlik duvarı kuralları ve JMX erişim kontrolüne dayanır. Bu sayfa, her bir katmanı nasıl etkinleştireceğinizi, kullanıcıları nasıl oluşturacağınızı, izinleri nasıl vereceğinizi ve uzaktan nodetool erişimini nasıl güvenli hale getireceğinizi gösterir.

  • 🔐 İki Katman: Kimlik doğrulama, kullanıcının kim olduğunu kanıtlar; yetkilendirme ise o kullanıcının ne yapabileceğine karar verir.
  • ⚙️ Etkinleştirin: Her ikisi de varsayılan olarak kapalıdır ve kimlik doğrulayıcı ve yetkilendirici ayarları aracılığıyla etkinleştirilir.
  • 👤 Varsayılan Hesap: Cassandra'nın yerleşik süper kullanıcısı diğer tüm hesapları oluşturur, bu nedenle şifresini hemen değiştirin.
  • 🔑 Hibe Modeli: SELECT, MODIFY ve ALTER gibi izinler, GRANT komutuyla her kaynak için ayrı ayrı verilir.
  • 📡 Liman Kontrolü: Düğümler arasında 7000, 7001, 7199 ve 9042 portlarını açın ve JMX kimlik doğrulamasını sürdürün.

Cassandra JMX Kimlik Doğrulama ve Yetkilendirme

İki tür güvenlik vardır Apache Cassandra ve DataStax Enterprise.

  • Dahili Kimlik Doğrulama
  • Yetki

Dahili Kimlik Doğrulama ve Yetkilendirme Nedir?

Dahili kimlik doğrulama temelde kullanıcı bağlantısının doğrulanmasıdır. Kullanıcı, giriş ve şifre ile kimlik doğrulaması yapar. Tüm kullanıcı hesapları burada yönetilir. Cassandra içten.

Dahili yetkilendirme, kullanıcının izinleriyle ilgilenir. Bir kullanıcının hangi eylemleri gerçekleştirebileceğiyle ilgilidir. Örneğin, hangi kullanıcının yalnızca veri okuma iznine, hangi kullanıcının veri yazma iznine ve hangi kullanıcının veri silme iznine sahip olabileceği gibi izinler verebiliriz.

Ancak, kimlik doğrulama Kerberos (Kerberos, kimlik bilgilerini güvenli bir şekilde yönetmek için kullanılır) ve LDAP (LDAP, hesaplar hakkında yetkili bilgileri, örneğin nelere erişmelerine izin verildiğini saklamak için kullanılır) ile harici olarak da kontrol edilebilir.

Harici kimlik doğrulama, Kerberos ve LDAP tarafından desteklenen kimlik doğrulamadır. Apache Cassandra harici kimlik doğrulamayı desteklemez.

Yalnızca DataStax Enterprise, Kerberos ve LDAP ile harici kimlik doğrulamayı desteklerken, dahili kimlik doğrulama hem diğer sürümlerde desteklenmektedir. Apache Cassandra DataStax Enterprise'ın yanı sıra.

Kimlik Doğrulamayı ve Yetkilendirmeyi Yapılandırma

In CassandraVarsayılan olarak kimlik doğrulama ve yetkilendirme seçenekleri devre dışıdır. Kimlik doğrulama ve yetkilendirmeyi etkinleştirmek için cassandra.yaml dosyasını yapılandırmanız gerekir.

Cassandra.yaml dosyasını açın ve aşağıda gösterildiği gibi dahili kimlik doğrulama ve yetkilendirme ile ilgili satırların yorum satırlarını kaldırın.

cassandra.yaml dosyasındaki authenticator ve authorizer satırlarının yorum satırı olmaktan çıkarılması

  • cassandra.yaml dosyasında, varsayılan olarak authenticator değeri 'AllowAllAuthenticator' şeklindedir. Bu authenticator değerini 'AllowAllAuthenticator' yerine 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator' olarak değiştirin.
  • Benzer şekilde, cassandra.yaml dosyasında varsayılan olarak yetkilendirici değeri 'AllowAllAuthorizer' olacaktır. Bu yetkilendirici değerini 'AllowAllAuthorizer' yerine 'com.datastax.bdp.cassandra.auth' olarak değiştirin.CassandraYetkilendiren'.

Bu iki sınıf adı, DataStax Enterprise değerleridir. Açık kaynak kodlu yazılımlarda. Apache Cassandra aynı ayarlar geçerlidir PasswordAuthenticator hem de CassandraAuthorizerve kimlik bilgileri daha sonra orada saklanır. system_auth Çoğaltma faktörü birden büyük olması gereken anahtar alanı.

Giriş

Artık herhangi bir anahtar alana erişmeye çalışırsanız kimlik doğrulama etkinleştirilmiştir. Cassandra bir hata döndürür.

Varsayılan olarak, Cassandra Bu, 'cassandra' kullanıcı adı ve 'cassandra' şifresiyle süper hesap sağlar. 'cassandra' hesabına giriş yaparak istediğiniz her şeyi yapabilirsiniz.

Bunun için aşağıdaki ekran görüntüsüne bakalım, eğer varsayılanı kullanmıyorsanız giriş yapmanıza izin vermeyecektir. Cassandra "kullanıcı adı ve şifre".

Varsayılan kimlik bilgileri kullanılmadığında cqlsh'de oturum açma işlemi reddediliyor.

Şimdi, ikinci ekran görüntüsünde, kullandıktan sonra görebilirsiniz. Cassandra varsayılan oturum açma kimlik bilginiz varsa, oturum açabilirsiniz.

Varsayılan Cassandra kimlik bilgileri kullanılarak cqlsh oturum açma işlemi başarıyla tamamlandı.

Bu hesapla başka bir kullanıcı da oluşturabilirsiniz. Varsayılan şifreyi değiştirmeniz önerilir. İşte giriş yapma örneği: Cassandra Kullanıcı ve varsayılan şifrenin değiştirilmesi.

alter user cassandra with password 'newpassword';

Yeni kullanıcı oluştur

'cassandra' hesabı ile yeni hesaplar oluşturulabilir.

Yeni bir kullanıcı oluşturmak için, kullanıcının süper kullanıcı olup olmadığıyla birlikte giriş bilgileri ve şifre belirtilir. Sadece süper kullanıcılar yeni kullanıcı oluşturabilir.

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

Aşağıdaki söz dizimini kullanarak tüm kullanıcıların listesini alabilirsiniz.

list users;

Çıktı, her hesabı süper kullanıcı bayrağıyla birlikte listeler.

Kullanıcı listesi komutunun çıktısı, hesapları ve süper kullanıcı bayraklarını gösteriyor.

Kullanıcılar aşağıdaki söz dizimi ile bırakılabilir.

drop user laura;

Yetki

Yetkilendirme, kullanıcılara izin atanması, belirli bir kullanıcının hangi eylemi gerçekleştirebileceğine karar verilmesidir.

Kullanıcılara izin atamak için genel sözdizimi aşağıda verilmiştir.

GRANT permission ON resource TO user

Kullanıcıya verilebilecek izin türleri şunlardır.

  1. HEPSİ
  2. alter
  3. YETKİ VERMEK
  4. CREATE
  5. DAMLA
  6. DEĞİŞTİRİN
  7. SEÇİN

Burada kullanıcıya izin atama örnekleri verilmiştir.

Create user laura with password 'newhire'; 
grant all on dev.emp to laura;
revoke all on dev.emp to laura;
grant select on dev.emp to laura;

'laura' adında yeni bir kullanıcı oluşturuldu ve şifresi 'newhire' oldu.

Burada, 'laura' adlı kullanıcının emp_bonus tablosuna erişmeye çalıştığı bir örnek verilmiştir. Laura'nın yalnızca dev.emp tablosuna erişim izni vardır ve dev.emp_bonus tablosuna erişim izni yoktur; bu nedenle bir hata döndürülmüştür.

Laura, izinsiz olarak emp_bonus tablosunu sorguladığında hata döndürüldü.

select* form emp_bonus;

Kullanıcıya atanmış tüm izinlerin listesini alabilirsiniz. İşte izin bilgilerini alma örneği.

Laura'nın tüm izinlerini listele komutunun çıktısı

list all permissions of laura;

Bir kaynağa ait tüm izinleri de listeleyebilirsiniz. İşte bir tablodan izin alma örneği.

dev.emp üzerindeki tüm izinleri listele komutunun çıktısı

list all permissions on dev.emp;

Güvenlik Duvarını Yapılandırma

Güvenlik duvarı çalışıyorsa, bazı düğümler de dahil olmak üzere düğümler arasındaki iletişim için aşağıdaki bağlantı noktalarının açılması gerekir: Cassandra limanlar. Eğer Cassandra portlar açılmayacaktır, Cassandra Düğümler, veritabanı kümesine katılmak yerine bağımsız veritabanı sunucuları olarak işlev görecektir.

Cassandra İstemci Bağlantı Noktaları

Port Numarası Açıklama
9042 Cassandra İstemci Bağlantı Noktası
9160 Cassandra İstemci Bağlantı Noktası Tasarrufu

Cassandra Düğümler arası bağlantı noktaları

Port Numarası Açıklama
7000 Cassandra düğümler arası küme iletişimi
7001 Cassandra SSL düğümler arası küme iletişimi
7199 Cassandra JMX izleme bağlantı noktası

Kamu Limanları

Port Numarası Açıklama
22 SSH bağlantı noktası
8888 OpsCenter Web Sitesi. Tarayıcı http isteği.

Cassandra OpsCenter bağlantı noktaları

Port Numarası Açıklama
61620 OpsCenter izleme bağlantı noktası.
61621 Opscenter aracı bağlantı noktası

Mevcut sürücüler yalnızca 9042 portunu kullanıyor; 9160 portu eski Thrift arayüzüne hizmet ediyor ve yeni kümelerde kapalı kalabiliyor.

JMX Kimlik Doğrulamasını Etkinleştirme

Varsayılan ayarlarla CassandraJMX'e yalnızca localhost üzerinden erişilebilir. JMX'e uzaktan erişmek istiyorsanız, cassandra-env.sh dosyasındaki LOCAL_JMX ayarını değiştirin ve kimlik doğrulamayı veya SSL'yi etkinleştirin.

JMX kimlik doğrulamasını etkinleştirdikten sonra, Operasyon Merkezi ve nodetool kimlik doğrulamayı kullanacak şekilde yapılandırılmıştır.

Prosedür

JMX kimlik doğrulamasını etkinleştirmek için aşağıdaki adımlar izlenir.

  1. cassandra-env.sh dosyasında aşağıdaki satırları ekleyin veya güncelleyin.
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
    JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

    Ayrıca, cassandra-env.sh dosyasındaki LOCAL_JMX ayarını değiştirin.

    LOCAL_JMX=no
  2. /jdk_install_location/lib/management/ dizininden jmxremote.password.template dosyasını /etc/cassandra/ dizinine kopyalayın ve adını jmxremote.password olarak değiştirin.
    cp /jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  3. jmxremote.password'ün sahipliğini çalıştırdığınız kullanıcıyla değiştirin Cassandra ve izinleri yalnızca okuma iznine dönüştürün.
    chown cassandra:cassandra /etc/cassandra/jmxremote.password 
    chmod 400 /etc/cassandra/jmxremote.password
  4. jmxremote.password'ü düzenleyin ve JMX uyumlu yardımcı programlar için kullanıcıyı ve parolayı ekleyin:
    monitorRole QED 
    controlRole R&D 
    cassandra cassandrapassword
  5. Eklemek Cassandra /jdk_install_location/lib/management/jmxremote.access'e okuma ve yazma izni olan kullanıcı
    monitorRole readonly
    cassandra readwrite
    controlRole readwrite \
    create javax.management.monitor.,javax.management.timer. \ 
    unregister
  6. Yeniden Cassandra.
  7. Nodetool'u şununla çalıştırın: Cassandra kullanıcı ve şifre.
    $ nodetool status -u cassandra -pw cassandra

SSS

Her ikisi de system_auth anahtar alanında, roles ve role_permissions tablolarında yer alır. system_auth'un kayıp bir kopyası herkesin erişimini engelleyebileceğinden, üretim ortamında kimlik doğrulamayı etkinleştirmeden önce çoğaltma faktörünü artırın.

CQL rolleri, eski kullanıcı sözdiziminin yerini aldı. Bir rol, izinlere sahiptir ve diğer rollere verilebilir; bu nedenle, mevcut sürümlerde CREATE USER yerine CREATE ROLE kullanılır ve kullanıcı komutları takma adlar olarak korunur.

Hayır. Kimlik doğrulama yalnızca kimliği kanıtlar; client_encryption_options etkinleştirilmediği sürece parolalar ağ üzerinden açık metin olarak iletilmeye devam eder. İstemci-düğüm ve düğüm-düğüm trafiği için TLS'yi ayrı ayrı etkinleştirin.

Özel bir süper kullanıcı oluşturun, ardından yerleşik Cassandra şifresini değiştirin veya hesabı silin. Belgelenmiş Cassandra/Cassandra çiftini aktif bırakmak en yaygın yöntemdir. Cassandra yanlış yapılandırma

İzinler önbelleğe alınır. Bir değişiklik, izinlerin geçerlilik süresi dolduktan sonra yürürlüğe girer; bu nedenle, bir yetkilendirme veya geri alma işlemi test ederken cassandra.yaml dosyasındaki bu ayarı kısaltın veya düğümü yeniden başlatın.

7199 numaralı port üzerinden kimlik doğrulaması yapılmamış JMX, devre dışı bırakma da dahil olmak üzere düğümün tam kontrolüne olanak tanır. Cassandra Bu nedenle, yerel olarak bağlanır ve uzaktan erişim yalnızca parola dosyası veya SSL ile açılmalıdır.

Makine öğrenimi modelleri, her rol için normal sorgu şekillerini, oturum açma sürelerini ve kaynak adreslerini profillendirir ve ardından bir uygulama hesabının ilgisiz bir anahtar alanını okuması gibi sapmaları işaretler. Bu, statik kuralların gözden kaçırdığı kimlik bilgisi kötüye kullanımını ortaya çıkarır.

Copilot, bir yorumdan CREATE ROLE ve GRANT ifadelerini hızlıca taslak haline getiriyor, ancak genellikle geniş yetkiler öneriyor. RevCanlı uygulamada çalıştırmadan önce oluşturulan her bir hibeyi en az ayrıcalık ilkesine göre inceleyin. küme.

Bu yazıyı şu şekilde özetleyin: