প্রকল্প সম্পর্কে
pg_vault_tde হলো একটি ওপেন-সোর্ PostgreSQL এক্সটেনশন, যা PostgreSQL 17 এবং 18-এর জন্য Transparent Data Encryption (TDE) প্রদান করে; 19 সংস্করণের জন্য সমর্থন পরিকল্পিত। এটি AES-256-GCM এনক্রিপশন অ্যালগরিদম ব্যবহার করে এবং Table Access Method স্তরে কাজ করে, অর্থাৎ ডেটা সংরক্ষণের আগে এনক্রিপ্ট হয় এবং পুনরুদ্ধারের সময় ডিক্রিপ্ট হয়, PostgreSQL core-এ কোনো পরিবর্তন ছাড়াই।
এক্সটেনশনটি একাধিক কী ব্যবস্থাপনা সমাধান সমর্থন করে: HashiCorp Vault, OpenBao, লোকাল PKCS#12 ওয়ালেট এবং PKCS#11 HSM। এনক্রিপশন কী বহিরাগতভাবে ব্যবস্থাপিত হয় এবং স্বয়ংক্রিয় রোটেশন ক্ষমতাসহ shared memory-তে ক্যাশ করা হয়।
প্রধান বৈশিষ্ট্যুলো:
Transparent Encryption: প্রতিটি টাপল AES-256-GCM দিয়ে এনক্রিপ্ট করে। স্টোরেজ ম্যানেজারে পৌঁছানোর আগে ডেটা এনক্রিপ্ট হয় এবং তা ছাড়ার পরে ডিক্রিপ্ট হয়।
Key Management Options: HashiCorp Vault/OpenBao, লোকাল PKCS#12 ওয়ালেট এবং PKCS#11/HSM ইন্টিগ্রেশন সমর্থন করে।
No Core Modifications: প্লাগ-অ্যান্ড-প্লে এক্সটেনশন হিসেবে কাজ করে।
Index Encryption: B-Tree ইনডেক্সের জন্য AES-256-SIV সমর্থন করে (tde_btree)। ভবিষ্যৎ সংস্করণে GIN, Hash এবং GiST equality ইনডেক্সের জন্য সমর্থনের পরিকল্পনা আছে।
WAL Encryption: Write-Ahead Log (WAL)-এ লেখার আগে ডেটা এনক্রিপ্ট করা হয়।
Per-Database KMS Configuration: একই ক্লাস্টারের মধ্যে আলাদা ডেটাবেসের জন্য ভিন্ন KMS সেটিংসের অনুমতি দেয়।
Key Rotation: per-table DEK রোটেশন (অনলাইন) এবং KEK রোটেশন উভয়ই সমর্থন করে।
ইনস্টলেশন সোর্স থেকে বিল্ড করে অথবা pgxn install ব্যবহার করে করা যায়। কনফিগারেশনে postgresql.conf পরিবর্তন করে shared_preload_libraries-এ pg_vault_tde অন্তর্ুক্ত করতে হয় এবং তারপর ডেটাবেসে এক্সটেনশন তৈরি করতে হয়। নির্বাচিত KMS প্রদানকারী ও তার সেটিংস কনফিগার করতে নির্িষ্ট GUC প্যারামিটার ব্যবহার করা হয়।
এক্সটেনশনটি এনক্রিপ্টেড টেবিল তৈরির জন্য encrypted_heap নামে একটি নতুন table access method সংজ্ঞায়িত করে। পড়ার সময় ডেটা স্বচ্ছভাবে ডিক্রিপ্ট হয়। এনক্রিপ্টেড টাপলের wire format-এ একটি হেডার, IV, সাইফারটেক্সট, GCM ট্যাগ, সংস্করণ এবং জেনারেশন কাউন্টার থাকে, যা প্রতি টাপলে সামান্য ওভারহেড যোগ করে।
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.