Data Management (DMS) içinde koruma sınırları olmadan veri değiştirmek risklidir; üretim ortamında bir DELETE işlemi ters gidebilir ve yanlışlıkla çalıştırılan bir TRUNCATE geri alınamaz. DMS, bu sorunu SQL ifadelerinin SQLConsole üzerinde doğrudan mı çalıştırılacağını, bilet onayı mı gerektirdiğini yoksa tamamen mi engelleneceğini belirleyen güvenlik ilkeleriyle çözer. Bu konu, her ortam için doğru yönetim ilkesini yapılandırabilmeniz amacıyla Güvenlik İşbirliği modundaki dört yaygın senaryoyu adım adım açıklar.
Nasıl çalışır
DMS üzerindeki her veri değişikliği şu yaşam döngüsünü izler:
| Aşama | Açıklama |
|---|---|
| SQL Yazma | SQLConsole üzerinde SQL ifadelerini girin veya bir bilette .sql, .txt ya da .zip dosyası ekleyin. |
| Ön Denetim | DMS, çalıştırmadan önce SQL ifadelerini güvenlik ilkelerinize göre otomatik olarak doğrular. |
| Onay | Güvenlik ilkeleri bir bilet gerektiriyorsa değişiklik belirlenen onaylayıcılara (varsayılan olarak veritabanı yöneticilerine) gönderilir. |
| Execute | Değişikliği hemen çalıştırın veya zamanlayın. İsteğe bağlı olarak veri işleme dili (DML) ifadelerini tek bir işlem içinde sarabilirsiniz. |
| Yedekleme ve geri alma | DMS, gerektiğinde geri alabilmeniz için UPDATE ve DELETE işlemlerine yönelik yedekleme ifadeleri oluşturabilir. |
Her aşamadaki davranış, her veritabanı örneğine iliştirilebilen yapılandırılabilir ilkeler olan güvenlik kuralları tarafından belirlenir.
Ön koşullar
Başlamadan önce şunlara sahip olduğunuzdan emin olun:
Bir DMS yönetici hesabı veya veri değişikliği biletleri gönderme izinleri
Güvenlik İşbirliği modunda DMS'ye kayıtlı
poc_prodvepoc_devveritabanı örnekleriHer iki veritabanında da oluşturulmuş
data_modifytablosu
data_modify tablosunu oluşturun
Bu konudaki dört örnekte, data_modify tablosunu oluşturmak için DMS'nin Şema tasarımı özelliği kullanılmıştır. Bu ifadeyi SQLConsole üzerinde doğrudan da çalıştırabilirsiniz; geliştirme veritabanlarında DDL ifadelerini çalıştırmak için bilet gerekmez.
CREATE TABLE `data_modify` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'Primary key',
`name` varchar(256) NOT NULL COMMENT 'Name',
`phone` varchar(32) DEFAULT NULL COMMENT 'Phone number',
`sex` varchar(32) DEFAULT NULL COMMENT 'Gender',
`email` varchar(256) DEFAULT NULL COMMENT 'Email address',
`remarks` varchar(1024) DEFAULT NULL COMMENT 'Remarks',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Personal information';
Dört senaryonun tamamında kullanılan güvenlik kuralı kümeleri:
| Veritabanı örneği | Güvenlik kuralı kümesi |
|---|---|
poc_dev |
POC Geliştirme Veritabanları için Güvenlik Kuralları |
poc_prod |
POC Üretim Veritabanları için Güvenlik Kuralları |
Düzenli veri değişikliği için bilet gönderin
Bu senaryoda, bir veri değişikliği bileti göndererek poc_prod içindeki data_modify tablosuna satır eklenir.
DMS konsolu V5.0DMS konsolu V5.0 adresinde oturum açın.
-
Sol üst köşedeki
simgesinin üzerine gelin ve All Features > Database Development > Data Change > Normal Data Modify seçeneklerini seçin.Normal modda üst gezinti çubuğundan Database Development > Data Change > Normal Data Modify seçeneklerini seçin.
-
Bilet parametrelerini doldurun. Önemli parametreler:
Parametre Açıklama SQL text Çalıştırılacak SQL ifadesi. Birden çok ifadeyi noktalı virgülle ( ;) ayırın.Attachment Bir .txt,.zipveya.sqldosyası yükleyin. Maksimum dosya boyutu: 15 MB. Submit düğmesini tıklayın. DMS otomatik olarak ön denetim yapar. Ön denetim başarısız olursa SQL'i isteme göre güncelleyip yeniden gönderin.
-
Ön denetim başarılı olduktan sonra Submit for Approval düğmesini tıklayın, ardından onay isteminde OK seçeneğini belirleyin.
Veri değişikliği biletleri varsayılan olarak veritabanı yöneticileri tarafından onaylanır. Varsayılan onay şablonunu değiştirmek için SQL Düzeltme konusundaki Varsayılan onay şablonunu değiştirin bölümüne bakın.
-
Bilet onaylandıktan sonra Execute Change seçeneğini tıklayın. Task Settings iletişim kutusunda yürütme parametrelerini yapılandırın ve Confirm Execution düğmesini tıklayın.
Başvuru adımı sırasında Execution Method seçeneğini After Audit Approved, Auto Execute olarak ayarlarsanız bu adım otomatik olarak atlanır. Askıya alınmış bir görev devam ettirildiğinde yürütme kaldığı yerden sürdürülür.
Parametre Açıklama Execution strategy Running immediately (varsayılan): Bilet onaylandığında hemen çalıştırılır. Schedule: Belirtilen zamanda çalıştırılır. Enable Submit as Single Transaction Varsayılan: kapalı. Açık: Herhangi bir DML ifadesi başarısız olursa işlemdeki tüm DML ifadeleri geri alınır (DDL ifadeleri geri alınamaz). Kapalı: Her ifade bağımsız olarak çalıştırılır; başarısızlık durumunda yürütme durur ancak önceki ifadeler geri alınmaz. Enable Backup Varsayılan: açık. DMS, UPDATEveDELETEifadeleri için yedekleme ifadeleri oluşturur. Veritabanına özel ayrıntılar için Yedekleme desteği bölümüne bakın. İsteğe bağlı. Yürütme tamamlandıktan sonra
poc_prodiçin SQLConsole'u açın ve sonuçları doğrulayın.
Yedekleme desteği
Yedekleme yalnızca UPDATE ve DELETE ifadeleri için geçerlidir. INSERT ve DDL ifadeleri yedeklenmez.
| Veritabanı türü | Oluşturulan yedekleme ifadesi | Notlar |
|---|---|---|
| MySQL, MariaDB | REPLACE INTO |
ApsaraDB RDS for MySQL, PolarDB for MySQL, PolarDB-X ve kendi kendine yönetilen MySQL dahil |
| Desteklenen diğer tüm veritabanları | INSERT |
— |
| MongoDB, Redis | Desteklenmez | — |
Geliştirme veritabanında DML ifadelerinin doğrudan çalışmasına izin verin
Varsayılan olarak DMS güvenlik ilkeleri tüm DML ifadelerinin bilet üzerinden geçmesini gerektirir. Geliştirme veritabanlarında bu durum yinelemeyi yavaşlatır. Geliştiricilerin her seferinde bilet göndermeden DML ifadelerini doğrudan SQLConsole üzerinde çalıştırabilmesi için güvenlik ilkelerini yapılandırın.
1. Adım: poc_dev için güvenlik ilkelerini güncelleyin
Bir DMS yöneticisi olarak DMS konsolu V5.0DMS konsolu V5.0 adresinde oturum açın.
-
Sol üst köşedeki
simgesinin üzerine gelin ve All Features > Security and disaster recovery (DBS) > Security Rules seçeneklerini seçin.Normal modda üst gezinti çubuğundan Security and disaster recovery (DBS) > Security Rules seçeneklerini seçin.
-
Sol üst köşedeki
simgesinin üzerine gelin ve seçeneklerini seçin.NotDMS konsolunu normal modda kullanıyorsanız üst gezinti çubuğundan seçeneklerini seçin.
-
Sol üst köşedeki
simgesinin üzerine gelin ve seçeneklerini seçin.NotDMS konsolunu normal modda kullanıyorsanız üst gezinti çubuğundan seçeneklerini seçin.
-
Sol üst köşedeki
simgesinin üzerine gelin ve seçeneklerini seçin.NotDMS konsolunu normal modda kullanıyorsanız üst gezinti çubuğundan seçeneklerini seçin.
Security Rules sayfasında POC geliştirme veritabanı kurallarını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
Sol gezinme bölmesinde SQL Correct seçeneğini tıklayın. Checkpoints değerini SQL execution rules olarak ayarlayın.
All DML can execute directly in SQLConsole seçeneğini etkinleştirin ve All DML must execute by ticket seçeneğini devre dışı bırakın.
2. Adım: Kural değişikliğini doğrulayın
DMS konsolunun sol üst köşesinde
poc_devörneğini arayın.-
SQLConsole sekmesinde aşağıdaki INSERT ifadelerini çalıştırın:
INSERT INTO data_modify (name, phone, sex) VALUES ('dms_a', '19000001','Male'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_b', '19000002','Female'); INSERT INTO data_modify (name, phone, sex) VALUES ('dms_c', '19000003','Male'); Execution Confirmation iletişim kutusunda Execute düğmesini tıklayın. Sonuçta Executed görünüyorsa kural değişikliği düzgün çalışıyor demektir.
Üretim veritabanında yüksek riskli SQL için bilet onayı gerektirin
DELETE gibi bazı SQL ifadeleri üretim ortamında önemli risk taşır. DELETE ifadesini yüksek riskli olarak işaretlemek ve ayrı bir onay sürecinden geçmesini sağlamak için güvenlik ilkelerini yapılandırın.
1. Adım: Onay süreci oluşturun
Bir DMS yöneticisi olarak DMS konsoluDMS konsolu adresinde oturum açın.
-
Sol üst köşedeki
simgesinin üzerine gelin ve All Features > Security and disaster recovery (DBS) > Approval Processes seçeneklerini seçin.Normal modda üst gezinti çubuğundan Security and disaster recovery (DBS) > Approval Processes seçeneklerini seçin.
Create Approval Template düğmesini tıklayın ve onay düğümlerini yapılandırın. Düğümleri artan sırayla ekleyin; 1. düğüm ilk onaylayıcı, 2. düğüm ikinci onaylayıcıdır ve bu şekilde devam eder.
Submit düğmesini tıklayın.
2. Adım: Risk tanımlama kuralı yapılandırın
-
Sol üst köşedeki
simgesinin üzerine gelin ve All Features > Security and disaster recovery (DBS) > Security Rules seçeneklerini seçin.Normal modda üst gezinti çubuğundan Security and disaster recovery (DBS) > Security Rules seçeneklerini seçin.
Security Rules sayfasında POC üretim veritabanı kurallarını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
Sol gezinme bölmesinde SQL Correct seçeneğini tıklayın. Checkpoints değerini Risk Identification Rules olarak ayarlayın ve Create Rule düğmesini tıklayın.
-
Create Rule - SQL Correct iletişim kutusunda aşağıdaki parametreleri ayarlayın:
Parametre Değer Rule name Production environments. The execution of DELETE statements is a high-risk operationRule DSL Aşağıdaki DSL koduna bakın if @fac.env_type in ['product','pre'] and @fac.sql_type in [ 'DELETE'] then @act.mark_risk 'high' 'High-risk SQL statements: DELETE in the production environments' end Submit düğmesini tıklayın.
Production environments. The execution of DELETE statements is a high-risk operation kuralını bulun ve Actions sütunundaki Enable seçeneğini tıklayın. Onay mesajında OK düğmesini tıklayın. Kural hemen etkili olur; tüm
DELETEifadeleri yüksek riskli işlemler olarak tanımlanır.
3. Adım: Onay sürecini risk onay kuralına bağlayın
Checkpoints değerini Risk Approval Rules olarak ayarlayın. High risk approval process kuralını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
Change Rule - SQL Correct iletişim kutusunda Rule DSL alanındaki şablon kimliğini 1. Adımda oluşturduğunuz onay şablonunun kimliğiyle değiştirin. Submit düğmesini tıklayın.
High risk approval process kuralını bulun ve Enable seçeneğini tıklayın. Onaylamak için OK düğmesini tıklayın.
4. Adım: Kuralı doğrulayın
DMS konsolunda
poc_prodörneğini arayın.-
SQLConsole sekmesinde aşağıdaki ifadeyi çalıştırın:
DELETE FROM data_modify WHERE id = 1; -
Yürütme Geçmişi alanında güvenlik kuralları nedeniyle bir hata iletisi görünüyorsa kural çalışıyor demektir. Bilet göndermek ve onay sürecinden geçmek için Apply for Data Change seçeneğini tıklayın.
Üretim veritabanında
DELETEçalıştırmak yüksek riskli bir işlemdir. Biletin çalıştırılabilmesi için onay şablonunda belirtilen onaylayıcı tarafından onaylanması gerekir.
Üretim veritabanında TRUNCATE ifadelerini engelleyin
TRUNCATE bir tablodaki tüm satırları temizler ve geri alınamaz. Üretim ortamında yanlışlıkla veri kaybını önlemek için hem SQLConsole hem de biletler üzerinden TRUNCATE ifadelerini engelleyen bir güvenlik kuralı yapılandırın.
1. Adım: TRUNCATE'ı engellemek için güvenlik kuralını değiştirin
Bir DMS yöneticisi olarak DMS konsoluDMS konsolu adresinde oturum açın.
-
Sol üst köşedeki
simgesinin üzerine gelin ve All Features > Security and disaster recovery (DBS) > Security Rules seçeneklerini seçin.Normal modda üst gezinti çubuğundan Security and disaster recovery (DBS) > Security Rules seçeneklerini seçin.
Security Rules sayfasında POC üretim veritabanı kurallarını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
Sol gezinme bölmesinde SQL Correct seçeneğini tıklayın. Checkpoints değerini SQL execution rules olarak ayarlayın.
Allow TRUNCATE to be executed directly in the SQL console kuralını bulun ve Actions sütunundaki Edit seçeneğini tıklayın.
-
Kuralı
Forbid TRUNCATE statementsolarak yeniden adlandırın. Mevcut alana özgü dili (DSL) aşağıdakiyle değiştirin ve Submit düğmesini tıklayın:Bu DSL, hem SQLConsole hem de biletler üzerinden
TRUNCATEişlemini engeller. DSL sözdizimi hakkında daha fazla bilgi için Güvenlik kuralları için DSL sözdizimi bölümüne bakın.if @fac.sql_type in ['TRUNCATE'] then @act.forbid_execute end TRUNCATE cannot be executed directly in the SQL console. It must be executed as a ticket. kuralını bulun ve Actions sütunundaki Enable seçeneğini tıklayın. Onaylamak için OK düğmesini tıklayın.
2. Adım: Kuralı SQLConsole'da doğrulayın
DMS konsolunda
poc_prodörneğini arayın.-
SQLConsole sekmesinde aşağıdaki ifadeyi çalıştırın:
TRUNCATE TABLE `data_modify`; Execution Failed görüntülenir. Güvenlik kuralı
TRUNCATEifadesini engelliyor.
3. Adım: Kuralı bilet gönderimleri için doğrulayın
Aşağıdaki SQL ifadesini içeren bir veri değişikliği bileti gönderin (bkz. Düzenli veri değişikliği için bilet gönderin):
TRUNCATE TABLE `data_modify`;
Bileti gönderdikten sonra ön denetim sonuçlarını kontrol edin. Ön denetim başarısız olursa kural TRUNCATE işlemini bilet iş akışı üzerinden de engelliyor demektir.
Sırada ne var
Güvenlik kuralları için DSL sözdizimi — Kendi SQL yönetim ilkeleriniz için özel kurallar yazın
Güvenlik kurallarını yönetin — Veritabanı örneklerinde kuralları yapılandırın, etkinleştirin ve devre dışı bırakın
Şema tasarımı — DDL biletleri göndermeden tablo şemaları oluşturun ve yönetin