Secret Gate
ទ្វារបញ្ចេញកម្មវិធីដែលស្គាល់សម្ងាត់ពិតប្រាកដរបស់អ្នក៖ គ្មានអ្វីត្រូវបញ្ចេញ លុះត្រាតែវាមិនរកឃើញអ្វីសោះ។
- Linux or macOS
- Python 3.9+
- Git hooks
- CI

អ្វីដែលវាធ្វើបាន
Secret Gate ឆ្លើយសំណួរមួយមុនពេលអ្វីៗចេញពីដៃអ្នក ទោះជាវាជាឯកសារ zip បញ្ចេញ ច្បាប់ចម្លងរបស់អតិថិជន ការបញ្ចេញកូដប្រភពបើកចំហ ឬការបញ្ចូលកូដ (commit) បន្ទាប់ក៏ដោយ៖ តើវាមានសម្ងាត់របស់អ្នកដែរឬទេ? វាដឹងថាសម្ងាត់របស់អ្នកមានអ្វីខ្លះ ព្រោះវាអានឯកសារដែលសម្ងាត់ទាំងនោះស្ថិតនៅ ហើយវាមិនបង្ហាញសម្ងាត់ណាមួយឡើយ៖ លទ្ធផលរកឃើញបញ្ជាក់ឈ្មោះឯកសារ បន្ទាត់ និងប្រភពនៃតម្លៃ។
- តម្លៃជាក់លាក់របស់អ្នក។ គ្រប់តម្លៃនៅក្នុងឯកសារ env, JSON និង YAML configs,
.netrcនិងឯកសារសោរ ត្រូវបានស្វែងរកតាមរបៀបដែលវាសរសេរ តាមរបៀប base64-encoded និង URL-encoded។ ពាក្យសម្ងាត់ដែលមើលទៅដូចជាពាក្យធម្មតា ឬ token ខាងក្នុងដែលគ្មាន prefix ដែលគេស្គាល់ ត្រូវបានចាប់យកដូចគ្នា។ - សម្ងាត់ពីម៉ាស៊ីនដែលវាមិនដំណើរការលើ។ បង្កើតម្រាមដៃ (fingerprints) នៅលើកុំព្យូទ័រយួរដៃរបស់អ្នក; ម៉ាស៊ីន build រកឃើញតម្លៃទាំងនោះដោយមិនធ្លាប់កាន់កាប់វាឡើយ។
- ម៉ាស៊ីនផ្សេងទៀតពិនិត្យប្រៀបធៀបជាមួយសម្ងាត់របស់ខ្លួនឯង។ ឯកសារត្រូវបានផ្ញើទៅម៉ាស៊ីននីមួយៗតាមរយៈ SSH ត្រូវបានស្កេននៅទីនោះ និងលុបចោល។ សម្ងាត់មិនធ្លាប់ផ្លាស់ទី ហើយម៉ាស៊ីនដែលមិនអាចឆ្លើយបាននឹងទប់ស្កាត់ការបញ្ចេញ។
- រូបរាង ឈ្មោះ និងសំឡេងរំខានផងដែរ។ ទម្រង់ token 25 ប្រភេទ ឈ្មោះរបស់អ្នក ម៉ាស៊ីនមេ (hosts) ដែន (domains) និង id គណនី អាសយដ្ឋាន IP ផ្ទាល់ខ្លួន អាសយដ្ឋានអ៊ីមែលផ្ទាល់ខ្លួន លេខទូរស័ព្ទ IBAN ផ្លូវទៅកាន់ថតផ្ទះ (home-folder paths) និងខ្សែអក្សរចៃដន្យនៅក្បែរឈ្មោះដែលហាក់ដូចជាសម្ងាត់។
- វាបញ្ជាក់ខ្លួនឯងរាល់ពេល។ ការស្កេននីមួយៗចាប់ផ្តើមដោយដាក់ canaries គ្រប់ប្រភេទ; ប្រសិនបើការពិនិត្យណាមួយខកខាន canary របស់វា ការស្កេននឹងមិនដំណើរការទេ។
- នៅកន្លែងដែលអ្នកធ្វើការរួចជាស្រេច។ ថត ឯកសារសង្កត់ zip និង tar, git pre-commit ឬ pre-push hook, exit codes សម្រាប់ CI, របាយការណ៍ JSON។
បានសាកល្បងលើអ្វីដែលយើងបញ្ចេញ
- គ្រប់ឈុតកម្មវិធីដែលយើងលក់៖ ឯកសារសង្កត់ 8 ដែលបានបញ្ចេញ ត្រូវបានស្កេនប្រៀបធៀបជាមួយតម្លៃសម្ងាត់ 133 នៅលើម៉ាស៊ីន build របស់យើង និងម្រាមដៃ 16,259 ពីកុំព្យូទ័រយួរដៃរបស់យើង។ ទាំងអស់បានឆ្លងកាត់ ក្នុងរយៈពេល 5.4 វិនាទីសរុប។
- សម្ងាត់ពិតប្រាកដមួយដែលបានដាក់ក្នុងច្បាប់ចម្លងបញ្ចេញ ត្រូវបានចាប់យកទាំងក្នុងទម្រង់ធម្មតា និង base64-encoded ដោយបញ្ជាក់ឈ្មោះឯកសារដែលវាមកពីរាល់ពេល។ តម្លៃនោះមិនបានលេចឡើងនៅក្នុងលទ្ធផល ឬរបាយការណ៍ឡើយ។
- ការស្កេនពីចម្ងាយតាមរយៈ SSH បានពិនិត្យការបញ្ចេញមួយប្រៀបធៀបជាមួយតម្លៃសម្ងាត់ 499 នៃម៉ាស៊ីនទីពីរ ក្នុងរយៈពេល 1.4 វិនាទី ហើយបានចាប់យក token មួយដែលបានដាក់ក្នុងច្បាប់ចម្លងដែលមានតែនៅលើម៉ាស៊ីននោះប៉ុណ្ណោះ។
អ្វីដែលមាននៅខាងក្នុង
ទ្វារ
ការពិនិត្យ 4 ការសាកល្បងខ្លួនឯង ការស្កេនឯកសារសង្កត់ និង git-staged របាយការណ៍ដែលអានបាន និងរបាយការណ៍ JSON មួយ។
ម្រាមដៃ (Fingerprints)
ម្រាមដៃនៃសម្ងាត់របស់ម៉ាស៊ីនមួយ សម្រាប់ការស្កេននៅលើម៉ាស៊ីនផ្សេង ដោយគ្មានតម្លៃ។
ការស្កេនពីចម្ងាយ
ឯកសារដូចគ្នាត្រូវបានពិនិត្យលើគ្រប់ម៉ាស៊ីនដែលមានទិន្នន័យសម្ងាត់ ដោយផ្ញើបញ្ញាប្រតិបត្តិការនៃគម្រោងរបស់អ្នកទៅជាមួយផងដែរ។
ការរៀបចំ និង CI
ឧបករណ៍ស្វែងរកឯកសារសម្ងាត់របស់អ្នក, git hooks, និង workflow GitHub Actions សម្រាប់ទុំឯកសារបង្ហោះ។
តម្រូវការ
- Linux ឬ macOS ដែលមាន Python 3.9 ឬថ្មីជាងនេះ; មិនចាំបាច់ដំឡើងអ្វីពី pip ទេ។
- Git សម្រាប់ hooks, SSH សម្រាប់ការស្កេនពីចម្ងាយ។
ចំណុចគួរដឹង
- វាអានឯកសារតាមស្ថានភាពបច្ចុប្បន្ន។ ទិន្នន័យសម្ងាត់ដែលមានស្រាប់ក្នុងប្រវត្តិ git នៅតែមាននៅទីនោះ៖ សូមផ្លាស់ប្តូរវា។
- ទុំឯកសារនៅក្នុងថតដែលបានស្កេនមិនត្រូវបានបើកទេ; សូមស្កេនទុំឯកសារនីមួយៗ។
- រក្សាឯកសារ fingerprint ឱ្យមានភាពឯកជនដូចទិន្នន័យសម្ងាត់: ពួកវាផ្ទុកតួអក្សរ 4 ដំបូងនៃតម្លៃនីមួយៗដែលមាន 16 តួអក្សរ ឬច្រើនជាងនេះ។
From our field notes
សំណួរ
តើវាខុសគ្នាយ៉ាងណាពី gitleaks ឬ TruffleHog?
ពួកវាស្វែងរកអ្វីដែលទិន្នន័យសម្ងាត់មានលក្ខណៈសម្បត្តិជាទូទៅ ហើយពួកវាធ្វើការនេះបានល្អ។ Secret Gate ក៏ដឹងផងដែរថា តើទិន្នន័យសម្ងាត់របស់អ្នកពិតជាមានអ្វីខ្លះ៖ វាអានឯកសារសម្ងាត់របស់អ្នកផ្ទាល់ និងស្វែងរកតម្លៃជាក់លាក់ទាំងនោះ ដូច្នេះពាក្យសម្ងាត់មូលដ្ឋានទិន្នន័យ ឬ token ខាងក្នុងដែលគ្មានរូបរាងដែលអាចសម្គាល់បាន ក៏ត្រូវបានចាប់យកផងដែរ។ វាត្រូវបានបង្កើតឡើងសម្រាប់ពេលវេលាមួយ មុនពេលអ្វីមួយត្រូវបានបញ្ចេញ ហើយបរាជ័យដោយបិទ (fails closed)។
តើវាផ្ញើទិន្នន័យសម្ងាត់របស់ខ្ញុំទៅកាន់កន្លែងណាមួយទេ?
ទេ។ តម្លៃត្រូវបានអានពីឯកសាររបស់អ្នកចូលទៅក្នុង memory សម្រាប់ការស្កេន ហើយមិនត្រូវបានបោះពុម្ព បង្ហាញ ឬផ្ញើទេ; ឯកសារ fingerprint ប្រសិនបើអ្នកបង្កើតវា ផ្ទុក hash និងតួអក្សរ 4 ដំបូងនៃតម្លៃនីមួយៗ។ ការស្កេនពីចម្ងាយផ្ញើឯកសារដែលអ្នកនឹងបញ្ចេញទៅកាន់ម៉ាស៊ីនរបស់អ្នកផ្ទាល់; ទិន្នន័យសម្ងាត់របស់ម៉ាស៊ីននោះនៅតែស្ថិតនៅលើម៉ាស៊ីននោះ។
តើមានអ្វីកើតឡើងចំពោះការជូនដំណឹងខុស?
ការរកឃើញមួយមានន័យថា "សូមពិនិត្យមើលអ្វីនេះ"។ ប្រសិនបើវាមិនមានបញ្ហាទេ សូមបន្ថែមបញ្ញាអនុញ្ញាតដែលមានវិសាលភាពតូចមួយសម្រាប់ប្រភេទនៃការរកឃើញនោះនៅក្នុងការកំណត់រចនាសម្ព័ន្ធនៃគម្រោង ឧទាហរណ៍ អាសយដ្ឋានគាំទ្ររបស់អ្នកផ្ទាល់។ គ្មានប៊ូតុងបិទការពិនិត្យណាមួយទេ។
តើវាអាចស្កេនប្រវត្តិ git របស់ខ្ញុំបានទេ?
ទេ។ វាពិនិត្យមើលអ្វីដែលអ្នកនឹងបញ្ចេញ: ថតមួយ, ទុំឯកសារមួយ, ឬ commit បន្ទាប់។ សម្រាប់ទិន្នន័យសម្ងាត់ដែលមានស្រាប់ក្នុងប្រវត្តិ សូមផ្លាស់ប្តូរទិន្នន័យសម្ងាត់នោះ។
បានធ្វើបច្ចុប្បន្នភាព: