Weitere Informationen zu Projektstatus und SLAs finden Sie in dieser Dokumentation.
Chef InSpec ist ein Open-Source-Testframework für Infrastruktur mit einer für Menschen und Maschinen lesbaren Sprache zur Festlegung von Compliance-, Sicherheits- und Richtlinienanforderungen.
# 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
Mit Chef InSpec können Sie Ihre Tests ganz einfach dort durchführen, wo Sie sie benötigen. Weitere Optionen finden Sie in unseren CLI-Dokumenten.
# 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 erfordert Ruby (>= 3.0.3).
Für alle derzeit unterstützten Versionen von Chef InSpec (4.0 und höher) muss die EULA akzeptiert werden. Weitere Informationen finden Sie auf der Seite zur Lizenzannahme auf der Chef-Dokumentenseite.
Das Chef InSpec-Paket ist für MacOS, RedHat, Ubuntu und Windows verfügbar. Laden Sie das neueste Paket unter Chef InSpec Downloads herunter oder installieren Sie Chef InSpec per Skript:
# 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
Ersetzen Sie
durch Ihre Lizenz-ID.
Weitere Informationen zu den Installationsskripten finden Sie in der Dokumentation zum Chef-Installationsskript.
Die Installation von Chef InSpec aus dem Quellcode erfordert möglicherweise die Installation von Ruby-Build-Tools, um Gem-Abhängigkeiten zu verwalten. (Eine Compiler-freie Variante ist mit reduzierter Funktionalität verfügbar; verwenden Sie inspec-core-bin
und inspec-core
.)
Um Build-Tools zu installieren, verwenden Sie Ihren Paketmanager.
Für CentOS/RedHat/Fedora:
yum -y install ruby ruby-devel make gcc gcc-c++
Für Ubuntu:
apt-get -y install ruby ruby-dev gcc g++ make
Führen Sie Folgendes aus, um die ausführbare inspec
Datei zu installieren, für die das Akzeptieren der Chef-Lizenz erforderlich ist:
gem install inspec-bin
Sie können inspec
auch als Bibliothek ohne ausführbare Datei verwenden. Eine Annahme der Lizenz ist hierfür nicht erforderlich. Um die Bibliothek als Gem zu installieren, führen Sie Folgendes aus:
gem install inspec
Laden Sie das Bild herunter und definieren Sie der Einfachheit halber eine Funktion:
Für Linux:
docker pull chef/inspec
function inspec { docker run -it --rm -v $(pwd):/share chef/inspec "$@"; }
Für Windows (PowerShell):
docker pull chef/inspec
function inspec { docker run -it --rm -v "$(pwd):/share" chef/inspec $args; }
Wenn Sie inspec
von Ihrer Shell aus aufrufen, wird das aktuelle Verzeichnis automatisch in den Docker-Container gemountet. Daher können Sie problemlos lokale Tests und Schlüsseldateien verwenden. Hinweis: Im Container sind nur Dateien im aktuellen Verzeichnis und in Unterverzeichnissen verfügbar.
$ 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
Um die auf dem Host ausgeführten Docker-Container mithilfe des containerisierten InSpec zu scannen, müssen wir den Unix-Socket /var/run/docker.sock
vom Host-Computer an den InSpec-Container binden.
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
ist der Unix-Socket, den der Docker-Daemon standardmäßig überwacht.
Beachten Sie, dass die Installation von Betriebssystempaketen von der Download-Seite die bevorzugte Methode ist.
Das erfordert Bundler:
bundle install
bundle exec inspec help
Um es lokal als Gem zu installieren, führen Sie Folgendes aus:
gem build inspec.gemspec
gem install inspec- * .gem
Unter Windows müssen Sie Ruby mit dem Ruby Development Kit installieren, um Abhängigkeiten mit seinen nativen Erweiterungen zu erstellen.
Derzeit unterstützt diese Installationsmethode nur Linux. Weitere Informationen finden Sie auf der Website von Chef Habitat.
Laden Sie die hab
Binärdatei von der Chef Habitat-Website herunter.
hab pkg install chef/inspec --binlink
inspec
Sie sollten jetzt Folgendes ausführen können:
$ 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
Datei, um sicherzustellen, dass nur Vagrant als Treiber konfiguriert ist. Die %w()-Formatierung übergibt Rubocop-Linting und ermöglicht Ihnen den Zugriff auf verschachtelte Zuordnungen. describe yaml ( '.kitchen.yml' ) do
its ( %w( driver name ) ) { should eq ( 'vagrant' ) }
end
Schauen Sie sich auch unsere Beispiele an für:
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
Führen Sie Tests gegen verschiedene Ziele durch:
# 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
Überprüfen Sie Ihre Konfiguration und erkennen Sie
id= $( docker run -dti ubuntu:14.04 /bin/bash )
inspec detect -t docker:// $id
Was Ihnen Folgendes bietet:
{"family":"ubuntu","release":"14.04","arch":null}
Entfernte Ziele
Plattform | Versionen | Architekturen |
---|---|---|
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 Enterprise Linux | 6, 7, 8 | i386, x86_64 |
Red Hat Enterprise Linux | 7, 8, 9 | i386, x86_64 |
Solaris | 10, 11 | sparc, x86 |
Windows* | 8, 8.1, 10, 2012, 2012R2, 2016, 2019 | x86, x86_64 |
Ubuntu Linux | x86, x86_64 | |
SUSE Linux Enterprise Server | 12, 15 | x86_64 |
Wissenschaftliches Linux | 6, 7 | i386, x86_64 |
Fedora | x86_64 | |
OpenSUSE | 15 | x86_64 |
OmniOS | x86_64 | |
Gentoo Linux | x86_64 | |
Arch Linux | x86_64 | |
HP-UX | 11.31 | ia64 |
Alpine Linux | x86_64 |
* Für Windows ist PowerShell 5.0 oder höher erforderlich.
Darüber hinaus wird Laufzeitunterstützung bereitgestellt für:
Plattform | Versionen | Bogen |
---|---|---|
macOS | 11+ | x86_64, arm64 |
Debian | 9, 10 | x86_64, aarch64 |
RHEL | 7, 8, 9 | x86_64, aarch64 |
Fedora | 29+ | x86_64, aarch64 |
Ubuntu | 16.04+ | x86_64, aarch64 |
Windows | 8+ | x86_64 |
Windows | 2012+ | x86_64 |
Dokumentation
Koch lernen:
Beziehung zu anderen Tools (RSpec, Serverspec):
Sie können Ihre Chef InSpec-Profile im Bereich „Tools & Plugins“ des Chef Supermarket teilen. Melden Sie sich an und fügen Sie die Details Ihres Profils hinzu.
Sie können den Supermarkt auch nach gemeinsamen Compliance-Profilen durchsuchen.
Chef InSpec wurde ursprünglich von Christoph Hartmann (@chris-rock) und Dominik Richter (@arlimus) kreiert.
Chef InSpec ist vom wunderbaren Serverspec-Projekt inspiriert. Ein großes Lob an Mizzy und alle Mitwirkenden!
Die AWS-Ressourcen wurden von inspec-aws von arothian inspiriert.
Die Chef InSpec-Community und die Betreuer sind sehr aktiv und hilfsbereit. Dieses Projekt profitiert stark von dieser Aktivität.
Wenn Sie direkt mit der Community und den Betreuern chatten möchten, besuchen Sie uns im #inspec
-Kanal im Chef Community Slack.
Zur Erinnerung: Von allen Teilnehmern wird erwartet, dass sie den Verhaltenskodex befolgen.
Wir bieten unit
und integration
an.
unit
-Tests stellen das beabsichtigte Verhalten der Implementierung sicherintegration
werden über test-kitchen und kitchen-inspec für Docker-basierte VMs ausgeführtbundle exec rake test
Wenn Sie nur eine Testdatei ausführen möchten:
bundle exec m test/unit/resources/user_test.rb
Sie können auch einen einzelnen Test innerhalb einer Datei nach Zeilennummer ausführen:
bundle exec m test/unit/resources/user_test.rb -l 123
Diese Tests laden verschiedene virtuelle Maschinen herunter, um sicherzustellen, dass Chef InSpec auf verschiedenen Betriebssystemen wie erwartet funktioniert.
Für diese Tests sind die folgenden Edelsteine erforderlich:
Diese Gems werden über die integration
in der Gemfile des Projekts bereitgestellt.
Darüber hinaus erfordern diese Tests, dass Docker auf Ihrem Computer oder einem Remote-Docker-Computer verfügbar ist, der über die standardmäßigen Docker-Umgebungsvariablen konfiguriert ist.
Listen Sie die verschiedenen verfügbaren Testinstanzen auf:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen list
Die Plattformen und Testsuiten werden in der Datei kitchen.dokken.yml
konfiguriert. Sobald Sie wissen, welche Instanz Sie testen möchten, testen Sie diese Instanz:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test < INSTANCE_NAME >
Sie können alle Instanzen parallel testen mit:
KITCHEN_YAML=kitchen.dokken.yml bundle exec kitchen test -c 3
Autor: | Dominik Richter ([email protected]) |
Autor: | Christoph Hartmann ([email protected]) |
Copyright: | Copyright (c) 2015 Vulcano Security GmbH. |
Copyright: | Copyright (c) 2017-2020 Chef Software Inc. |
Copyright: | Copyright (c) 2020-2023 Progress Software Corp. |
Lizenz: | Apache-Lizenz, Version 2.0 |
Lizenz: | Chef-Endbenutzer-Lizenzvereinbarung |
Verpackte Distributionen von Progress® Chef®-Produkten, die von einer autorisierten Progress Chef-Vertriebsquelle bezogen werden, werden gemäß der Progress Chef-EULA unter https://www.chef.io/end-user-license-agreement zur Verfügung gestellt, sofern keine unterzeichnete Vereinbarung vorliegt zwischen Ihnen und Progress in Kraft, der die Produkte von Progress Chef abdeckt („Rahmenvertrag“), wobei in diesem Fall der Rahmenvertrag maßgebend ist.
Der aus dem Chef GitHub-Repository erhaltene Quellcode wird unter Apache-2.0 zur Verfügung gestellt, eine Kopie davon ist unten enthalten.
Lizenziert unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht gesetzlich vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.