Üretim imtiyazlarımı azaltmaya, ancak işimi aşırı derecede zorlaştırmaya yönelik herhangi bir işaret


9

SQL Server 2005 ve 2008 işletim sistemlerini Windows 2008 R2 üzerinde çalıştırma.

Geliştiriciler için üretim ayrıcalıklarını azaltacağız - ve aynı şeyi kendim için bir DBA olarak yapmak, üretim haklarını sınırlamak ve gerektiğinde yükseltmek istiyorum .

Öncelikli hedefim, DBA'lar tarafından yapılan aptal hataları ortadan kaldırmak olacak, devopers en çok üretimde okuma erişimine sahip olacak. Hata yapamayan, ancak üretim haklarına sahip olmamanın mantıklı olduğu ve bazılarının önerdiği en iyi uygulama olduğu gibi süper kahramanlar gibi davranmayı seviyoruz.

En iyi yaklaşım nedir? Günde ve kurulum sırasında kullanmak için en az acı verici olan nedir?

Şu anda tüm sunucularımız ve veritabanlarımız için hakları olan DBA'lar için bir windows grubumuz var.

Ayrıca işletim sistemi / uzaktan oturum açma izinlerini düşürmekle de ilgilenirim - ancak en çok DB haklarıyla ilgileniyorum.

Sanırım izleri sa olarak çalıştırmak için yükseltilmiş özellere ve eski girişimizin SA haklarını kaldırmadan önce bazı sahiplik temizliğine ihtiyacımız var. Başka hangi sorunları bekleyebiliriz?

Tavsiyeniz ve deneyimlerinizi paylaştığınız için teşekkür ederiz!


Hangi veritabanı platformlarını kullanıyorsunuz (SQL Server, Oracle, DB2, MySQL vb.)? Veritabanı ayrıcalıklarından mı bahsediyorsunuz? Veya işletim sistemi ayrıcalıkları mı?
Justin Cave

Bu yardımcı olur, ha? SQL Server 2005/2008. Hem DB hem de OS özelleriyle ilgilenir.
Sam

Burada ne tür aptal hatalardan bahsediyoruz? Bulduğum en değerli güvenlik mekanizması, tüm üretim makinelerindeki masaüstü arka planını PRODsarı harflerle kırmızıya ayarlamaktır . Çünkü uzun deneyimlerime göre, insanların sadece rahatsız olacağı rahatsız edici “güvenlik” önlemleri ve bir kriz olduğunda sizi yavaşlatır. Sen gerçekten ihtiyacın var pozisyonda olmak istemiyoruz sa... şifreyi hatırlayabilir hesabı ve kimse
Gaius

Evet, masaüstümde sunucularda kırmızı, geliştiricilerde yeşil ayarlı. Çoğunlukla SSMS'deki veri değiştirme hatalarını düşünüyorum.
Sam

Yanıtlar:


2

İdeal olarak, operasyonel bir üretim veritabanı için, geliştiricilerin sunucuya veya üzerinde herhangi bir veritabanına erişimi olmasını istemezsiniz. Bu tür şeyler SOX uyumluluğu için yapmanız gereken ilk şeylerden biridir .

UserID'lerin altında çalıştığı hak türleri için db_datareader, gerçekten sahip olmaları gereken tek hak db_datawriterve açıktır GRANT EXECUTE ON x TO y( userID için saklanan her proc ve kullanıcı tanımlı işlev xiçin y).

Üretimde izler çalıştırmanız gerekiyorsa, bazı sorunlarınız var ve hepsini açıklamak için Great Wall of Text ™ gerekir. İlk tavsiyem, tıpkı üretim gibi kilitlenmiş bir KG ortamına sahip olmak ve izlerin çalıştırılması gerekiyorsa, ürün db'sinin bir yedeğini KG'ye geri yüklemek ve izleri orada çalıştırmaktır. Yine, SOX, HIPAA veya PCI-DSS gereksinimleriniz varsa, ürün verilerini KG'ye geri yüklemeden önce daha iyi sterilize edersiniz.

Şu anda tüm sunucularımız ve veritabanlarımız için hakları olan DBA'lar için bir windows grubumuz var.

Onlara oturum açın ve veri haklarını görüntüleyin; ancak DBAly görevlerini yerine getirmek için, yükseltilmiş ayrıcalıklara sahip ayrı bir giriş kullanın. Bunu yapan bir finansal müşteri biliyorum - normal windows kimlik doğrulaması tabanlı girişler, yanlışlıkla yapabilecekleri zararla sınırlıydı. Ayrı SQL kimlik doğrulaması oturum açma ile çalışan gerekli DML'yi geri yükler ve çalıştırır.

Çalıştığım bir devlet kurumu, her sunucu / db yöneticisi için 2 ayrı oturum açma kullandı. Yani eğer Tangurenaalanım giriş (bu giriş düzenli olurdu oldu Userayrıcalıkları), sonra TangurenaAdminbenim ayrı olurdu Administratorgiriş. Yönetici hesabınızı her zaman kullanırsanız sorun yaşarsınız, ancak başka şeylere izinleri yoktur (e-posta yok gibi. Oh, bunun kötü bir şey olduğunu söylüyorsunuz ... ).

Çalıştığım devlet kurumunun her bir sunucu / db yöneticisinin ayrıcalıkları standart kullanıcının üzerinde yükseltildi, ancak tam olarak yönetici değil ( PowerUsergrup olarak düşünün ). Alan adı yöneticisi işlevleri, paylaşılan bir alan adı yöneticisi hesabıyla gerçekleştirilir.

