AWS Config 사용자 지정 규칙 - AWS Config

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

AWS Config 사용자 지정 규칙

AWS Config 사용자 지정 규칙은 처음부터 새로 생성하는 규칙입니다. AWS Config사용자 지정 규칙을 생성하는 방법은 두 가지가 있습니다. 하나는 Lambda 함수 AWS Lambda(개발자 가이드) 를 사용하는 것이고 다른 하나는 언어인 Guard ( GitHub가드 리포지토리) 를 사용하는 것입니다. policy-as-code

AWS ConfigLambda로 생성한 사용자 지정 규칙을 AWS Config사용자 지정 Lambda 규칙이라고 AWS Config 하고 Guard로 생성한 사용자 지정 규칙을 사용자 지정 정책 규칙이라고 합니다. AWS Config

AWS Config사용자 지정 정책 규칙

Guard를 사용하여 작성한 규칙은 AWS Config 콘솔에서 생성하거나 AWS Config 규칙 API를 사용하여 생성할 수 있습니다. AWS Config 사용자 지정 정책 규칙을 사용하면 AWS Config 사용자 지정 규칙을 관리하는 Lambda 함수를 개발하기 위해 Java 또는 Python을 사용하지 않고도 사용자 지정 규칙을 생성할 수 있습니다. AWS Config 사용자 지정 정책 규칙은 구성 변경으로 시작됩니다. Guard에 대한 자세한 내용은 Guard GitHub 리포지토리를 참조하십시오.

AWS Config사용자 지정 Lambda 규칙

사용자 지정 Lambda 규칙은 Java 또는 Python을 사용하여 사용자 지정 규칙에 대한 Lambda 함수를 생성할 수 있는 옵션을 제공합니다. AWS Config Lambda 함수는 AWS Lambda 업로드하는 사용자 지정 코드이며, 이벤트 소스에서 해당 함수에 게시된 이벤트에 의해 호출됩니다. Lambda 함수가 규칙과 AWS Config 연결된 경우AWS Config, 규칙이 시작될 때 함수를 호출합니다. 그런 다음 Lambda 함수는 에서 AWS Config 전송한 구성 정보를 평가하고 평가 결과를 반환합니다. Lambda 함수에 대한 자세한 내용은 개발자 안내서의 함수 및 이벤트 소스를 참조하십시오. AWS Lambda

중요

불필요한 AWS Config 사용자 지정 Lambda 규칙 평가 방지

AWS Config사용자 지정 Lambda 규칙을 생성할 때는 삭제된 리소스의 평가를 처리하는 로직을 추가하는 것이 좋습니다.

평가 결과가 로 NOT_APPLICABLE 표시되면 삭제 대상으로 표시되고 정리됩니다. 로 NOT_APPLICABLE 표시되지 않은 경우 규칙이 삭제될 때까지 평가 결과는 변경되지 않고 그대로 유지되며, 이로 인해 규칙 삭제 ResourceCompliance 시 구성 항목 (CI) 생성이 예기치 않게 급증할 수 있습니다.

삭제된 리소스에 대해 반환하도록 AWS Config 사용자 지정 Lambda 규칙을 설정하는 방법에 NOT_APPLICABLE 대한 자세한 내용은 사용자 지정 Lambda 규칙을 사용하여 삭제된 AWS Config 리소스 관리를 참조하십시오.

참고: AWS Config 사용자 지정 정책 규칙은 기본적으로 이 동작을 처리합니다.

참고

많은 수의 Lambda 함수 호출

AWS Config규칙의 범위가 하나 이상의 리소스 유형으로 제한되지 않는 경우 사용자 지정 Lambda 규칙으로 인해 많은 수의 Lambda 함수 호출이 발생할 수 있습니다. 계정과 관련된 활동이 증가하지 않도록 사용자 지정 Lambda 규칙 범위 내에서 리소스를 제공하십시오. 리소스 유형을 선택하지 않은 경우 규칙은 계정의 모든 리소스에 대해 Lambda 함수를 호출합니다.

트리거 유형

계정에 규칙을 추가한 후 리소스를 규칙 조건과 AWS Config 비교합니다. AWS Config는 이 첫 평가 후 평가가 트리거될 때마다 계속 평가를 실행합니다. 평가 트리거는 규칙의 일부로 정의되어 있으며, 다음 유형을 포함할 수 있습니다.

구성 변경

AWS Config규칙 범위와 일치하는 리소스가 있고 리소스 구성이 변경된 경우 규칙에 대한 평가를 실행합니다. AWS Config가 구성 항목 변경 알림을 보내면 평가가 실행됩니다.

