Slack 연동 가이드
============================

.. note:: 본문 중의 incoming webhook 의 경우, Slack의 정식 라이선스 사용자만 사용가능합니다.  


이 가이드는 Genian NAC와 Slack 연동에 대한 정보를 제공합니다. 여기에는 다음 정보가 포함 됩니다.

`연동의 목적`_

`연동을 위한 Slack 설정`_
   -	Slack App(bot) 생성하기 
   -	Slack App 설정 확인 

`연동을 위한 Genian NAC 설정`_
   -	검색필터 설정하기 
   -	Webhook 전송 설정하기 

  

**가이드 개요**

  - 이 가이드는 Genian NAC와 Slack의 연동설정방법 및 활용예시를 제공합니다. 
  - Genian NAC에서 제공하는 단말의 위협정보, 단말의 정보변경 등의 이벤트 정보를 Slack으로 관리자에게 전송하여, 관리자가 빠르게 인지하고 대응할 수 있도록 도움을 제공합니다.  

  .. image:: /images/int_slack_3rd.png
      :width: 650px

**연동의 목적**
--------------------

Genian NAC와 Slack을 연동하여, 다음과 같은 장점 및 효과를 IT관리자와 사용자에게 제공합니다. 

- 노드의 모든 정보를 대상으로 하는 Genian NAC와 Slack의 시너지 효과  
- 네트워크 위협에 대한 신속한 알림 
- 노드에서 발생하는 관심정보에 대한 알림정보 제공


**연동을 위한 Slack 설정**
---------------------------------
**Slack App(bot) 생성 및 설정하기**

   https://api.slack.com/apps에 Slack 계정으로 로그인 하신 후, App을 만듭니다. 

    
   App의 이름을 정해주고, Slack Workspace를 지정합니다. 

    -	App Name은 Slack에 메시지를 표시하는 Bot의 이름입니다. 
    -	Development Slack Workspace에서 메세지를 전송할 Workspace를 선택합니다. (Slack 계정과 연결된 Workspace 중에서 선택 가능합니다.)

**Webhook 전송테스트** 
   
   정상동작을 확인하기 위해, App 생성과정에서 확인한 Sample Curl을 복사하여, 터미널에서 명령을 적용해 봅니다. (윈도우와 리눅스가 다르므로 주의바랍니다)

 - 윈도우 터미널에서 실행 시,  
  
    .. code-block:: bash
    
     curl -X POST -H 'Content-type:application/json' --data "{\"text\":\"Hello, World!\"}" + Webhook URL

 - 리눅스 터미널에서 실행 시,  
  
    .. code-block:: bash
    
     curl -X POST -H 'Content-type:application/json' --data '{"text":"Hello, World!"}' + webhook URL 
 


**연동을 위한 Genian NAC 설정** 
--------------------------------------
 
**검색필터 설정하기** 

  1. Genian NAC의 메뉴에서 ‘감사 > 로그’에서 설정이 가능합니다. 
  2. 전송할 내용이 포함된 로그에 대해서 검색필터를 설정합니다. 
  3. 검색필터의 저장 및 전송 설정 

   - 검색필터의 ‘저장’을 클릭하여, 필터의 이름을 정해주고, 설명을 추가(생략가능)하고, 전송방식 중, ‘Webhook’을 선택합니다.  
   - Genian NAC는 이벤트 별로 다른 방식으로 메시지 전송이 가능합니다. 

**Webhook 설정하기** 

 - 검색필터 설정 후, Webhook 호출 옵션을 선택하면 다음의 옵션을 요구합니다. 
   
 - Webhook 전송설정 값: 

  .. csv-table::
     :header: "설정 명", "설정 값", "참고"
     :widths: 20 40 40

     "방식", "POST", "전송방식 선택"
     "URL 설정", "Slack APP의 URL 정보", "api.slack.com에서 Features > incoming Webhooks 참고" 
     "CHARSET", "UTF-8", " "
     "POST 데이터", "전송할 내용을 설정", "아래의 예제 참고" 
     "데이터 전송타입", "application/x-www-form-urlencoded, application/json 중 선택", "전송타입에 POST 데이터 값이 다르므로 주의"

  - 'application/x-www-form-urlencoded' 선택 시, POST 데이터  

    .. code-block:: bash 

     payload={"channel": "webhook_Alarm_Anthony(App 이름)", 
     "username": "mkkim(Slack 계정)", 
     "text": "신규 MAC이 탐지됨.(메시지내용 시작) IP={_IP} MAC={_MAC} HOST={_HOSTNAME} USERNAME={_USERNAME}"
     } 

  - 'application/json' 선택 시, POST 데이터 
  
    .. code-block:: bash
    
     {"text":" 신규 MAC이 탐지됨 | IP={_IP} MAC={_MAC}"} 


 
  - 자세한 설정방법은 장비에서 제공하는 도움말을 활용하시기 바랍니다. 

    
**이벤트 전송테스트 하기** 

  - 로그필터에서 설정한 내용이 Slack으로 전송되는지 여부테스트를 진행합니다.