പെർമിഷൻ മോഡ് APX-ലാണ്, APC-യിലല്ല

APC എന്നത് പോർട്ടബിൾ കോൺടെക്സ്റ്റ് ലെയർ (portable context layer) ആണ്. APX എന്നത് റൺടൈം (runtime), ടൂളിംഗ് ലെയർ (tooling layer) എന്നിവയാണ്. സുരക്ഷാപരമായ കാര്യങ്ങളിൽ ഈ വ്യത്യാസം വളരെ പ്രധാനമാണ്.

പെർമിഷനുകൾ എന്നത് പ്രോജക്റ്റിന്റെ അടിസ്ഥാന സത്യമല്ല (project truth). അവ മെഷീൻ പോളിസിയാണ് (machine policy).

ഒരു റിപ്പോസിറ്ററി (repository) ലാപ്ടോപ്പുകൾക്കും ഡെസ്ക്ടോപ്പുകൾക്കും ഇടയിൽ തടസ്സമില്ലാതെ കൈമാറാൻ കഴിയണം. ഒരു പെർമിഷൻ സെറ്റിംഗ് എല്ലാ മെഷീനുകളിലും ഒരേ റിസ്ക് ലെവൽ അടിച്ചേൽപ്പിക്കരുത്. നിങ്ങൾ പെർമിഷൻ സ്റ്റേറ്റ് APC-യിൽ നൽകിയാൽ, ലോക്കൽ ട്രസ്റ്റും (local trust) ഷെയർഡ് കോൺടെക്സ്റ്റും (shared context) തമ്മിൽ കലരും.

APX ഈ അതിർവരമ്പുകൾ വ്യക്തമായി നിലനിർത്തുന്നു. പെർമിഷൻ മോഡ് നിങ്ങളുടെ ലോക്കൽ കോൺഫിഗറേഷനിലാണ് (local config) ഉള്ളത്, റിപ്പോസിറ്ററിയിലല്ല.

ലഭ്യമായ മോഡുകൾ ഇവയാണ്:

  • total: യാതൊരു സ്ഥിരീകരണവുമില്ലാതെ എല്ലാ ടൂളുകളും പ്രവർത്തിപ്പിക്കുന്നു.
  • automatico: സുരക്ഷിതമായ റീഡുകളും (reads) ഷെൽ വർക്കുകളും (shell work) അനുവദിക്കുന്നു. എന്നാൽ ഡെസ്ട്രക്റ്റീവ് (destructive) ആയതോ ഔട്ട്‌ബൗണ്ട് (outbound) ആയതോ ആയ പ്രവർത്തനങ്ങൾക്ക് സ്ഥിരീകരണം ആവശ്യപ്പെടുന്നു.
  • permiso: അനുവദനീയമായ ടൂളുകൾ മാത്രം നേരിട്ട് പ്രവർത്തിപ്പിക്കുന്നു. മറ്റെല്ലാ കാര്യങ്ങൾക്കും സ്ഥിരീകരണം ആവശ്യമാണ്.

Automatico ആണ് ഡിഫോൾട്ട് (default). ഇത് ദൈനംദിന ജോലികൾക്കായി റൺടൈം ഉപയോഗപ്രദമായി നിലനിർത്തുന്നു.

APC പ്രോജക്റ്റ് മെറ്റാഡാറ്റ (metadata), ഏജന്റുകൾ (agents), സ്കില്ലുകൾ (skills) എന്നിവ കൈകാര്യം ചെയ്യുന്നു. ഈ ഉള്ളടക്കം ടൂളുകൾക്കിടയിൽ സ്ഥിരമായിരിക്കും കൂടാതെ git-ൽ മികച്ച രീതിയിൽ പ്രവർത്തിക്കുകയും ചെയ്യും.

പെർമിഷൻ മോഡ് റൺടൈം വസ്തുതകളെ (runtime facts) ആശ്രയിച്ചിരിക്കുന്നു:

  • മെഷീൻ ആരുടേതാണ് എന്നത്.
  • മെഷീൻ വ്യക്തിഗതമാണോ അതോ പങ്കിട്ടതാണോ എന്നത്.
  • ടാസ്ക് പര്യവേക്ഷണാത്മകമാണോ (exploratory) അതോ ഉയർന്ന റിസ്ക് ഉള്ളതാണോ എന്നത്.
  • ഇന്ന് നിങ്ങൾ റൺടൈമിന് എത്രത്തോളം വിശ്വാസം നൽകുന്നു എന്നത്.

