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

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

AWS Config용 사용자 지정 규칙 개발

다음 절차를 완료하여 사용자 지정 규칙을 생성합니다. 사용자 지정 규칙을 생성하려면 먼저 AWS Lambda 함수를 생성합니다. 이 함수에는 사용자 지정 규칙의 평가 논리가 포함되어 있습니다. 이어서 AWS Config에서 생성할 사용자 지정 규칙에 함수를 연결합니다.

사용자 지정 Config 규칙용 AWS Lambda 함수 생성

Lambda 함수는 AWS Lambda에 업로드하는 사용자 지정 코드로, 이벤트 소스가 이 함수에 이벤트를 게시하면 함수가 호출됩니다. Lambda 함수와 Config 규칙을 연결하면 규칙의 트리거가 발생했을 때 AWS Config가 이 함수를 호출합니다. 그러면 Lambda가 전송한 구성 정보를 AWS Config 함수에서 평가하여 평가 결과를 반환합니다. 에 대한 자세한 정보 Lambda 기능, 참조 기능 및 이벤트 소스 에서 AWS Lambda Developer Guide.

AWS Lambda에서 지원하는 프로그래밍 언어를 사용해 사용자 지정 규칙용 Lambda 함수를 생성할 수 있습니다. 이때 AWS Lambda 블루프린트를 사용자 지정하거나 AWS Config 규칙 GitHub 리포지토리의 샘플 함수를 사용하면 한층 쉽게 작업할 수 있습니다.

AWS Lambda 블루프린트

AWS Lambda 콘솔에 있는 샘플 함수(블루프린트)는 원하는 평가 논리를 추가하는 방식으로 사용자 지정할 수 있습니다. 함수를 생성할 때는 다음 블루프린트 중 선택할 수 있습니다.

  • config-rule-change-triggered - AWS 리소스 구성이 변경되면 트리거됩니다.

  • 구성-규칙-주기적 – 선택한 빈도로 트리거됩니다(예: 24시간마다).

AWS Config 규칙 GitHub 리포지토리

GitHub(웹 기반 호스팅 및 공유 서비스)에서 사용자 지정 규칙용 샘플 함수 퍼블릭 리포지토리를 이용할 수 있습니다. 샘플 함수는 AWS 커뮤니티에서 개발하고 제공합니다. 샘플을 사용하려면 해당 샘플의 코드를 새 AWS Lambda 함수에 복사하면 됩니다. 리포지토리를 보려면 https://github.com/awslabs/aws-config-rules/를 참조하십시오.

사용자 정의 규칙용 함수를 생성하는 방법

  1. AWS Management 콘솔에 로그인한 다음 https://console.aws.amazon.com/lambda/에서 AWS Lambda 콘솔을 엽니다.

  2. AWS Management 콘솔 메뉴에서 리전 선택기가 AWS Config 규칙을 지원하는 리전으로 설정되어 있는지 확인합니다. 지원되는 지역 목록은 를 참조하십시오. AWS Config 지역 및 끝점 에서 Amazon Web Services 일반 참조.

  3. Create a Lambda function(Lambda 함수 생성)을 선택합니다.

  4. 블루프린트 선택 페이지에서 AWS Config 규칙용 블루프린트 함수를 선택하여 시작점으로 삼거나 건너뛰기를 선택하여 블루프린트 없이 진행할 수 있습니다.

  5. 트리거 구성 페이지에서 다음을 선택합니다.

  6. 함수 구성 페이지에 이름과 설명을 입력합니다.

  7. 런타임에서 함수를 작성하는 프로그래밍 언어를 선택합니다.

  8. 코드 입력 유형에서 원하는 입력 유형을 선택합니다. 블루프린트를 사용하는 경우 코드 인라인 편집을 그대로 사용합니다.

  9. 선택한 코드 입력 유형에 필요한 메서드를 사용해 코드를 입력합니다. 블루프린트를 사용하는 경우 코드 편집기에 함수 코드가 입력되어 있으며, 이를 사용자 지정해 원하는 평가 논리를 포함시킬 수 있습니다. 이 코드는 AWS Config가 함수를 호출했을 때 제공하는 이벤트 데이터를 평가할 수 있습니다.

    • config-rule-change-triggered 블루프린트에 기반한 함수나 구성 변경으로 트리거되는 함수의 경우 이벤트 데이터는 변경된 AWS 리소스의 구성 항목 또는 크기가 큰 구성 항목 객체입니다.

    • config-rule-periodic 블루프린트에 기반한 함수나 사용자가 선택한 간격으로 트리거되는 함수의 경우 이벤트 데이터는 평가가 트리거된 시점에 대한 정보를 포함하고 있는 JSON 객체입니다.

    • 함수 유형이 어느 쪽이든 AWS Config는 JSON 형식으로 규칙 파라미터를 전달합니다. AWS Config에서 사용자 지정 규칙을 생성할 때, 전달할 규칙 파라미터를 정의할 수 있습니다.

    • AWS Config가 함수를 호출했을 때 게시하는 이벤트 예제는 AWS Config 규칙의 이벤트 예제 단원을 참조하십시오.

  10. 핸들러에서 함수의 핸들러를 지정합니다. 블루프린트를 사용하는 경우 기본값을 그대로 둡니다.

  11. [Role]에서 [Create new role from template(s)]를 선택합니다.

  12. [Role name]에 이름을 입력합니다.

  13. 정책 템플릿에서 AWS Config 규칙 권한을 선택합니다.

  14. 함수 구성 페이지에서 다음을 선택합니다.

  15. 페이지 검토에서 함수의 세부 정보를 확인하고 함수 생성을 선택합니다.

