เก็บความลับอย่างปลอดภัยใน VCS repo (เช่น git, mercurial, subversion หรือ perforce) คำสั่งเหล่านี้ทำให้ง่ายต่อการเข้ารหัสไฟล์เฉพาะของ GNU Privacy อย่างไรก็ตามสคริปต์ทำให้ง่ายต่อการถอดรหัสเมื่อคุณต้องการดูหรือแก้ไขและถอดรหัสเพื่อใช้ในการผลิต ตอนแรกเขียนขึ้นสำหรับหุ่นเชิดตอนนี้แบล็กบ็อกซ์ทำงานร่วมกับที่เก็บ Git หรือ Mercurial
คำเตือน: เป้าหมายของโครงการนี้คือการห่อหุ้มง่าย ๆ รอบ ๆ gpg
ดังนั้นคุณและเพื่อนร่วมงานของคุณไม่จำเป็นต้องจำธงที่ไม่อาจหยั่งรู้และสับสนได้ทั้งหมด มัน ไม่ได้ มีวัตถุประสงค์เพื่อเป็นระบบเข้ารหัสที่ซับซ้อนซึ่งแก้ปัญหาทั้งหมดหรือรองรับไฟล์จำนวนมาก กรณีการใช้งานในอุดมคติคือการเก็บความลับในบริการที่ปลอดภัยเช่น Conjur, AWS KMS, Azure Key Vault หรือ GCP KMS; จากนั้นใช้ blackbox เพื่อจัดเก็บปุ่ม API อย่างปลอดภัยที่จำเป็นในการเข้าถึงระบบนั้น ด้วยวิธีนี้คุณกำลังเข้ารหัสไฟล์เล็ก ๆ ขนาดเล็ก คุณลักษณะสำหรับสิ่งใด ๆ จะถูกปฏิเสธ อย่าคาดหวังหรือแม้แต่ร้องขอ "คุณสมบัติขององค์กร" หากสิ่งนี้ทำให้คุณผิดหวังโปรดพิจารณาโครงการการแข่งขันเช่น https://www.agwa.name/projects/git-crypt
การนำเสนอสไลด์ (เกี่ยวกับรุ่นเก่า) อยู่ในสไลด์แชร์
เข้าร่วมรายชื่อผู้รับจดหมายของเรา: https://groups.google.com/d/forum/blackbox-project
สมมติว่าคุณมีที่เก็บ VCS (เช่น git หรือ repo mercurial) และไฟล์บางไฟล์มีความลับเช่นรหัสผ่านหรือปุ่มส่วนตัว SSL บ่อยครั้งที่ผู้คนเก็บไฟล์ดังกล่าว "และหวังว่าจะไม่มีใครพบพวกเขาใน repo" ไม่ปลอดภัย
ด้วย blackbox ไฟล์เหล่านั้นจะถูกเข้ารหัสโดยใช้ GPG การเข้าถึง VCS repo โดยไม่ต้องมีปุ่ม GPG ที่ถูกต้องทำให้ไม่มีค่าที่จะมีไฟล์ ตราบใดที่คุณรักษาคีย์ GPG ของคุณให้ปลอดภัยคุณไม่ต้องกังวลเกี่ยวกับการจัดเก็บ repo vcs ของคุณบนเซิร์ฟเวอร์ที่ไม่น่าเชื่อถือ Heck แม้ว่าคุณจะไว้วางใจเซิร์ฟเวอร์ของคุณตอนนี้คุณไม่ต้องไว้ใจคนที่สำรองข้อมูลเซิร์ฟเวอร์นั้นหรือคนที่จัดการเทปสำรองข้อมูล!
แทนที่จะเป็นหนึ่งเดียว GPG รหัสผ่านสำหรับไฟล์ทั้งหมดแต่ละคนที่มีการเข้าถึงมีคีย์ GPG ของตัวเองในระบบ ทุกคนสามารถถอดรหัสไฟล์ได้ด้วยคีย์ GPG ของพวกเขา ด้วยวิธีนี้หากคนคนหนึ่งออกจาก บริษัท คุณไม่จำเป็นต้องสื่อสารรหัสผ่านใหม่ให้กับทุกคนที่มีการเข้าถึง เพียงแค่ปิดการใช้งานคีย์เดียวที่ไม่ควรเข้าถึงอีกต่อไป กระบวนการในการทำเช่นนี้เป็นเรื่องง่ายเหมือนการเรียกใช้ 2 คำสั่ง (1 เพื่อปิดการใช้งานคีย์ของพวกเขา 1 เพื่อเข้ารหัสไฟล์ทั้งหมดอีกครั้ง)
กระบวนการอัตโนมัติมักจะต้องเข้าถึงไฟล์ที่ถอดรหัสทั้งหมด นี่เป็นเรื่องง่ายเช่นกัน ตัวอย่างเช่นสมมติว่า Git กำลังใช้สำหรับไฟล์หุ่นเชิด ต้นแบบต้องการการเข้าถึงเวอร์ชันที่ถอดรหัสของไฟล์ทั้งหมด เพียงตั้งค่าคีย์ GPG สำหรับ Puppet Master (หรือบัญชีบทบาทที่ผลักไฟล์ใหม่ไปยัง Puppet Master) และให้ผู้ใช้เรียกใช้ blackbox_postdeploy
หลังจากอัปเดตไฟล์ใด ๆ
หากคุณไม่มีคีย์ GPG ให้ตั้งค่าโดยใช้คำแนะนำเช่น: ตั้งค่าคีย์ GPG
ตอนนี้คุณพร้อมที่จะไป
cd
เป็นที่เก็บ Git, Mercurial, Subversion หรือ Perforce และเรียกใช้ blackbox_initialize
หากมีการเข้ารหัสไฟล์ให้เรียกใช้ blackbox_register_new_file
และคุณทำเสร็จแล้ว
เพิ่มและลบคีย์ด้วย blackbox_addadmin
และ blackbox_removeadmin
หากต้องการดูและ/หรือแก้ไขไฟล์ให้เรียกใช้ blackbox_edit
; สิ่งนี้จะถอดรหัสไฟล์และเปิดด้วยสิ่งที่ระบุโดยตัวแปรสภาพแวดล้อม $ editor ของคุณ
เมื่อคุณปิดตัวแก้ไขไฟล์จะถูกเข้ารหัสโดยอัตโนมัติอีกครั้งและไฟล์ Plaintext ชั่วคราวจะถูกทำลาย
หากคุณต้องการปล่อยให้ไฟล์ถอดรหัสในขณะที่คุณอัปเดตคุณสามารถใช้ blackbox_edit_start
เพื่อถอดรหัสไฟล์และ blackbox_edit_end
เมื่อคุณต้องการ "นำกลับมาไว้ในกล่อง"
เห็นได้ชัดว่าเราไม่ต้องการสิ่งที่เป็นความลับเช่นปุ่มส่วนตัว SSL และรหัสผ่านที่จะรั่วไหลออกมา
ไม่ชัดเจนเมื่อเราเก็บ "ความลับ" ใน repo VCS เช่น Git หรือ Mercurial ทันใดนั้นเราก็ไม่สามารถแบ่งปันรหัสของเรากับคนอื่นได้ การสื่อสารระหว่างกลุ่มย่อยขององค์กรได้รับบาดเจ็บ คุณไม่สามารถทำงานร่วมกันได้เช่นกัน ไม่ว่าคุณจะพบว่าตัวเองส่งอีเมลแต่ละไฟล์ (yuck!) ทำ repo พิเศษด้วยไฟล์ที่ต้องการโดยผู้ทำงานร่วมกันของคุณ (Yuck !!) หรือเพียงแค่ตัดสินใจว่าการทำงานร่วมกันนั้นไม่คุ้มกับความพยายามทั้งหมด (Yuck !!!)
ความสามารถในการเปิดและโปร่งใสเกี่ยวกับรหัสของเรายกเว้นไฟล์เฉพาะสองสามไฟล์เป็นกุญแจสำคัญในการทำงานร่วมกันที่ DevOps และผู้ปฏิบัติงานด้านไอทีที่ทันสมัยต้องทำ
make copy-install
จะคัดลอกไฟล์ bin เป็น $ prefix/bin, ค่าเริ่มต้นคือ/usr/local (ถอนการติดตั้งด้วย make copy-uninstall
)make symlinks-install
จะทำให้ symlinks ของไฟล์ bin เป็น $ คำนำหน้า/bin, ค่าเริ่มต้นคือ/usr/local (ถอนการติดตั้งด้วย make copy-uninstall
) (มีประโยชน์เมื่อทำการพัฒนา)sudo port install vcs_blackbox
brew install blackbox
make packages-rpm
; ตอนนี้คุณสามารถแจกจ่ายรอบต่อนาทีผ่านวิธีการในท้องถิ่น (ต้องใช้ FPM)make packages-deb
; ตอนนี้คุณสามารถแจกจ่าย DEB ผ่านวิธีการในท้องถิ่น (ต้องใช้ FPM)antigen bundle StackExchange/blackbox
ลงใน. zshrc ของคุณzgenom load StackExchange/blackbox
ลงใน. zshrc ของคุณซึ่งคุณกำลังโหลดปลั๊กอินอื่น ๆ ของคุณnix-shell -p blackbox
pkgin in scm-blackbox
ชื่อ: | คำอธิบาย: |
---|---|
blackbox_edit <file> | DECRYPT เรียกใช้ $ editor, เข้ารหัสไฟล์ใหม่ |
blackbox_edit_start <file> | ถอดรหัสไฟล์เพื่อให้สามารถอัปเดตได้ |
blackbox_edit_end <file> | เข้ารหัสไฟล์หลังจากใช้ blackbox_edit_start |
blackbox_cat <file> | ถอดรหัสและดูเนื้อหาของไฟล์ |
blackbox_view <file> | เช่น blackbox_cat แต่ท่อให้ less หรือ $ pager |
blackbox_diff | ไฟล์ถอดรหัส diff กับเวอร์ชัน Crypted ดั้งเดิมของพวกเขา |
blackbox_initialize | เปิดใช้งาน blackbox สำหรับ git หรือ hg repo |
blackbox_register_new_file <file> | เข้ารหัสไฟล์เป็นครั้งแรก |
blackbox_deregister_file <file> | ลบไฟล์จาก BlackBox |
blackbox_list_files | แสดงรายการไฟล์ที่ดูแลโดย blackbox |
blackbox_list_admins | ผู้ดูแลรายการที่ได้รับอนุญาตสำหรับ BlackBox ปัจจุบัน |
blackbox_decrypt_file <file> | ถอดรหัสไฟล์ |
blackbox_decrypt_all_files | ถอดรหัสไฟล์ที่มีการจัดการทั้งหมด (แบบโต้ตอบ) |
blackbox_postdeploy | ถอดรหัสไฟล์ที่มีการจัดการทั้งหมด (แบทช์) |
blackbox_addadmin <gpg-key> | เพิ่มคนในรายชื่อคนที่สามารถเข้ารหัส/ถอดรหัสความลับ |
blackbox_removeadmin <gpg-key> | ลบคนออกจากรายชื่อคนที่สามารถเข้ารหัส/ถอดรหัสความลับ |
blackbox_shred_all_files | ลบไฟล์ที่ถอดรหัสได้อย่างปลอดภัย |
blackbox_update_all_files | ถอดรหัสแล้วเข้ารหัสไฟล์ทั้งหมดอีกครั้ง มีประโยชน์หลังจากเปลี่ยนกุญแจ |
blackbox_whatsnew <file> | แสดงสิ่งที่มีการเปลี่ยนแปลงในการประชุมครั้งสุดท้ายสำหรับไฟล์ที่กำหนด |
Blackbox จะกำหนด VC ที่คุณใช้โดยอัตโนมัติและทำสิ่งที่ถูกต้อง มันมีสถาปัตยกรรมปลั๊กอินเพื่อให้ง่ายต่อการทำงานกับระบบอื่น ๆ มันได้รับการทดสอบเพื่อทำงานกับระบบปฏิบัติการหลายระบบ
git
- The Githg
- Mercurialsvn
- การโค่นล้ม (ขอบคุณ Ben Drasin!)p4
- perforce.blackbox
ยังคงอยู่ ในการเพิ่มหรือแก้ไขการสนับสนุนสำหรับระบบ VCS ให้ค้นหารหัสในตอนท้ายของ bin/_blackbox_common.sh
ในการเพิ่มหรือแก้ไขการสนับสนุนสำหรับระบบปฏิบัติการใหม่ให้ค้นหาคำสั่งกรณีใน bin/_blackbox_common.sh
และ bin/_stack_lib.sh
และอาจเป็น tools/confidence_test.sh
Blackbox สามารถใช้กับ Cygwin, MingW หรือ WSL2
Blackbox สันนิษฐานว่า blackbox-admins.txt
และ blackbox-files.txt
จะมี LF Line Endings ผู้ใช้ Windows ควรระมัดระวังในการกำหนดค่า GIT หรือระบบอื่น ๆ เพื่อไม่แปลงหรือ "แก้ไข" ไฟล์เหล่านั้น
หากคุณใช้ Git ให้เพิ่มบรรทัดต่อไปนี้ในไฟล์ .gitattributes
ของคุณ:
**/blackbox-admins.txt text eol=lf
**/blackbox-files.txt text eol=lf
เวอร์ชันล่าสุดของ blackbox_initialize
จะสร้างไฟล์ .gitattributes
ในไดเรกทอรี $BLACKBOXDATA
(โดยปกติ .blackbox
) สำหรับคุณ
การสนับสนุน Cygwin ต้องการแพ็คเกจต่อไปนี้:
การทำงานปกติ:
การพัฒนา (ถ้าคุณจะเพิ่มรหัสและต้องการเรียกใช้การทดสอบความมั่นใจ)
การสนับสนุน Mingw (มาพร้อมกับ Git for Windows) ต้องการสิ่งต่อไปนี้:
การทำงานปกติ:
MINTTY
แทนคอนโซล Windows คุณจะดำเนินการ Blackbox จากพรอมต์ Git Bashdownload.bat
เมื่อเสร็จสิ้นการติดตั้ง install.bat
จากนั้นเพิ่มเส้นทางสำหรับเครื่องมือเหล่านั้นไปยังเส้นทางของคุณ (เช่น: PATH=%PATH%;c:GnuWin32bin
)การพัฒนา:
make test
)หากคุณได้รับข้อผิดพลาดต่อไปนี้ใน WSL2 คุณสามารถลองตั้งค่าสภาพแวดล้อมของคุณด้วยคำแนะนำต่อไปนี้ (ทดสอบกับ Ubuntu 22.04 บน WSL2):
~/.gnupg/gpg-agent.conf
บน WSL และเพิ่มบรรทัดต่อไปนี้: pinentry-program "/mnt/c/Program Files (x86)/GnuPG/bin/pinentry-basic.exe"
gpg-connect-agent reloadagent /bye
GPG มีวิธีที่แตกต่างกันในการเข้ารหัสไฟล์ BlackBox ใช้โหมดที่ให้คุณระบุรายการคีย์ที่สามารถถอดรหัสข้อความได้
หากคุณมี 5 คน ("ผู้ดูแลระบบ") ที่ควรเข้าถึงความลับแต่ละคนสร้างคีย์ GPG และเพิ่มคีย์สาธารณะของพวกเขาลงในพวงกุญแจ คำสั่ง gpg ที่ใช้ในการเข้ารหัสไฟล์แสดงชื่อคีย์ทั้ง 5 ชื่อและดังนั้นคีย์ 1 ใด ๆ จึงสามารถถอดรหัสไฟล์ได้
หากต้องการลบการเข้าถึงของใครบางคนให้ลบชื่อคีย์ของผู้ดูแลระบบ (เช่นที่อยู่อีเมล) ออกจากรายชื่อผู้ดูแลระบบและเข้ารหัสไฟล์ทั้งหมดอีกครั้ง พวกเขายังสามารถอ่านไฟล์. gpg (สมมติว่าพวกเขาสามารถเข้าถึงที่เก็บ) แต่พวกเขาไม่สามารถถอดรหัสได้อีก
ถ้าพวกเขาเก็บสำเนา repo เก่าก่อนที่คุณจะลบการเข้าถึง ใช่พวกเขาสามารถถอดรหัสไฟล์รุ่นเก่าได้ นี่คือเหตุผลที่เมื่อผู้ดูแลระบบออกจากทีมคุณควรเปลี่ยนรหัสผ่านทั้งหมดของคุณใบรับรอง SSL และอื่น ๆ คุณควรทำอย่างนั้นก่อน Blackbox ใช่ไหม?
ทำไมคุณไม่ใช้คีย์สมมาตร? กล่าวอีกนัยหนึ่งว่าทำไมต้องยุ่งกับสิ่งที่คีย์ GPG ทั้งหมดนี้และทำไมเราไม่เข้ารหัสไฟล์ทั้งหมดด้วยข้อความรหัสผ่านเดียว ใช่ GPG สนับสนุนสิ่งนั้น แต่จากนั้นเรากำลังจัดการรหัสผ่านที่ใช้ร่วมกันซึ่งเต็มไปด้วยปัญหา หากใครบางคน "ออกจากทีม" เราจะต้องสื่อสารรหัสผ่านใหม่ให้ทุกคน ตอนนี้เราแค่ต้องลบคีย์ของพวกเขา เครื่องชั่งนี้ดีขึ้น
กระบวนการอัตโนมัติถอดรหัสได้อย่างไรโดยไม่ต้องขอรหัสผ่าน GPG ต้องการวลีรหัสผ่านในคีย์ส่วนตัว อย่างไรก็ตามมันอนุญาตให้มีการสร้างคีย์ย่อยที่ไม่มีวลีรหัสผ่าน สำหรับกระบวนการอัตโนมัติให้สร้างคีย์ย่อยที่เก็บไว้ในเครื่องที่ต้องการถอดรหัสไฟล์เท่านั้น ตัวอย่างเช่นที่ Stack Exchange เมื่อระบบ Integration (CI) ของเราผลักดันการเปลี่ยนรหัสไปยัง Masters Puppet ของเราพวกเขาเรียกใช้ blackbox_postdeploy
เพื่อถอดรหัสไฟล์ทั้งหมด ผู้ใช้ที่เรียกใช้รหัสนี้มีคีย์ย่อยที่ไม่ต้องการวลีรหัสผ่าน เนื่องจากเรามีอาจารย์หลายคนแต่ละคนจึงมีกุญแจของตัวเอง และใช่นี่หมายความว่าอาจารย์หุ่นเชิดของเราจะต้องปลอดภัยมาก อย่างไรก็ตามพวกเขามีความปลอดภัยอยู่แล้วเพราะเหมือนเพื่อน ... ถ้าคุณสามารถบุกเข้าไปในอาจารย์หุ่นเชิดของใครบางคนคุณเป็นเจ้าของเครือข่ายของพวกเขา
ถ้าคุณใช้หุ่นเชิดทำไมคุณไม่ใช้ Hiera-Eyaml? มี 4 เหตุผล:
eval $(gpg-agent --daemon)
blackbox_edit_start FILENAME
vim FILENAME
blackbox_edit_end FILENAME
git commit -a
หรือ hg commit
เดี๋ยวก่อน ... มันอาจจะง่ายกว่านั้น! เรียกใช้ blackbox_edit FILENAME
และมันจะถอดรหัสไฟล์ในไฟล์ TEMP และโทรไปที่ $EDITOR
บนมันอีกครั้งเข้ารหัสอีกครั้งหลังจากปิดตัวแก้ไข
ANSIBLE VAULT ให้ฟังก์ชั่นสำหรับการเข้ารหัสทั้งไฟล์และสตริงทั้งหมดที่เก็บไว้ในไฟล์ อย่างไรก็ตามการติดตามรหัสผ่านที่จำเป็นสำหรับการถอดรหัสไม่ได้รับการจัดการโดยโมดูลนี้
แทนที่จะต้องระบุไฟล์รหัสผ่านเมื่อเรียกใช้ playbook
ตัวอย่าง ANSIBLE สำหรับไฟล์รหัสผ่าน: my_secret_password.txt.gpg
ansible-playbook --vault-password-file my_secret_password.txt site.yml
อีกทางเลือกหนึ่งสามารถระบุสิ่งนี้ในตัวแปรสภาพแวดล้อม ANSIBLE_VAULT_PASSWORD_FILE
ไฟล์ทั้งหมดเช่น SSL Certs และคีย์ส่วนตัวได้รับการปฏิบัติเช่นเดียวกับไฟล์ปกติ คุณถอดรหัสพวกเขาได้ตลอดเวลาที่คุณผลักดันรีลีสใหม่ไปยังอาจารย์หุ่นเชิด
ตัวอย่างหุ่นกระบอกสำหรับไฟล์ที่เข้ารหัส: secret_file.key.gpg
file { '/etc/my_little_secret.key':
ensure => 'file',
owner => 'root',
group => 'puppet',
mode => '0760',
source => "puppet:///modules/${module_name}/secret_file.key",
}
สตริงขนาดเล็กเช่นรหัสผ่านและปุ่ม API จะถูกเก็บไว้ในไฟล์ Hiera Yaml ซึ่งคุณเข้ารหัสด้วย blackbox_register_new_file
ตัวอย่างเช่นเราใช้ไฟล์ที่เรียกว่า blackbox.yaml
คุณสามารถเข้าถึงได้โดยใช้ฟังก์ชัน Hiera ()
การตั้งค่า: กำหนดค่า hiera.yaml
โดยการเพิ่ม "blackbox" ลงในลำดับชั้นการค้นหา:
:hierarchy:
- ...
- blackbox
- ...
ใน blackbox.yaml ระบุ:
---
module::test_password: "my secret password"
ในรหัสหุ่นเชิดของคุณเข้าถึงรหัสผ่านเช่นเดียวกับข้อมูล Hiera ใด ๆ :
$the_password = hiera('module::test_password', 'fail')
file {'/tmp/debug-blackbox.txt':
content => $the_password,
owner => 'root',
group => 'root',
mode => '0600',
}
ตัวแปร $the_password
จะมี "รหัสผ่านลับของฉัน" และสามารถใช้งานได้ทุกที่
eval $(gpg-agent --daemon)
blackbox_register_new_file path/to/file.name.key
สามารถระบุชื่อไฟล์หลายชื่อในบรรทัดคำสั่ง:
ตัวอย่างที่ 1: ลงทะเบียน 2 ไฟล์:
blackbox_register_new_file file1.txt file2.txt
ตัวอย่างที่ 2: ลงทะเบียนไฟล์ทั้งหมดใน $DIR
:
find $DIR -type f -not -name '*.gpg' -print0 | xargs -0 blackbox_register_new_file
สิ่งนี้เกิดขึ้นค่อนข้างน้อย แต่เราได้รับมันครอบคลุม:
blackbox_deregister_file path/to/file.name.key
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
.blackbox/blackbox-admins.txt
เป็นไฟล์ที่แสดงรายการที่ผู้ใช้สามารถถอดรหัสไฟล์ได้ (มากขึ้นเรื่อย ๆ มันเป็นรายการของชื่อคีย์ GNUPG ที่ไฟล์ถูกเข้ารหัส))
ในการเข้าร่วมรายการคนที่สามารถแก้ไขไฟล์ต้องใช้สามขั้นตอน คุณสร้างคีย์ GPG และเพิ่มลงในวงแหวนคีย์ จากนั้นคนที่มีการเข้าถึงเพิ่มคุณเข้าสู่ระบบ สุดท้ายคุณควรทดสอบการเข้าถึงของคุณ
หากคุณยังไม่มีคีย์ GPG นี่คือวิธีการสร้าง:
gpg --gen-key
คำเตือน: GPG เวอร์ชันใหม่สร้างคีย์ซึ่งไม่เข้าใจโดย GPG รุ่นเก่า หากคุณสร้างคีย์ด้วย GPG เวอร์ชันใหม่สิ่งนี้จะทำให้เกิดปัญหาสำหรับผู้ใช้ GPG รุ่นเก่า ดังนั้นจึงขอแนะนำให้คุณรับรองว่าทุกคนที่ใช้ Blackbox มี GPG รุ่นเดียวกันหรือสร้างคีย์ GPG โดยใช้ GPG เวอร์ชันเก่าแก่เท่า GPG รุ่นเก่าที่สุดที่ทุกคนใช้โดยใช้ Blackbox
เลือกค่าเริ่มต้นสำหรับการตั้งค่าการเข้ารหัส, 0 หมดอายุ เลือกวลีรหัสผ่านที่ดีมาก เก็บข้อมูลสำรองของคีย์ส่วนตัวบางแห่งที่ปลอดภัย ตัวอย่างเช่นเก็บสำเนาสำรองไว้ในไดรฟ์ USB ที่ล็อคไว้ในความปลอดภัย หรืออย่างน้อยก็ใส่ไว้ในเครื่องที่ปลอดภัยที่มีการเข้าถึงอินเทอร์เน็ตเพียงเล็กน้อยหรือไม่มีเลยการเข้ารหัสเต็มดิสก์ ฯลฯ นายจ้างของคุณอาจมีกฎเกี่ยวกับวิธีการจัดเก็บสิ่งต่าง ๆ
FYI: หากการสร้างคีย์ช้านี่เป็นเพราะระบบไม่ได้สร้างเอนโทรปีเพียงพอ เคล็ดลับ: เปิดหน้าต่างอื่นบนเครื่องนั้นและเรียกใช้คำสั่งนี้: ls -R /
ตอนนี้คุณมีคีย์ GPG แล้วเพิ่มตัวเองเป็นผู้ดูแลระบบ:
blackbox_addadmin KEYNAME
... ที่ "KeyName" คือที่อยู่อีเมลที่ระบุไว้ในคีย์ GPG ที่คุณสร้างไว้ก่อนหน้านี้ ตัวอย่างเช่น:
blackbox_addadmin [email protected]
เมื่อคำสั่งเสร็จสมบูรณ์คำแนะนำเกี่ยวกับวิธีการเปลี่ยนแปลงการเปลี่ยนแปลงเหล่านี้จะถูกส่งออก เรียกใช้คำสั่งตามที่กำหนดให้กระทำการเปลี่ยนแปลง มันจะมีลักษณะเช่นนี้:
git commit -m'NEW ADMIN: [email protected]' .blackbox/pubring.gpg .blackbox/trustdb.gpg .blackbox/blackbox-admins.txt
จากนั้นผลักมันไปที่ repo:
git push
or
ht push
(or whatever is appropriate)
หมายเหตุ: การสร้างบัญชีบทบาท? หากคุณกำลังเพิ่ม pubring.gpg ของบัญชีบทบาทคุณสามารถระบุไดเรกทอรีที่ไฟล์ pubring.gpg สามารถพบได้เป็นพารามิเตอร์ที่ 2: blackbox_addadmin [email protected] /path/to/the/dir
ถามคนที่สามารถเข้าถึงไฟล์ข้อมูลอีกครั้งแล้ว สิ่งนี้ช่วยให้คุณเข้าถึงได้ พวกเขาเพียงแค่ถอดรหัสและเข้ารหัสข้อมูลอีกครั้งโดยไม่ต้องทำการเปลี่ยนแปลงใด ๆ
ตรวจสอบล่วงหน้า: ตรวจสอบคีย์ใหม่ดูดี
git pull # Or whatever is required for your system
gpg --homedir=.blackbox --list-keys
ตัวอย่างเช่นตรวจสอบชื่อคีย์ (ที่อยู่อีเมล) เพื่อให้แน่ใจว่าเป็นไปตามมาตรฐานขององค์กร
นำเข้าพวงกุญแจเข้าไปในพวงกุญแจส่วนตัวของคุณและเข้ารหัสใหม่:
gpg --import .blackbox/pubring.gpg
blackbox_update_all_files
กดไฟล์ที่เข้ารหัสอีกครั้ง:
git commit -a
git push
or
hg commit
hg push
ตรวจสอบให้แน่ใจว่าคุณสามารถถอดรหัสไฟล์ได้ (ข้อเสนอแนะ: เก็บไฟล์ดัมมี่ไว้ใน VCS เพื่อให้คนใหม่ฝึกซ้อม)
เพียงเรียกใช้ blackbox_removeadmin
ด้วยชื่อสำคัญของพวกเขาจากนั้นเข้ารหัสอีกครั้ง:
ตัวอย่าง:
blackbox_removeadmin [email protected]
blackbox_update_all_files
เมื่อคำสั่งเสร็จสมบูรณ์คุณจะได้รับการเตือนให้ตรวจสอบการเปลี่ยนแปลงและผลักดัน
โปรดทราบว่ากุญแจของพวกเขาจะยังคงอยู่ในวงแหวนคีย์ แต่พวกเขาจะไม่ได้ใช้ หากคุณต้องการทำความสะอาดพวงมาลัยให้ใช้คำสั่ง GPG ปกติและตรวจสอบในไฟล์
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
gpg --homedir=.blackbox --list-keys
gpg --homedir=.blackbox --delete-key [email protected]
git commit -m'Cleaned [email protected] from keyring' .blackbox/*
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
แหวนคีย์มีเพียงกุญแจสาธารณะ ไม่มีกุญแจลับในการลบ
โปรดจำไว้ว่าบุคคลนี้สามารถเข้าถึงความลับทั้งหมดได้ในคราวเดียว พวกเขาสามารถทำสำเนาได้ ดังนั้นเพื่อให้ปลอดภัยอย่างสมบูรณ์คุณควรเปลี่ยนรหัสผ่านทั้งหมดสร้างคีย์ SSL ใหม่และอื่น ๆ เช่นเดียวกับเมื่อทุกคนที่มีสิทธิ์เข้าถึงออกจากองค์กร
การตรวจสอบความน่าเชื่อถือของกุญแจเป็นงานที่ไม่สามารถทำได้โดย Blackbox; นี่เป็นหัวข้อภายนอกที่สมบูรณ์ที่จะต้องจัดการด้วยตนเอง (เช่นเดียวกับการสร้าง/จัดการคีย์ของคุณคือตัวอย่างเช่น) หรือโดยกลไกเฉพาะ (บริษัท CA ที่มีเวิร์กโฟลว์ที่สอดคล้องกันเช่น) นอกเหนือจากประโยชน์ "สามัญ" ของเว็บแห่งความไว้วางใจ (ดูที่นี่หรือที่นี่เช่น) มันป้องกันข้อผิดพลาดหลายประการเช่นกัน
ในอดีตแบล็กบ็อกซ์กำลังใช้และบังคับใช้โมเดล "เชื่อถือทุกคีย์" แต่สิ่งนี้เปลี่ยนไป! ตอนนี้การตัดสินใจว่าจะใช้โมเดล PGP/GPG Trust ได้อย่างไรและจะอยู่กับผู้ใช้โดยการกำหนดค่า (หรือโดยค่าเริ่มต้น PGP/GPG)
เมื่ออัปเดตคนแบล็กบ็อกซ์อาจพบปัญหาการทำงานหากพวกเขายังไม่ได้จัดการกับความทนทานของกุญแจที่พวกเขาใช้ เป็นเวลาที่เหมาะสมที่จะทำและสร้างเว็บแห่งความไว้วางใจของคุณตอนนี้!
หากคุณมีเวิร์กโฟลว์ภายนอกในสถานที่ที่ทำให้มั่นใจได้ถึงความสมบูรณ์ของคีย์แบล็กบ็อกซ์ที่ใช้คุณอาจต้องการปิดใช้งานโมเดล PGP/GPG Trust และพึ่งพาเวิร์กโฟลว์นี้
สิ่งนี้สามารถทำได้โดยการประกาศ "โมเดลความน่าเชื่อถือเสมอ" โดยผ่านพารามิเตอร์บรรทัดคำสั่ง --trust-model=always
เมื่อใช้ blackbox (โดยการกำหนดนามแฝงหรือใช้ตัวแปรสภาพแวดล้อม (เช่น GPG="gpg2 --trust-model=always"
) หรือการรวมกันของทั้งสอง) หรือโดยการตั้งค่า trust-model always
ใน gpg.conf
ของคุณ (โปรดทราบว่าสิ่งนี้ปิดการใช้งานเว็บแห่งความไว้วางใจทุกที่ไม่ใช่แค่ Blackbox)
คำเตือน: มันเป็นข้อเสียอย่างยิ่งที่จะไม่ใช้การตรวจสอบคีย์ใด ๆ เลย! นี่เป็นการเปิดวิธีต่าง ๆ เพื่อหลีกเลี่ยงการรักษาความลับของความลับที่เข้ารหัสของคุณ!
Blackbox จัดเก็บข้อมูลการกำหนดค่าในไดเรกทอรีย่อย .blackbox
repos เก่าใช้ keyrings/live
สำหรับความเข้ากันได้ย้อนหลังจะทำงานได้
เอกสารทั้งหมดหมายถึง. .blackbox
คุณสามารถแปลง repo เก่าได้เพียงแค่เปลี่ยนชื่อไดเรกทอรี:
mv keyrings/live .blackbox
rmdir keyrings
ไม่มีเหตุผลทางเทคนิคในการแปลง repos เก่ายกเว้นว่ามีความสับสนน้อยกว่าผู้ใช้
การเปลี่ยนแปลงนี้เกิดขึ้นในการกระทำ 60E782A0, ปล่อย v1.20180615
รายละเอียด:
$BLACKBOXDATA
หากตั้งค่าตัวแปรสภาพแวดล้อมนี้นี่คือไดเรกทอรีที่จะใช้ หากแสดงรายการไดเรกทอรีที่ไม่มีอยู่ Blackbox จะพิมพ์ข้อผิดพลาดและออก$BLACKBOXDATA
: (ซึ่งเป็นกรณีการใช้งานทั่วไป)keyrings/live
ก่อนและใช้ถ้ามีอยู่.blackbox
จะถูกใช้ หากไม่มี .blackbox
Blackbox จะพิมพ์ข้อผิดพลาดและออกภาพรวม:
ในการเพิ่ม "blackbox" ลงใน git หรือ repo mercurial คุณจะต้องทำสิ่งต่อไปนี้:
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
คุณจะต้องรวมไดเรกทอรี "bin" ของ Blackbox ไว้ในเส้นทางของคุณ:
export PATH=$PATH:/the/path/to/blackbox/bin
blackbox_initialize
หากคุณใช้แอนติเจนการเพิ่ม antigen bundle StackExchange/blackbox
ใน. zshrc ของคุณจะดาวน์โหลดที่เก็บนี้และเพิ่มลงในเส้นทาง $ ของคุณ
ทำตามคำแนะนำสำหรับ "วิธีปลูกฝังผู้ใช้ใหม่เข้าสู่ระบบ?" ทำขั้นตอนที่ 1 เท่านั้น
เมื่อทำเสร็จแล้วเป็นความคิดที่ดีที่จะทดสอบระบบโดยตรวจสอบให้แน่ใจว่าสามารถเพิ่มไฟล์ลงในระบบ (ดู "วิธีการลงทะเบียนไฟล์ใหม่ลงในระบบ") และผู้ใช้รายอื่นสามารถถอดรหัสไฟล์ได้
สร้างไฟล์ใหม่และลงทะเบียน:
rm -f foo.txt.gpg foo.txt
echo This is a test. >foo.txt
blackbox_register_new_file foo.txt
ถอดรหัส:
blackbox_edit_start foo.txt.gpg
cat foo.txt
echo This is the new file contents. >foo.txt
เข้ารหัสอีกครั้ง:
blackbox_edit_end foo.txt.gpg
ls -l foo.txt*
คุณควรเห็น foo.txt.gpg
เป็นเพียง foo.txt
ควรหายไป
ขั้นตอนต่อไปคือการกระทำ foo.txt.gpg
และตรวจสอบให้แน่ใจว่าผู้ใช้รายอื่นสามารถตรวจสอบดูและเปลี่ยนเนื้อหาของไฟล์ ที่เหลือเป็นแบบฝึกหัดสำหรับผู้อ่าน หากคุณรู้สึกอยากเสี่ยงอย่ายอมรับ foo.txt.gpg
และลบออกแทน
นี่คือวิธีที่อาจารย์หุ่นเชิดสามารถเข้าถึงข้อมูลที่ไม่ได้เข้ารหัส
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
ผู้ใช้อัตโนมัติ ("บัญชีบทบาท") เป็นสิ่งที่จะต้องสามารถถอดรหัสได้โดยไม่ต้องใช้ข้อความรหัสผ่าน โดยทั่วไปคุณจะต้องทำสิ่งนี้สำหรับผู้ใช้ที่ดึงไฟล์จาก repo ไปยังต้นแบบ นี่อาจเป็นไปโดยอัตโนมัติด้วย Jenkins CI หรือระบบ CI อื่น ๆ
คีย์ GPG ต้องมีข้อความรหัสผ่าน อย่างไรก็ตาม passphrases เป็นตัวเลือกบนก้นย่อย ดังนั้นเราจะสร้างคีย์ที่มีข้อความรหัสผ่านจากนั้นสร้างคีย์ย่อยโดยไม่มีวลีรหัสผ่าน เนื่องจากคีย์ย่อยมีประสิทธิภาพมากจึงควรสร้างบนเครื่องที่ปลอดภัยมาก
มีการจับอีกครั้ง บัญชีบทบาทอาจไม่สามารถตรวจสอบไฟล์ใน Git/Mercurial ได้ มันอาจจะมีการเข้าถึง repo แบบอ่านอย่างเดียวเท่านั้น นั่นเป็นนโยบายความปลอดภัยที่ดี ซึ่งหมายความว่าไม่สามารถใช้บัญชีบทบาทเพื่ออัปโหลดบิตสาธารณะย่อยไปยัง repo
ดังนั้นเราจะสร้างคีย์/คีย์ย่อยบนเครื่องที่ปลอดภัยเช่นเดียวกับตัวคุณเอง จากนั้นเราสามารถมอบส่วนสาธารณะให้เป็น repo นอกจากนี้จากบัญชีนี้เราจะส่งออกชิ้นส่วนที่บัญชีบทบาทต้องการคัดลอกไปยังตำแหน่งที่บัญชีบทบาทสามารถเข้าถึงพวกเขาและนำเข้าเป็นบัญชีบทบาท
Protip: หากถูกขอให้สร้างเอนโทรปีให้พิจารณาเรียกใช้สิ่งนี้บนเครื่องเดียวกันในหน้าต่างอื่น: sudo dd if=/dev/sda of=/dev/null
สำหรับส่วนที่เหลือของเอกสารนี้คุณจะต้องทำการทดแทนต่อไปนี้:
หมายเหตุ: สิ่งนี้ควรเป็นแบบอัตโนมัติ/สคริปต์มากขึ้น แพตช์ยินดีต้อนรับ
บน SecureHost สร้างปุ่มของ Puppet Master:
$ mkdir /tmp/NEWMASTER
$ cd /tmp/NEWMASTER
$ gpg --homedir . --gen-key
Your selection?
(1) RSA and RSA (default)
What keysize do you want? (2048) DEFAULT
Key is valid for? (0) DEFAULT
# Real name: Puppet CI Deploy Account
# Email address: [email protected]
หมายเหตุ: แทนที่จะเป็นที่อยู่อีเมลจริงให้ใช้ชื่อผู้ใช้@fqdn ของโฮสต์คีย์จะถูกใช้ หากคุณใช้บัญชีบทบาทนี้ในเครื่องจักรหลายเครื่องแต่ละเครื่องควรมีคีย์ของตัวเอง ด้วยการใช้ FQDN ของโฮสต์คุณจะสามารถรู้ได้ว่าคีย์คือไหน ในเอกสารนี้เราจะอ้างถึงชื่อผู้ใช้@fqdn เป็น $ keyname
บันทึกข้อความรหัสผ่านที่ไหนสักแห่งที่ปลอดภัย!
สร้างคีย์ย่อยที่ไม่มีรหัสผ่าน:
$ gpg --homedir . --edit-key svc_deployacct
gpg> addkey
(enter passphrase)
Please select what kind of key you want:
(3) DSA (sign only)
(4) RSA (sign only)
(5) Elgamal (encrypt only)
(6) RSA (encrypt only)
Your selection? 6
What keysize do you want? (2048)
Key is valid for? (0)
Command> key 2
(the new subkey has a "*" next to it)
Command> passwd
(enter the main key's passphrase)
(enter an empty passphrase for the subkey... confirm you want to do this)
Command> save
ตอนนี้ส่งออกไดเรกทอรีนี้อย่างปลอดภัยไปยัง Newmaster:
gpg --homedir . --export -a svc_sadeploy >/tmp/NEWMASTER/pubkey.txt
tar cvf /tmp/keys.tar .
rsync -avP /tmp/keys.tar NEWMASTER:/tmp/.
ใน Newmaster รับ GNUPG config ใหม่:
sudo -u svc_deployacct bash
mkdir -m 0700 -p ~/.gnupg
cd ~/.gnupg && tar xpvf /tmp/keys.tar
กลับไปที่ SecureHost เพิ่มที่อยู่อีเมลใหม่ลงใน. blackbox/blackbox-admins.txt:
cd /path/to/the/repo
blackbox_addadmin $KEYNAME /tmp/NEWMASTER
ตรวจสอบว่า secring.gpg เป็นไฟล์ที่ไม่มีความยาว หากไม่ใช่คุณจะเพิ่มคีย์ส่วนตัวลงในพวงมาลัย เริ่มต้นใหม่
cd .blackbox
ls -l secring.gpg
กระทำการเปลี่ยนแปลงล่าสุด:
cd .blackbox
git commit -m"Adding key for KEYNAME" pubring.gpg trustdb.gpg blackbox-admins.txt
สร้างไฟล์ที่เข้ารหัสใหม่ทั้งหมดด้วยคีย์ใหม่:
blackbox_update_all_files
git status
git commit -m"updated encryption" -a
git push
ใน Newmaster นำเข้าคีย์และถอดรหัสไฟล์:
sudo -u svc_sadeploy bash # Become the role account.
gpg --import /etc/puppet/.blackbox/pubring.gpg
export PATH=$PATH:/path/to/blackbox/bin
blackbox_postdeploy
sudo -u puppet cat /etc/puppet/hieradata/blackbox.yaml # or any encrypted file.
Protip: หากคุณได้รับ "GPG: การถอดรหัสล้มเหลว: ไม่มีรหัสลับ" คุณลืมที่จะเข้ารหัส BlackBox.yaml อีกครั้งด้วยคีย์ใหม่
บน SecureHost ลบไฟล์ของคุณอย่างปลอดภัย:
cd /tmp/NEWMASTER
# On machines with the "shred" command:
shred -u /tmp/keys.tar
find . -type f -print0 | xargs -0 shred -u
# All else:
rm -rf /tmp/NEWMASTER
ยังทำลายไฟล์ชั่วคราวอื่น ๆ ที่คุณอาจทำ
หากคีย์ของใครบางคนหมดอายุแล้ว Blackbox จะหยุดเข้ารหัส คุณเห็นข้อผิดพลาดนี้:
$ blackbox_edit_end modified_file.txt
--> Error: can't re-encrypt because a key has expired.
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
นอกจากนี้คุณยังสามารถตรวจจับคีย์ที่กำลังจะหมดอายุโดยการออกคำสั่งนี้และตรวจสอบ "หมดอายุ:" ด้วยตนเอง: วันที่:
gpg --homedir=.blackbox --list-keys
หรือ ... รายการ uids ที่จะหมดอายุภายใน 1 เดือนนับจากวันนี้: (คำเตือน: นอกจากนี้ยังแสดงรายการคีย์โดยไม่มีวันหมดอายุ)
gpg --homedir=.blackbox --list-keys --with-colons --fixed-list-mode | grep ^uid | awk -F: '$6 < '$(( $(date +%s) + 2592000))
นี่คือวิธีการแทนที่คีย์:
คำเตือน: กระบวนการนี้จะลบไฟล์ที่ไม่ได้เข้ารหัสใด ๆ ที่คุณอยู่ในกระบวนการแก้ไข คัดลอกไปที่อื่นและกู้คืนการเปลี่ยนแปลงเมื่อเสร็จสิ้น
blackbox_removeadmin [email protected]
# This next command overwrites any changed unencrypted files. See warning above.
blackbox_update_all_files
git commit -m "Re-encrypt all files"
gpg --homedir=.blackbox --delete-key [email protected]
git commit -m 'Cleaned [email protected] from keyring' .blackbox/*
git push
git pull
blackbox_addadmin [email protected]
git commit -m'NEW ADMIN: [email protected] .blackbox/pubring.gpg .blackbox/trustdb.gpg .blackbox/blackbox-admins.txt
git push
git pull
gpg --import .blackbox/pubring.gpg
blackbox_update_all_files
git commit -m "Re-encrypt all files"
git push
ไฟล์ใด ๆ ที่ถูกคัดลอกชั่วคราวในขั้นตอนแรกเพื่อที่จะไม่ถูกเขียนทับตอนนี้สามารถคัดลอกกลับและเข้ารหัสอีกครั้งด้วยคำสั่ง blackbox_edit_end
(ขอบคุณ @chishaku สำหรับการหาวิธีแก้ปัญหานี้!)
เป็นไปได้ที่จะบอก Git ให้ถอดรหัสไฟล์เวอร์ชันก่อนที่จะเรียกใช้ผ่าน git diff
หรือ git log
เพื่อให้บรรลุเป้าหมายนี้:
.gitattributes
ที่ด้านบนของที่เก็บ Git: *.gpg diff=blackbox
.git/config
: [diff "blackbox"]
textconv = gpg --use-agent -q --batch --decrypt
และตอนนี้คำสั่งเช่น git log -p file.gpg
จะแสดงบันทึกที่ดีของการเปลี่ยนแปลงในไฟล์ที่เข้ารหัส
gpg: filename: skipped: No public key
-โดยปกติจะหมายความว่ามีรายการใน .blackbox/blackbox-admins.txt
ที่ไม่ใช่ชื่อของคีย์ บางสิ่งที่ไม่ถูกต้องถูกแทรก (เช่นชื่อไฟล์แทนชื่อผู้ใช้) หรือผู้ใช้ได้ออกจากองค์กรและคีย์ของพวกเขาถูกลบออกจากพวงกุญแจ แต่ชื่อของพวกเขาไม่ได้ถูกลบออกจากไฟล์ blackbox-admins.txt
gpg: decryption failed: No secret key
-โดยปกติแล้วคุณจะลืมที่จะเข้ารหัสไฟล์ด้วยคีย์ใหม่อีกครั้ง
Error: can't re-encrypt because a key has expired.
- คีย์ของผู้ใช้หมดอายุและไม่สามารถใช้เพื่อเข้ารหัสได้อีกต่อไป ทำตามเคล็ดลับการแทนที่คีย์ที่หมดอายุ
FYI: repo ของคุณอาจใช้ keyrings/live
แทน. .blackbox
ดู "การกำหนดค่าจัดเก็บไว้ที่ไหน"
หากไฟล์ถูกคัดลอกออกจาก repo พวกเขายังสามารถถอดรหัสและแก้ไขได้ เห็นได้ชัดว่าการแก้ไขการเปลี่ยนแปลงของกุญแจและจะหายไปหากพวกเขาทำนอก repo โปรดทราบว่าคำสั่งมักจะทำงานได้ก็ต่อเมื่อเรียกใช้จากไดเรกทอรีพื้นฐาน (เช่นพาเรนต์ไปยังไดเรกทอรี. blackbox)
คำสั่งต่อไปนี้ได้รับการทดสอบนอก repo:
blackbox_postdeploy
blackbox_edit_start
blackbox_edit_end
การใช้งานปัจจุบันจะจัดเก็บ blackbox in /keyrings
ที่รากของ repo ทั้งหมด สิ่งนี้จะสร้างปัญหาระหว่างสภาพแวดล้อมที่มีรากที่แตกต่างกัน (เช่นการตรวจสอบ /
เกี่ยวกับการพัฒนา vs /releases/foo
ในการผลิต) ในการรับสิ่งนี้คุณสามารถ export BLACKBOX_REPOBASE=/path/to/repo
และตั้งค่าฐานเฉพาะสำหรับ repo ของคุณ
สิ่งนี้ถูกเขียนขึ้นเพื่อ GIT และสนับสนุนการกระทำสองเฟสซึ่ง commit
เป็นการกระทำในท้องถิ่นและ "พุช" ส่งการเปลี่ยนแปลงต้นน้ำไปยังเซิร์ฟเวอร์ควบคุมเวอร์ชันเมื่อมีการลงทะเบียนหรือลงทะเบียนกับระบบ การใช้งานปัจจุบันจะ commit
ไฟล์ทันที (ไปยังเซิร์ฟเวอร์การโค่นล้มอัปสตรีม) เมื่อคุณเรียกใช้คำสั่ง blackbox_*
ในบางสถานการณ์สมาชิกในทีมหรือบทบาทอัตโนมัติจำเป็นต้องติดตั้ง GPG 2.x ควบคู่ไปกับระบบ GPG เวอร์ชัน 1.x เพื่อให้ทันกับรุ่น GPG ของทีม ใน Ubuntu 16 คุณสามารถ apt-get install gnupg2
ซึ่งติดตั้ง Binary GPG2 หากคุณต้องการใช้ไบนารี GPG2 นี้ให้เรียกใช้คำสั่ง blackbox ทุกคำด้วย gpg = gpg2
ตัวอย่างเช่น:
GPG=gpg2 blackbox_postdeploy
เรายินดีต้อนรับคำถามรายงานข้อผิดพลาดและข้อเสนอแนะ!
จุดเริ่มต้นที่ดีที่สุดคือการเข้าร่วมรายชื่อผู้รับจดหมาย Blackbox และถามที่นั่น
แมลงถูกติดตามที่นี่ใน GitHub โปรดอย่าลังเลที่จะรายงานข้อบกพร่องด้วยตัวเอง
การส่งรหัสได้รับการต้อนรับอย่างมีความสุข! รหัสอ่านง่ายพอสมควร
รับรหัส:
git clone [email protected]:StackExchange/blackbox.git
ทดสอบการเปลี่ยนแปลงของคุณ:
make confidence
สิ่งนี้ดำเนินการผ่านการทดสอบระบบจำนวนมาก มันสร้าง repo, เข้ารหัสไฟล์, ถอดรหัสไฟล์และอื่น ๆ คุณสามารถเรียกใช้การทดสอบเหล่านี้เพื่อตรวจสอบว่าการเปลี่ยนแปลงที่คุณทำไม่ได้ทำลายอะไรเลย คุณยังสามารถใช้การทดสอบเหล่านี้เพื่อตรวจสอบว่าระบบทำงานกับระบบปฏิบัติการใหม่
กรุณาส่งการทดสอบด้วยการเปลี่ยนแปลงรหัส:
วิธีที่ดีที่สุดในการเปลี่ยนแบล็กบ็อกซ์คือการพัฒนาที่ขับเคลื่อนด้วยการทดสอบ ก่อนอื่นเพิ่มการทดสอบลงใน tools/confidence.sh
การทดสอบนี้ควรล้มเหลวและแสดงให้เห็นถึงความจำเป็นในการเปลี่ยนแปลงที่คุณกำลังจะทำ จากนั้นแก้ไขข้อผิดพลาดหรือเพิ่มคุณสมบัติที่คุณต้องการ เมื่อคุณทำเสร็จแล้ว make confidence
ควรผ่านการทดสอบทั้งหมด PR ที่คุณส่งควรรวมถึงรหัสของคุณรวมถึงการทดสอบใหม่ วิธีนี้การทดสอบความเชื่อมั่นสะสมเมื่อระบบเติบโตขึ้นเมื่อเรารู้ว่าการเปลี่ยนแปลงในอนาคตไม่ได้ทำลายคุณสมบัติเก่า ๆ
หมายเหตุ: การทดสอบในปัจจุบันถือว่า "Git" และได้รับการทดสอบเฉพาะใน CentOS, Mac OS X และ Cygwin เท่านั้น แพทช์ยินดีต้อนรับ!
นี่คือแพ็คเกจโอเพนซอร์สอื่น ๆ ที่ทำสิ่งที่คล้ายกับ Blackbox หากคุณชอบพวกเขาดีกว่า Blackbox โปรดใช้พวกเขา
Git-Crypt มีการรวม GIT ที่ดีที่สุด เมื่อตั้งค่าแล้วมันเกือบจะโปร่งใสสำหรับผู้ใช้ อย่างไรก็ตามมันใช้งานได้กับ Git เท่านั้น
เนื้อหานี้ถูกปล่อยออกมาภายใต้ใบอนุญาต MIT ดูไฟล์ licence.txt