사용자 지정 Lambda 규칙 (일반 예제) - AWS Config

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

사용자 지정 Lambda 규칙 (일반 예제)

사용자 지정 Lambda 규칙을 생성하려면 다음 절차를 완료하세요. 사용자 지정 Lambda 규칙을 생성하려면 먼저 규칙에 대한 평가 로직이 포함된AWS Lambda 함수를 생성해야 합니다. 그런 다음 함수를 에서 생성한 사용자 지정 Lambda 규칙과 연결합니다AWS Config.

중요

Lambda 함수 호출AWS Config 권한을 허용할 때 보안 모범 사례로, 호출 요청과 함께sourceARN 및/또는 호출 요청에서 Lambda에 대한 리소스 기반sourceAccountId 정책에서 액세스를 제한하는 것이 좋습니다. 자세한 정보는 AWS Lambda리소스 기반 정책에 대한 보안 모범 사례을 참조하세요.

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

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

에서 지원하는 프로그래밍 언어를 사용하여 사용자 지정 Lambda 규칙에 대한 Lambda 함수를 생성할 수 있습니다.AWS Lambda 이 작업을 더 쉽게 하기 위해AWS Lambda 블루프린트를 사용자 지정하거나AWS Config 규칙 GitHub 저장소의 샘플 함수를 재사용할 수 있습니다.

AWS Lambda 블루프린트

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

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

  • config-rule-periodic— 선택한 빈도로 트리거됩니다 (예: 24시간마다).

AWS Config규칙 GitHub 리포지토리

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

사용자 정의 규칙용 함수를 생성하는 방법
  1. AWS Management Console에 로그인하고 AWS Lambdahttps://console.aws.amazon.com/lambda/에서 콘솔을 엽니다.

  2. AWS Management Console 메뉴에서 리전 선택기가 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 형식으로 규칙 파라미터를 전달합니다. 에서 사용자 지정 Lambda 규칙을 생성할 때 전달되는 규칙 파라미터를 정의할 수AWS Config 있습니다.

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

  10. 실행 역할에서AWS 정책 템플릿에서 새 역할 생성을 선택합니다.

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

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

  13. 세부 정보를 확인하고 함수 생성을 선택합니다.

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

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

사용자 지정 규칙을 생성하는 방법
  1. https://console.aws.amazon.com/config/ 에서AWS Config 콘솔을 엽니다.

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

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

  4. 규칙 유형 지정 페이지에서 사용자 지정 규칙 만들기를 선택합니다.

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

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

    참고

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

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

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

    • 주기적 — 선택한 빈도 (예: 24시간마다) 로 Lambda 함수를AWS Config 호출합니다.

  8. 규칙의 트리거 유형에 구성 변경이 포함된 경우 Lambda 함수를AWS Config 호출하는 데 사용할 변경 범위에 대해 다음 옵션 중 하나를 지정하십시오.

    • 모든 변경 사항 — 에 의해 기록된AWS Config 리소스가 생성, 변경 또는 삭제된 시점.

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

    • 태그 — 지정된 태그가 있는 리소스가 생성, 변경 또는 삭제되는 경우

  9. 규칙의 트리거 유형에 주기성이 포함된 경우 Lambda 함수를AWS Config 호출하는 빈도를 지정하십시오.

  10. 매개 변수 섹션에서AWS Lambda 함수가 평가하는 규칙 매개 변수와 원하는 값을 지정합니다.

  11. Next(다음)를 선택합니다. 검토 및 생성 페이지에서 규칙에 대한 세부 정보를 확인하고 규칙 함수 추가를 선택합니다. 새 규칙이 규칙 페이지에 표시됩니다.

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

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

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

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

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

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

참고

AWS Config콘솔에서 사용자 지정 Lambda 권한을 자동으로 생성합니다. 를 사용하여 사용자 지정 Lambda 규칙을 생성하는 경우aws lambda add-permission 명령을 사용하여 Lambda 함수를 호출할AWS Config 권한을 부여해야 합니다.AWS CLI 자세한 내용은 AWS Lambda개발자 안내서의AWS Lambda (Lambda 함수 정책) 에 대한 리소스 기반 정책 사용을 참조하십시오.

Lambda 함수를 호출할 수 있는AWS Config 권한을 부여하기 전에 다음 섹션을 참조하십시오AWS Lambda리소스 기반 정책에 대한 보안 모범 사례.

AWS Lambda리소스 기반 정책에 대한 보안 모범 사례

보안 모범 사례로서, Lambda 함수를 호출할 전체 SPN (서비스 계정 이름) 에 호출 권한을 부여하지 않으려면 호출 요청과 함께sourceARN 및/또는 호출 요청에서 Lambda 리소스 기반sourceAccountId 정책에서 액세스를 제한하는 것이 좋습니다.

sourceARN는 Lambda 함수를 호출하는AWS Config 규칙의 ARN입니다.

sourceAccountId는 규칙을 만든 사용자의 계정 ID입니다.

Lambda 리소스 기반 정책에서 액세스를 제한하면AWS Lambda 가 예상 사용자 및 시나리오를 대신하여 리소스에 액세스하고 있는지 확인하는 데 도움이 됩니다.

SPN 기반 권한을 추가하려면 다음 CLI를 사용해야 합니다.

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com

SourceAccountId 기반 권한을 추가하려면

규칙을 생성하기 전에 다음 CLI를 사용하여 리소스 기반 정책에 기반 권한을 추가할sourceAccountId 수 있습니다.

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-account your account ID

둘 다 SourceArn 및 SourceAccountId 기반 권한을 추가하려면

규칙을 생성한 후 다음 CLI를 사용하여 리소스 기반 정책에 기반 권한을 추가할sourceARN 수 있습니다. 이렇게 하면 특정 규칙 ARN만 Lambda 함수를 호출할 수 있습니다.

aws lambda add-permission --function-name rule lambda function name --action lambda:InvokeFunction --statement-id config --principal config.amazonaws.com --source-account your account ID --source-arn ARN of the created config rule

추가 리소스 유형 평가

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

참고

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

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

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

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

  4. AWS ConfigLambda 함수를 호출한 다음 규칙을 기준으로 Amazon S3 Glacier 저장소를 평가합니다.

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

참고

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