MySQL جدول (Windows version) پر شفاف خفیہ کاری (TDE) نافذ کریں

جب صفحے کی تازہ کاری :
صفحہ تخلیق تاریخ :

آپریٹنگ ماحول

MySQL
  • MySQL 8.0 کمیونٹی ایڈیشن
Windows
  • ونڈوز 11

ضروری شرائط

MySQL
  • MySQL 8.0 کمیونٹی ایڈیشن
  • MySQL 8.0 Enterprise Edition
Windows
  • ونڈوز 11
  • ونڈوز 10
Windows Server
  • ونڈوز سرور 2022
  • ونڈوز سرور 2019
  • ونڈوز سرور 2016
  • Windows Server 2012 R2

پیشگی شرائط

  • MySQL کے لئے ایک ڈیٹا بیس انسٹال ہے۔

شفاف خفیہ کاری کے بارے میں

انٹرپرائز شفاف ڈیٹا خفیہ کاری ، جیسا کہ نام سے ظاہر ہوتا ہے ، ایک خفیہ کاری ٹیکنالوجی ہے جو کسی بھی ایسی چیز سے زیادہ محفوظ ہے جو نہیں ہے۔ عام طور پر ، خفیہ کاری کرتے وقت ، یہ اکثر نفاذ کنندہ پر ایک بوجھ ہوتا ہے کیونکہ خفیہ کاری اور ڈیکریپشن پروسیسنگ انجام دینا ضروری ہے۔ اس نام "شفاف" کا مطلب یہ ہے کہ اسے نافذ کرنے والے کے عمل میں کوئی تبدیلی کیے بغیر خفیہ کیا جاسکتا ہے۔ لہذا ، اگر آپ شروع میں ترتیبات میں کچھ تبدیلیاں کرتے ہیں تو ، باقی کو اجازت کے بغیر خفیہ کیا جائے گا ، لہذا یہ ایک بہت مؤثر حفاظتی اقدام ہے۔

تاہم ، جیسا کہ جملے "کچھ بھی تبدیل کرنے کی ضرورت نہیں" سے پتہ چلتا ہے ، اگر آپ واقعی ڈیٹا بیس میں لاگ ان کرتے ہیں تو ، آپ عام طور پر ڈیٹا دیکھ سکتے ہیں ، اور اگر آپ پروگرام سے ڈیٹا بیس ریکارڈ حاصل کرتے ہیں تو ، آپ عام طور پر ڈیٹا دیکھ سکتے ہیں۔ اگر حاصل کردہ ڈیٹا کو خفیہ کیا جاتا ہے تو ، عمل کو تبدیل کرنا ضروری ہوگا ، لہذا یہ "عمل کو تبدیل کرنے کی ضرورت نہیں" کے الفاظ سے میل نہیں کھائے گا۔

پھر ، مائی ایس کیو ایل میں ، شفاف خفیہ کاری کیا ہے اسے خفیہ کیا جاتا ہے ، "ذخیرہ شدہ ڈیٹا بیس فائلیں" یا "ٹیبل فائلیں" خفیہ کاری کے تابع ہیں۔ جیسا کہ ہم بعد میں چیک کریں گے ، یہاں تک کہ اگر آپ فائل کو براہ راست کھولتے ہیں تو ، یہ صرف اسے خفیہ کرتا ہے تاکہ آپ مواد کو نہ دیکھ سکیں ، لہذا اسے چلانا ضروری ہے تاکہ یہ اصل آپریشن میں ڈیٹا بیس میں لاگ ان نہ ہو۔

عام طور پر ایک جدول بنائیں اور مواد کی جانچ پڑتال کریں

سب سے پہلے، آئیے ایک جدول بنائیں اور عام طور پر ریکارڈ کریں. آپ اسے اپنی مرضی کے مطابق بنا سکتے ہیں ، لیکن اس معاملے میں ، ہم ورک بینچ میں ایس کیو ایل کو نافذ کرکے اسے بنائیں گے۔ اس صورت میں ، ہم جدول کے لئے شفاف خفیہ کاری مقرر کرنے کا ارادہ رکھتے ہیں ، لہذا ہم عام طور پر ڈیٹا بیس بنائیں گے۔

CREATE DATABASE `test_database`

میز بھی عام طور پر بنائی گئی ہے. کالم کے مندرجات کچھ بھی ہو سکتے ہیں۔

