BLOG

Rule Development 키트를 사용하여 사용자 지정 AWS Config 규칙을 개발하는 방법
작성일: 2018-03-20

고객이 자신의 맞춤형 AWS Config규칙을 신속하게 프로토타입, 개발 및 구축할 수 있도록 AWS에서는 RDK (AWS Config Rules Development Kit)의 새로운 버전을 소개합니다.

 

RDK는 Config를 사용할 때 보안 및 규정 준수 피드백 사이클을 단축하도록 설계된 명령줄 유틸리티입니다. 이를 통해 감사 업체가 선호하는 규정 준수 프레임워크를 구축할 수 있습니다. 또한 이는 end-to-end DevSecOps 파이프라인에 포함될 수 있습니다. 이 파이프라인을 사용하거나 명령줄에서 대화형으로서 사용자 지정 Config, AWS LambdaIAM 리소스를 만들고 구성합니다.

 

이 글에서는 RDK를 시작하는 방법을 보여 드리겠습니다.

 

배경
Config는 지속적인 규정 준수를 위한 기본 서비스입니다. 이를 통해 계정의 리소스 및 구성 항목에 대한 변경 사항을 추적할 수 있습니다. 구성 항목이 바람직하지 않은 영역으로 갔을 때를 이를 탐지하는 규칙을 정의할 수 있습니다.

 

Config 에는 고객이 흔히 사용하는 다양한 사용 사례를 다루는 기본 제공 규칙이 있습니다. Lambda 기능으로 지원하는 사용자 지정 Config Rule을 생성할 수도 있습니다. 규제가 심한 산업에서 운영되는 많은 기업 고객들은 규정을 준수하는 특정 정의가 필요한 특별한 요구 사항을 갖고 있습니다. 또한 강력한 서버리스 Config 프레임워크를 사용하여 비용 및 보안 제어와 같은 기타 살림살이 기능을 구축하고 있는 점들도 발견합니다.


시작하기
첫 번째 단계는 AWS계정에 필요한 권한이 있는지 확인한 다음 도구 자체를 설치하는 것입니다.

 

선행 조건
시작하려면 AWS계정과 해당 계정 내의 Config 규칙, Lambda 기능 및 다양한 IAM 리소스를 수정하는 데 필요한 권한이 필요합니다. rdk-minimum-permissions.json 샘플 정책 문서는 필요한 사용 권한을 보여 줍니다.

 

RDK를 사용하면 거의 모든 지원 언어로 람다 기능을 만들 수 있습니다. Python으로 작성되어 있으며 Python 2.7과 3.6 모두 호환됩니다. 권장 설치 방법은 pip(pip install rdk)입니다. 소스 코드를 보려면 GitHub, aws-config-rdk repo를 복제하세요.

 

명령 프롬프트에서 rdk을 입력하면 올바르게 설치되었는지 확인할 수 있습니다. 사용 지침 및 필수 항목에 대한 오류를 확인하실 수 있습니다.

 

 

런타임에 특정한 선행조건

Python및 Node로 지원되는 Config 규칙을 사용하면 추가 설정 없이도 Lambda 기능을 구현할 수 있습니다. Java 8 또는 .NET Core 런타임을 사용하려면 다음과 같은 추가 구성 요소가 필요합니다.

 

  • Java: Gradle을 사용하여 배포 패키지를 작성하고, CLI에서 액세스 할 수 있는 곳에 설치합니다.
  • .NET: Microsoft 에서는 설치해야 하는. NETFramework v1.0의 최신 릴리스뿐 아니라 “dotnet”이라는 NET용 CLI를 제공합니다. 이러한 키는 NET코드에 대한 Lambda 배포 패키지를 구축하고 생성하는 데 필요합니다.

 

Workflow
이제 RDK가 설치되었으니 사용자 Config 규칙을 생성, 배포 및 관리하기 위한 단계를 진행하세요.

 

인증 정보 설정
RDK는 AWS API에 액세스 하는 데 boto3 라이브러리를 사용하므로, 자격 증명을 전달하는 표준 방법은 모두 효과가 있을 것입니다. 자격 증명을 제공하는 방법에 대한 자세한 내용은 Boto 설명서의 자격 증명에서 옵션 3~8을 참조하거나 다음 명령줄 매개 변수를 사용하여 전달할 수 있습니다.

–profile
–region
–access-key-id
–secret-access-key

 

초기화
rdk init 을 사용하면 작업 디렉토리를 만들 수 있습니다. 작업 디렉토리에는 규칙 정의와 Config 규칙을 작성하는 데 사용되는 템플릿 파일의 스냅샷이 저장됩니다. 이상적으로, 작업 디렉토리는 지역 코드 repo와 Python virtualenv이지만, 그냥 단순히 필요한 것은 아닙니다. init 명령은 또한 사용자의 자격 증명으로 지정된 계정에서 AWS Config를 구성합니다. Config 는 이제 당신의 리소스와 구성에 관한 정보를 트랙킹하기 시작합니다.

 

 

 

