Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

ഐസി വേരിയബിളുകളില് രഹസ്യങ്ങള് ഇടുന്നത് നിർത്തുക.

വോൾട്ട്, ഓപ്പൺബോ, എക്സ്റ്റേണൽ സീക്രട്ട്സ്: രഹസ്യങ്ങൾ ശരിക്കും ജീവിക്കേണ്ട സ്ഥലങ്ങൾ.

Stop putting secrets in CI variables
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

ഒരു ടീമിന് അവരുടെ രഹസ്യങ്ങള് എവിടെയാണെന്ന് ചോദിച്ചാൽ, സത്യസന്ധമായ ഉത്തരം പലപ്പോഴും "എവിടെയും" ആണ്. ചിലത് ഐ. സി. വേരിയബിളുകളില് . ചിലത് .env അത് കൈമാറ്റം ചെയ്യപ്പെടുന്നു. ചിലത് കൈകൊണ്ട് സൃഷ്ടിച്ച കുബർനെറ്റസ് രഹസ്യങ്ങളാണ്. പാസ്വേഡ് മാനേജറിൽ കുറച്ചുപേർ. കുറഞ്ഞത് ഒരു ഗിറ്റ് റിപ്പോസിറ്ററിയുടെ ചരിത്രത്തിൽ, മൂന്നു വർഷം മുമ്പുള്ളത്.

രഹസ്യങ്ങളുടെ വ്യാപനം ഞാൻ കണ്ടിട്ടുള്ള ഏറ്റവും സാധാരണമായ സുരക്ഷാ പ്രശ്നങ്ങളിലൊന്നാണ്, പരിഹരിക്കാൻ എളുപ്പമുള്ള ഒന്നാണ്.

രഹസ്യങ്ങൾ ചോർന്നു പോകുന്നിടത്ത്

  • ഗിറ്റ് ചരിത്രം. ഒരിക്കൽ ചെയ്തതാണെങ്കില് പിന്നീട് മായ്ച്ചുകളഞ്ഞതാണെങ്കില് , ചരിത്രം വീണ്ടും എഴുതപ്പെടുന്നില്ലെങ്കില് അത് എന്നെന്നേക്കുമായി അവിടെത്തന്നെ തുടരും.
  • സിഐ ലോഗ്സ്. ഒരു ഡീബഗ് echo, ഒരു വര് ഷോസസ് കമാന് ഡ്, ഒരു അപഹാസ്യമായ പ്രവര് ത്തനം പ്രിന്റ് പരിസ്ഥിതി വേരിയബിളുകൾ.
  • ഐ. സി. വേരിയബിളുകൾ വിശാലമായ പ്രവേശനമുള്ളവ: വർക്ക്ഫ്ലോ എഡിറ്റ് ചെയ്യാൻ കഴിയുന്ന ആർക്കും പലപ്പോഴും അവ വായിക്കാൻ കഴിയും.
  • കുബർനെറ്റസ് രഹസ്യങ്ങൾ ഗിറ്റിലെ YAML ൽ. ബേസ് 64 എന്നത് ഒരു എൻക്രിപ്ഷനല്ല.
  • ടെറാഫോർം അവസ്ഥ ഡാറ്റാബേസ് പാസ് വേഡുകൾ അടങ്ങിയിരിക്കുന്ന
  • ചാറ്റും ടിക്കറ്റും. "ഇതാ പാസ്വേഡ്, ഈ സന്ദേശം ഇല്ലാതാക്കുക".

പൊതുവായ ഒരു കാര്യം: രഹസ്യങ്ങൾ പലയിടത്തും പകർത്തപ്പെടുന്നു, ഓരോ പകർപ്പും അവ ചോർന്നിടാൻ കഴിയുന്ന ഒരു സ്ഥലമാണ്.

ലക്ഷ്യം: സത്യത്തിന്റെ ഒരൊറ്റ ഉറവിടം