നിങ്ങൾ പെർമിഷനുകൾ APC-യിലേക്ക് മാറ്റിയാൽ രണ്ട് പ്രശ്നങ്ങൾ ഉണ്ടാകും. പുതിയൊരു മെഷീന് അനുയോജ്യമല്ലാത്ത ഒരു പോളിസി നിങ്ങൾ സ്വീകരിക്കേണ്ടി വരും. കൂടാതെ, ഒരു ലോക്കൽ സുരക്ഷാ തിരഞ്ഞെടുപ്പിനെ ഷെയർഡ് പ്രോജക്റ്റ് ബാധ്യതയായി (shared project baggage) നിങ്ങൾ മാറ്റുകയും ചെയ്യുന്നു.

റിപ്പോസിറ്ററി ജോലിയെ വിവരിക്കുന്നു. ലോക്കൽ റൺടൈമിന് എത്രത്തോളം അധികാരം ഉണ്ടായിരിക്കണമെന്ന് APX തീരുമാനിക്കുന്നു.

APX ഇത് കോഡിലൂടെ നടപ്പിലാക്കുന്നു. createPermissionGuard ഫംഗ്ഷൻ നിങ്ങളുടെ ഗ്ലോബൽ കോൺഫിഗറേഷൻ വായിക്കുകയും ടൂൾ കോളുകൾ ബ്ലോക്ക് ചെയ്യുകയോ അനുവദിക്കുകയോ ചെയ്യുന്നു.

ഈ ഘടന നിങ്ങളുടെ ജോലിരീതിയുമായി പൊരുത്തപ്പെടുന്നു. ഒരു ഫയൽ വായിക്കുന്നത് ഒരു റിപ്പോസിറ്ററി മാറ്റുന്നതിൽ നിന്ന് വ്യത്യസ്തമാണ്. ഒരു സേഫ് ലുക്കപ്പ് (safe lookup) ഒരു MCP കണക്ഷനിൽ നിന്ന് വ്യത്യസ്തമാണ്.

ഒരേ APC പ്രോജക്റ്റ് തന്നെ വ്യത്യസ്ത APX പോളിസികളോടെ നിങ്ങൾക്ക് ഉപയോഗിക്കാം. നിങ്ങളുടെ ലാപ്ടോപ്പിൽ automatico ഉപയോഗിക്കുക. ഒരു ഷെയർഡ് വർക്ക്സ്റ്റേഷനിൽ permiso ഉപയോഗിക്കുക.

ഒരു സെറ്റിംഗ് എവിടെയാണ് വയ്ക്കേണ്ടതെന്ന് തീരുമാനിക്കാൻ ഈ പരിശോധന ഉപയോഗിക്കുക:

  • അത് "എന്താണ് ഈ പ്രോജക്റ്റ്?" എന്ന ചോദ്യത്തിന് ഉത്തരം നൽകുന്നുണ്ടോ? എങ്കിൽ അത് APC-യിൽ ഇടുക.
  • അത് "ഈ മെഷീന് ഇപ്പോൾ എന്തൊക്കെ ചെയ്യാൻ കഴിയും?" എന്ന ചോദ്യത്തിന് ഉത്തരം നൽകുന്നുണ്ടോ? എങ്കിൽ അത് APX-യിൽ ഇടുക.

പെർമിഷൻ മോഡ് APX-ൽ ആണ് വേണ്ടത്. ഇത് APC-യെ പോർട്ടബിൾ ആക്കി നിലനിർത്തുകയും നിങ്ങളുടെ ലോക്കൽ റൺടൈമിനെ വിശ്വസ്തതയുള്ളതാക്കി നിലനിർത്തുകയും ചെയ്യുന്നു.

Source: https://dev.to/agentprojectcontext/permission-mode-lives-in-apx-not-apc-50d6

Optional learning community: https://t.me/GyaanSetuAi