AWS Config를 사용하여 AWS 리소스가 규정 미준수 상태일 때 알림을 받으려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022-10-20

AWS 리소스가 규정을 준수하지 않을 때 알림을 트리거하는 Amazon EventBridge 규칙을 생성했지만 응답이 JSON 형식입니다. 사용자 지정 알림이 포함된 이메일을 받으려면 어떻게 해야 합니까?

간략한 설명

사용자 지정 이벤트 패턴 및 입력 변환기와 함께 EventBridge 규칙을 사용하여 AWS Config 평가 규칙 출력을 NON_COMPLIANT로 일치시킵니다. 그런 다음 응답을 Amazon SNS(Amazon Simple Notification Service) 주제로 라우팅합니다.

해결 방법

다음 예제에서는 ec2-security-group-attached-to-eni 관리형 규칙에서 Amazon EC2(Amazon Elastic Compute Cloud) 보안 그룹에 대해 AWS 리소스가 NON_COMPLIANT라고 보고할 때 SNS 알림이 수신됩니다.

참고: AWS Config 리소스 유형규칙을 특정 AWS 서비스 및 AWS Config 규칙으로 대체할 수 있습니다.

1.    Amazon SNS 주제를 아직 생성하지 않은 경우 Amazon SNS 시작하기의 지침을 따릅니다.

중요: Amazon SNS 주제는 AWS Config 서비스와 동일한 리전에 있어야 합니다.

2.    [EventBridge 콘솔]을 엽니다.

3.    규칙 생성(Create rule)을 선택합니다.

4.    [이름(Name)]에 규칙 이름을 입력합니다. 필요한 경우 [설명(Description)]을 입력합니다.

5.    규칙 유형에서 [이벤트 패턴이 있는 규칙(Rule with an event pattern)]을 선택합니다. 그러고 나서 [다음(Next)]을 선택합니다.

6.    이벤트 소스에서 AWS 이벤트 또는 EventBridge 파트너 이벤트를 선택합니다.

7.    이벤트 패턴 창에서 사용자 지정 패턴 (JSON 편집기)을 선택하고 다음 예제 이벤트 패턴을 복사하여 붙여넣습니다.

{
  "source": [
    "aws.config"
  ],
  "detail-type": [
    "Config Rules Compliance Change"
  ],
  "detail": {
    "messageType": [
      "ComplianceChangeNotification"
    ],
    "configRuleName": [
      "ec2-security-group-attached-to-eni"
    ],
    "resourceType": [
      "AWS::EC2::SecurityGroup"
    ],
    "newEvaluationResult": {
      "complianceType": [
        "NON_COMPLIANT"
      ]
    }
  }
}

8.    다음(Next)을 선택합니다.

9.    대상 유형에서 [AWS 서비스]를 선택합니다.

10.    대상 선택에서 SNS 주제를 선택합니다.

11.    주제(Topic)에서 원하는 SNS 주제를 선택합니다.

12.    Additional settings(추가 설정)을 확장합니다. 그런 다음 입력 대상 구성에서 입력 변환기를 선택합니다.

13. Configure input transformer(입력 변환기 구성)을 선택합니다. [입력 경로(Input Path)] 텍스트 상자의 [대상 입력 변환기(Target input transformer)]에 다음 예제 경로를 복사하여 붙여넣습니다.

{
  "awsRegion": "$.detail.awsRegion",
  "resourceId": "$.detail.resourceId",
  "awsAccountId": "$.detail.awsAccountId",
  "compliance": "$.detail.newEvaluationResult.complianceType",
  "rule": "$.detail.configRuleName",
  "time": "$.detail.newEvaluationResult.resultRecordedTime",
  "resourceType": "$.detail.resourceType"
}

14.    [템플릿(Template)] 텍스트 상자에 다음 예제 템플릿을 복사하여 붙여 넣습니다. 사용 사례에서 요구하는 시간, 규칙, 리소스 유형, 리소스 ID, AWS 계정 ID 및 AWS 리전, 규정 준수, 및 리소스 정보를 입력합니다.

"On <time> AWS Config rule <rule> evaluated the <resourceType> with Id <resourceId> in the account <awsAccountId> region <awsRegion> as <compliance> For more details open the AWS Config console at https://console.aws.amazon.com/config/home?region=<awsRegion>#/timeline/<resourceType>/<resourceId>/configuration"

15.    Confirm을 선택합니다. 그리고 Next(다음)을 선택합니다.

16.    선택적으로 새 태그를 추가할 수 있습니다. 그리고 Next(다음)을 선택합니다.

17.    규칙 생성을 선택합니다.

18.    이벤트 유형이 트리거된 후 다음과 같이 13단계에서 입력한 사용자 지정 필드가 포함된 SNS 이메일 알림이 수신됩니다.

"On ExampleTime AWS Config rule ExampleRuleName evaluated the ExampleResourceType with Id ExampleResource_ID in the account ExampleAccount_Id in Region ExampleRegion as ExamplecomplianceType. For more details open the AWS Config console at https://console.aws.amazon.com/config/home?region=ExampleRegion#/timeline/ExampleResourceType/ExampleResource_ID/configuration"