ഏറ്റവും നല്ല സമീപനം: രഹസ്യങ്ങൾ സൂക്ഷിക്കുക ഒരു സെൻട്രൽ രഹസ്യ സ്റ്റോര്, ഓരോ ഉപഭോക്താവിനും (ആപ്ലിക്കേഷനുകൾ, പൈപ്പ്ലൈനുകൾ, ആളുകൾ) ആവശ്യമുള്ളപ്പോൾ മാത്രം സ്വന്തം ഐഡന്റിറ്റി ഉപയോഗിച്ച് അവിടെ നിന്ന് അവയെ കൊണ്ടുവരാൻ കഴിയും. രഹസ്യങ്ങൾ വളരെ ചുരുങ്ങിയ കാലത്തേയ്ക്കുള്ളതാണ്, അല്ലെങ്കിൽ ഓട്ടോമാറ്റിക്കായി മാറുന്നു, അങ്ങനെ ഒരു ചോർച്ച പെട്ടെന്ന് അവസാനിക്കുന്നു.

താരതമ്യം ചെയ്ത ഓപ്ഷനുകൾ

ഹാഷി കോർപ് സെൽഫ് ഏറ്റവും അറിയപ്പെടുന്നതാണ്. അത് രഹസ്യങ്ങൾ സൂക്ഷിക്കുന്നു, പക്ഷേ അവയെ ചലനാത്മകമായി സൃഷ്ടിക്കുന്നു: ആവശ്യാനുസരണം സൃഷ്ടിച്ച ഡാറ്റാബേസ് ക്രെഡൻഷ്യലുകൾ, ഒരു മണിക്കൂറിനു ശേഷം കാലഹരണപ്പെടുന്ന ക്ലൌഡ് ക്രെഡന്ഷ്യലുകൾ, സ്വന്തം പി. കെ. ഐയിൽ നിന്നുള്ള സർട്ടിഫിക്കറ്റുകൾ. വളരെ ശക്തവും, നന്നായി പ്രവർത്തിക്കുന്നതുമായ ഒരു യഥാർത്ഥ ജോലി (ഉയർന്ന ലഭ്യത, അൺസെല്ലിംഗ്, അപ്ഗ്രേഡുകൾ). 2023 മുതൽ ഇത് ബിസിനസ് സോഴ്സ് ലൈസൻസിനു കീഴിലാണ്.

ഓപ്പൺബാവോ ലൈസൻസ് മാറ്റം വരുന്നതിനു മുമ്പുള്ള വോൾട്ടിന്റെ കമ്മ്യൂണിറ്റി ഫോർക്ക് ആണ്, ഇപ്പോൾ ലിനക്സ് ഫൌണ്ടേഷന് കീഴിലാണ്. മിക്ക ഉപയോഗ കേസുകളിലും വോൾട്ടിനോട് അനുയോജ്യമായ API, ഓപ്പൺ സോഴ്സ് ലൈസൻസ്, സ്വന്തം സവിശേഷതകൾ വികസിപ്പിക്കൽ.

ക്ലൌഡ് രഹസ്യ മാനേജർമാർ: എ. ഡബ്ല്യു. എസ്. രഹസ്യ മാനേജർ, അസ്യുര് കീ വോൾട്ട്, ഗൂഗിൾ രഹസ്യ മാനെജര് . പൂർണ്ണമായും നിയന്ത്രിക്കപ്പെടുന്നു, ക്ലൌഡ് ഐ.എം.എമ്മുമായി സംയോജിപ്പിച്ചിരിക്കുന്നു, ആരംഭിക്കാൻ എളുപ്പമാണ്. പല സിസ്റ്റങ്ങളിലെ ഡൈനാമിക് രഹസ്യങ്ങൾക്കായി വോൾട്ടിനെക്കാൾ കുറവാണ്, പക്ഷേ പല ടീമുകൾക്കും തികച്ചും മതിയാകും.

ഗിറ്റിലെ എൻക്രിപ്റ്റ് ചെയ്ത ഫയലുകൾ: സോപ്പ് (പ്രായം അല്ലെങ്കിൽ ഒരു ക്ലൌഡ് കെ. എം. എസ്) YAML അല്ലെങ്കിൽ JSON ഫയലുകളിലെ മൂല്യങ്ങൾ എൻക്രിപ്റ്റ് ചെയ്യുന്നു, അതിനാൽ നിങ്ങൾക്ക് അവ സുരക്ഷിതമായി കമ്മീറ്റ് ചെയ്യാം. ഗിറ്റോപ്സ് സെറ്റപ്പുകൾക്കും ചെറിയ ടീമുകൾക്കും നല്ലതാണ്.

