매개변수를 사용자 정의 조치 스크립트로 전달

Bash, Python 및 Perl의 샘플 스크립트에서는 매개변수를 사용자 정의 조치 스크립트로 전달하는 방법을 보여줍니다.

다음과 같은 간단한 샘플 스크립트는 제공된 오펜스 소스 IP 주소를 사용하여 자산의 자산 모델 API를 조회하는 방법을 보여줍니다. 이 예제를 위해, 이 스크립트는 엔트포인트에서 리턴하는 JSON을 출력합니다.

이 스크립트에는 3개의 매개변수가 필요합니다.

  • 콘솔 IP 주소
  • API 토큰
  • 오펜스 소스 IP 주소

이 매개변수는 사용자 정의 조치 정의 창 스크립트 매개변수 영역에서 구성됩니다.

그림 1. 사용자 정의 조치 스크립트 매개변수
사용자 정의 조치 스크립트 매개변수

각 매개변수는 사용자 정의 조치 정의 창에서 추가된 순서대로 스크립트에 전달됩니다 이 경우:

  1. console_ip
  2. api_token
  3. offense_source_ip
중요: 이 예제에는 네트워크 이벤트 특성이 포함되어 있습니다. 예제 스크립트가 테스트 페이지에서 실행되도록 하려면 소스 IP 주소(xx.xx.xx.xx)를 고정 특성 값으로 offense_source_ip에 지정해야 합니다.

각 샘플 스크립트의 시작 부분에 정의되는 변수는 사용자 정의 조치 정의 창에 추가된 샘플 매개변수 이름을 사용합니다.

그림 2. call_asset_model.sh
#!/bin/bash
console_ip=$1 
api_token=$2
offense_source_ip=$3

auth_header="SEC:$api_token"

output=$(curl -k -H $auth_header https://$console_ip/console/restapi/api/
asset_model/assets?filter=interfaces%20contains%20%28%20ip_addresses
%20contains%20%28%20value%20%3D%20%22$offense_source_ip%22%29%29)

# Basic print out of the output of the command
echo $output
그림 3. call_asset_model.py
#!/usr/bin/python
import sys
import requests
console_ip = sys.argv[1] 
api_token = sys.argv[2]
offense_source_ip = sys.argv[3]

auth_header = {'SEC' : api_token }

endpoint = "https://{0}/console/restapi/api/asset_model/
assets?filter=interfaces%20contains%20%28%20ip_addresses
%20contains%20%28%20value%20%3D%20%22{1}%22%29%29"
.format(console_ip, offense_source_ip)

response = requests.get(endpoint, headers=auth_header, verify=False)

# Basic print out of the output of the command
print(response.json())
그림 4. call_asset_model.pl
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;

my $console_ip = $ARGV[0]; 
my $api_token = $ARGV[1];
my $offense_source_ip = $ARGV[2];

my $endpoint = "https://$console_ip/console/restapi/api/asset_model/
assets?filter=interfaces%20contains%20%28%20ip_addresses
%20contains%20%28%20value%20%3D%20%22$offense_source_ip%22%29%29";

my $client = LWP::UserAgent -> new(ssl_opts => { verify_hostname => 0 });

my $response = $client -> get($endpoint, "SEC" => $api_token);

# Basic print out of the output of the command
print $response -> decoded_content;