ਤੁਹਾਡੀ ਐਪ ਦੇ ਅੰਦਰ SSH ਪਰਮਿਸ਼ਨ ਗਲਤੀਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ
ਨਵੇਂ SSH ਉਪਭੋਗਤਾ ਅਕਸਰ ਇੱਕ ਮੁਸ਼ਕਲ ਦਾ ਸਾਹਮਣਾ ਕਰਦੇ ਹਨ। ਉਹਨਾਂ ਨੂੰ ਇਹ ਗਲਤੀ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ:
WARNING: UNPROTECTED PRIVATE KEY FILE! Permissions 0644 for 'id_rsa.pem' are too open.
ਇਸਦਾ ਹੱਲ ਇੱਕ ਸਧਾਰਨ ਟਰਮੀਨਲ ਕਮਾਂਡ ਹੈ: chmod 600 id_rsa.pem। ਇੰਜੀਨੀਅਰਾਂ ਲਈ, ਇਹ ਆਸਾਨ ਹੈ। ਪਰ ਏਜੰਸੀ ਸਟਾਫ ਜਾਂ IT ਆਪਰੇਟਰਾਂ ਲਈ ਜੋ ਟਰਮੀਨਲ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦੇ, ਇਹ ਇੱਕ ਵੱਡੀ ਰੁਕਾਵਟ ਹੈ। ਇਸ ਕਾਰਨ ਲਗਾਤਾਰ ਸਪੋਰਟ ਟਿਕਟਾਂ (support tickets) ਆਉਂਦੀਆਂ ਰਹਿੰਦੀਆਂ ਹਨ।
ਅਸੀਂ ਇਸਨੂੰ ਆਪਣੀ ਐਪ ਦੇ ਅੰਦਰ ਹੀ ਹੱਲ ਕਰਨ ਦਾ ਫੈਸਲਾ ਕੀਤਾ। ਅਸੀਂ ਪਰਮਿਸ਼ਨਾਂ ਦੀ ਜਾਂਚ ਕਰਨ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਆਪਣੇ ਆਪ ਠੀਕ ਕਰਨ ਲਈ ਇੱਕ ਸਿਸਟਮ ਬਣਾਇਆ ਹੈ।
The Problem ਜੇਕਰ ਪਰਮਿਸ਼ਨਾਂ ਬਹੁਤ ਜ਼ਿਆਦਾ ਖੁੱਲ੍ਹੀਆਂ ਹਨ, ਤਾਂ OpenSSH ਪ੍ਰਾਈਵੇਟ ਕੀ (private key) ਨੂੰ ਲੋਡ ਕਰਨ ਤੋਂ ਇਨਕਾਰ ਕਰ ਦਿੰਦਾ ਹੈ। ਜੇਕਰ ਹੋਰ ਲੋਕ ਤੁਹਾਡੀ ਕੀ ਨੂੰ ਪੜ੍ਹ ਸਕਦੇ ਹਨ, ਤਾਂ ਤੁਹਾਡੀ ਸੁਰੱਖਿਆ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ। ਜ਼ਿਆਦਾਤਰ ਕੀਜ਼ ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ 0644 ਹੁੰਦੀਆਂ ਹਨ, ਜੋ ਕਿ ਦੁਨੀਆ ਭਰ ਦੇ ਕਿਸੇ ਵੀ ਵਿਅਕਤੀ ਦੁਆਰਾ ਪੜ੍ਹੀਆਂ ਜਾ ਸਕਦੀਆਂ ਹਨ। OpenSSH ਲਈ 0600 ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
Our Solution ਅਸੀਂ ਇਸਨੂੰ ਸੰਭਾਲਣ ਲਈ ਦੋ-ਪੜਾਵੀ (two-phase) ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ।
Phase 1: Post-failure recovery ਜੇਕਰ ਪਰਮਿਸ਼ਨਾਂ ਕਾਰਨ ਕਨੈਕਸ਼ਨ ਫੇਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਤਾਂ UI 'Fix and retry' ਬਟਨ ਦਿਖਾਉਂਦਾ ਹੈ। ਇਸ 'ਤੇ ਕਲਿੱਕ ਕਰਨ ਨਾਲ ਫਿਕਸ ਚੱਲਦਾ ਹੈ ਅਤੇ ਕਨੈਕਸ਼ਨ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
Phase 2: Pre-connection prevention ਉਪਭੋਗਤਾ ਦੁਆਰਾ ਕਨੈਕਟ 'ਤੇ ਕਲਿੱਕ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਐਪ ਕੀ ਪਾਥ (key path) ਦੀ ਜਾਂਚ ਕਰਦੀ ਹੈ। ਜੇਕਰ ਪਰਮਿਸ਼ਨਾਂ ਗਲਤ ਹਨ, ਤਾਂ ਅਸੀਂ ਇੱਕ ਚੇਤਾਵਨੀ ਦਿਖਾਉਂਦੇ ਹਾਂ। ਉਪਭੋਗਤਾ ਇਸਨੂੰ ਠੀਕ ਕਰਨ ਜਾਂ ਜਿਵੇਂ ਹੈ ਉਵੇਂ ਹੀ ਕਨੈਕਟ ਕਰਨ ਦੀ ਚੋਣ ਕਰ ਸਕਦਾ ਹੈ।
ਅਸੀਂ Windows ਨੂੰ ਵੀ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਸੰਭਾਲਦੇ ਹਾਂ। Windows, Unix ਪਰਮਿਸ਼ਨਾਂ ਦੀ ਬਜਾਏ ACLs ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਸਾਡਾ ਕੋਡ ਪਲੇਟਫਾਰਮ ਦੀ ਪਛਾਣ ਕਰਦਾ ਹੈ ਅਤੇ ਐਕਸੈਸ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ icacls ਵਰਗੀ ਸਹੀ ਕਮਾਂਡ ਚਲਾਉਂਦਾ ਹੈ।
Why we do not auto-fix silently ਅਸੀਂ ਸ਼ੁਰੂਆਤ ਵਿੱਚ ਹੀ ਕੀਜ਼ ਨੂੰ ਆਪਣੇ ਆਪ ਠੀਕ ਕਰਨ ਬਾਰੇ ਵਿਚਾਰ ਕੀਤਾ ਸੀ। ਅਸੀਂ ਇਸ ਵਿਚਾਰ ਨੂੰ ਰੱਦ ਕਰ ਦਿੱਤਾ। ਕੁਝ ਵਰਕਫਲੋਜ਼ (workflows) ਲਈ ਸਾਂਝੀਆਂ ਕੀਜ਼ (shared keys) ਲਈ ਖਾਸ ਪਰਮਿਸ਼ਨਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ ਅਸੀਂ ਬਿਨਾਂ ਪੁੱਛੇ ਉਹਨਾਂ ਨੂੰ ਬਦਲਦੇ ਹਾਂ, ਤਾਂ ਅਸੀਂ ਉਪਭੋਗਤਾ ਦੇ ਵਰਕਫਲੋ ਨੂੰ ਵਿਗਾੜ ਦਿੰਦੇ ਹਾਂ।
ਸਾਡਾ ਨਿਯਮ ਸਧਾਰਨ ਹੈ: ਅਸੀਂ ਸਭ ਕੁਝ ਜਾਂਚਦੇ ਹਾਂ, ਪਰ ਅਸੀਂ ਫਾਈਲਾਂ ਨੂੰ ਉਦੋਂ ਹੀ ਸੋਧਦੇ ਹਾਂ ਜਦੋਂ ਉਪਭੋਗਤਾ ਬਟਨ 'ਤੇ ਕਲਿੱਕ ਕਰਦਾ ਹੈ।
The Result ਅਜਿਹਾ UX ਬਣਾਉਣਾ ਜੋ ਤਕਨੀਕੀ ਰੁਕਾਵਟਾਂ ਨੂੰ ਖਤਮ ਕਰ ਦੇਵੇ, ਸਪੋਰਟ ਦੇ ਕੰਮ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। ਅਸੀਂ ਉਪਭੋਗਤਾ ਨੂੰ ਦਿਖਾਉਂਦੇ ਹਾਂ ਕਿ ਕੀ ਗਲਤ ਹੈ ਅਤੇ ਇੱਕ-ਕਲਿੱਕ ਫਿਕਸ ਦੀ ਪੇਸ਼ਕਸ਼ ਕਰਦੇ ਹਾਂ। ਇਹ ਟਰਮੀਨਲ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਮਾਨਸਿਕ ਰੁਕਾਵਟ ਨੂੰ ਦੂਰ ਕਰਦਾ ਹੈ।