ഏറ്റവും നല്ല രഹസ്യം ഇതുവരെ ഉണ്ടാവാത്തതാണ്, അത് ആവശ്യമുള്ളപ്പോൾ സൃഷ്ടിക്കപ്പെടുന്നു, അത് ആർക്കും മോഷ്ടിക്കാൻ കഴിയുന്നതിന് മുമ്പ് അത് അവസാനിക്കുന്നു.

കുബർനെറ്റുകളിലേക്ക് രഹസ്യങ്ങൾ കയറ്റുന്നു

കുബർനെറ്റസിലെ ആപ്ലിക്കേഷനുകൾ സാധാരണയായി രഹസ്യങ്ങൾ പരിസ്ഥിതി വേരിയബിളുകളായോ ഫയലുകളായോ പ്രതീക്ഷിക്കുന്നു. ഒരു സെൻട്രൽ സ്റ്റോറിൽ നിന്ന് അവരെ അവിടെ എത്തിക്കാനുള്ള വഴികൾ:

എക്സ്റ്റേണൽ സീക്രട്ട്സ് ഓപ്പറേറ്റർ (ഇ എസ് ഒ) വോൾട്ട്, ഓപ്പൺബാവോ, ക്ലൌഡ് രഹസ്യ മാനേജർമാർ തുടങ്ങിയവയിൽ നിന്നുള്ള രഹസ്യങ്ങൾ സാധാരണ കുബർനെറ്റ്സ് രഹസ്യങ്ങളിലേക്ക് സമന്വയിപ്പിക്കുന്നു:

apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
  name: orders-db
  namespace: shop
spec:
  refreshInterval: 1h
  secretStoreRef:
    name: aws-secrets-manager
    kind: ClusterSecretStore
  target:
    name: orders-db-credentials
  data:
  - secretKey: password
    remoteRef:
      key: prod/shop/orders-db
      property: password

നിങ്ങളുടെ ഗിറ്റ് റിപ്പോസിറ്ററിയില് ഒരു റഫറൻസേ ഉള്ളൂ, ഒരിക്കലും രഹസ്യം തന്നെ അല്ല. ആപ്ലിക്കേഷനുകൾ സാധാരണ കുബർനെറ്റ്സ് രഹസ്യം വായിക്കുന്നു.

രഹസ്യങ്ങൾ സൂക്ഷിക്കുക സി. എസ്. ഐ ഡ്രൈവർ ബാഹ്യ സംഭരണിയിൽ നിന്നും നേരിട്ട് ഫയലുകളായി രഹസ്യങ്ങൾ മൌണ്ട് ചെയ്യുന്നു, ഒരു കുബർനെറ്റ്സ് രഹസ്യം സൃഷ്ടിക്കാതെ.

വോൾട്ട് ഏജന്റ് / ഓപ്പൺബാവോ ഏജന്റ് ഇഞ്ചക്ഷന് ഒരു സൈഡ് വണ്ടി ഓടിക്കുന്നു അത് ഹെഡ്കപ്പിനുള്ള രഹസ്യങ്ങള് തിരികെ കൊണ്ടുവന്ന് പുതുക്കുന്നു.

നിങ്ങൾ ഏത് തിരഞ്ഞെടുത്താലും, കുബർനെറ്റസ് രഹസ്യങ്ങൾ ശാന്തമായി ക്രിപ്റ്റ് ചെയ്തിരിക്കുന്നു etcd ൽ (മാനേജുചെയ്ത ക്ലസ്റ്ററുകൾ സാധാരണയായി KMS എൻക്രിപ്ഷനെ പിന്തുണയ്ക്കുന്നു), ആർബിഎസി ഉപയോഗിച്ച് അവ വായിക്കാൻ കഴിയുന്നവരെ പരിമിതപ്പെടുത്തുക.

സിഐ പൈപ്പ്ലൈനുകളില്

  • ഉപയോഗം ഒഐഡിസി നിങ്ങളുടെ ക്ലൌഡിലേക്കും വോൾട്ട്/ഓപ്പൺബാവോയിലേക്കും ഉള്ള പൈപ്പ്ലൈനുകൾ ആധികാരികമാക്കുന്നതിന്, ദീർഘകാല ആധികാര്യങ്ങൾ സംഭരിക്കുന്നതിനു പകരം.
  • രഹസ്യങ്ങൾ കൊണ്ടുവരിക റൺടൈമിൽ, അവ ആവശ്യമുള്ള ജോലികളിൽ മാത്രം.
  • മാസ്ക് ലോഗുകളിലെ രഹസ്യങ്ങൾ സൂക്ഷിക്കുക, പരിസ്ഥിതി വേരിയബിളുകൾ പ്രിന്റ് ചെയ്യാതിരിക്കുക.
  • ഐ. സി. രഹസ്യങ്ങളുടെ വ്യാപ്തി സംരക്ഷിത ശാഖകളും പരിസ്ഥിതികളും.

