Untuk informasi selengkapnya tentang status proyek dan SLA, lihat dokumentasi ini.
Chef InSpec adalah kerangka pengujian sumber terbuka untuk infrastruktur dengan bahasa yang dapat dibaca manusia dan mesin untuk menentukan persyaratan kepatuhan, keamanan, dan kebijakan.
# 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 memudahkan menjalankan pengujian di mana pun Anda membutuhkannya. Opsi lainnya dapat ditemukan di dokumen CLI kami.
# 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 membutuhkan Ruby ( >= 3.0.3 ).
Semua versi Chef InSpec yang saat ini didukung (4.0 dan lebih baru) memerlukan persetujuan EULA untuk digunakan. Silakan kunjungi halaman penerimaan lisensi di situs dokumen Chef untuk informasi lebih lanjut.
Paket Chef InSpec tersedia untuk MacOS, RedHat, Ubuntu dan Windows. Download paket terbaru di Chef InSpec Downloads atau install Chef InSpec melalui script:
# 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
Ganti
dengan ID lisensi Anda.
Untuk informasi lebih lanjut tentang skrip instalasi, lihat dokumentasi Chef Install Script.
Menginstal Chef InSpec dari sumber mungkin memerlukan instalasi alat ruby build untuk mengelola dependensi permata. (Varian bebas kompiler tersedia dengan fungsionalitas yang dikurangi; gunakan inspec-core-bin
dan inspec-core
.)
Untuk menginstal alat pembangunan, gunakan manajer paket Anda.
Untuk CentOS/RedHat/Fedora:
yum -y install ruby ruby-devel make gcc gcc-c++
Untuk Ubuntu:
apt-get -y install ruby ruby-dev gcc g++ make
Untuk menginstal inspec
yang dapat dieksekusi, yang memerlukan penerimaan Lisensi Chef, jalankan:
gem install inspec-bin
Anda juga dapat menggunakan inspec
sebagai perpustakaan, tanpa dapat dieksekusi. Ini tidak memerlukan penerimaan lisensi. Untuk menginstal perpustakaan sebagai permata, jalankan:
gem install inspec
Unduh gambar dan tentukan fungsi untuk kenyamanan:
Untuk Linux:
docker pull chef/inspec
function inspec { docker run -it --rm -v $(pwd):/share chef/inspec "$@"; }
Untuk Windows (PowerShell):
docker pull chef/inspec
function inspec { docker run -it --rm -v "$(pwd):/share" chef/inspec $args; }
Jika Anda memanggil inspec
dari shell Anda, maka secara otomatis direktori saat ini akan dipasang ke dalam container Docker. Oleh karena itu Anda dapat dengan mudah menggunakan tes lokal dan file kunci. Catatan: Hanya file di direktori dan subdirektori saat ini yang tersedia dalam penampung.
$ 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
Untuk memindai kontainer buruh pelabuhan yang berjalan di host menggunakan InSpec yang terkontainer, kita perlu mengikat soket Unix /var/run/docker.sock
dari mesin host ke Kontainer InSpec.
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
adalah soket Unix yang didengarkan daemon Docker secara default.
Perhatikan bahwa menginstal dari paket OS dari halaman download adalah metode yang lebih disukai.
Itu membutuhkan bundler:
bundle install
bundle exec inspec help
Untuk menginstalnya sebagai permata secara lokal, jalankan:
gem build inspec.gemspec
gem install inspec- * .gem
Di Windows, Anda perlu menginstal Ruby dengan Ruby Development Kit untuk membangun dependensi dengan ekstensi aslinya.
Saat ini, metode instalasi ini hanya mendukung Linux. Lihat situs Chef Habitat untuk informasi lebih lanjut.
Unduh biner hab
dari situs Chef Habitat.
hab pkg install chef/inspec --binlink
inspec
Anda sekarang seharusnya dapat menjalankan:
$ 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
Anda untuk memverifikasi bahwa hanya Vagrant yang dikonfigurasi sebagai driver. Pemformatan %w() akan meneruskan linting rubocop dan memungkinkan Anda mengakses pemetaan bertingkat. describe yaml ( '.kitchen.yml' ) do
its ( %w( driver name ) ) { should eq ( 'vagrant' ) }
end
Lihat juga contoh kami untuk:
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
Jalankan pengujian terhadap target yang berbeda:
# 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
Verifikasi konfigurasi Anda dan deteksi
id= $( docker run -dti ubuntu:14.04 /bin/bash )
inspec detect -t docker:// $id
Yang akan memberi Anda:
{"family":"ubuntu","release":"14.04","arch":null}
Target Jarak Jauh
Platform | Versi | Arsitektur |
---|---|---|
AIX | 6.1, 7.1, 7.2 | ppc64 |
CentOS | 6, 7, 8 | i386, x86_64 |
Debian | 9, 10 | i386, x86_64 |
FreeBSD | 9, 10, 11 | i386, amd64 |
macOS | 11.0 | x86_64 |
Oracle Perusahaan Linux | 6, 7, 8 | i386, x86_64 |
Linux Perusahaan Red Hat | 7, 8, 9 | i386, x86_64 |
Solaris | 10, 11 | perdebatan, x86 |
jendela* | 8, 8.1, 10, 2012, 2012R2, 2016, 2019 | x86, x86_64 |
UbuntuLinux | x86, x86_64 | |
Server Perusahaan SUSE Linux | 12, 15 | x86_64 |
Linux Ilmiah | 6, 7 | i386, x86_64 |
fedora | x86_64 | |
OpenSUSE | 15 | x86_64 |
OmniOS | x86_64 | |
Gentoo Linux | x86_64 | |
Lengkungan Linux | x86_64 | |
HP-UX | 11.31 | ia64 |
Alpine Linux | x86_64 |
* Untuk Windows, diperlukan PowerShell 5.0 atau lebih tinggi.
Selain itu, dukungan runtime disediakan untuk:
Platform | Versi | Lengkungan |
---|---|---|
macOS | 11+ | x86_64, lengan64 |
Debian | 9, 10 | x86_64, aarch64 |
RHEL | 7, 8, 9 | x86_64, aarch64 |
fedora | 29+ | x86_64, aarch64 |
Ubuntu | 16.04+ | x86_64, aarch64 |
jendela | 8+ | x86_64 |
jendela | 2012+ | x86_64 |
Dokumentasi
Pelajari Koki:
Hubungan dengan alat lain (RSpec, Serverspec):
Anda dapat membagikan Profil Chef InSpec Anda di bagian Alat & Plugin di Supermarket Chef. Masuk dan tambahkan detail profil Anda.
Anda juga dapat menjelajahi Supermarket untuk mengetahui Profil Kepatuhan bersama.
Chef InSpec awalnya dibuat oleh Christoph Hartmann (@chris-rock) dan Dominik Richter (@arlimus).
Chef InSpec terinspirasi oleh proyek Serverspec yang luar biasa. Kudos to mizzy dan semua kontributor!
Sumber daya AWS terinspirasi oleh inspec-aws dari arothian.
Komunitas dan pengelola Chef InSpec sangat aktif dan membantu. Proyek ini mendapat manfaat besar dari kegiatan ini.
Jika Anda ingin ngobrol dengan komunitas dan pengelola langsung bergabung dengan kami di saluran #inspec
di Chef Community Slack.
Sebagai pengingat, seluruh peserta diharapkan mematuhi Kode Etik.
Kami menawarkan pengujian unit
dan integration
.
unit
memastikan perilaku implementasi yang diinginkanintegration
dijalankan terhadap VM berbasis Docker melalui test-kitchen dan kitchen-inspecbundle exec rake test
Jika Anda hanya ingin menjalankan satu file pengujian:
bundle exec m test/unit/resources/user_test.rb
Anda juga dapat menjalankan tes tunggal dalam file berdasarkan nomor baris:
bundle exec m test/unit/resources/user_test.rb -l 123
Pengujian ini mengunduh berbagai mesin virtual, untuk memastikan Chef InSpec berfungsi seperti yang diharapkan di berbagai sistem operasi.
Tes ini memerlukan permata berikut:
Permata ini disediakan melalui grup integration
di Gemfile proyek.
Selain itu, pengujian ini memerlukan Docker tersedia di mesin Anda atau mesin Docker jarak jauh yang dikonfigurasi melalui variabel lingkungan Docker standar.
Buat daftar berbagai contoh pengujian yang tersedia:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen list
Platform dan rangkaian pengujian dikonfigurasi di file kitchen.dokken.yml
. Setelah Anda mengetahui instance mana yang ingin Anda uji, uji instance tersebut:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test < INSTANCE_NAME >
Anda dapat menguji semua instance secara paralel dengan:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test -c 3
Pengarang: | Dominik Richter ([email protected]) |
Pengarang: | Christoph Hartmann ([email protected]) |
Hak cipta: | Hak Cipta (c) 2015 Vulcano Security GmbH. |
Hak cipta: | Hak Cipta (c) 2017-2020 Chef Software Inc. |
Hak cipta: | Hak Cipta (c) 2020-2023 Progress Software Corp. |
Lisensi: | Lisensi Apache, Versi 2.0 |
Lisensi: | Perjanjian Lisensi Pengguna Akhir Chef |
Distribusi paket produk Progress® Chef® yang diperoleh dari sumber distribusi resmi Progress Chef tersedia sesuai dengan Progress Chef EULA di https://www.chef.io/end-user-license-agreement, kecuali ada perjanjian yang ditandatangani berlaku antara Anda dan Progress yang mencakup produk Progress Chef ("Perjanjian Utama"), dalam hal ini Perjanjian Utama akan mengaturnya.
Kode sumber yang diperoleh dari repositori Chef GitHub tersedia di Apache-2.0, salinannya disertakan di bawah.
Berlisensi di bawah Lisensi Apache, Versi 2.0 ("Lisensi"); Anda tidak boleh menggunakan file ini kecuali sesuai dengan Lisensi. Anda dapat memperoleh salinan Lisensi di
http://www.apache.org/licenses/LICENSE-2.0
Kecuali diwajibkan oleh undang-undang yang berlaku atau disetujui secara tertulis, perangkat lunak yang didistribusikan berdasarkan Lisensi didistribusikan berdasarkan DASAR "APA ADANYA", TANPA JAMINAN ATAU KETENTUAN DALAM BENTUK APAPUN, baik tersurat maupun tersirat. Lihat Lisensi untuk bahasa tertentu yang mengatur izin dan batasan berdasarkan Lisensi.