AWS Config에서 사용자 지정 규칙 생성

AWS Config를 사용해 사용자 지정 규칙을 생성하고 이 규칙을 Lambda 함수와 연결합니다.

사용자 지정 규칙을 생성하는 방법

  1. https://console.aws.amazon.com/config/에서 AWS Config 콘솔을 엽니다.

  2. AWS Management 콘솔 메뉴에서 리전 선택기가 사용자 지정 규칙용 AWS Lambda 함수를 생성한 리전과 동일하게 설정되어 있는지 확인합니다.

  3. 규칙 페이지에서 규칙 추가를 선택합니다.

  4. 규칙 추가 페이지에서 사용자 지정 규칙 추가를 선택합니다.

  5. 규칙 구성 페이지에서 이름과 설명을 입력합니다.

  6. AWS Lambda함수 ARN에, AWS Lambda가 함수에 할당한 ARN을 지정합니다.

    참고

    이 단계에서 지정한 ARN에 $LATEST 한정자가 포함되어서는 안 됩니다. 버전 한정자가 없는 ARN 또는 $LATEST 외에 다른 한정자가 있는 ARN을 지정할 수 있습니다. AWS Lambda는 함수 버전 관리를 지원하며, 각 버전에는 ARN과 한정자가 할당됩니다. AWS Lambda는 최신 버전에 $LATEST 한정자를 사용합니다.

  7. 트리거 유형에서 다음 중 하나 또는 모두를 선택합니다.

    • 구성 변경 - AWS Config가 구성 변경을 감지하면 Lambda 함수를 호출합니다.

    • 주기적 - AWS Config가 사용자가 선택한 간격(예: 24시간마다)에 따라 Lambda 함수를 호출합니다.

  8. 규칙의 트리거 유형에 구성 변경이 포함되어 있는 경우, AWS Config가 Lambda 함수를 호출하는 기준이 되는 변경 범위에서 다음 옵션 중 하나를 지정합니다.

    • 리소스 – 지정된 리소스 유형과 일치하는 리소스 또는 유형 + 식별자가 생성, 변경 또는 삭제되는 경우

    • 태그 – 지정된 태그가 있는 리소스를 생성, 변경 또는 삭제할 때

    • 모든 변경 사항 - AWS Config가 기록한 리소스가 생성, 변경 또는 삭제되는 경우

  9. 규칙의 트리거 유형에 주기적이 포함되어 있는 경우, AWS Config가 Lambda 함수를 호출하는 기준이 되는 빈도를 지정합니다.

  10. 규칙 파라미터 섹션에 AWS Lambda 함수가 평가하는 규칙 파라미터와 원하는 값을 지정합니다.

  11. Save를 선택합니다. 규칙 페이지에 새 규칙이 표시됩니다.

    AWS Lambda 함수의 평가 결과가 AWS Config에 수신될 때까지 규정 준수평가 중...으로 표시됩니다. 규칙과 함수가 정상적으로 작동하는 경우, 몇 분 뒤 결과 요약이 나타납니다. 새로 고침 버튼으로 결과를 업데이트할 수 있습니다.

    규칙 또는 함수가 정상적으로 작동하지 않는 경우, 규정 준수에 다음 중 하나가 표시될 수 있습니다.

    • 보고할 결과 없음 - AWS Config가 규칙에 따라 리소스를 평가했습니다. 해당 규칙이 범위 내의 AWS 리소스에 적용되지 않았습니다. 지정한 리소스가 삭제되었거나 평가 결과가 삭제되었습니다. 평가 결과를 받으려면 규칙을 업데이트하여 범위를 변경하거나 재평가를 선택하십시오.

      규칙에서 평가 결과를 보고하지 않았을 때도 이 메시지가 나타날 수 있습니다.

    • 범위 내 리소스 없음 - 규칙 범위 안에 있는 리소스가 없기 때문에 AWS Config가 기록된 AWS 리소스를 이 규칙에 따라 평가할 수 없습니다. 설정 페이지에서 AWS Config가 기록할 리소스를 선택할 수 있습니다.

    • Evaluations failed - 문제 파악에 도움이 되는 정보를 얻으려면 규칙 이름을 선택하여 세부 정보 페이지를 열고 오류 메시지를 확인하십시오.

