
멀티 클라우드 보안 태세 스캐너로, AWS, Azure, GCP, OCI의 오설정, 규정 준수 위반(HIPAA, PCI, CIS) 및 보안 위험을 자동화된 플러그인 기반 점검을 통해 감사합니다.
$ git clone https://github.com/aquasecurity/cloudsploit.git
$ cd cloudsploit
$ npm install
$ ./index.js -h
$ git clone https://github.com/aquasecurity/cloudsploit.git
$ cd cloudsploit
$ docker build . -t cloudsploit:0.0.1
$ docker run cloudsploit:0.0.1 -h
$ docker run -e AWS_ACCESS_KEY_ID=XX -e AWS_SECRET_ACCESS_KEY=YY cloudsploit:0.0.1 --compliance=pci
Aqua의 CloudSploit은 Amazon Web Services(AWS), Microsoft Azure, Google Cloud Platform(GCP), Oracle Cloud Infrastructure(OCI) 및 GitHub를 포함한 클라우드 인프라 계정의 보안 위험을 탐지하도록 설계된 오픈 소스 프로젝트입니다. 이 스크립트는 잠재적인 잘못된 구성과 보안 위험을 반환하도록 설계되었습니다.
CloudSploit은 두 가지 배포 옵션으로 제공됩니다:
아래 지침에 따라 몇 가지 간단한 단계로 오픈 소스 버전의 CloudSploit을 자신의 머신에 배포하세요.
Aqua Wave에서 호스팅되는 상용 버전의 CloudSploit입니다. 지금 Aqua Wave를 사용해 보세요!
NodeJS가 설치되어 있는지 확인하십시오. 설치되어 있지 않으면 여기에서 설치하십시오.
$ git clone [email protected]:cloudsploit/scans.git
$ npm install
CloudSploit은 클라우드 계정에 대해 읽기 전용 권한이 필요합니다. 아래 가이드에 따라 이 액세스를 프로비저닝하십시오:
AWS의 경우 CloudSploit을 직접 실행하면 기본 AWS 자격 증명 체인을 사용하여 자격 증명을 자동으로 감지합니다.
CloudSploit 설정 파일을 사용하면 다음과 같은 방법으로 클라우드 공급자 자격 증명을 전달할 수 있습니다:
먼저 예제 설정 파일을 복사합니다:
$ cp config_example.js config.js
테스트 중인 클라우드 공급자에 해당하는 섹션의 주석을 해제하여 설정 파일을 편집합니다. 각 클라우드에는 credential_file 옵션과 인라인 옵션이 모두 있습니다. 예를 들어:
azure: {
// OPTION 1: If using a credential JSON file, enter the path below
// credential_file: '/path/to/file.json',
// OPTION 2: If using hard-coded credentials, enter them below
// application_id: process.env.AZURE_APPLICATION_ID || '',
// key_value: process.env.AZURE_KEY_VALUE || '',
// directory_id: process.env.AZURE_DIRECTORY_ID || '',
// subscription_id: process.env.AZURE_SUBSCRIPTION_ID || ''
}
credential_file 옵션을 사용하는 경우 사용 중인 클라우드에 적합한 형식의 파일을 파일 시스템에서 가리킵니다.
{
"accessKeyId": "YOURACCESSKEY",
"secretAccessKey": "YOURSECRETKEY"
}
{
"ApplicationID": "YOURAZUREAPPLICATIONID",
"KeyValue": "YOURAZUREKEYVALUE",
"DirectoryID": "YOURAZUREDIRECTORYID",
"SubscriptionID": "YOURAZURESUBSCRIPTIONID"
}
참고: GCP의 경우 GCP 콘솔에서 직접 JSON 파일을 생성하며, 이 파일을 편집하면 안 됩니다.
{
"type": "service_account",
"project": "GCPPROJECTNAME",
"client_email": "GCPCLIENTEMAIL",
"private_key": "GCPPRIVATEKEY"
}
{
"tenancyId": "YOURORACLETENANCYID",
"compartmentId": "YOURORACLECOMPARTMENTID",
"userId": "YOURORACLEUSERID",
"keyFingerprint": "YOURORACLEKEYFINGERPRINT",
"keyValue": "YOURORACLEKEYVALUE",
}
CloudSploit은 환경 변수 전달을 지원하지만, 먼저 스캔할 클라우드 공급자와 관련된 config.js 파일의 섹션 주석을 해제해야 합니다.
그런 다음 각 섹션에 나열된 변수를 전달할 수 있습니다. 예를 들어 AWS의 경우:
{
access_key: process.env.AWS_ACCESS_KEY_ID || '',
secret_access_key: process.env.AWS_SECRET_ACCESS_KEY || '',
session_token: process.env.AWS_SESSION_TOKEN || '',
}
모든 출력과 결과를 표시하는 표준 스캔을 실행하려면 다음을 실행하십시오:
$ ./index.js
CloudSploit은 실행 시간을 사용자 정의하는 많은 옵션을 지원합니다. 인기 있는 옵션은 다음과 같습니다:
--govcloud--china--collection=file.json--ignore-ok--exit-code
--console=text더 많은 출력 옵션은 아래 출력 형식을 참조하십시오.
$ ./index.js -h
_____ _ _ _____ _ _ _
/ ____| | | |/ ____| | | (_) |
| | | | ___ _ _ __| | (___ _ __ | | ___ _| |_
| | | |/ _ \| | | |/ _` |\___ \| '_ \| |/ _ \| | __|
| |____| | (_) | |_| | (_| |____) | |_) | | (_) | | |_
\_____|_|\___/ \__,_|\__,_|_____/| .__/|_|\___/|_|\__|
| |
|_|
CloudSploit by Aqua Security, Ltd.
Cloud security auditing for AWS, Azure, GCP, Oracle, and GitHub
usage: index.js [-h] --config CONFIG [--compliance {hipaa,cis,cis1,cis2,pci}] [--plugin PLUGIN] [--govcloud] [--china] [--csv CSV] [--json JSON] [--junit JUNIT]
[--table] [--console {none,text,table}] [--collection COLLECTION] [--ignore-ok] [--exit-code] [--skip-paginate] [--suppress SUPPRESS]
optional arguments:
-h, --help show this help message and exit
--config CONFIG
The path to a cloud provider credentials file.
--compliance {hipaa,cis,cis1,cis2,pci}
Compliance mode. Only return results applicable to the selected program.
--plugin PLUGIN A specific plugin to run. If none provided, all plugins will be run. Obtain from the exports.js file. E.g. acmValidation
--govcloud AWS only. Enables GovCloud mode.
--china AWS only. Enables AWS China mode.
--csv CSV Output: CSV file
--json JSON Output: JSON file
--junit JUNIT Output: Junit file
--table Output: table
--console {none,text,table}
Console output format. Default: table
--collection COLLECTION
Output: full collection JSON as file
--ignore-ok Ignore passing (OK) results
--exit-code Exits with a non-zero status code if non-passing results are found
--skip-paginate AWS only. Skips pagination (for debugging).
--suppress SUPPRESS Suppress results matching the provided Regex. Format: pluginId:region:resourceId
CloudSploit은 플러그인을 특정 컴플라이언스 정책에 매핑하는 것을 지원합니다. 컴플라이언스 스캔을 실행하려면 --compliance 플래그를 사용하십시오. 예를 들어:
$ ./index.js --compliance=hipaa
$ ./index.js --compliance=pci
여러 컴플라이언스 모드를 동시에 실행할 수 있습니다:
$ ./index.js --compliance=cis1 --compliance=cis2
CloudSploit은 현재 다음 컴플라이언스 매핑을 지원합니다:
$ ./index.js --compliance=hipaa
HIPAA 스캔은 CloudSploit 플러그인을 1996년 건강보험 양도 및 책임에 관한 법률(Health Insurance Portability and Accountability Act)에 매핑합니다.
$ ./index.js --compliance=pci
PCI 스캔은 CloudSploit 플러그인을 결제 카드 산업 데이터 보안 표준(Payment Card Industry Data Security Standard)에 매핑합니다.
$ ./index.js --compliance=cis
$ ./index.js --compliance=cis1
$ ./index.js --compliance=cis2
CIS 벤치마크는 레벨 1 및 레벨 2 제어 모두 지원됩니다. --compliance=cis를 전달하면 레벨 1과 레벨 2 제어가 모두 실행됩니다.
CloudSploit은 다른 도구에서 사용할 수 있도록 여러 형식의 출력을 지원합니다. 별도로 지정하지 않으면 CloudSploit은 테이블 형식으로 표준 출력(콘솔)에 결과를 씁니다.
참고: 여러 출력 형식을 전달하고 옵션을 결합하여 추가 사용자 정의를 할 수 있습니다. 예를 들어:
# 콘솔에 테이블을 출력하고 CSV 파일 저장
$ ./index.js --csv=file.csv --console=table
# 콘솔에 텍스트를 출력하고 JSON과 JUnit 파일 저장(통과 결과 무시)
$ ./index.js --json=file.json --junit=file.xml --console=text --ignore-ok
기본적으로 CloudSploit 결과는 테이블 형식(컬러 포함)으로 콘솔에 출력됩니다. 다음을 실행하여 일반 텍스트를 대신 사용하도록 재정의할 수 있습니다:
$ ./index.js --console=text
또는 다음을 실행하여 콘솔 출력을 완전히 숨길 수 있습니다:
$ ./index.js --console=none
--ignore-ok 명령줄 인수를 전달하여 OK 상태를 반환하는 출력 결과를 무시할 수 있습니다.
$ ./index.js --csv=file.csv
$ ./index.js --json=file.json
$ ./index.js --junit=file.xml
CloudSploit은 클라우드 공급자 API에서 쿼리한 데이터를 JSON 형식으로 저장하며, 디버깅 또는 기록 목적으로 다른 파일과 함께 저장할 수 있습니다.
$ ./index.js --collection=file.json
--suppress 플래그를 전달하여 결과를 억제할 수 있습니다(여러 옵션 지원). 형식은 다음과 같습니다:
--suppress pluginId:region:resourceId
예를 들어:
# acmValidation 플러그인의 모든 결과 억제
$ ./index.js --suppress acmValidation:*:*
# 모든 us-east-1 리전 결과 억제
$ ./index.js --suppress *:us-east-1:*
# 모든 플러그인에 대해 모든 리전에서 "certificate/*" 정규식과 일치하는 모든 결과 억제
$ ./index.js --suppress *:*:certificate/*
--plugin 플래그를 사용하여 하나의 플러그인만 실행하려는 경우 사용할 수 있습니다.
$ ./index.js --plugin acmValidation
CloudSploit은 두 단계로 작동합니다. 먼저 클라우드 인프라 API를 쿼리하여 계정에 대한 다양한 메타데이터(즉, "수집" 단계)를 수집합니다. 필요한 모든 데이터가 수집되면 결과가 "스캐닝" 단계로 전달됩니다. 스캔은 수집된 데이터를 사용하여 잠재적인 잘못된 구성, 위험 및 기타 보안 문제를 검색하며, 이것이 최종 출력입니다.
--remediate 플래그를 사용하면 이 인수의 일부로 언급된 플러그인에 대한 수정을 실행할 수 있습니다. 이는 플러그인 이름 목록을 받습니다.
자세한 내용은 수정 개발 가이드를 참조하십시오.
Aqua Wave SaaS 제품, AWS 보안 정책 등에 대한 자세한 내용은 여기를 클릭하십시오.