트로포스피어를 사용하여 AWS Config 관리형 규칙이 포함된 AWS CloudFormation 템플릿을 생성합니다. - AWS 권장 가이드

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

트로포스피어를 사용하여 AWS Config 관리형 규칙이 포함된 AWS CloudFormation 템플릿을 생성합니다.

작성자: Lucas Nation(AWS) 및 Freddie Wilson(AWS)

환경: 프로덕션

기술: DevOps; 관리 및 거버넌스; 보안, ID, 규정 준수

워크로드: Microsoft, 오픈 소스

AWS 서비스: AWS Config, AWS CloudFormation

요약

많은 조직이 AWS Config 관리형 규칙을 사용하여 일반적인 모범 사례에 대한 Amazon Web Services(AWS) 리소스의 규정 준수를 평가합니다. 하지만 이러한 규칙은 유지 관리하는 데 시간이 많이 걸릴 수 있으며 이 패턴을 사용하면 Python 라이브러리인 Troposphere를 활용하여 AWS Config 관리형 규칙을 생성하고 관리할 수 있습니다.

이 패턴은 Python 스크립트를 사용하여 AWS 관리형 규칙이 포함된 Microsoft Excel 스프레드시트를 AWS 템플릿으로 변환함으로써 AWS Config 관리형 규칙을 관리하는 데 도움이 됩니다. CloudFormation Troposphere는 코드형 인프라(IAC) 역할을 하므로 JSON 또는 YAML 형식의 파일을 사용하는 대신 관리형 규칙을 사용하여 Excel 스프레드시트를 업데이트할 수 있습니다. 그런 다음 템플릿을 사용하여 AWS 계정에서 관리형 규칙을 생성하고 업데이트하는 AWS CloudFormation 스택을 시작합니다.

AWS CloudFormation 템플릿은 Excel 스프레드시트를 사용하여 각 AWS Config 관리 규칙을 정의하므로 AWS Management Console에서 개별 규칙을 수동으로 생성하지 않아도 됩니다. 스크립트는 각 관리형 규칙의 파라미터를 빈 딕셔너리로 기본 설정하고 범위의 기본값은 다음과 같습니다ComplianceResourceTypes. THE_RULE_IDENTIFIER.template file 규칙 식별자에 대한 자세한 내용은 AWS Config 설명서에서 AWS CloudFormation 템플릿을 사용하여 AWS Config 관리형 규칙 생성을 참조하십시오.

사전 조건 및 제한 사항

사전 조건 

에픽

작업설명필요한 기술
샘플 Excel 스프레드시트를 업데이트합니다.

첨부된 샘플 excel_config_rules.xlsx Excel 스프레드시트와 레이블을 다운로드하여 사용하려는 AWS Config 관리형 규칙으로 Implemented로 레이블을 지정합니다. 

로 표시된 규칙은 AWS CloudFormation 템플릿에 Implemented 추가됩니다.

개발자
(선택 사항) AWS Config 규칙 파라미터를 사용하여 config_rules_params.json 파일을 업데이트합니다.

일부 AWS Config 관리형 규칙에는 파라미터가 필요하며 --param-file 옵션을 사용하여 Python 스크립트에 JSON 파일로 전달해야 합니다. 예를 들어, access-keys-rotated 관리형 규칙은 다음 maxAccessKeyAge 파라미터를 사용합니다.

{ "access-keys-rotated": { "InputParameters": { "maxAccessKeyAge": 90 } } }

이 샘플 파라미터에서는 maxAccessKeyAge가 90일로 설정되어 있습니다. 스크립트는 파라미터 파일을 읽고 찾은 InputParameters를 추가합니다.

개발자
(선택 사항) AWS Config를 사용하여 config_rules_params.json 파일을 업데이트하십시오. ComplianceResourceTypes

기본적으로 Python 스크립트는 AWS 정의 템플릿에서 ComplianceResourceTypes를 검색합니다. 특정 AWS Config 관리형 규칙의 범위를 재정의하려면 --param-file 옵션을 사용하여 Python 스크립트에 JSON 파일로 전달해야 합니다.

예를 들어, 다음 샘플 코드는 ec2-volume-inuse-check를 위한 ComplianceResourceTypes["AWS::EC2::Volume"] 목록에 어떻게 설정되는지 보여줍니다.

{ "ec2-volume-inuse-check": { "Scope": { "ComplianceResourceTypes": [ "AWS::EC2::Volume" ] } } }
개발자
작업설명필요한 기술
requirements.txt 파일에서 pip 패키지를 설치합니다.

첨부된 requirements.txt 파일을 다운로드하고 IDE에서 다음 명령을 실행하여 Python 패키지를 설치합니다.

pip3 install -r requirements.txt

개발자
Python 스크립트를 실행합니다.
  1. 로컬 시스템에 첨부된 aws_config_rules.py 파일을 다운로드합니다.

  2. - python3 aws_config_rules.py --ou <OU_NAME> 명령을 실행합니다. 참고: --ou는 Excel 스프레드시트에서 선택할 OU 열을 정의합니다.

다음과 같은 선택적 파라미터도 추가할 수 있습니다.

  • --config-rule-option-Excel 스프레드시트에서 선택할 규칙을 정의합니다. 기본값은 Implemented 파라미터입니다.

  • --excel-file-Excel 스프레드시트의 경로입니다. 기본값은 aws_config_rules.xlsx입니다.

  • --param-file-파라미터 JSON 파일의 경로입니다. 기본값은 config_rules_params.json입니다.

  • --max-execution-frequency-AWS Config 관리형 규칙을 평가하는 빈도를 정의합니다. 선택 항목은One_Hour, Three_Hours, Six_Hours, Twelve_Hours, 또는 TwentyFour_Hours입니다. 기본값은 TwentyFour_Hours입니다.

개발자
작업설명필요한 기술
AWS CloudFormation 스택을 시작합니다.
  1. AWS 관리 콘솔에 로그인하고 AWS 콘솔을 연 다음 [스택 생성] 을 선택합니다. CloudFormation

  2. 템플릿 지정 페이지에서 템플릿 파일 업로드를 선택한 다음 AWS CloudFormation 템플릿을 업로드합니다. 

  3. 스택 이름을 지정하고 다음을 선택합니다.

  4. 태그를 지정하고 다음을 선택합니다.

  5. 스택 생성을 선택합니다.

개발자

첨부

이 문서와 관련된 추가 콘텐츠에 액세스하려면 attachment.zip 파일의 압축을 풉니다.