맞춤 작업 만들기

다음에서 지원:

첫 번째 맞춤 통합에서 매개변수를 정의하고 연결을 테스트하는 Ping 작업을 만들었습니다. 이 문서에서는 맞춤 통합을 위해 다음 두 가지 작업을 새로 만드는 방법을 안내합니다.

  • 도메인 세부정보 가져오기: 도메인 정보를 가져와 결과를 JSON 형식으로 표시합니다.
  • 항목 보강: 도메인 세부정보로 항목을 보강합니다.

커스텀 작업 만들기

맞춤 작업을 만들려면 다음 단계를 따르세요.

  1. 통합 개발 환경 (IDE)으로 이동하여 추가를 클릭하여 새 IDE 항목을 추가합니다.
  2. 작업 라디오 버튼을 선택합니다.
  3. 작업 이름을 Get Domain Details로 지정하고 통합을 선택합니다.
  4. 만들기를 클릭합니다. IDE에서 내장 코드 주석과 설명이 포함된 새 템플릿을 생성합니다.

작업 매개변수 구성

WHOIS XML API 문서에 따르면 도메인 세부정보 가져오기 작업에는 Check AvailabilityDomain Name의 두 매개변수가 필요합니다. 이러한 매개변수를 구성하려면 다음 단계를 따르세요.

  1. IDE 모듈에서 추가를 클릭합니다.
  2. 첫 번째 매개변수 만들기: 사용 가능 여부 확인 필드를 작성하고 저장을 클릭합니다. 이 매개변수는 도메인의 사용 가능 여부를 나타내며, 이 결과는 나중에 만드는 자동화에서 사용됩니다.
  3. 두 번째 매개변수 만들기: 도메인 이름 필드를 입력하고 저장을 클릭합니다. 이 필드를 사용하여 작업에서 확인할 도메인을 입력합니다.

도메인 세부정보 가져오기 작업 수정

도메인 세부정보 가져오기 작업을 수정하려면 다음 단계를 따르세요.

  1. 제공된 Get Domain Details 코드를 복사하여 IDE에 붙여넣습니다. 코드를 검토합니다. 객체는 클래스의 end 메서드를 사용하여 출력 메시지와 결과 값을 반환해야 합니다. 예를 들면 다음과 같습니다.
    siemplify.end(msg, None)
  2. 통합 및 작업 매개변수 추출: siemplify.extract_configuration_param 함수를 사용하여 API 키와 같은 통합 매개변수를 추출합니다. 마찬가지로 Domain NameCheck availability을 비롯하여 구성한 작업 매개변수는 siemplify.extract_action_param 함수를 사용하여 추출됩니다.
    
        api_key =
        siemplify.extract_configuration_param(provider_name=INTEGRATION_NAME,
        param_name="API Key") 
    url = f"https://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey={api_key}&outputFormat=json" 
        domain = siemplify.extract_action_param(param_name="Domain Name",
        print_value=True) availability_check =
        siemplify.extract_action_param(param_name="Check availability",
        is_mandatory=False, print_value=True)
      
  3. 요청을 빌드하고 결과를 처리합니다.
    1. 통합 및 작업 매개변수를 추출한 후 요청 URL을 빌드할 수 있습니다. URL은 availability_check 매개변수의 불리언 값을 기반으로 구성됩니다.
    2. URL이 준비되면 WHOIS 사이트에 요청을 보냅니다.
    3. 사이트의 응답을 파싱하고 관련 데이터를 작업의 결과에 추가합니다.
    4. 사용자에게 표시될 출력 메시지를 정의하고 JSON 결과를 포함합니다.
      
        # Add domain to scan
            url = f"{url}&domainName={domain}"
            # Determine availability check
            if availability_check.lower() == 'true':
                availability_check_qs = 1
            else:
                availability_check_qs = 0
            url = f"{url}&da={availability_check_qs}"
            response = requests.get(url)
            response.raise_for_status()
            # Add a Json result that can be used in the next steps of the playbook.
            siemplify.result.add_result_json(response.json())
            # Add the Json to the action result presented in the context details.
            siemplify.result.add_json("WhoisDetails", response.json())
            msg = f"Fetched data for {domain}"
            siemplify.end(msg, None)
        if __name__ == "__main__":
            main()
        

작업에 JSON 결과 추가

도메인 세부정보 가져오기 작업의 일부로 도메인 세부정보 가져오기를 클릭하여 JSON 예시를 추가합니다. 첫 번째 자동화 만들기 절차의 플레이북 디자이너에 있는 JSON 예시를 사용하여 JSON에서 특정 필드를 추출합니다.

  1. JSON 가져오기: WHOIS 사이트의 JSON 예에서 JSON을 복사합니다.
  2. JSON 아이콘 사용 설정: IDE의 세부정보 탭에서 JSON 결과 포함 전환 버튼을 사용 설정하여 IDE 상단에 JSON 아이콘이 표시되도록 합니다.
  3. JSON 가져오기: file_json JSON 샘플 관리 > login JSON 예시 가져오기를 클릭합니다.

작업 테스트

만든 작업을 테스트하려면 다음 단계를 따르세요.

  1. 테스트 탭으로 이동합니다.
  2. 범위에서 테스트 사례통합 인스턴스를 선택합니다.
  3. IDE에서 슬라이드쇼 재생을 클릭합니다.
  4. 테스트 탭에서 작업의 결과를 확인합니다. 테스트가 완료된 후 디버그 출력 탭을 확인하여 로그와 출력을 검토할 수도 있습니다.

테스트 사례 만들기

환경에 테스트 사례가 없는 경우 케이스 > 알림을 테스트 사례로 수집으로 이동하여 테스트 사례를 만듭니다. 이 작업은 케이스 대기열에 테스트 라벨과 함께 표시되는 테스트 케이스를 만듭니다. 테스트 사례를 만든 후 IDE로 돌아가 목록에서 테스트 사례를 선택합니다.

