AI-ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਗਏ Bash Scripts ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨਾ

AI ਆਸਾਨੀ ਨਾਲ Bash ਲਿਖਦਾ ਹੈ। ਇਹ ਚੀਜ਼ਾਂ ਨੂੰ ਆਸਾਨੀ ਨਾਲ ਖਰਾਬ ਵੀ ਕਰ ਸਕਦਾ ਹੈ। ਜੇਕਰ ਕੋਈ ਵੇਰੀਏਬਲ (variable) ਖਾਲੀ ਹੋਵੇ, ਤਾਂ ਇੱਕ ਛੋਟਾ ਜਿਹਾ ਸਕ੍ਰਿਪਟ ਤੁਹਾਡੀ ਪੂਰੀ ਹੋਮ ਡਾਇਰੈਕਟਰੀ (home directory) ਨੂੰ ਡਿਲੀਟ ਕਰ ਸਕਦਾ ਹੈ। ਇੱਕ ਸਧਾਰਨ ਲੌਗ ਸਕ੍ਰਿਪਟ ਤੁਹਾਡੇ ਗੁਪਤ ਵੇਰਵਿਆਂ (secrets) ਨੂੰ ਕਿਸੇ ਪਬਲਿਕ ਸਰਵਰ 'ਤੇ ਲੀਕ ਕਰ ਸਕਦੀ ਹੈ।

ਮੈਂ ਖਰਾਬ AI ਸਕ੍ਰਿਪਟਾਂ ਚਲਾਈਆਂ ਹਨ। ਜ਼ਿਆਦਾਤਰ ਇੰਜੀਨੀਅਰਾਂ ਨੇ ਵੀ ਚਲਾਈਆਂ ਹਨ। ਮੁਸੀਬਤਾਂ ਆਉਣ ਤੋਂ ਪਹਿਲਾਂ ਉਨ੍ਹਾਂ ਨੂੰ ਰੋਕਣ ਲਈ ਇਸ ਚੈੱਕਲਿਸਟ ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਹਰ ਸਕ੍ਰਿਪਟ ਦੇ ਉੱਪਰ ਇਹ ਲਾਈਨਾਂ ਜੋੜੋ:

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

ਤੁਹਾਨੂੰ ਇਹਨਾਂ ਦੀ ਲੋੜ ਕਿਉਂ ਹੈ:

  • set -e: ਜੇਕਰ ਕੋਈ ਕਮਾਂਡ ਫੇਲ੍ਹ ਹੋ ਜਾਂਦੀ ਹੈ ਤਾਂ ਸਕ੍ਰਿਪਟ ਨੂੰ ਰੋਕ ਦਿੰਦਾ ਹੈ।
  • set -u: ਜੇਕਰ ਕੋਈ ਵੇਰੀਏਬਲ ਅਨਡਿਫਾਈਨਡ (undefined) ਹੈ ਤਾਂ ਸਕ੍ਰਿਪਟ ਨੂੰ ਰੋਕ ਦਿੰਦਾ ਹੈ। ਇਹ rm -rf / ਵਰਗੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ।
  • set -o pipefail: ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਪਾਈਪਲਾਈਨ ਵਿੱਚ ਹੋਣ ਵਾਲੀਆਂ ਗਲਤੀਆਂ ਅਸਲ ਵਿੱਚ ਸਕ੍ਰਿਪਟ ਨੂੰ ਰੋਕ ਦੇਣ।
  • IFS=$'\n\t': ਫਾਈਲ ਦੇ ਨਾਮਾਂ ਵਿੱਚ ਸਪੇਸ (spaces) ਕਾਰਨ ਹੋਣ ਵਾਲੀਆਂ ਬੱਗਸ (bugs) ਤੋਂ ਬਚਾਉਂਦਾ ਹੈ।

ਇਹਨਾਂ ਆਮ AI ਗਲਤੀਆਂ ਤੋਂ ਸਾਵਧਾਨ ਰਹੋ:

  1. ਕੋਟਸ (Quotes) ਦੀ ਕਮੀ AI ਅਕਸਰ ਲਿਖਦਾ ਹੈ: rm -rf $TARGET_DIR ਤੁਹਾਨੂੰ ਲਿਖਣਾ ਚਾਹੀਦਾ ਹੈ: rm -rf "$TARGET_DIR" ਬਿਨਾਂ ਕੋਟਸ ਦੇ, ਫੋਲਡਰ ਦੇ ਨਾਮ ਵਿੱਚ ਇੱਕ ਸਪੇਸ ਗਲਤ ਫਾਈਲਾਂ ਨੂੰ ਡਿਲੀਟ ਕਰ ਸਕਦੀ ਹੈ। ਹਮੇਸ਼ਾ ਆਪਣੇ ਵੇਰੀਏਬਲਜ਼ ਨੂੰ ਡਬਲ ਕੋਟਸ ਵਿੱਚ ਰੱਖੋ।

  2. ਗੁਪਤ ਵੇਰਵਿਆਂ ਦਾ ਲੀਕ ਹੋਣਾ (Secret Leaks) AI ਅਕਸਰ ਡੀਬੱਗਿੰਗ (debugging) ਲਈ set -x ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਇਹ ਤੁਹਾਡੇ ਲੌਗਸ ਵਿੱਚ ਹਰ ਕਮਾਂਡ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ API ਟੋਕਨ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਉਹ ਟੋਕਨ ਹੁਣ ਤੁਹਾਡੇ CI ਲੌਗਸ ਵਿੱਚ ਦਿਖਾਈ ਦੇਵੇਗਾ। ਸੰਵੇਦਨਸ਼ੀਲ ਹਿੱਸਿਆਂ ਨੂੰ ਛੁਪਾਉਣ ਲਈ ਹਮੇਸ਼ਾ set -x ਨੂੰ ਹਟਾ ਦਿਓ ਜਾਂ set +x ਦੀ ਵਰਤੋਂ ਕਰੋ।

  3. ਬਹੁਤ ਜ਼ਿਆਦਾ ਅਧਿਕਾਰ (Too Much Privilege) AI ਅਕਸਰ ਹਰ ਕਮਾਂਡ ਵਿੱਚ sudo ਜੋੜ ਦਿੰਦਾ ਹੈ। ਅਜਿਹਾ ਨਾ ਕਰੋ। ਜਦੋਂ ਵੀ ਸੰਭਵ ਹੋਵੇ, ਸਕ