Π‘ΠΈΠ³ΡΡΠ΅Π½ ΡΡΠΌ, ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΉΡΠΎ Π½ΡΠΊΠΎΠ³Π° Π΅ ΡΠ°Π±ΠΎΡΠΈΠ» Ρ
Π‘ΡΠ°Π²Π½ΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΡΠΊΠΎΡΠΎ ΡΠ΅ ΡΠ»ΡΡΠΈ βΡΡΠ΄ΠΎβ. Π‘ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Gaia R80 Π±Π΅ΡΠ΅ ΠΎΠ±ΡΠ²Π΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π·ΠΊΡΠΈΠ²Π° ΡΠΈΡΠΎΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ, Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°Π½Π΅, Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ ΠΈ Π΄Ρ. Π‘Π΅Π³Π° ΡΠΈ ΠΌΠΎΠΆΠ΅Ρ:
- ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ;
- Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ ΠΈΠ»ΠΈ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΏΠΈΡΡΡΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ;
- Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅/Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π±Π»Π΅ΠΉΠ΄ΠΎΠ²Π΅;
- ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΡΠ΅ΠΆΠΎΠ²ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΈ;
- ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠΈ Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅;
- ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅ΡΠ΅.
Π§Π΅ΡΡΠ½ΠΎ ΠΊΠ°Π·Π°Π½ΠΎ, Π½Π΅ ΡΠ°Π·Π±ΠΈΡΠ°ΠΌ ΠΊΠ°ΠΊ ΡΠ°Π·ΠΈ Π½ΠΎΠ²ΠΈΠ½Π° ΠΌΠΈΠ½Π° ΠΏΡΠ΅Π· Habr. Π ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ΅ΠΌ Π½Π°ΠΊΡΠ°ΡΠΊΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ API ΠΈ ΡΠ΅ Π΄Π°Π΄Π΅ΠΌ Π½ΡΠΊΠΎΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠΌΠ΅ΡΠΈ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈ Π½Π° CheckPoint Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅.
ΠΠΈΡ ΠΈΡΠΊΠ°Π» Π΄Π° Π½Π°ΠΏΡΠ°Π²Ρ ΡΠ΅Π·Π΅ΡΠ²Π°ΡΠΈΡ Π²Π΅Π΄Π½Π°Π³Π°, API ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ°ΠΌΠΎ Π·Π° ΡΡΡΠ²ΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅. Π’Π΅Π·ΠΈ. Π²ΡΠ΅ ΠΎΡΠ΅ Π΅ Π½Π΅Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠ°Π²Π»ΡΠ²Π°Ρ ΡΠ»ΡΠ·ΠΎΠ²Π΅ Π±Π΅Π· ΡΡΡΠ²ΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ Π²ΡΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΡ ΡΠΎΠ·ΠΈ API?
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΎΠΏΡΠΎΡΡΡΡ ΠΈΠ»ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΠ°Ρ ΡΡΡΠΈΠ½Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ Π·Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Check Point;
- ΠΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Ρ Check Point Ρ Π΄ΡΡΠ³ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ, ΡΠΈΠΊΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠΈ, ΡΠΈΡΡΠ΅ΠΌΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° ΠΈ Π΄Ρ.);
- Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΈ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΡΠΊΠ°Ρ Π΄Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΈΡΠ°Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΠΈΠ»ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π°Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ Check Point.
Π’ΠΈΠΏΠΈΡΠ½Π° ΡΡ Π΅ΠΌΠ°
Π ΡΠ°ΠΊΠ°, Π½Π΅ΠΊΠ° ΡΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΠΌ ΡΠΈΠΏΠΈΡΠ½Π° ΡΡ Π΅ΠΌΠ° Ρ Check Point:
ΠΠ°ΠΊΡΠΎ ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ ΠΈΠΌΠ°ΠΌΠ΅ ΠΏΠΎΡΡΠ°Π» (SG), ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅Π½ ΡΡΡΠ²ΡΡ (SMS) ΠΈ Π°Π΄ΠΌΠΈΠ½ ΠΊΠΎΠ½Π·ΠΎΠ»Π° (ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°). Π ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ ΠΎΠ±ΠΈΡΠ°ΠΉΠ½ΠΈΡΡ ΠΏΡΠΎΡΠ΅Ρ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ»ΡΠ· Π΅ ΠΊΠ°ΠΊΡΠΎ ΡΠ»Π΅Π΄Π²Π°:
Π’Π΅Π·ΠΈ. ΠΏΡΡΠ²ΠΎ ΡΡΡΠ±Π²Π° Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΡΡΡΡΠ° Π½Π° Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°, Ρ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°ΠΌΠ΅ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (SMS). ΠΠ°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ Π·Π° ΡΠΈΠ³ΡΡΠ½ΠΎΡΡ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π°Ρ Π½Π° SMS ΠΈ Π΅Π΄Π²Π° ΡΠ»Π΅Π΄ ΡΠΎΠ²Π° ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π°Ρ (ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ° Π·Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°Π½Π΅) ΠΊΡΠΌ ΡΠ»ΡΠ·Π° (SG).
ΠΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΠΎ Π΄Π° ΠΏΡΠΎΠΏΡΡΠ½Π΅ΠΌ ΠΏΡΡΠ²Π°ΡΠ° ΡΡΡΠΏΠΊΠ° (ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° SmartConsole) ΠΈ Π΄Π° ΠΏΡΠΈΠ»ΠΎΠΆΠΈΠΌ API ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΊΡΠΌ ΡΡΡΠ²ΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (SMS).
ΠΠ°ΡΠΈΠ½ΠΈ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° API
ΠΠΌΠ° ΡΠ΅ΡΠΈΡΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ Π½Π°ΡΠΈΠ½Π° Π·Π° ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° API:
1) ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° mgmt_cli
ΠΡΠΈΠΌΠ΅Ρ - # mgmt_cli Π΄ΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΈΠΌΠ΅ Π½Π° Ρ
ΠΎΡΡ host1 ip-Π°Π΄ΡΠ΅Ρ 192.168.2.100
Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΠΎΡ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ Π½Π° ΡΡΡΠ²ΡΡΠ° Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (SMS). ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° Π΅ ΡΡΠ΅Π½ - host1 ΡΠ΅ ΡΡΠ·Π΄Π°Π²Π° Ρ Π°Π΄ΡΠ΅Ρ 192.168.2.100.
2) ΠΡΠ²Π΅Π΄Π΅ΡΠ΅ API ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΡΡΠ΅Π· clish (Π² Π΅ΠΊΡΠΏΠ΅ΡΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ)
ΠΠΎ ΠΏΡΠΈΠ½ΡΠΈΠΏ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° Π²Π»Π΅Π·Π΅ΡΠ΅ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΈΡ ΡΠ΅Π΄ (Π²Π»ΠΈΠ·Π°Π½Π΅ Π² mgmt) ΠΏΠΎΠ΄ Π°ΠΊΠ°ΡΠ½ΡΠ°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡΠΈ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ ΡΡΠ΅Π· SmartConsole (ΠΈΠ»ΠΈ root Π°ΠΊΠ°ΡΠ½Ρ). Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° Π²Π΅ΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²Π»Π΅Π·Π΅ΡΠ΅ API ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ (Π² ΡΠΎΠ·ΠΈ ΡΠ»ΡΡΠ°ΠΉ Π½ΡΠΌΠ° Π½ΡΠΆΠ΄Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΏΠΎΠΌΠΎΡΠ½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΏΡΠ΅Π΄ΠΈ Π²ΡΡΠΊΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° mgmt_cli). ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΡΠ΅ ΠΏΡΠ»Π΅Π½ BASH ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ·Π΄Π°Π²Π° Ρ ΠΎΡΡ:
bash ΡΠΊΡΠΈΠΏΡ
#!/bin/bash
main() {
clear
#LOGIN (don't ask for username and password, user is already logged in to Management server as 'root' user)
mgmt_cli login --root true > id_add_host.txt
on_error_print_and_exit "Error: Failed to login, check that the server is up and running (run 'api status')"
#READ HOST NAME
printf "Enter host name:n"
read -e host_name
on_empty_input_print_and_exit "$host_name" "Error: The host's name cannot be empty."
#READ IP ADDRESS
printf "nEnter host IP address:n"
read -e ip
on_empty_input_print_and_exit "$ip" "Error: The host's IP address cannot be empty."
#CREATE HOST
printf "Creating new host: $host_name with IP address: $ipn"
new_host_response=$(mgmt_cli add host name $host_name ip-address $ip -s id_add_host.txt 2> /dev/null)
on_error_print_and_exit "Error: Failed to create host object. n$new_host_response"
#PUBLISH THE CHANGES
printf "nPublishing the changesn"
mgmt_cli publish --root true -s id_add_host.txt &> /dev/null
on_error_print_and_exit "Error: Failed to publish the changes."
#LOGOUT
logout
printf "Done.n"
}
logout(){
mgmt_cli logout --root true -s id_add_host.txt &> /dev/null
}
on_error_print_and_exit(){
if [ $? -ne 0 ]; then
handle_error "$1"
fi
}
handle_error(){
printf "n$1n" #print error message
mgmt_cli discard --root true -s id_add_host.txt &> /dev/null
logout
exit 1
}
on_empty_input_print_and_exit(){
if [ -z "$1" ]; then
printf "$2n" #print error message
logout
exit 0
fi
}
# Script starts here. Call function "main".
main
ΠΠΊΠΎ ΠΏΡΠΎΡΠ²ΡΠ²Π°ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π³Π»Π΅Π΄Π°ΡΠ΅ ΡΡΠΎΡΠ²Π΅ΡΠ½ΠΎΡΠΎ Π²ΠΈΠ΄Π΅ΠΎ:
3) Π§ΡΠ΅Π· SmartConsole, ΠΊΠ°ΡΠΎ ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ CLI ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ°
ΠΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΡΡΠ±Π²Π° Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΡΠ΅, Π΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° CLI Π½Π°ΠΏΡΠ°Π²ΠΎ ΠΎΡ ΠΈΠ½ΡΠ΅Π»ΠΈΠ³Π΅Π½ΡΠ½Π° ΠΊΠΎΠ½Π·ΠΎΠ»Π°, ΠΊΠ°ΠΊΡΠΎ Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° ΡΠ½ΠΈΠΌΠΊΠ°ΡΠ° ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
Π ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ·ΠΎΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²Π΅Π΄Π½Π°Π³Π° Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°ΡΠ΅ API ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ.
4) Π£Π΅Π± ΡΡΠ»ΡΠ³ΠΈ. ΠΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡΠ΅ HTTPS Post Π·Π°ΡΠ²ΠΊΠ° (REST API)
Π‘ΠΏΠΎΡΠ΅Π΄ Π½Π°Ρ ΡΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ Π½Π°ΠΉ-ΠΎΠ±Π΅ΡΠ°Π²Π°ΡΠΈΡΠ΅ Π½Π°ΡΠΈΠ½ΠΈ, Ρ.ΠΊ. Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° βΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°ΡΠ΅β ΡΠ΅Π»ΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΏΠΎΡΠ΅Π΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΡΡΠ²ΡΡ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ (ΡΡΠΆΠ°Π»ΡΠ²Π°ΠΌ Π·Π° ΡΠ°Π²ΡΠΎΠ»ΠΎΠ³ΠΈΡΡΠ°). Π©Π΅ ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΡΠΎΠ·ΠΈ ΠΌΠ΅ΡΠΎΠ΄ ΠΌΠ°Π»ΠΊΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΏΠΎ-Π΄ΠΎΠ»Ρ.
ΠΠ° ΠΎΠ±ΠΎΠ±ΡΠΈΠΌ:
- API+cli ΠΏΠΎ-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π·Π° Ρ ΠΎΡΠ°, ΠΊΠΎΠΈΡΠΎ ΡΠ° ΡΠ²ΠΈΠΊΠ½Π°Π»ΠΈ Ρ Cisco;
- API + ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π΄Π° ΠΏΡΠΈΠ»Π°Π³Π° ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π° ΡΡΡΠΈΠ½Π½ΠΈ Π·Π°Π΄Π°ΡΠΈ;
- REST API Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ.
ΠΠΊΡΠΈΠ²ΠΈΡΠ°ΠΉΡΠ΅ API
ΠΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ API Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Π½Π° ΡΡΡΠ²ΡΡΠΈ Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 4 GB RAM ΠΈ ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»Π½ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ Ρ ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΎΡ 8 GB RAM. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅ ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°: api ΡΡΡΡΠΎΡΠ½ΠΈΠ΅
ΠΠΊΠΎ ΡΠ΅ ΠΎΠΊΠ°ΠΆΠ΅, ΡΠ΅ API Π΅ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½, ΡΠΎΠ³Π°Π²Π° Π΅ Π΄ΠΎΡΡΠ° Π»Π΅ΡΠ½ΠΎ Π΄Π° Π³ΠΎ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ ΡΡΠ΅Π· SmartConsole: Π£ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ > ΠΠ»Π΅ΠΉΠ΄ΠΎΠ²Π΅ > API Π·Π° ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ > Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ
Π‘Π»Π΅Π΄ ΡΠΎΠ²Π° ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΉΡΠ΅ (ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΌ) ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈ ΠΈΠ·ΠΏΡΠ»Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° api ΡΠ΅ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅.
ΡΠ΅Π± Π·Π°ΡΠ²ΠΊΠΈ + python
ΠΠ° Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½ΠΈΡΠ΅ API ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ΅Π± Π·Π°ΡΠ²ΠΊΠΈ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΠΠΈΡΠΎΠ½ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈΡΠΊΠ°Π½ΠΈΡ, JSON. ΠΠ°ΡΠΎ ΡΡΠ»ΠΎ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Π½Π° Π΅Π΄Π½Π° ΡΠ΅Π± Π·Π°ΡΠ²ΠΊΠ° ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ ΡΡΠΈ ΡΠ°ΡΡΠΈ:
1)ΠΠ΄ΡΠ΅Ρ
(https://<managemenet server>:<port>/web_api/<command>)
2) HTTP Π·Π°Π³Π»Π°Π²ΠΊΠΈ
content-Type: application/json
x-chkp-sid: <session ID token as returned by the login command>
3) ΠΠΎΠΈΡΠΊΠ°ΠΉΡΠ΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΡΠΎΠ²Π°Ρ
Π’Π΅ΠΊΡΡ Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ JSON, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ
ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
def api_call(ip_addr, port, command, json_payload, sid):
url = 'https://' + ip_addr + ':' + str(port) + '/web_api/' + command
if sid == ββ:
request_headers = {'Content-Type' : 'application/json'}
else:
request_headers = {'Content-Type' : 'application/json', 'X-chkp-sid' : sid}
r = requests.post(url,data=json.dumps(json_payload), headers=request_headers,verify=False)
return r.json()
'xxx.xxx.xxx.xxx' -> Ip address GAIA
ΠΡΠΎ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΡΠΈΠΏΠΈΡΠ½ΠΈ Π·Π°Π΄Π°ΡΠΈ, ΠΊΠΎΠΈΡΠΎ Π½Π°ΠΉ-ΡΠ΅ΡΡΠΎ ΡΡΠ΅ΡΠ°ΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠ°ΡΠ΅ Check Point.
1) ΠΡΠΈΠΌΠ΅Ρ Π·Π° ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° ΠΎΡΠΎΡΠΈΠ·Π°ΡΠΈΡ ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅:
Π‘ΠΊΡΠΈΠΏΡ
payload = {βuserβ: βyour_userβ, βpasswordβ : βyour_passwordβ}
response = api_call('xxx.xxx.xxx.xxx', 443, 'login',payload, '')
return response["sid"]
response = api_call('xxx.xxx.xxx.xxx', 443,'logout', {} ,sid)
return response["message"]
2) ΠΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π±Π»Π΅ΠΉΠ΄ΠΎΠ²Π΅ΡΠ΅ ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° Π½Π° ΠΌΡΠ΅ΠΆΠ°ΡΠ°:
Π‘ΠΊΡΠΈΠΏΡ
new_gateway_data = {'name':'CPGleb','anti-bot':True,'anti-virus' : True,'application-control':True,'ips':True,'url-filtering':True,'interfaces':
[{'name':"eth0",'topology':'external','ipv4-address': 'xxx.xxx.xxx.xxx',"ipv4-network-mask": "255.255.255.0"},
{'name':"eth1",'topology':'internal','ipv4-address': 'xxx.xxx.xxx.xxx',"ipv4-network-mask": "255.255.255.0"}]}
new_gateway_result = api_call('xxx.xxx.xxx.xxx', 443,'set-simple-gateway', new_gateway_data ,sid)
print(json.dumps(new_gateway_result))
3) ΠΡΠΎΠΌΡΠ½Π° Π½Π° ΠΏΡΠ°Π²ΠΈΠ»Π°ΡΠ° Π½Π° Π·Π°ΡΠΈΡΠ½Π°ΡΠ° ΡΡΠ΅Π½Π°:
Π‘ΠΊΡΠΈΠΏΡ
new_access_data={'name':'Cleanup rule','layer':'Network','action':'Accept'}
new_access_result = api_call('xxx.xxx.xxx.xxx', 443,'set-access-rule', new_access_data ,sid)
print(json.dumps(new_access_result))
4) ΠΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ ΡΠ»ΠΎΠΉ:
Π‘ΠΊΡΠΈΠΏΡ
add_access_layer_application={ 'name' : 'application123',"applications-and-url-filtering" : True,"firewall" : False}
add_access_layer_application_result = api_call('xxx.xxx.xxx.xxx', 443,'add-access-layer', add_access_layer_application ,sid)
print(json.dumps(add_access_layer_application_result))
set_package_layer={"name" : "Standard","access":True,"access-layers" : {"add" : [ { "name" : "application123","position" :2}]} ,"installation-targets" : "CPGleb"}
set_package_layer_result = api_call('xxx.xxx.xxx.xxx', 443,'set-package', set_package_layer ,sid)
print(json.dumps(set_package_layer_result))
5) ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°ΠΉΡΠ΅ ΠΈ ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΉΡΠ΅ ΠΏΠΎΠ»ΠΈΡΠΈΠΊΠ°ΡΠ°, ΠΏΡΠΎΠ²Π΅ΡΠ΅ΡΠ΅ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° (task-id):
Π‘ΠΊΡΠΈΠΏΡ
publish_result = api_call('xxx.xxx.xxx.xxx', 443,"publish", {},sid)
print("publish result: " + json.dumps(publish_result))
new_policy = {'policy-package':'Standard','access':True,'targets':['CPGleb']}
new_policy_result = api_call('xxx.xxx.xxx.xxx', 443,'install-policy', new_policy ,sid)
print(json.dumps(new_policy_result)
task_id=(json.dumps(new_policy_result ["task-id"]))
len_str=len(task_id)
task_id=task_id[1:(len_str-1)]
show_task_id ={'task-id':(task_id)}
show_task=api_call('xxx.xxx.xxx.xxx',443,'show-task',show_task_id,sid)
print(json.dumps(show_task))
6) ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ Ρ ΠΎΡΡ:
Π‘ΠΊΡΠΈΠΏΡ
new_host_data = {'name':'JohnDoePc', 'ip-address': '192.168.0.10'}
new_host_result = api_call('xxx.xxx.xxx.xxx', 443,'add-host', new_host_data ,sid)
print(json.dumps(new_host_result))
7) ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΏΠΎΠ»Π΅ Π·Π° ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°ΠΏΠ»Π°Ρ ΠΈ:
Π‘ΠΊΡΠΈΠΏΡ
set_package_layer={'name':'Standard','threat-prevention' :True,'installation-targets':'CPGleb'}
set_package_layer_result = api_call('xxx.xxx.xxx.xxx', 443,'set-package',set_package_layer,sid)
print(json.dumps(set_package_layer_result))
8) ΠΠΈΠΆΡΠ΅ ΡΠΏΠΈΡΡΠΊΠ° ΡΡΡ ΡΠ΅ΡΠΈΠΈ
Π‘ΠΊΡΠΈΠΏΡ
new_session_data = {'limit':'50', 'offset':'0','details-level' : 'standard'}
new_session_result = api_call('xxx.xxx.xxx.xxx', 443,'show-sessions', new_session_data ,sid)
print(json.dumps(new_session_result))
9) Π‘ΡΠ·Π΄Π°ΠΉΡΠ΅ Π½ΠΎΠ² ΠΏΡΠΎΡΠΈΠ»:
Π‘ΠΊΡΠΈΠΏΡ
add_threat_profile={'name':'Apeiron', "active-protections-performance-impact" : "low","active-protections-severity" : "low or above","confidence-level-medium" : "prevent",
"confidence-level-high" : "prevent", "threat-emulation" : True,"anti-virus" : True,"anti-bot" : True,"ips" : True,
"ips-settings" : { "newly-updated-protections" : "staging","exclude-protection-with-performance-impact" : True,"exclude-protection-with-performance-impact-mode" : "High or lower"},
"overrides" : [ {"protection" : "3Com Network Supervisor Directory Traversal","capture-packets" : True,"action" : "Prevent","track" : "Log"},
{"protection" : "7-Zip ARJ Archive Handling Buffer Overflow", "capture-packets" : True,"action" : "Prevent","track" : "Log"} ]}
add_threat_profile_result=api_call('xxx.xxx.xxx.xxx',443,'add-threat-profile',add_threat_profile,sid)
print(json.dumps(add_threat_profile_result))
10) ΠΡΠΎΠΌΡΠ½Π° Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Π·Π° IPS ΠΏΠΎΠ΄ΠΏΠΈΡ:
Π‘ΠΊΡΠΈΠΏΡ
set_threat_protection={
"name" : "3Com Network Supervisor Directory Traversal",
"overrides" : [{ "profile" : "Apeiron","action" : "Detect","track" : "Log","capture-packets" : True},
{ "profile" : "Apeiron", "action" : "Detect", "track" : "Log", "capture-packets" : False} ]}
set_threat_protection_result=api_call('xxx.xxx.xxx.xxx',443,'set-threat-protection',set_threat_protection,sid)
print(json.dumps(set_threat_protection_result))
11) ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ Π²Π°ΡΠ°ΡΠ° ΡΡΠ»ΡΠ³Π°:
Π‘ΠΊΡΠΈΠΏΡ
add_service_udp={ "name" : "Dota2_udp", "port" : '27000-27030',
"keep-connections-open-after-policy-installation" : False,
"session-timeout" : 0, "match-for-any" : True,
"sync-connections-on-cluster" : True,
"aggressive-aging" : {"enable" : True, "timeout" : 360,"use-default-timeout" : False },
"accept-replies" : False}
add_service_udp_results=api_call('xxx.xxx.xxx.xxx',443,"add-service-udp",add_service_udp,sid)
print(json.dumps(add_service_udp_results))
12) ΠΠΎΠ±Π°Π²Π΅ΡΠ΅ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ, ΡΠ°ΠΉΡ ΠΈΠ»ΠΈ Π³ΡΡΠΏΠ°:
Π‘ΠΊΡΠΈΠΏΡ
add_application_site_category={ "name" : "Valve","description" : "Valve Games"}
add_application_site_category_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site-category",add_application_site_category,sid)
print(json.dumps(add_application_site_category_results))
add_application_site={ "name" : "Dota2", "primary-category" : "Valve", "description" : "Dotka",
"url-list" : [ "www.dota2.ru" ], "urls-defined-as-regular-expression" : False}
add_application_site_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site " ,
add_application_site , sid)
print(json.dumps(add_application_site_results))
add_application_site_group={"name" : "Games","members" : [ "Dota2"]}
add_application_site_group_results=api_call('xxx.xxx.xxx.xxx',443,"add-application-site-group",add_application_site_group,sid)
print(json.dumps(add_application_site_group_results))
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π£Π΅Π± API ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ
Π²Π°ΡΠ΅ ΠΌΡΠ΅ΠΆΠΈ, Ρ
ΠΎΡΡΠΎΠ²Π΅, ΡΠΎΠ»ΠΈ Π·Π° Π΄ΠΎΡΡΡΠΏ ΠΈ Ρ.Π½. ΠΡΡΡΠΈΠ΅ΡΠ°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΠΠ½ΡΠΈΠ²ΠΈΡΡΡ, Antibot, IPS, VPN. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄ΠΎΡΠΈ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ Π»ΠΈΡΠ΅Π½Π·ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΊΡΠΈΠΏΡ. ΠΡΠΈΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π½Π° Check Point API ΠΌΠΎΠ³Π°Ρ Π΄Π° Π±ΡΠ΄Π°Ρ Π½Π°ΠΌΠ΅ΡΠ΅Π½ΠΈ
API Π½Π° Check Point + ΠΏΠΎΡΠ°Π»ΡΠΎΠ½
ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π΅ ΡΠ΄ΠΎΠ±Π΅Π½ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π£Π΅Π± API Π½Π° Check Point Π²ΡΠ² Π²ΡΡΠ·ΠΊΠ° Ρ
Π‘ ΡΠ°Π·ΠΈ ΠΏΠΎΠΌΠΎΡΠ½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΡΠ΅ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΠΌΠ΅ ΡΠ΅Π± Π·Π°ΡΠ²ΠΊΠΈ ΠΊΡΠΌ API Π½Π° Check Point. ΠΠ° Π΄Π° Π½Π΅ ΡΠ΅ Π·Π°ΠΏΠΎΠΌΠ½ΡΡ Π²ΡΠΈΡΠΊΠΈ API ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ, Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° ΡΠ΅ ΠΈΠΌΠΏΠΎΡΡΠΈΡΠ°Ρ ΡΠ°ΠΊΠ° Π½Π°ΡΠ΅ΡΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ»Π΅ΠΊΡΠΈΠΈ (ΡΠ°Π±Π»ΠΎΠ½ΠΈ), ΠΊΠΎΠΈΡΠΎ Π²Π΅ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Ρ Π²ΡΠΈΡΠΊΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:
Π‘ΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΡΠ΅ Π΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° API Π½Π° Check Point ΠΌΠ½ΠΎΠ³ΠΎ Π±ΡΡΠ·ΠΎ.
Check Point + Ansible
ΠΠΈΡ
ΠΈΡΠΊΠ°Π» ΡΡΡΠΎ Π΄Π° ΠΎΡΠ±Π΅Π»Π΅ΠΆΠ°, ΡΠ΅ ΠΈΠΌΠ° Ansible
ΠΡΠΎΠ΄ΡΠΊΡΠΈΡ
ΠΠ° ΡΠΎΠ²Π°, ΠΌΠΎΠΆΠ΅ Π±ΠΈ, ΡΠ΅ Π·Π°Π²ΡΡΡΠΈΠΌ Π½Π°ΡΠΈΡ ΠΊΡΠ°ΡΡΠΊ ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° API Π½Π° Check Point. Π‘ΠΏΠΎΡΠ΅Π΄ ΠΌΠ΅Π½ ΡΠ°Π·ΠΈ ΡΡΠ½ΠΊΡΠΈΡ Π±Π΅ΡΠ΅ ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΡΠ»Π³ΠΎΠΎΡΠ°ΠΊΠ²Π°Π½Π° ΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ°. ΠΠΎΡΠ²Π°ΡΠ° Π½Π° API ΠΎΡΠ²Π°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠΎΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠ°ΠΊΡΠΎ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠΈ, ΡΠ°ΠΊΠ° ΠΈ Π·Π° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΈΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΎΡΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ°Π±ΠΎΡΡΡ Ρ ΠΏΡΠΎΠ΄ΡΠΊΡΠΈΡΠ΅ Π½Π° Check Point. ΠΡΠΊΠ΅ΡΡΡΠ°ΡΠΈΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ, SIEM ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ°... Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π³Π°.
PS ΠΡΠ΅ ΡΡΠ°ΡΠΈΠΈ Π·Π°
PSS ΠΠ° ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠΏΡΠΎΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Check Point, ΠΌΠΎΠΆΠ΅ΡΠ΅
Π Π°Π½ΠΊΠ΅ΡΠ°ΡΠ° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΡΠ°ΡΡΠ²Π°Ρ ΡΠ°ΠΌΠΎ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈ ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ.
ΠΠ»Π°Π½ΠΈΡΠ°ΡΠ΅ Π»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ API?
-
70,6%Π΄Π° 12
-
23,5%No4
-
5,9%ΠΠ΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ1
17 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ Π³Π»Π°ΡΡΠ²Π°Ρ
Π°. 3 ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΠΈ ΡΠ΅ Π²ΡΠ·Π΄ΡΡΠΆΠ°Ρ
Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: www.habr.com