റൊട്ടേഷനും ഡൈനാമിക് രഹസ്യങ്ങളും

ഒരിക്കലും മാറാത്ത രഹസ്യം ഒടുവിൽ ചോരുന്ന രഹസ്യമാണ്. ലളിതം മുതൽ വിപുലമായ വരെ ഓപ്ഷനുകൾ:

  • ഷെഡ്യൂൾ ചെയ്ത റൊട്ടേഷൻ സ്റ്റാറ്റിക് രഹസ്യങ്ങളുടെ (ക്ലൌഡ് രഹസ്യ മാനേജർമാർക്ക് ഡാറ്റാബേസ് പാസ്വേഡുകൾ യാന്ത്രികമായി മാറാൻ കഴിയും).
  • ചലനാത്മക രഹസ്യങ്ങൾ വോൾട്ട്/ഓപ്പൺബാവോയിൽ നിന്നും: ഓരോ ആപ്ലിക്കേഷൻ ഇൻസ്റ്റൻസിനും മണിക്കൂറുകളോളം സാധുവായ സ്വന്തം ക്രെഡൻഷ്യലുകൾ ലഭിക്കുന്നു.
  • വർക്ക് ലോഡ് ഐഡന്റിറ്റിഒരു രഹസ്യവുമില്ല. അവരുടെ കുബർനെറ്റ്സ് സേവന അക്കൌണ്ട് ഐഡന്റിറ്റി ഉപയോഗിച്ച് പോഡുകൾ ക്ലൌഡ് സേവനങ്ങളിലേക്ക് ആധികാരികമാക്കുന്നു.

ഇതിനകം ചോർന്നത് കണ്ടെത്തുക.

തികഞ്ഞ സംവിധാനം നിർമ്മിക്കുന്നതിനു മുമ്പ്, അവിടെ ഇതിനകം എന്താണുള്ളതെന്ന് സ്കാൻ ചെയ്യുക:

  • ഗിറ്റ് ലീക്ക് അല്ലെങ്കില് ട്രഫിൾ ഹോഗ് നിങ്ങളുടെ റെപൊസിറ്ററികളിലുടനീളം, ചരിത്രം ഉൾപ്പെടെ.
  • ഗിറ്റ്ഹബ് രഹസ്യ സ്കാനിംഗ് പുഷ് പ്രൊട്ടക്ഷൻ സജീവമാക്കിയ
  • നിങ്ങള് ക്ക് കിട്ടുന്നതെല്ലാം തിരിക്കുക. കംമെറ്റ് ഇല്ലാതാക്കുന്നത് മാത്രം പോരാ.

എവിടെ നിന്നാണ് ഞാൻ തുടങ്ങേണ്ടത്?

ഒരു സെൻട്രൽ സ്റ്റോർ തെരഞ്ഞെടുക്കുക. നിങ്ങളുടെ ക്ലൌഡിന്റെ രഹസ്യ മാനേജർ ആണ് ഏറ്റവും എളുപ്പമുള്ള തുടക്കം. ബാഹ്യ രഹസ്യ ഓപ്പറേറ്റർ ഇൻസ്റ്റാൾ ചെയ്യുക. ഒരു ആപ്ലിക്കേഷന്റെ രഹസ്യങ്ങൾ അവിടെ മാറ്റുക, അവയെ CI വേരിയബിളുകളിൽ നിന്നും Git-ൽ നിന്നും നീക്കം ചെയ്യുക, അവയെ തിരിക്കുക. പിന്നെ ആവർത്തിക്കട്ടെ, സേവനം സേവനം.

എന്റെ അഭിപ്രായം: രഹസ്യങ്ങൾ പകർത്തണം, പകർത്തരുത്. ഓരോ പകർപ്പും ഒരു ഭാവി സംഭവമാണ്, അതിന്റെ തീയതി കാത്തിരിക്കുന്നു.

ഡെസ്ലി