생성 또는 수정하기
이제 규칙을 만들어 봅시다!
rdk create <rulename> –runtime <runtime>을 사용하여 초기 규칙 코드를 포함하는 로컬 규칙 폴더와, 일부 도우미 코드 및 추후 규칙을 배포하는 데 사용되는 매개 변수를 생성하십시오. 이를 위해서는 올바른 Lambda 런타임을 지정해야 합니다. 선택적 플래그에는 구성 변경 이벤트를 촉발시키는 리소스 유형, 예약된 평가의 빈도 및 Config가 지원되는 Lambda 기능에 전달하는 모든 매개 변수가 포함됩니다.

 

규칙 매개 변수를 나중에 변경하려면 rdk modify <rulename> –<flag> <option>을 사용하여 이전에 로컬 규칙 정의에 대해 설정한 옵션을 덮어쓸 수 있습니다.

 

 

수정하기
생성한 폴더로 이동하면 선택한 런타임에 따라 여러 파일이 표시됩니다.

Python또는 Node.js Lambda 기능으로 지원되는 Config 규칙에는 사용자 지정 로직을 추가할 코드 템플릿인 규칙 이름과 동일한 .py 도는 .js 파일이 있습니다. 또한 이 파일은 입력을 검증하고 규정 준수 결과를 Config에 다시 제출하여 오류와 로깅을 처리하는 데 필요한 기능을 제공하는 런타임에 관련한 다른 파일들도 있습니다.

 

CI, 규칙 매개 변수 또는 AWS 환경에서 사용할 수 있는 기타 데이터를 기반하여 원하는 논리를 추가할 수 있습니다. 이제 올바른 규정 준수 결과만 반환하면 됩니다. Java로 람다 기능을 작성하는 경우 추가한 종속성으로 build.gradle파일을 업데이트해야 합니다.

 

배포하기
이제 사용자 지정 규칙을 AWS에 배포할 준비가 되었습니다!

 

작업 디렉토리에서  rdk deploy <rulename> 를 사용하여 변경 사항을 AWS로 푸시 합니다. 이 기능은 씬 뒤에 AWS CloudFormation 을 사용하여 Config 규칙인 Lambda 기능을 만듭니다. 또한 이들이 서로 커뮤니케이션 할 수 있도록 해 주는 필요한 정책과 권한도 생성합니다. 배포할 여러 규칙을 나열하거나, – all 플래그를 사용하여 작업 디렉토리의 모든 규칙을 푸시 할 수 있습니다. Java또는. NET을 사용하는 경우 코드를 컴파일하여 Lambda 배치에 맞게 적절히 패키징 합니다.

 

 

 

모니터링
규칙이 성공적으로 배포되면 실제로 이것이 무얼 하는지 알고 싶을 것입니다!

 

일부 로깅으로 Lambda 기능을 설정하면 해당 기능이 수행하는 결정에 대한 디버깅 출력을 얻을 수 있습니다. RDK를 사용하면 로그 명령을 사용하여 기능을 빠르게 살펴볼 수 있습니다. 여기에는 돌아볼 로그 이벤트 수에 대한 명령줄 인수가 포함되어 있으며, 로그 그룹에서 지정한 기능을 지속적으로 폴링하고 결과를 반환하기 위한 –f 플래그도 지원합니다.

 

다음은 로그 명령의 예입니다.

 

 

 

로그에서 규칙이 예상대로 기능을 다하고 있는지 확인하세요. 만약 로직에 버그가 있다면 룰 코드와 재배포를 통하여 재빨리 반복을 실행하세요.

 

규칙을 배포하고 올바르게 작동하는지 확인한 후에는 AWS Config 콘솔에서 규정 준수 상태를 확인할 수 있습니다.

 

 

 

결론

RDK를 통해 AWS고객이 세계적 수준의 엔터프라이즈 레벨 규정 준수 제어를 신속하고 쉽게 구축하여 여유 공간을 확보하고 프레임워크를 AWS Config에 적용할 수 있게 되어 너무 기쁩니다.

 

Config는 클라우드 기반 end-to-end 보안 및 규정 준수 프레임워크의 강력한 구성 요소입니다. 시간에 따른 변화를 추적하는 기능은 Amazon Cloud Watch Event에 대한 큰 보완 요소로서, 개별 API 호출에 대하여 실시간에 가까운 응답을 제공합니다.

 

이러한 서비스가 포괄적인 “코드 준수”솔루션을 제공하기 위해 어떻게 협력하는지에 대한 자세한 내용은 Largest Repo for Serverless Compliance-as-Code (SID205) re:Invent 2017 세션을 참고하세요.

 

원문 URL: https://aws.amazon.com/ko/blogs/mt/how-to-develop-custom-aws-config-rules-using-the-rule-development-kit/

 

** 메가존 TechBlog는 AWS BLOG 영문 게재글중에서 한국 사용자들에게 유용한 정보 및 콘텐츠를 우선적으로 번역하여 내부 엔지니어 검수를 받아서, 정기적으로 게재하고 있습니다. 추가로 번역및 게재를 희망하는 글에 대해서 관리자에게 메일 또는 SNS페이지에 댓글을 남겨주시면, 우선적으로 번역해서 전달해드리도록 하겠습니다.