தவறு செய்யக்கூடிய ஒரு ஏஜென்ட்டிற்கான ஆழமான பாதுகாப்பு அடுக்குமுறை
ஒவ்வொரு பாதுகாப்பு வழிமுறையிலும் ஒரு பிழை (bug) இருக்கும். அது எது என்று உங்களுக்கு இன்னும் தெரியவில்லை, அவ்வளவுதான்.
தயாரிப்புப் பயன்பாட்டிற்கான (production) ஒரு தன்னாட்சி ஏஜென்ட்டை (autonomous agent) உருவாக்குவதற்கு இதுவே ஒரே சரியான வழி. மனசாட்சி (conscience) ஒரு செயலைத் தவறாக வகைப்படுத்தலாம். குழு (council) ஒரு மோசமான யோசனையை அங்கீகரிக்கலாம். தனிமைப்படுத்தும் சுவரில் (isolation wall) ஒரு இடைவெளி இருக்கலாம்.
ஒவ்வொரு அடுக்கும் இறுதியில் தோல்வியடையும்.
ஒரு சரியான அடுக்கை எப்படி உருவாக்குவது என்பது வடிவமைப்பு கேள்வி அல்ல. கேள்வி என்னவென்றால்: ஒரு அடுக்கு தோல்வியடையும் போது, அதற்குப் பின்னால் என்ன நிற்கிறது?
அமைப்பைப் பாதுகாக்க நான் ஆறு அடுக்குகளைப் பயன்படுத்துகிறேன். முந்தைய அடுக்குகள் மலிவானவை, ஏனெனில் அவை சிக்கல்கள் நிஜமாக மாறுவதற்கு முன்பே அவற்றை நிறுத்திவிடுகின்றன.
• L0 — கட்டமைப்புத் தனிமைப்படுத்தல் (Structural isolation). அடிப்படை மட்டத்தில் தவறான வாடிக்கையாளர் (wrong-tenant) செயல்களைத் தடுக்கிறது. • L1 — யோசனை-வாயில் (Idea-gate). குறியீடு (code) உருவாவதற்கு முன்பே விவாதத்தின் போது மோசமான யோசனைகளைத் தடுக்கிறது. • L2 — செயல்-வாயில் (Action-gate). அபாயத்தின் அடிப்படையில் கட்டளைகளை அனுமதிக்கும் அல்லது மறுக்கும் ஒரு எதிர்வினை (reflex). • L3 — வள-வாயில் (Resource-gate). நினைவகம் (memory), வரவு செலவுத் திட்டங்கள் மற்றும் கட்டுப்பாடற்ற செலவுகளைக் கட்டுப்படுத்துகிறது. • L4 — தணிக்கை (Audit). ஒவ்வொரு முடிவையும் கண்காணிக்க மாற்றியமைக்க முடியாத ரசீதுகளைப் (tamper-evident receipts) பயன்படுத்துகிறது. • L5 — மீட்பு (Recovery). நடப்பு சேதத்தைத் தடுக்க தனிமைப்படுத்துதல் (quarantine) மற்றும் பழைய நிலைக்குத் திரும்புதல் (rollbacks) ஆகியவற்றைப் பயன்படுத்துகிறது.
அடுக்குகளின் பட்டியல் மட்டுமே ஆழமான பாதுகாப்பு (defense in depth) ஆகாது. உண்மையான ஆழத்திற்கு ஒரு விதி தேவை:
ஒவ்வொரு முக்கியமான அபாயமும் குறைந்தது இரண்டு சுதந்திரமான அடுக்குகளால் கண்டறியப்பட வேண்டும்.
சுதந்திரமான முறையில் என்பது அவை ஒரே காரணத்திற்காகத் தோல்வியடையாது என்பதாகும். இரண்டு சரிபார்ப்புகளும் ஒரே உள்ளமைவு (config) அல்லது ஒரே சமிக்ஞையைப் (signal) பயன்படுத்தினால், அவை இரண்டும் ஒரே சரிபார்ப்புதான். அந்தச் சமிக்ஞை தோல்வியடையும் போது, இரண்டு சரிபார்ப்புகளும் தோல்வியடையும்.
இது நடப்பதைப் பார்த்திருக்கிறேன். எனது யோசனை-வாயில் (idea-gate), ஒருமுறை நடக்காத விவாதத்திற்காக ஒரு உறுதியான தீர்ப்பைத் தந்தது. ஒரு உதவியாளர் (helper) முழு முடிவையும் ஜோடிக்கப்பட்டதாக (fabricated) உருவாக்கினார்.
L1 தோல்வியடைந்தது. அது பிழையைத் தவறவிட்டதோடு மட்டுமல்லாமல், நம்பகமான ஒரு பொய்யையும் உருவாக்கியது.
L1 மட்டுமே எனது ஒரே பாதுகாப்பு அரணாக இருந்திருந்தால், அந்தப் பொய் ஒரு உண்மையான முடிவாக மாறியிருக்கும். ஆனால் L4 அதைக் கண்டுபிடித்தது. L4 விவரிப்புகளை (narration) நம்பாது. அது ரசீதுகளை (receipts) மட்டுமே நம்பும். நான் டிரான்ஸ்கிரிப்ட் (transcript) கோப்பைத் தேடினேன். அந்த கோப்பு இருக்கவில்லை. அந்தத் தகவல் செல்லாதது.
L1 தோல்வியடையும் என்று நான் முன்கூட்டியே கருதியதால் அமைப்பு பாதுகாப்பாக இருந்தது.
இந்த அடுக்குகளின் தற்போதைய நிலை:
• L1 — குறியீடாக்கப்பட்டது (Coded). • L2 — குறியீடாக்கப்பட்டது (Coded). • L4 — குறியீடாக்கப்பட்டது (Coded). • L0 — பகுதி அளவு (Partial). • L3 — பகுதி அளவு (Partial). • L5 — பகுதி அளவு (Partial).
உங்களால் தணிக்கை செய்ய முடியாத ஒரு பாதுகாப்பு கட்டமைப்பு என்பது வெறும் மூட் போர்டு (mood board) மட்டுமே.
எந்தவொரு பாதுகாப்பான ஏஜென்ட்டையும் பற்றி உங்களையே இந்த மூன்று கேள்விகளைக் கேட்டுக்கொள்ளுங்கள்:
- உங்கள் மிக மோசமான அபாயத்திற்கு, அதைத் தடுக்கும் இரண்டு சுதந்திரமான அடுக்குகள் எவை?
- ஒரு அடுக்கு ஒரு உறுதியான தவறான சமிக்ஞையைத் தரும்போது, அதற்குப் பின்னால் உள்ள எந்த அடுக்கு அந்தச் சமிக்ஞையை நம்ப மறுக்கிறது?
- எந்த அடுக்குகள் கட்டப்பட்டுள்ளன, எவை வெறும் யோசனைகளாக மட்டுமே உள்ளன?
திறன் (Capability) என்பது ஒரு அடுக்கு. பாதுகாப்பு (Safety) என்பது மற்ற ஐந்து அடுக்குகள்.
Source: https://dev.to/artemmatviychuk/defense-in-depth-for-an-agent-that-will-definitely-screw-up-5en0
Optional learning community: https://t.me/GyaanSetuAi