규칙의 범위를 정의하여 평가를 시작할 리소스를 선택합니다. 범위에는 다음이 포함될 수 있습니다.

  • 하나 이상의 리소스 유형

  • 리소스 유형과 리소스 ID의 조합

  • 태그 키와 값의 조합

  • 기록된 모든 리소스가 생성, 업데이트 또는 삭제된 때

AWS Config가 규칙의 범위와 일치하는 리소스의 변경을 발견하면 평가를 실행합니다. 범위를 사용하여 평가를 시작하는 리소스를 정의할 수 있습니다.

주기적

AWS Config선택한 빈도로 규칙 평가를 실행합니다 (예: 24시간마다).

하이브리드

일부 규칙에는 구성 변경과 주기적 트리거가 모두 있습니다. 이러한 규칙의 경우 구성 변경이 감지될 때 그리고 지정한 빈도에 따라 리소스를 AWS Config 평가합니다.

평가 모드

AWS Config규칙에는 두 가지 평가 모드가 있습니다.

능동적

사전 평가를 통해 리소스를 배포하기 전에 평가하세요. 이를 통해 해당 지역의 계정에 설정된 사전 예방 규칙 세트를 고려하여 리소스 속성 집합이 AWS 리소스를 정의하는 데 사용되는 경우 이를 준수하는지 아니면 NON_COMPLIANT인지를 평가할 수 있습니다.

자세한 내용은 평가 모드를 참조하십시오. 사전 평가를 지원하는 관리 규칙 목록은 평가 모드별 AWS Config 관리 규칙 목록을 참조하십시오.

참고

사전 예방 규칙은 NON_COMPLIANT로 플래그가 지정된 리소스를 수정하거나 배포를 방해하지 않습니다.

Detective

탐정 평가를 사용하여 이미 배포된 자원을 평가하십시오. 이를 통해 기존 리소스의 구성 설정을 평가할 수 있습니다.

AWS Config사용자 지정 Lambda 규칙을 사용하여 삭제된 리소스를 관리합니다.

삭제된 리소스에 대한 규칙 보고는 불필요한 규칙 평가를 방지하기 위해 평가 결과를 반환해야 합니다. NOT_APPLICABLE

리소스를 삭제하면 에 ResourceDeleted 대한 AWS Config configurationItem WITH가 생성됩니다. configurationItemStatus 이 메타데이터를 사용하여 규칙이 삭제된 리소스를 보고하는지 확인할 수 있습니다. 구성 항목에 대한 자세한 내용은 개념 | 구성 항목을 참조하십시오.

다음 코드 스니펫을 포함하여 삭제된 리소스가 있는지 확인하고 AWS Config 사용자 지정 람다 규칙의 평가 결과를 삭제된 리소스에 대해 NOT_APPLICABLE 보고하는지 여부로 설정하십시오.

Custom Lambda Rules (Node.js)
// Check whether the resource has been deleted. If the resource was deleted, then the evaluation returns not applicable. function isApplicable(configurationItem, event) { checkDefined(configurationItem, 'configurationItem'); checkDefined(event, 'event'); const status = configurationItem.configurationItemStatus; const eventLeftScope = event.eventLeftScope; return (status === 'OK' || status === 'ResourceDiscovered') && eventLeftScope === false; }
Custom Lambda Rules (Python)
# Check whether the resource has been deleted. If the resource was deleted, then the evaluation returns not applicable. def is_applicable(configurationItem, event): try: check_defined(configurationItem, 'configurationItem') check_defined(event, 'event') except: return True status = configurationItem['configurationItemStatus'] eventLeftScope = event['eventLeftScope'] if status == 'ResourceDeleted': print("Resource Deleted, setting Compliance Status to NOT_APPLICABLE.") return (status == 'OK' or status == 'ResourceDiscovered') and not eventLeftScope
참고

AWS Config관리형 규칙 및 AWS Config 사용자 지정 정책 규칙은 기본적으로 이 동작을 처리합니다.

AWS Config개발 키트 (RDK) 와 AWS Config 개발 키트 라이브러리 (RDKlib) 를 사용하여 Python으로 AWS Config 사용자 지정 lambd 규칙을 생성하는 경우 가져온 Evaluator 클래스가 이 동작을 확인합니다. RDK 및 RDKlib를 사용하여 규칙을 작성하는 방법에 대한 자세한 내용은 RDK 및 RDKlib를 사용하여 규칙 작성을 참조하십시오.