참고

AWS Config 콘솔로 사용자 지정 규칙을 생성하면 사용자에게 적절한 권한이 자동 생성됩니다. AWS CLI로 사용자 지정 규칙을 생성하는 경우 aws lambda add-permission 명령을 사용해 AWS Config에 Lambda 함수를 호출할 권한을 부여해야 합니다. 자세한 내용은 AWS LambdaLambda의 Using Resource-Based Policies for (AWS Lambda Developer Guide Function Policies) 단원을 참조하십시오.

추가 리소스 유형 평가

사용자 지정 규칙을 생성하여 AWS Config에서 아직 기록하지 않은 리소스 유형에 대해 평가를 실행할 수 있습니다. 이 기능은 다음과 같은 추가 리소스 유형에 대한 규정 준수를 평가하려는 경우 유용합니다. AWS Config 은(는) 현재 을(를) 기록하지 않습니다. 사용자 지정 규칙으로 평가할 수 있는 추가 리소스 유형 목록은 AWS 리소스 유형 참조를 참조하십시오.

참고

AWS CloudFormation 사용 설명서의 목록에는 최근에 추가되어 AWS Config에 사용자 지정 규칙을 아직 만들 수 없는 리소스 유형이 포함되어 있을 수 있습니다. AWS Config는 정기적으로 리소스 유형 지원을 추가합니다.

Example

  1. 계정의 Amazon S3 Glacier 볼트를 평가하려 합니다. Amazon S3 Glacier 볼트 리소스는 현재 AWS Config에서 기록하지 않습니다.

  2. Amazon S3 Glacier 볼트가 계정 요구 사항을 준수하는지 평가하는 AWS Lambda 함수를 생성합니다.

  3. evaluate-glacier-vaults라는 사용자 지정 규칙을 생성한 후 이 규칙에 AWS Lambda 함수를 할당합니다.

  4. AWS Config가 Lambda 함수를 호출한 후 Amazon S3 Glacier 볼트를 사용자의 규칙과 대조하여 평가합니다.

  5. AWS Config가 평가를 반환하면 규칙의 준수 결과를 확인할 수 있습니다.

참고

사용자는 AWS Config 타임라인에서 구성 세부 정보를 확인하고, AWS Config 콘솔에서 AWS Config가 지원하는 리소스를 조회할 수 있습니다. 모든 리소스 유형을 기록하도록 AWS Config를 구성한 경우 새로 지원되는 리소스 역시 자동으로 기록됩니다. 자세한 정보는 지원되는 리소스 유형 단원을 참조하십시오.