CREATE TABLE `plain_user` (
  `id` int NOT NULL,
  `name` varchar(32) ,
  `age` int ,
  `address` varchar(256) ,
  `phone` varchar(32) ,
  `email` varchar(128) ,
  `remarks` varchar(1024) ,
  `height` decimal(5, 2) ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

میں خفیہ کاری کو چیک کرنے کے لئے ایک بے ترتیب ریکارڈ بھی ڈالوں گا۔

INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('1','名前1','11','宮城県仙台市1','000-0000-0001','example1@example.com','備考1','170.00');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('2','名前2','12','宮城県仙台市2','000-0000-0002','example2@example.com','備考2','171.01');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('3','名前3','13','宮城県仙台市3','000-0000-0003','example3@example.com','備考3','172.02');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('4','名前4','14','宮城県仙台市4','000-0000-0004','example4@example.com','備考4','173.03');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('5','名前5','15','宮城県仙台市5','000-0000-0005','example5@example.com','備考5','174.04');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('6','名前6','16','宮城県仙台市6','000-0000-0006','example6@example.com','備考6','175.05');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('7','名前7','17','宮城県仙台市7','000-0000-0007','example7@example.com','備考7','176.06');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('8','名前8','18','宮城県仙台市8','000-0000-0008','example8@example.com','備考8','177.07');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('9','名前9','19','宮城県仙台市9','000-0000-0009','example9@example.com','備考9','178.08');
INSERT INTO `test_database`.`plain_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('10','名前10','20','宮城県仙台市10','000-0000-0010','example10@example.com','備考10','179.09');

جب آپ ڈیٹا بیس یا ٹیبل بناتے ہیں تو ، یہ پہلے سے طے شدہ طور پر مندرجہ ذیل فولڈر میں بنایا جاتا ہے۔

  • C:\ProgramData\MySQL\MySQL Server 8.0\Data

ProgramData فولڈر چھپا ہوا ہے ، لہذا اسے ایکسپلورر کی ترتیبات میں ظاہر کریں۔

فولڈر میں آپ کے بنائے گئے ڈیٹا بیس کے نام کے ساتھ ایک فولڈر ہے ، لہذا اسے کھولیں۔

اندر ایک ٹیبل بائی ٹیبل فائل ہے۔

اس فائل کو نوٹ پیڈ جیسے ٹیکسٹ ایڈیٹر میں کھولیں۔ چونکہ یہ ایک بائنری فائل ہے ، مجھے لگتا ہے کہ بنیادی طور پر متن کی ایک لائن ہے جسے میں اچھی طرح سے نہیں سمجھتا ہوں۔ اگر آپ نیچے دیکھیں تو ، آپ کو رجسٹرڈ ریکارڈ کا متن نظر آئے گا۔

اگر اسے اس طرح سے خفیہ نہیں کیا جاتا ہے تو ، فائل کو براہ راست کھولنے کے باوجود ریکارڈ کے مندرجات معلوم ہوجائیں گے۔ اندر کیا ہے یہ جاننے کے لئے آپ کو ڈیٹا بیس میں لاگ ان کرنے کی ضرورت نہیں ہے۔

شفاف خفیہ کاری کی ترتیبات کو ترتیب دینا

شفاف خفیہ کاری کو فعال کرنے کے لئے، آپ کو پلگ ان انسٹال کرنے کی ضرورت ہے. سب سے پہلے ، چیک کریں کہ آیا پلگ ان کمانڈ کے ساتھ شامل ہے۔

اسٹارٹ مینو سے "مائی ایس کیو ایل 8.0 کمانڈ لائن کلائنٹ" منتخب کرکے اسے شروع کریں۔

اپنا پاس ورڈ داخل کرنے اور لاگ ان کرنے کے بعد، درج ذیل کمانڈ درج کریں:

SELECT PLUGIN_NAME,PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'keyring%';

چونکہ آپ نے ابھی تک اسے انسٹال نہیں کیا ہے ، لہذا یہ خالی ہونا چاہئے۔

اب ، آئیے پلگ ان ترتیب دیتے ہیں۔ سب سے پہلے، مندرجہ ذیل فولڈر بنائیں: درحقیقت ، اس سے کوئی فرق نہیں پڑتا ہے کہ آپ اسے کہاں بناتے ہیں یا اس کا نام کیا ہے۔ اسے اس مقام کے طور پر واضح کریں جہاں آپ کلیدی فائل کو بعد میں محفوظ کرنا چاہتے ہیں۔

  • C:\ProgramData\MySQL\mysql-keyring

اگلا ، ٹیکسٹ ایڈیٹر میں درج ذیل فائل کھولیں:

  • C:\ProgramData\MySQL\MySQL Server 8.0\my.ini

نیچے خالی جگہ میں درج ذیل متن شامل کریں اور اسے محفوظ کریں۔ اگر آپ ایڈمنسٹریٹر استحقاق کے ساتھ محفوظ نہیں کرسکتے ہیں تو ، آپ اسے کسی دوسرے مقام پر محفوظ کرسکتے ہیں اور پھر فائل کو اوور رائٹ کرسکتے ہیں۔

early-plugin-load=keyring_file.dll
keyring_file_data=C:\ProgramData\MySQL\mysql-keyring\keyring

MySQL سروس کو دوبارہ شروع کریں۔ آپ اسے کمانڈ کے ساتھ دوبارہ شروع بھی کرسکتے ہیں۔

جب آپ دوبارہ شروع کرتے ہیں تو ، فائل خود بخود مخصوص فولڈر میں بن جاتی ہے۔

آپ چیک پلگ ان کمانڈ کو دوبارہ چلا کر اس بات کی تصدیق کرسکتے ہیں کہ پلگ ان انسٹال ہے۔

SELECT PLUGIN_NAME,PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE 'keyring%';

خفیہ شدہ جدول بنانا

اب آئیے ایک خفیہ شدہ ٹیبل بنائیں۔ پچھلے کی طرح ایک جدول بنائیں ، لیکن اس بار اختیارات میں اضافہ ENCRYPTION='Y' کریں۔ یہ خفیہ کاری سیٹنگ اس وقت جی یو آئی میں ممکن نہیں لگتی ہے ، لہذا اسے کمانڈ کے ساتھ سیٹ کیا جانا چاہئے۔

CREATE TABLE `encrypt_user` (
  `id` int NOT NULL,
  `name` varchar(32) ,
  `age` int ,
  `address` varchar(256) ,
  `phone` varchar(32) ,
  `email` varchar(128) ,
  `remarks` varchar(1024) ,
  `height` decimal(5, 2) ,
PRIMARY KEY (`id`)
) ENCRYPTION='Y' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

ویسے ، پلگ ان کی تشکیل سے پہلے ، یہاں تک کہ اگر آپ خفیہ شدہ ٹیبل بنانے کی کوشش کرتے ہیں تو ، مندرجہ ذیل نقص ظاہر ہوگا۔

Can't find master key from keyring, please check in the server log if a keyring is loaded and initialized successfully.
キーリングからマスターキーが見つかりません。キーリングが正常にロードされ、初期化されているかどうかをサーバーログで確認してください。

اگر آپ کے پاس کوئی ڈیٹا نہیں ہے تو ، آپ کو نہیں معلوم کہ یہ خفیہ کیا گیا ہے ، لہذا میں وہی ڈیٹا ڈالنے کی کوشش کروں گا۔

INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('1','名前1','11','宮城県仙台市1','000-0000-0001','example1@example.com','備考1','170.00');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('2','名前2','12','宮城県仙台市2','000-0000-0002','example2@example.com','備考2','171.01');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('3','名前3','13','宮城県仙台市3','000-0000-0003','example3@example.com','備考3','172.02');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('4','名前4','14','宮城県仙台市4','000-0000-0004','example4@example.com','備考4','173.03');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('5','名前5','15','宮城県仙台市5','000-0000-0005','example5@example.com','備考5','174.04');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('6','名前6','16','宮城県仙台市6','000-0000-0006','example6@example.com','備考6','175.05');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('7','名前7','17','宮城県仙台市7','000-0000-0007','example7@example.com','備考7','176.06');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('8','名前8','18','宮城県仙台市8','000-0000-0008','example8@example.com','備考8','177.07');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('9','名前9','19','宮城県仙台市9','000-0000-0009','example9@example.com','備考9','178.08');
INSERT INTO `test_database`.`encrypt_user` (`id`,`name`,`age`,`address`,`phone`,`email`,`remarks`,`height`) VALUES ('10','名前10','20','宮城県仙台市10','000-0000-0010','example10@example.com','備考10','179.09');

encrypt_user چونکہ ٹیبل فائل بنائی گئی ہے ، آئیے مواد کی جانچ پڑتال کریں۔

فائل کو خفیہ کیا گیا ہے، اور ریکارڈ کے مندرجات کی تصدیق نہیں کی جا سکتی۔

فی الحال ، آپ کو صرف سرور میں لاگ ان کرکے اور ٹیبل فائل کو براہ راست چوری کرکے اندر ریکارڈ پڑھنے والے تیسرے فریق کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔ نفاذ کو تبدیل کرنے کی کوئی ضرورت نہیں ہے ، لہذا مجھے لگتا ہے کہ یہ ایک آسان سیکیورٹی سیٹنگ ہے۔

تاہم ، اگر آپ ڈیٹا بیس میں لاگ ان کرتے ہیں تو ، آپ عام طور پر ڈیٹا دیکھ سکتے ہیں۔ اگر آپ سیکیورٹی کی سطح کو بڑھانا چاہتے ہیں تو ، آپ کو ڈیٹا بیس لاگ ان اکاؤنٹ کو اچھی طرح سے منظم کرنے اور ایک علیحدہ خفیہ کاری میکانزم متعارف کرانے کی ضرورت ہے۔

راستے میں خفیہ شدہ میز پر تبدیل کریں

اگر آپ ابتدائی طور پر غیر خفیہ شدہ جدول بناتے ہیں تو ، آپ اسے بعد میں خفیہ شدہ ٹیبل میں تبدیل کرسکتے ہیں۔ اس صورت میں ، آپ اسے مندرجہ ذیل ایس کیو ایل کے ساتھ تبدیل کرسکتے ہیں:

use <データベース名>;
ALTER TABLE <テーブル名> ENCRYPTION='Y';

مثال

use test_database;
ALTER TABLE plain_user ENCRYPTION='Y';

تاہم ، براہ کرم نوٹ کریں کہ اگر بہت سارے ریکارڈ موجود ہیں تو اس میں وقت لگے گا کیونکہ تمام ٹیبل فائلوں کو دوبارہ لکھا گیا ہے۔