สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสถานะของโครงการและ SLA โปรดดูเอกสารนี้
Chef InSpec เป็นเฟรมเวิร์กการทดสอบโอเพ่นซอร์สสำหรับโครงสร้างพื้นฐานด้วยภาษาที่มนุษย์และเครื่องสามารถอ่านได้ เพื่อระบุข้อกำหนดด้านการปฏิบัติตามข้อกำหนด ความปลอดภัย และนโยบาย
# Disallow insecure protocols by testing
describe package ( 'telnetd' ) do
it { should_not be_installed }
end
describe inetd_conf do
its ( "telnet" ) { should eq nil }
end
Chef InSpec ทำให้การทดสอบของคุณเป็นเรื่องง่ายทุกที่ที่คุณต้องการ พบตัวเลือกเพิ่มเติมในเอกสาร CLI ของเรา
# run test locally
inspec exec test.rb
# run test on remote host via SSH
inspec exec test.rb -t ssh://user@hostname -i /path/to/key
# run test on remote host using SSH agent private key authentication. Requires Chef InSpec 1.7.1
inspec exec test.rb -t ssh://user@hostname
# run test on remote windows host via WinRM
inspec exec test.rb -t winrm://Administrator@windowshost --password ' your-password '
# run test on remote windows host via WinRM as a domain user
inspec exec test.rb -t winrm://windowshost --user ' UserName@domain ' --password ' your-password '
# run test on docker container
inspec exec test.rb -t docker://container_id
Chef InSpec ต้องใช้ Ruby ( >= 3.0.3 )
Chef InSpec (4.0 ขึ้นไป) เวอร์ชันที่รองรับทั้งหมดในปัจจุบันจำเป็นต้องยอมรับ EULA เพื่อใช้งาน โปรดไปที่หน้าการยอมรับใบอนุญาตบนเว็บไซต์ Chef docs เพื่อดูข้อมูลเพิ่มเติม
แพ็คเกจ Chef InSpec พร้อมใช้งานสำหรับ MacOS, RedHat, Ubuntu และ Windows ดาวน์โหลดแพ็คเกจล่าสุดได้ที่ Chef InSpec Downloads หรือติดตั้ง Chef InSpec ผ่านสคริปต์:
# RedHat, Ubuntu, and macOS
curl https://chefdownload-commercial.chef.io/install.sh?license_id= | sudo bash -s -- -P inspec
# Windows
. { iwr -useb https://chefdownload-commercial.chef.io/install.ps1?license_id= } | iex; install -project inspec
แทนที่
ด้วยรหัสใบอนุญาตของคุณ
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับสคริปต์การติดตั้ง โปรดดูเอกสารสคริปต์การติดตั้ง Chef
การติดตั้ง Chef InSpec จากแหล่งที่มาอาจต้องติดตั้งเครื่องมือ Ruby build เพื่อจัดการการพึ่งพาอัญมณี (ตัวแปรที่ไม่มีคอมไพเลอร์มีให้ใช้งานโดยมีฟังก์ชันการทำงานลดลง ใช้ inspec-core-bin
และ inspec-core
)
หากต้องการติดตั้งเครื่องมือสร้าง ให้ใช้ตัวจัดการแพ็คเกจของคุณ
สำหรับ CentOS/RedHat/Fedora:
yum -y install ruby ruby-devel make gcc gcc-c++
สำหรับอูบุนตู:
apt-get -y install ruby ruby-dev gcc g++ make
หากต้องการติดตั้งโปรแกรมปฏิบัติการ inspec
ซึ่งจำเป็นต้องยอมรับ Chef License ให้รัน:
gem install inspec-bin
คุณสามารถใช้ inspec
เป็นไลบรารี่ได้ โดยไม่มีโปรแกรมปฏิบัติการ สิ่งนี้ไม่จำเป็นต้องยอมรับใบอนุญาต หากต้องการติดตั้งไลบรารีเป็นอัญมณี ให้รัน:
gem install inspec
ดาวน์โหลดรูปภาพและกำหนดฟังก์ชันเพื่อความสะดวก:
สำหรับลินุกซ์:
docker pull chef/inspec
function inspec { docker run -it --rm -v $(pwd):/share chef/inspec "$@"; }
สำหรับ Windows (PowerShell):
docker pull chef/inspec
function inspec { docker run -it --rm -v "$(pwd):/share" chef/inspec $args; }
หากคุณเรียก inspec
จากเชลล์ของคุณ มันจะติดตั้งไดเร็กทอรีปัจจุบันลงในคอนเทนเนอร์ Docker โดยอัตโนมัติ ดังนั้นคุณจึงสามารถใช้การทดสอบในเครื่องและไฟล์คีย์ได้อย่างง่ายดาย หมายเหตุ: เฉพาะไฟล์ในไดเร็กทอรีปัจจุบันและไดเร็กทอรีย่อยเท่านั้นที่จะพร้อมใช้งานภายในคอนเทนเนอร์
$ ls -1
vagrant
test.rb
$ inspec exec test.rb -t ssh://[email protected]:11022 -i vagrant
..
Finished in 0.04321 seconds (files took 0.54917 seconds to load)
2 examples, 0 failures
หากต้องการสแกนคอนเทนเนอร์นักเทียบท่าที่ทำงานบนโฮสต์โดยใช้ InSpec ที่สร้างคอนเทนเนอร์ เราจำเป็นต้องผูกซ็อกเก็ต Unix /var/run/docker.sock
จากเครื่องโฮสต์ไปยัง InSpec Container
docker pull chef/inspec
function inspec { docker run -it --rm -v $(pwd):/share -v /var/run/docker.sock:/var/run/docker.sock chef/inspec "$@"; }
/var/run/docker.sock
เป็นซ็อกเก็ต Unix ที่ Docker daemon ฟังตามค่าเริ่มต้น
โปรดทราบว่าการติดตั้งจากแพ็คเกจระบบปฏิบัติการจากหน้าดาวน์โหลดเป็นวิธีที่แนะนำ
นั่นต้องใช้ Bundler:
bundle install
bundle exec inspec help
หากต้องการติดตั้งเป็นอัญมณีในเครื่อง ให้รัน:
gem build inspec.gemspec
gem install inspec- * .gem
บน Windows คุณต้องติดตั้ง Ruby ด้วย Ruby Development Kit เพื่อสร้างการพึ่งพาด้วยส่วนขยายดั้งเดิม
ปัจจุบันวิธีการติดตั้งนี้รองรับเฉพาะ Linux เท่านั้น ดูข้อมูลเพิ่มเติมได้ที่เว็บไซต์ Chef Habitat
ดาวน์โหลด hab
binary จากเว็บไซต์ Chef Habitat
hab pkg install chef/inspec --binlink
inspec
ตอนนี้คุณควรจะสามารถวิ่งได้แล้ว:
$ inspec --help
Commands:
inspec archive PATH # archive a profile to tar.gz (default) ...
inspec check PATH # verify all tests at the specified PATH
inspec automate SUBCOMMAND ... # Chef Automate commands
inspec compliance SUBCOMMAND ... # Chef Automate commands (backwards compatible alias)
inspec detect # detect the target OS
inspec exec PATH(S) # run all test files at the specified PATH.
inspec help [COMMAND] # Describe available commands or one spe...
inspec init TEMPLATE ... # Scaffolds a new project
inspec json PATH # read all tests in PATH and generate a ...
inspec shell # open an interactive debugging shell
inspec supermarket SUBCOMMAND ... # Supermarket commands
inspec version # prints the version of this tool
Options:
[--diagnose], [--no-diagnose] # Show diagnostics (versions, configurations)
describe port ( 80 ) do
it { should_not be_listening }
end
describe port ( 443 ) do
it { should be_listening }
its ( 'protocols' ) { should include 'tcp' }
end
kitchen.yml
ของคุณเพื่อตรวจสอบว่ามีเพียง Vagrant เท่านั้นที่ได้รับการกำหนดค่าเป็นไดรเวอร์ การจัดรูปแบบ %w() จะส่งผ่าน rubocop linting และช่วยให้คุณเข้าถึงการแมปที่ซ้อนกันได้ describe yaml ( '.kitchen.yml' ) do
its ( %w( driver name ) ) { should eq ( 'vagrant' ) }
end
ดูตัวอย่างของเราสำหรับ:
control 'or-test' do
impact 1.0
title 'This is a OR test'
describe . one do
describe ssh_config do
its ( 'Protocol' ) { should eq ( '3' ) }
end
describe ssh_config do
its ( 'Protocol' ) { should eq ( '2' ) }
end
end
end
ทำการทดสอบกับเป้าหมายที่แตกต่างกัน:
# run test locally
inspec exec test.rb
# run test on remote host on SSH
inspec exec test.rb -t ssh://user@hostname
# run test on remote windows host on WinRM
inspec exec test.rb -t winrm://Administrator@windowshost --password ' your-password '
# run test on docker container
inspec exec test.rb -t docker://container_id
# run test on podman container
inspec exec test.rb -t podman://container_id --podman-url " unix:///run/user/1000/podman/podman.sock "
# run with sudo
inspec exec test.rb --sudo [--sudo-password ...] [--sudo-options ...] [--sudo_command ...]
# run in a subshell
inspec exec test.rb --shell [--shell-options ...] [--shell-command ...]
# run a profile targeting AWS using env vars
inspec exec test.rb -t aws://
# or store your AWS credentials in your ~/.aws/credentials profiles file
inspec exec test.rb -t aws://us-east-2/my-profile
# run a profile targeting Azure using env vars
inspec exec test.rb -t azure://
# or store your Azure credentials in your ~/.azure/credentials profiles file
inspec exec test.rb -t azure://subscription_id
ตรวจสอบการกำหนดค่าของคุณและตรวจจับ
id= $( docker run -dti ubuntu:14.04 /bin/bash )
inspec detect -t docker:// $id
ซึ่งจะให้คุณ:
{"family":"ubuntu","release":"14.04","arch":null}
เป้าหมายระยะไกล
แพลตฟอร์ม | รุ่นต่างๆ | สถาปัตยกรรม |
---|---|---|
เอไอเอ็กซ์ | 6.1, 7.1, 7.2 | ppc64 |
CentOS | 6, 7, 8 | i386, x86_64 |
เดเบียน | 9, 10 | i386, x86_64 |
ฟรีBSD | 9, 10, 11 | i386, amd64 |
ระบบปฏิบัติการ macOS | 11.0 | x86_64 |
ออราเคิล เอ็นเตอร์ไพรส์ ลินุกซ์ | 6, 7, 8 | i386, x86_64 |
เรดแฮท เอ็นเตอร์ไพรส์ ลินุกซ์ | 7, 8, 9 | i386, x86_64 |
โซลาริส | 10, 11 | สปาร์ก, x86 |
หน้าต่าง* | 8, 8.1, 10, 2012, 2012R2, 2016, 2019 | x86, x86_64 |
อูบุนตู ลินุกซ์ | x86, x86_64 | |
SUSE Linux เซิร์ฟเวอร์องค์กร | 12, 15 | x86_64 |
วิทยาศาสตร์ลินุกซ์ | 6, 7 | i386, x86_64 |
หมวกฟาง | x86_64 | |
OpenSUSE | 15 | x86_64 |
OmniOS | x86_64 | |
เจนทู ลินุกซ์ | x86_64 | |
อาร์ค ลินุกซ์ | x86_64 | |
HP-UX | 11.31 | ia64 |
อัลไพน์ลินุกซ์ | x86_64 |
* สำหรับ Windows ต้องใช้ PowerShell 5.0 หรือสูงกว่า
นอกจากนี้ ยังมีการรองรับรันไทม์สำหรับ:
แพลตฟอร์ม | รุ่นต่างๆ | โค้ง |
---|---|---|
ระบบปฏิบัติการ macOS | 11+ | x86_64, arm64 |
เดเบียน | 9, 10 | x86_64, aarch64 |
เรเอล | 7, 8, 9 | x86_64, aarch64 |
หมวกฟาง | 29+ | x86_64, aarch64 |
อูบุนตู | 16.04+ | x86_64, aarch64 |
หน้าต่าง | 8+ | x86_64 |
หน้าต่าง | 2012+ | x86_64 |
เอกสารประกอบ
เรียนรู้เชฟ:
ความสัมพันธ์กับเครื่องมืออื่นๆ (RSpec, Serverspec):
คุณสามารถแบ่งปันโปรไฟล์ Chef InSpec ของคุณได้ในส่วนเครื่องมือและปลั๊กอินของ Chef Supermarket ลงชื่อเข้าใช้และเพิ่มรายละเอียดโปรไฟล์ของคุณ
คุณยังสามารถเรียกดูซูเปอร์มาร์เก็ตเพื่อดูโปรไฟล์การปฏิบัติตามข้อกำหนดที่ใช้ร่วมกันได้
Chef InSpec สร้างสรรค์โดย Christoph Hartmann (@chris-rock) และ Dominik Richter (@arlimus)
Chef InSpec ได้รับแรงบันดาลใจจากโครงการ Serverspec ที่ยอดเยี่ยม ขอชื่นชม mizzy และผู้มีส่วนร่วมทุกคน!
ทรัพยากร AWS ได้รับแรงบันดาลใจจาก inspec-aws จาก arothian
ชุมชน Chef InSpec และผู้ดูแลมีความกระตือรือร้นและให้ความช่วยเหลือเป็นอย่างดี โครงการนี้ได้รับประโยชน์อย่างมากจากกิจกรรมนี้
หากคุณต้องการแชทกับชุมชนและผู้ดูแล เข้าร่วมกับเราโดยตรงในช่อง #inspec
บน Chef Community Slack
เพื่อเป็นการเตือนความจำ ผู้เข้าร่วมทุกคนควรปฏิบัติตามหลักจรรยาบรรณ
เรามีการทดสอบ unit
และ integration
unit
ช่วยให้มั่นใจได้ถึงพฤติกรรมที่ตั้งใจไว้ของการนำไปปฏิบัติintegration
ทำงานกับ VM ที่ใช้ Docker ผ่านทาง test-kitchen และ kitchen-inspecbundle exec rake test
หากคุณต้องการรันไฟล์ทดสอบเพียงไฟล์เดียว:
bundle exec m test/unit/resources/user_test.rb
คุณยังอาจทำการทดสอบครั้งเดียวภายในไฟล์ตามหมายเลขบรรทัด:
bundle exec m test/unit/resources/user_test.rb -l 123
การทดสอบเหล่านี้ดาวน์โหลดเครื่องเสมือนต่างๆ เพื่อให้แน่ใจว่า Chef InSpec ทำงานตามที่คาดหวังในระบบปฏิบัติการที่แตกต่างกัน
การทดสอบเหล่านี้ต้องการอัญมณีต่อไปนี้:
Gem เหล่านี้จัดทำผ่านกลุ่ม integration
ใน Gemfile ของโปรเจ็กต์
นอกจากนี้ การทดสอบเหล่านี้ต้องการให้ Docker พร้อมใช้งานบนเครื่องของคุณหรือเครื่อง Docker ระยะไกลที่กำหนดค่าผ่านตัวแปรสภาพแวดล้อม Docker มาตรฐาน
แสดงรายการอินสแตนซ์การทดสอบต่างๆ ที่พร้อมใช้งาน:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen list
แพลตฟอร์มและชุดการทดสอบได้รับการกำหนดค่าในไฟล์ kitchen.dokken.yml
เมื่อคุณรู้ว่าคุณต้องการทดสอบอินสแตนซ์ใด ให้ทดสอบอินสแตนซ์นั้น:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test < INSTANCE_NAME >
คุณสามารถทดสอบอินสแตนซ์ทั้งหมดควบคู่ไปกับ:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test -c 3
ผู้เขียน: | โดมินิค ริชเตอร์ ([email protected]) |
ผู้เขียน: | คริสตอฟ ฮาร์ทมันน์ ([email protected]) |
ลิขสิทธิ์: | ลิขสิทธิ์ (c) 2015 Vulcano Security GmbH |
ลิขสิทธิ์: | ลิขสิทธิ์ (c) 2017-2020 Chef Software Inc. |
ลิขสิทธิ์: | ลิขสิทธิ์ (c) 2020-2023 Progress Software Corp. |
ใบอนุญาต: | ใบอนุญาต Apache เวอร์ชัน 2.0 |
ใบอนุญาต: | ข้อตกลงใบอนุญาตผู้ใช้ปลายทางของเชฟ |
การจำหน่ายผลิตภัณฑ์ Progress® Chef® แบบบรรจุกล่องที่ได้รับจากแหล่งจำหน่าย Progress Chef ที่ได้รับอนุญาตนั้นมีจำหน่ายตาม Progress Chef EULA ที่ https://www.chef.io/end-user-license-agreement เว้นแต่จะมีการลงนามในข้อตกลง ที่มีผลระหว่างคุณและ Progress ที่ครอบคลุมผลิตภัณฑ์ Progress Chef ("ข้อตกลงหลัก") ซึ่งในกรณีนี้ให้ยึดตามข้อตกลงหลัก
ซอร์สโค้ดที่ได้รับจากพื้นที่เก็บข้อมูล Chef GitHub มีให้ใช้งานภายใต้ Apache-2.0 โดยมีสำเนารวมอยู่ด้านล่างนี้
ได้รับอนุญาตภายใต้ใบอนุญาต Apache เวอร์ชัน 2.0 ("ใบอนุญาต"); คุณไม่สามารถใช้ไฟล์นี้ได้เว้นแต่จะเป็นไปตามใบอนุญาต คุณสามารถขอรับสำเนาใบอนุญาตได้ที่
http://www.apache.org/licenses/LICENSE-2.0
เว้นแต่กฎหมายที่ใช้บังคับกำหนดหรือตกลงเป็นลายลักษณ์อักษร ซอฟต์แวร์ที่เผยแพร่ภายใต้ใบอนุญาตนี้จะถูกแจกจ่าย "ตามที่เป็น" โดยไม่มีการรับประกันหรือเงื่อนไขใดๆ ทั้งโดยชัดแจ้งหรือโดยนัย ดูใบอนุญาตสำหรับภาษาเฉพาะที่ควบคุมการอนุญาตและข้อจำกัดภายใต้ใบอนุญาต