테스트 사례를 만들려면 다음 단계를 따르세요.

  1. 케이스 페이지로 이동하여 케이스를 선택합니다.
  2. 알림을 테스트 사례로 수집합니다. 그러면 케이스 대기열에 Test 라벨이 있는 새 케이스가 생성됩니다.

테스트 사례를 만든 후 IDE로 돌아가 목록에서 선택합니다.

보강 작업 만들기

이 절차에서는 엔티티에 새 데이터를 추가하기 위한 보강 작업을 만드는 데 중점을 둡니다. 그런 다음 엔티티 탐색기에서 풍부해진 데이터를 볼 수 있습니다. 강화 작업을 만들려면 다음 단계를 따르세요.

  1. IDE에서 새 작업을 만들고 이름을 Enrich Entities로 지정합니다.
  2. 다음 코드를 복사하여 작업에 붙여넣습니다.
    
      from SiemplifyAction import SiemplifyAction 
      from SiemplifyUtils import output_handler 
      from SiemplifyDataModel import EntityTypes
      
      import requests
      
      # Example Consts: 
      INTEGRATION_NAME = "My first Integration - Whois XML API" 
    
      SCRIPT_NAME = "WHOIS XML API EnrichEntities"
      
      @output_handler 
      def main():    
          siemplify = SiemplifyAction()    
          siemplify.script_name = SCRIPT_NAME    
          siemplify.LOGGER.info("================= Main - Param Init =================")     
    
          api_key =
          siemplify.extract_configuration_param(provider_name=INTEGRATION_NAME,
          param_name="API Key") url =
          f"https://www.whoisxmlapi.com/whoisserver/WhoisService?apiKey={api_key}&outputFormat=json"
          
          
          siemplify.LOGGER.info("----------------- Main - Started -----------------")
          output_message = "output message :" # human readable message, showed in UI
          as the action result successful_entities = [] # In case this actions
          contains entity based logic, collect successful entity.identifiers 
          
        for entity in siemplify.target_entities:        
        siemplify.LOGGER.info(f"processing entity {entity.identifier}")
          if (entity.entity_type == EntityTypes.HOSTNAME and not entity.is_internal)
          or entity.entity_type == EntityTypes.URL: entity_to_scan = entity.identifier
          
                scan_url = f"{url}&domainName={entity_to_scan}"              response = requests.get(scan_url)            
                response.raise_for_status()            
                register_details = response.json().get("WhoisRecord", {}).get("registrant", {})            if register_details:                
            entity.additional_properties.update(register_details)        successful_entities.append(entity) 
    
          if successful_entities:        
            output_message += "\n Successfully processed entities:\n {}".format("\n
            ".join([x.identifier for x in successful_entities]))
            siemplify.update_entities(successful_entities) # This is the actual
            enrichment (this function sends the data back to the server) 
        else:        
            output_message += "\n No entities where processed."      
      result_value = len(successful_entities) 
    
          siemplify.LOGGER.info("----------------- Main - Finished -----------------")    
          siemplify.end(output_message, result_value) 
    
      if __name__ == "__main__":    
          main()
      
  3. 매개변수를 추출합니다. 스크립트는 통합의 구성에서 API 키를 추출합니다. 이 키는 WHOIS XML API에 대한 요청을 인증하는 데 필요합니다.
  4. 타겟 항목을 식별합니다. 스크립트는 처리할 항목을 식별합니다. 모든 항목을 반복하고 다음 두 가지 유형에만 집중합니다.
    • 내부가 아닌 호스트 이름
    • URL
    • 
        for entity in siemplify.target_entities:        
              siemplify.LOGGER.info(f"processing entity {entity.identifier}") if
              (entity.entity_type == EntityTypes.HOSTNAME and not entity.is_internal) or
              entity.entity_type == EntityTypes.URL: entity_to_scan = entity.identifier
        
  5. 도메인을 스캔하고 작업의 보강 단계와 출력 메시지를 정의합니다. 이 작업은 Entity 범위에서 실행되므로 특정 매개변수를 구성할 필요가 없습니다. 이는 이미 코드에 삽입되어 있습니다.
    
      scan_url = f"{url}&domainName={entity_to_scan}"
    
                  response = requests.get(scan_url) response.raise_for_status()
                  register_details = response.json().get("WhoisRecord",
                  {}).get("registrant", {}) if register_details:
                      entity.additional_properties.update(register_details)
                      successful_entities.append(entity)
    
    
          if successful_entities:
              output_message += "\n Successfully processed entities:\n {}".format("\n
              ".join([x.identifier for x in successful_entities]))
              siemplify.update_entities(successful_entities) # This is the actual
              enrichment (this function sends the data back to the server)
          else:
              output_message += "\n No entities where processed."
    
    
          result_value = len(successful_entities) 
      
  6. 작업을 사용 설정하고 저장을 클릭합니다. 이제 다음과 같은 세 가지 맞춤 작업이 포함된 맞춤 통합이 만들어졌습니다.
    • WHOIS XML API 제품에 대한 연결을 테스트하는 Ping 작업
    • 도메인에 관한 데이터를 추출하고 JSON 결과로 표시하는 도메인 세부정보 가져오기 작업
    • 엔티티 탐색기 모듈에서 확인할 수 있는 타겟 엔티티에 추가 데이터를 추가하는 엔티티 보강 작업

    이제 맞춤설정한 작업을 사용하여 첫 번째 자동화를 만들 준비가 되었습니다.

도움이 더 필요하신가요? 커뮤니티 회원 및 Google SecOps 전문가로부터 답변을 받으세요.