프로젝트 상태 및 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 문서 사이트의 라이선스 승인 페이지를 참조하세요.
Chef InSpec 패키지는 MacOS, RedHat, Ubuntu 및 Windows에서 사용할 수 있습니다. Chef InSpec 다운로드에서 최신 패키지를 다운로드하거나 스크립트를 통해 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
라이선스 ID로 바꾸세요.
설치 스크립트에 대한 자세한 내용은 Chef 설치 스크립트 설명서를 참조하세요.
소스에서 Chef InSpec을 설치하려면 gem 종속성을 관리하기 위해 Ruby 빌드 도구를 설치해야 할 수도 있습니다. (컴파일러가 없는 변형은 기능이 축소되어 제공됩니다. 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
Chef 라이선스 동의가 필요한 inspec
실행 파일을 설치하려면 다음을 실행하세요.
gem install inspec-bin
실행 파일 없이 inspec
라이브러리로 사용할 수도 있습니다. 라이선스에 동의할 필요는 없습니다. 라이브러리를 gem으로 설치하려면 다음을 실행하세요.
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을 사용하여 호스트에서 실행 중인 Docker 컨테이너를 스캔하려면 호스트 시스템에서 InSpec 컨테이너로 Unix 소켓 /var/run/docker.sock
바인드 마운트해야 합니다.
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
은 Docker 데몬이 기본적으로 수신 대기하는 Unix 소켓입니다.
다운로드 페이지의 OS 패키지에서 설치하는 것이 선호되는 방법입니다.
번들러가 필요합니다.
bundle install
bundle exec inspec help
로컬에서 gem으로 설치하려면 다음을 실행하세요.
gem build inspec.gemspec
gem install inspec- * .gem
Windows에서는 기본 확장으로 종속성을 구축하려면 Ruby Development Kit와 함께 Ruby를 설치해야 합니다.
현재 이 설치 방법은 Linux만 지원합니다. 자세한 내용은 Chef Habitat 사이트를 참조하세요.
Chef Habitat 사이트에서 hab
바이너리를 다운로드하세요.
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}
원격 대상
플랫폼 | 버전 | 아키텍처 |
---|---|---|
AIX | 6.1, 7.1, 7.2 | ppc64 |
CentOS | 6, 7, 8 | i386, x86_64 |
데비안 | 9, 10 | i386, x86_64 |
FreeBSD | 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 | |
오픈수세 | 15 | x86_64 |
옴니OS | 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 |
RHEL | 7, 8, 9 | x86_64, aarch64 |
페도라 | 29세 이상 | x86_64, aarch64 |
우분투 | 16.04+ | x86_64, aarch64 |
윈도우 | 8세 이상 | x86_64 |
윈도우 | 2012+ | x86_64 |
선적 서류 비치
셰프 알아보기:
다른 도구(RSpec, Serverspec)와의 관계:
Chef 슈퍼마켓의 도구 및 플러그인 섹션에서 Chef InSpec 프로필을 공유할 수 있습니다. 로그인하고 프로필 세부정보를 추가하세요.
또한 슈퍼마켓에서 공유된 규정 준수 프로필을 검색할 수도 있습니다.
Chef InSpec은 원래 Christoph Hartmann(@chris-rock)과 Dominik Richter(@arlimus)가 만들었습니다.
Chef InSpec은 훌륭한 Serverspec 프로젝트에서 영감을 받았습니다. mizzy와 모든 기여자들에게 찬사를 보냅니다!
AWS 리소스는 arothian의 inspec-aws에서 영감을 받았습니다.
Chef InSpec 커뮤니티와 유지 관리자는 매우 활동적이고 도움이 됩니다. 이 프로젝트는 이러한 활동으로 인해 큰 이익을 얻습니다.
커뮤니티 및 유지관리자와 직접 대화하고 싶다면 Chef Community Slack의 #inspec
채널에 참여하세요.
모든 참가자는 행동 강령을 준수해야 함을 다시 한 번 상기시켜 드립니다.
우리는 unit
및 integration
테스트를 제공합니다.
unit
테스트는 구현의 의도된 동작을 보장합니다.integration
테스트 실행bundle 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이 필요합니다.
이러한 gem은 프로젝트 Gemfile의 integration
그룹을 통해 제공됩니다.
또한 이러한 테스트를 수행하려면 표준 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 |
특허: | Chef 최종 사용자 라이선스 계약 |
승인된 Progress Chef 배포 소스에서 얻은 Progress® Chef® 제품의 패키지 배포는 체결된 계약이 없는 한 https://www.chef.io/end-user-license-agreement의 Progress Chef EULA에 따라 제공됩니다. 귀하와 Progress Chef 제품을 다루는 Progress("마스터 계약") 간에 효력이 발생하며, 이 경우 마스터 계약이 적용됩니다.
Chef GitHub 리포지토리에서 얻은 소스 코드는 Apache-2.0에서 사용할 수 있으며 그 복사본은 아래에 포함되어 있습니다.
Apache 라이센스 버전 2.0("라이센스")에 따라 라이센스가 부여되었습니다. 라이센스를 준수하는 경우를 제외하고는 이 파일을 사용할 수 없습니다. 다음에서 라이센스 사본을 얻을 수 있습니다.
http://www.apache.org/licenses/LICENSE-2.0
해당 법률에서 요구하거나 서면으로 동의하지 않는 한, 라이선스에 따라 배포되는 소프트웨어는 명시적이든 묵시적이든 어떠한 종류의 보증이나 조건 없이 "있는 그대로" 배포됩니다. 라이선스에 따른 허가 및 제한 사항을 관리하는 특정 언어는 라이선스를 참조하세요.