Amazon Elasticsearch Service의 Alarm (Open Distro)

할 일



Amazon ES에 CloudTrail 로그를 전송하고 test_user1 로그인 성공을 감지하면 알림을 건너뜁니다.

이것을 OpenDistro Alarting을 사용하여

사전 준비



Amazon ES는 v6.5에서 설정되었으며 CloudTrail 로그를 기록합니다.
Slack을 준비하고 Webhook URL을 삼가하십시오.
  • Amazon ES: v6.5

  • 화면은 Kibana에서 "eventType: AwsConsoleSignIn AND userIdentity.userName: test_user1 AND responseElements.ConsoleLogin: Success"로 필터링하여 "test_user1"이라는 IAM 사용자로 로그인에 성공한 데이터를 검색하고 있습니다.



    OpenDistro Alarm 설정



    Destination



    Kibana의 왼쪽 메뉴에서 "Alerting"을 클릭하고 "Add Destination"을 클릭하십시오.



    이번은 통지처를 Slack로 합니다. 다음 정보를 입력하고 [Create]를 클릭하십시오.
  • Name: test_trigger
  • Type: Slack
  • Webhook URL : 자신의 Slack 녀석



  • 사용자 지정 Webhook 포함 대상을 선택할 수 있습니다



    이제 Destination은 완성

    모니터



    "Monitor"를 클릭하고 [Create monitor]를 클릭합니다.



    다음 입력
  • Monitor name: test_monitor
  • Every: 5



  • 다음을 입력하고 오른쪽 하단의 만들기를 클릭합니다.
  • How do you want to define the monitor?: Define using extraction query
  • Index: cwl-2019.05.14
  • Define extraction query: 다음 쿼리를 입력
  • {
        "size": 0,
        "query": {
            "bool": {
                "must": [
                    {
                        "match": {
                            "eventType": {
                                "query": "AwsConsoleSignIn",
                                "operator": "AND",
                                "prefix_length": 0,
                                "max_expansions": 50,
                                "fuzzy_transpositions": true,
                                "lenient": false,
                                "zero_terms_query": "NONE",
                                "auto_generate_synonyms_phrase_query": true,
                                "boost": 1
                            }
                        }
                    },
                    {
                        "match": {
                            "userIdentity.userName": {
                                "query": "test_user1",
                                "operator": "AND",
                                "prefix_length": 0,
                                "max_expansions": 50,
                                "fuzzy_transpositions": true,
                                "lenient": false,
                                "zero_terms_query": "NONE",
                                "auto_generate_synonyms_phrase_query": true,
                                "boost": 1
                            }
                        }
                    },
                    {
                        "match": {
                            "responseElements.ConsoleLogin": {
                                "query": "Success",
                                "operator": "AND",
                                "prefix_length": 0,
                                "max_expansions": 50,
                                "fuzzy_transpositions": true,
                                "lenient": false,
                                "zero_terms_query": "NONE",
                                "auto_generate_synonyms_phrase_query": true,
                                "boost": 1
                            }
                        }
                    }
                ],
                "filter": [
                    {
                        "range": {
                            "@timestamp": {
                                "from": "now-10m",
                                "to": null,
                                "include_lower": true,
                                "include_upper": true,
                                "boost": 1
                            }
                        }
                    }
                ],
                "adjust_pure_negative": true,
                "boost": 1
            }
        },
        "aggregations": {}
    }
    



    Trigger



    Create Trigger 화면이므로 다음 값을 입력하십시오.
  • Trigger name: test_trigger1



  • Trigger condition이 hit 건수>0이 되고 있다. 오른쪽 하단의 [Run]을 클릭하여 false임을 확인(지금은 10분 이내의 로그인이 없고 0건이므로 false)



    액션



    다음을 입력하고 Add action을 클릭합니다.
  • Action name: test_action1
  • Destination name: test_general - (Slack)
  • Message subject: login success! test_user1

  • ※입력이 끝나면 오른쪽 하단의 "Send test message"로 Webhook의 확인을 해도 좋다



    오른쪽 하단의 "Send test message"에서 Webhook 확인을 한 결과의 Slack 화면



    작업이 완료되면 오른쪽 하단의 만들기를 클릭합니다.



    만든 "test_monitor1"



    테스트



    test_user1로 AWS에 2회 정도 로그인/로그아웃을 하고 잠시 기다린다

    test_monitor1 화면에서 경고가 발생했음을 알 수 있습니다.



    슬랙에도 날아왔어



    Kibana의 Discover에서도 확인할 수 있습니다.



    이번이라면 Define extraction query를 최근 10분에 쿼리하고 있으므로, 10분이 지나면 Alert의 State는 Completed가 된다

    대시보드 화면



    Monitor측의 화면

    좋은 웹페이지 즐겨찾기