Yaygın bir hata, yanlış veritabanını geri yüklemektir (üretim sunucusu üzerinden geri yüklenen KG gibi) ve bu kısıtlı haklar veya birden çok oturum açma yoluyla çözülmez. Potansiyel olarak yıkıcı şeyleri çiftler halinde yapmak riskleri en aza indirmenin bir yoludur.

Sanırım izleri sa olarak yükseltmek için yükseltilmiş özellere ihtiyacımız var

Hayır. Yalnızca ALTER TRACE izinlerine ihtiyacınız var:
http://msdn.microsoft.com/en-us/library/ms187611.aspx


Lütfen sorudaki kalın bölümü okuyun.
Sam

İyi bir yanıt verdiğiniz için teşekkürler - ve geçmişinizden ayrıntılar. Çok takdir etmek.
Sam

Şunu mu demek istediniz: ALTER TRACE belki?
Sam

@Sam, sabit ....
Tangurena

3

İlk olarak, tüm ayrıcalık oyunlarını, erişim bir süre kaldırılırsa sorun olmayan bir geliştirme veya KG ortamında yapmanızı öneririm. Uygulamaların güvenlikle ilgili herhangi bir sorunu olup olmadığını görmeniz gerekir.

Size içsel yaklaşımımızı anlatacağım:

  • tüm uygulamalar bir veritabanında gerekli izinleri alan tek bir etki alanı kullanıcısı kullanır (genellikle db_owner veritabanı rolü).

  • arada sırada veri okumak için bir SQL girişi kullanıyoruz. Bu kullanıcı için veritabanı rolünü atarız - db_datareader. Burası ana veritabanı kümesindeki geliştiricilerin erişimini sonlandırdığı yerdir. Sahip olacakları başka herhangi bir fikir için, gece yarısı yapılan ana sunucu veritabanlarının kopyaları (Log Shipping kullanılarak yapılır) olan raporlama sunucusu veritabanlarını kullanırlar. Raporlama sunucusunu katil ad hoc sorgularıyla öldürmemek için bellek ve işlemci için kaynak grubu tahsislerini kullanıyoruz.

  • DBA ekibi için, makinede ve sunucuda tüm ayrıcalıklara sahip bir etki alanı grubumuz var (windows makinesinde admin ve sql sunucusunda sysadmin)

  • kurulumlar için, güncellemeleri çalıştırırken kullandığımız veritabanlarında db_owner olan bir SQL kullanıcısı var - şema değişikliklerini izlemek için DDL tetikleyicileri kullanıyoruz ve kurulum sırasında veya ayrı bir değişiklik olarak hangi değişikliklerin yapıldığını görmeliyiz

  • deneyimli geliştiriciler için ara sıra bazı istisnalar vardır, ancak ihtiyaçları karşılandıktan sonra erişimlerini kaldırırız - alan adı girişlerine dayalı izinler alırlar, böylece izler / ddl görünümlerindeki bağlantıları ve ddl tetikleyicileriyle olası değişiklikleri izleyebiliriz.

Oturum açma ve kullanıcılarla tüm bu işleri yapmanın yoluna gelince - sunucu güvenlik klasöründeki Management Studio'da gerekli tüm oturumları yaratırsınız ve sonra bunları veritabanlarınızla ilişkilendirir ve onlara ihtiyaç duydukları rolleri verirsiniz. Eylemi kodlarsanız, başlangıçta bir sunucu girişi oluşturulacağını göreceksiniz, daha sonra o girişe bağlanan bir veritabanı kullanıcısı, daha sonra bu kullanıcı için bir veritabanı rolü atadı. Komut dosyasını komut dosyası kümenizde tutabilirsiniz, böylece hangi kullanıcıların canlı ve tekmeleyip hangilerinin olmaması gerektiğini her zaman doğrulayabilirsiniz.


Lütfen soruyu tekrar okuyun. Hiçbiriniz uzaktan bile yaklaşmıyorsunuz.
Sam

Konuya cevap verdiğimizi söyleyebilirim, çünkü yalnızca güçlü bir politika sizi güvende tutacaktır. DBA olarak siz bile ne yaptığınızı ve ne zaman yaptığınızı bileceksiniz. Her zamanki işlemler için, kullanıcı veya salt okunur kullanıcıyı kullanın, kurulum amacıyla belirli bir kullanıcı kullanın, geliştiriciler için sadece salt okunur bir kullanıcı, genel eylem izleme için - DDL tetikleyicileri ve izleri. Bu eylem çizgisinde yanlış olan ne? İmtiyaz yükselmesini istediğiniz gibi otomatikleştirmenin bir yolu olduğunu düşünmüyorum. İşletim sistemleri bile bu kullanıma, olağan işlemler için düşük ayrıcalıklı kullanıcılara ve yönetici eylemleri için yüksek güçlü kullanıcılara sahiptir.
Marian

0

SQL sunucusunda bir veritabanı kullanıcısı oluşturabilir ve ona bir database roleokuma / yazma / sahiplik izinleri atayabilirsiniz . Kullanıcı üretime geçtiğinde, taşınan veritabanı kullanıcısına gidebilir ve sahip olmasını istemediğiniz rollerin işaretini kaldırabilirsiniz. Örneğin, kullanıcı standardının test edilen db_owner (veritabanının sahipliği) üyesi olduğunu varsayalım. Kullanıcı standartı üretime geçtiğinde, onu db_owner'dan çıkarabilir ve ona yalnızca db_datareader (salt okunur) rolü atayabilirsiniz.

SQL 2005 ve üzeri sürümlerde daha ayrıntılı denetim yapılabilir schema. Daha fazla ayrıntı için şemadaki bu bağlantıyı kontrol edin .


Lütfen sorudaki kalın bölümü okuyun.
Sam
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.