SHCA(Security Hub 규정 준수 분석기)는 국방부 RMF(위험 관리 프레임워크) 정보 시스템 인증을 지원하는 아티팩트를 생성합니다. Amazon Web Services에서 제공하는 문서를 활용하고 NIST800-53-Rev-5 제어를 AWS Security Hub 보안 제어 ID에 매핑하는 SHCA는 Security Hub에서 현재 환경 규정 준수를 요청하고 CSV, JSON 형식의 개별 아티팩트가 포함된 Amazon S3에 저장된 zip 파일을 생성합니다. OCSF는 SecOps에 RMF 도구로 가져올 아티팩트를 제공합니다.
NIST Special Publication 800-53 Revision 5 Security Standard를 갖춘 보안 허브이며 결과 생성을 위해 최소 24시간 동안 실행됩니다.
** 이 표준 활성화에 대한 자세한 내용은 보안 표준 활성화 및 비활성화를 참조하세요.
Security Hub 내의 모든 결과는 JSON으로 추출되어 저장됩니다.
더 나은 분석 및 가독성을 위해 JSON의 각 제어/리소스 ID에서 가장 최근 결과가 CSV 파일에 기록됩니다.
모든 컨트롤의 요약은 다음 방법에 따라 CSV 파일에서 생성됩니다.
이 단계에서는 해당 컨트롤의 상태에 따라 각 NIST SP 800-53 컨트롤에 대한 파일을 생성하고 이를 두 폴더에 저장합니다.
또한 이 단계에서는 S3 버킷에서 다양한 파일을 검색하고 포함합니다. 폴더와 해당 내용은 다음과 같습니다.
이러한 파일은 Security Hub의 NIST SP 800-53 자동 보안 검사를 기반으로 AWS 리소스의 보안 상태에 대한 포괄적인 데이터를 제공합니다.
AWS CDK를 사용하기 위해 설치해야 할 사항은 다음과 같습니다.
Linux에서 Python 3.7 이상, pip, virtualenv 및 Node.js 설치 유효성 검사
node --version
Python, Java 또는 C#으로 작업하는 개발자를 포함하여 모든 AWS CDK 개발자에게는 Node.js 14.15.0 이상이 필요합니다. 지원되는 모든 언어는 Node.js에서 실행되는 동일한 백엔드를 사용합니다. 적극적인 장기 지원 버전을 권장합니다. 귀하의 조직에서는 다른 권장 사항을 제시할 수 있습니다.
기타 사전 요구 사항은 AWS CDK 애플리케이션을 개발하는 언어에 따라 다르며 다음과 같습니다.
python3 --version
pip3 --version
virtualenv --version
wget --version
jq --version
npm install -g aws-cdk
다음 명령을 실행하여 올바른 설치를 확인하고 AWS CDK의 버전 번호를 인쇄합니다.
cdk --version
cdk.json
파일은 CDK 도구 키트에 앱 실행 방법을 알려줍니다.
이 프로젝트는 표준 Python 프로젝트처럼 설정됩니다. 또한 초기화 프로세스는 이 프로젝트 내에 .venv
디렉터리에 저장된 virtualenv를 생성합니다. virtualenv를 생성하려면 venv
패키지에 액세스할 수 있는 경로에 python3
(또는 Windows용 python
) 실행 파일이 있다고 가정합니다. 어떤 이유로든 virtualenv 자동 생성에 실패하면 virtualenv를 수동으로 생성할 수 있습니다.
MacOS 및 Linux에서 virtualenv를 수동으로 생성하려면:
$ python3 -m venv .venv
init 프로세스가 완료되고 virtualenv가 생성되면 다음 단계를 사용하여 virtualenv를 활성화할 수 있습니다.
$ source .venv/bin/activate
Windows 플랫폼을 사용하는 경우 다음과 같이 virtualenv를 활성화합니다.
% .venvScriptsactivate.bat
virtualenv가 활성화되면 필요한 종속성을 설치할 수 있습니다.
$ pip install -r requirements-deploy.txt
Pandas용 AWS SDK(AWS Wrangler)용 AWS Lambda Layer를 다운로드하여 다음 위치에 배치합니다. 자세한 내용은 README.md를 참조하십시오.
bash update_aws_wrangler.sh
AWS CDK를 사용하여 스택을 배포하려면 배포 중에 AWS CloudFormation에서 사용할 수 있는 전용 Amazon S3 버킷과 기타 컨테이너가 필요합니다. 이를 생성하는 것을 부트스트래핑이라고 합니다. 부트스트랩하려면 다음을 실행하십시오.
cdk bootstrap aws://ACCOUNT-NUMBER/REGION
이제 이 코드에 대한 CloudFormation 템플릿을 합성할 수 있습니다.
$ cdk synth
cdk.json
에서 다음 값을 수정합니다. - "environment": "shca"
- SHCA 배포에 대한 설명이 포함된 이름을 지정합니다. 이는 임의의 값일 수 있으며 기능에 영향을 주지 않습니다. AWS 계정 내의 SHCA 리소스에 레이블을 지정하는 것입니다. - "vpc_cidr": "10.30.0.0/24"
- [Lambda.3] Lambda 함수를 생성하지 않도록 Lambda 함수를 실행하기 위해 생성된 소규모 VPC에 대한 CIDR 범위를 설정합니다. 환경 내에서 아직 사용되지 않는 CIDR 범위를 선택하세요. - "schedule_주파수_일": 7
- 이 설정은 SHCA가 규정 준수 보고를 생성하는 빈도를 나타냅니다. - "send_failure_notification_email": true
또는 false
- true
인 경우 failure_notification_email
에 제공된 주소로 이메일이 전송됩니다. - "failure_notification_email": [email protected]
- 이 이메일 주소는 SHCA 실행 실패 시 알림을 받게 됩니다.
여기에서는 SHCA(CloudShell 또는 CDK) 설치 방법에 대한 두 가지 옵션이 있습니다.
위의 필수 구성 요소를 설치할 수 있는 노트북이나 개발 환경에 액세스할 수 없는 경우 CloudShell 서비스를 사용하여 SHCA를 배포할 수 있습니다. 또한 AWS IAM Identity Center의 임시 자격 증명을 사용하면 계정에서 단일 CloudShell을 사용하여 CloudFormation API를 호출하고 액세스 권한이 있는 모든 계정에 코드를 배포할 수 있습니다.
CloudShell은 상업용 및 GovCloud 지역을 포함한 IL2-IL5 환경에서 사용하도록 DISA의 승인을 받았습니다. CloudShell이 조직의 AWS 배포에 사용되도록 승인되었는지 확인하려면 조직 규정 준수 담당자에게 문의하세요.
이 저장소의 메인 브랜치에서 shca-main.zip과 같은 소스 코드를 다운로드하세요.
배포 환경으로 사용할 AWS 계정의 CloudShell 서비스로 이동합니다. 배포를 수행하기 전에 CloudShell에 충분한 공간이 있는지 확인하십시오. 공간이 부족하면 실패합니다.
CloudShell에 소스 코드를 업로드합니다. 파일의 압축을 풀고 shca-main
디렉터리에 CD를 넣으세요.
unzip shca-main.zip && cd shca-main
SHCA를 배포하려는 계정에 대해 AWS IAM Identity Center의 임시 자격 증명을 붙여넣습니다. AWS CDK는 다른 계정에서 CloudShell을 사용하는 경우에도 이러한 임시 자격 증명(이제 환경 변수로 설정됨)을 사용하여 올바른 대상 계정에 코드를 배포합니다.
aws sts get-caller-identity
실행하고 주체 및 계좌 번호가 예상 값과 일치하는지 확인합니다.
실행 권한을 부여하고 ./cloud_shell_deployment.sh
실행합니다.
chmod +x cloud_shell_deployment.sh && ./cloud_shell_deployment.sh
CDK가 셸에서 두 번 메시지를 표시하면 y
입력합니다.
$ cdk deploy
cdk ls
앱의 모든 스택을 나열합니다.cdk synth
합성된 CloudFormation 템플릿을 내보냅니다.cdk deploy
이 스택을 기본 AWS 계정/지역에 배포cdk diff
배포된 스택을 현재 상태와 비교cdk docs
열기 CDK 문서 SHCA가 배포되면:
Step Functions/State Machines 서비스로 이동합니다.
YOUR-ENVIRONMENT-NAME-State-Machine
선택하세요.
방금 SHCA를 처음 배포한 경우 실행을 확인하여 상태 시스템이 성공적으로 실행되었는지 확인하세요. 상태 시스템이 성공적으로 실행된 경우 6단계로 건너뜁니다 . 그렇지 않고 필요에 따라 SHCA를 실행하려면 "실행 시작"을 선택하십시오.
팝업 창에서 다시 "실행 시작"을 선택하십시오. 모든 기본값을 그대로 둡니다.
페이지 하단으로 스크롤하여 모든 단계가 성공적으로 완료될 때까지 기다립니다. 완료되면 하단에 "ExecutionSucceeded"가 표시됩니다.
Amazon S3 콘솔로 이동하여 "-resources-%YOUR_ACCOUNT_NUMBER%"라는 버킷을 찾아 선택합니다.
이 버킷에서 customer/compliance_scraper/로 이동합니다.
최신 아티팩트 zip 파일을 다운로드합니다.
zip에 포함된 파일을 검토하세요.
자세한 내용은 기여를 참조하세요.
이 프로젝트는 Apache-2.0 라이선스에 따라 라이선스가 부여됩니다.