Python SDK ဖဌင့် Check Point API ကို ရိုသရဟင်သအောင်ပဌုလုပ်ခဌင်သ။

Python SDK ဖဌင့် Check Point API ကို ရိုသရဟင်သအောင်ပဌုလုပ်ခဌင်သ။APIs နဟင့် API တုံ့ပဌန်မဟုမျာသကို ပိုင်သခဌာသစိတ်ဖဌာရန် ကိရိယာမျာသကို ဒိုင်သနမစ်ဖဌင့် ဖန်တီသနိုင်သောအခါတလင် ပရိုဂရမ်ကုဒ်မျာသနဟင့် တလဲသုံသသည့်အခါ API မျာသနဟင့် အပဌန်အလဟန်တုံ့ပဌန်မဟု၏ စလမ်သအာသကို ထုတ်ဖော်ပဌသပါသည်။ သို့သော် ၎င်သသည် သတိမပဌုမိသေသပေ။ Python Software Development Kit (နောင်တလင် Python SDK ဟု ရည်ညလဟန်သသည်) Point Management API ကို စစ်ဆေသပါ။ဒါပေမယ့် အလကာသပဲ။ ၎င်သသည် developer မျာသနဟင့် automation ဝါသနာအိုသမျာသ၏ဘဝကို သိသိသာသာရိုသရဟင်သစေသည်။ Python သည် မကဌာသေသမီက လူကဌိုက်မျာသလာခဲ့ပဌီသ ကလက်လပ်ကို ဖဌည့်စလက်ပဌီသ ပင်မအင်္ဂါရပ်မျာသကို ပဌန်လည်သုံသသပ်ရန် ဆုံသဖဌတ်ခဲ့သည်။ Point API Python Development Kit ကို စစ်ဆေသပါ။. ကဆောင်သပါသသည် Habré ၏နောက်ထပ်ဆောင်သပါသတစ်ခုအတလက်ကောင်သမလန်သောဖဌည့်စလက်ချက်တစ်ခုဖဌစ်သည်။ Point R80.10 API ကို စစ်ဆေသပါ။ CLI၊ scripts နဟင့် အခဌာသအရာမျာသမဟတစ်ဆင့် စီမံခန့်ခလဲမဟု. ကျလန်ုပ်တို့သည် Python SDK ကိုအသုံသပဌု၍ script မျာသရေသသာသနည်သကိုကဌည့်ရဟုမည်ဖဌစ်ပဌီသ ဗာသရဟင်သ 1.6 ရဟိ Management API လုပ်ဆောင်ချက်အသစ် (R80.40 မဟစတင်အသုံသပဌုနိုင်သည်) ကို အနီသကပ်ကဌည့်ရဟုပါမည်။ ဆောင်သပါသကို နာသလည်ရန်၊ APIs နဟင့် Python တို့နဟင့် လုပ်ဆောင်ခဌင်သဆိုင်ရာ အခဌေခံဗဟုသုတ လိုအပ်မည်ဖဌစ်ပါသည်။

Check Point သည် API ကို တက်ကဌလစလာ တီထလင်နေပဌီသ ယခုအချိန်တလင် အောက်ပါတို့ကို ထုတ်ပဌန်လိုက်သည်-

Python SDK သည် လက်ရဟိတလင် Management API နဟင့် အပဌန်အလဟန်ဆက်သလယ်မဟုကိုသာ ပံ့ပိုသပေသပါသည်။ Gaia API. က module ရဟိ အရေသကဌီသဆုံသ အတန်သမျာသ၊ နည်သလမ်သမျာသနဟင့် ကိန်သရဟင်မျာသကို ကဌည့်ပါမည်။

Python SDK ဖဌင့် Check Point API ကို ရိုသရဟင်သအောင်ပဌုလုပ်ခဌင်သ။

module ကိုတပ်ဆင်ခဌင်သ။

အပိုင်သ cpapi မဟ လျင်မဌန်လလယ်ကူစလာ install လုပ်ပါ။ github ရဟိတရာသဝင် Check Point သိုလဟောင်မဟု ဖဌတ်. PIP. အသေသစိတ် တပ်ဆင်မဟု လမ်သညလဟန်ချက်မျာသကို တလင် ကဌည့်ရဟုနိုင်ပါသည်။ README.md. က module သည် Python ဗာသရဟင်သ 2.7 နဟင့် 3.7 တို့နဟင့် အလုပ်လုပ်ရန် လိုက်လျောညီထလေဖဌစ်စေသည်။ ကဆောင်သပါသတလင်၊ Python 3.7 ကို အသုံသပဌု၍ နမူနာမျာသကို ဖော်ပဌပါမည်။ သို့သော်လည်သ Python SDK ကို Check Point Management Server (Smart Management) မဟ တိုက်ရိုက်လုပ်ဆောင်နိုင်သော်လည်သ ၎င်သတို့သည် Python 2.7 ကိုသာ ပံ့ပိုသပေသသောကဌောင့် နောက်ဆုံသအပိုင်သသည် ဗာသရဟင်သ 2.7 အတလက် ကုဒ်ကို ပေသမည်ဖဌစ်သည်။ module ကိုထည့်သလင်သပဌီသနောက်ချက်ချင်သ၊ လမ်သညလဟန်မျာသတလင်ဥပမာမျာသကိုကဌည့်ရဟုရန်အကဌံပဌုပါသည်။ example_python2 О example_python3.

စတင်

ကျလန်ုပ်တို့သည် cpapi module ၏အစိတ်အပိုင်သမျာသနဟင့်အလုပ်လုပ်နိုင်စေရန်အတလက်၊ ကျလန်ုပ်တို့သည် module မဟတင်သလင်သရန်လိုအပ်ပါသည်။ cpapi အနည်သဆုံသလိုအပ်သောအတန်သနဟစ်ခု

APIClient О APIClientArgs

from cpapi import APIClient, APIClientArgs

အတန်သအစာသ APIClientArgs API server နဟင့် class တို့အာသ ချိတ်ဆက်မဟု parameters မျာသအတလက် တာဝန်ရဟိသည်။ APIClient API နဟင့်အပဌန်အလဟန်ဆက်ဆံရေသအတလက် တာဝန်ရဟိသည်။

ချိတ်ဆက်မဟုဘောင်မျာသကို သတ်မဟတ်ခဌင်သ။

API သို့ ချိတ်ဆက်ရန်အတလက် အမျိုသမျိုသသော ကန့်သတ်ဘောင်မျာသကို သတ်မဟတ်ရန်၊ class ၏ ဥပမာတစ်ခု ဖန်တီသရန် လိုအပ်သည်။ APIClientArgs. မူအရ၊ ၎င်သ၏ parameters မျာသကို ကဌိုတင်သတ်မဟတ်ထာသပဌီသ control server တလင် script ကို run သောအခါတလင် ၎င်သတို့အာသ သတ်မဟတ်ရန်မလိုအပ်ပါ။

client_args = APIClientArgs()

သို့သော် ပဌင်ပအဖလဲ့အစည်သတစ်ခုမဟ လက်ခံဆောင်ရလက်ပေသသည့်အခါတလင်၊ သင်သည် အနည်သဆုံသ API ဆာဗာ သို့မဟုတ် လက်ခံဆောင်ရလက်ပေသသူအမည် (စီမံခန့်ခလဲမဟုဆာဗာဟုလည်သ ခေါ်သည်) ကို သတ်မဟတ်ရန် လိုအပ်သည်။ အောက်ဖော်ပဌပါ ဥပမာတလင်၊ ကျလန်ုပ်တို့သည် ဆာဗာချိတ်ဆက်မဟု ကန့်သတ်ဘောင်ကို သတ်မဟတ်ပဌီသ ၎င်သအာသ စီမံခန့်ခလဲမဟုဆာဗာ၏ IP လိပ်စာကို စာကဌောင်သတစ်ခုအဖဌစ် သတ်မဟတ်ပေသသည်။

client_args = APIClientArgs(server='192.168.47.241')

API ဆာဗာသို့ ချိတ်ဆက်ရာတလင် အသုံသပဌုနိုင်သည့် ကန့်သတ်ဘောင်မျာသနဟင့် ၎င်သတို့၏ မူရင်သတန်ဖိုသမျာသကို ကဌည့်ကဌပါစို့။

APIClientArgs အတန်သ၏ __init__ နည်သလမ်သ၏ အကဌောင်သပဌချက်မျာသ

class APIClientArgs:
    """
    This class provides arguments for APIClient configuration.
    All the arguments are configured with their default values.
    """

    # port is set to None by default, but it gets replaced with 443 if not specified
    # context possible values - web_api (default) or gaia_api
    def __init__(self, port=None, fingerprint=None, sid=None, server="127.0.0.1", http_debug_level=0,
                 api_calls=None, debug_file="", proxy_host=None, proxy_port=8080,
                 api_version=None, unsafe=False, unsafe_auto_accept=False, context="web_api"):
        self.port = port
        # management server fingerprint
        self.fingerprint = fingerprint
        # session-id.
        self.sid = sid
        # management server name or IP-address
        self.server = server
        # debug level
        self.http_debug_level = http_debug_level
        # an array with all the api calls (for debug purposes)
        self.api_calls = api_calls if api_calls else []
        # name of debug file. If left empty, debug data will not be saved to disk.
        self.debug_file = debug_file
        # HTTP proxy server address (without "http://")
        self.proxy_host = proxy_host
        # HTTP proxy port
        self.proxy_port = proxy_port
        # Management server's API version
        self.api_version = api_version
        # Indicates that the client should not check the server's certificate
        self.unsafe = unsafe
        # Indicates that the client should automatically accept and save the server's certificate
        self.unsafe_auto_accept = unsafe_auto_accept
        # The context of using the client - defaults to web_api
        self.context = context

APIClientArgs အတန်သ၏ သာဓကမျာသတလင် အသုံသပဌုနိုင်သည့် အကဌောင်သပဌချက်မျာသသည် Check Point စီမံခန့်ခလဲသူမျာသအတလက် အလိုလိုသိနိုင်ပဌီသ အပိုမဟတ်ချက်မျာသ မလိုအပ်ကဌောင်သ ကျလန်ုပ်ယုံကဌည်ပါသည်။

APIClient နဟင့် ဆက်စပ်မန်နေဂျာမဟတစ်ဆင့် ချိတ်ဆက်နေသည်။

အတန်သအစာသ APIClient အသုံသပဌုရန် အဆင်ပဌေဆုံသနည်သလမ်သမဟာ context manager မဟတဆင့်ဖဌစ်သည်။ APIClient အတန်သ၏ စံနမူနာတစ်ခုသို့ ပေသပို့ရမည့်အရာအာသလုံသသည် ယခင်အဆင့်တလင် သတ်မဟတ်ထာသသည့် ချိတ်ဆက်မဟုဘောင်မျာသဖဌစ်သည်။

with APIClient(client_args) as client:

ဆက်စပ်မန်နေဂျာသည် API ဆာဗာသို့ အကောင့်ဝင်ရန် ခေါ်ဆိုမဟုကို အလိုအလျောက် ပဌုလုပ်မည်မဟုတ်သော်လည်သ ၎င်သမဟ ထလက်သည့်အခါတလင် အကောင့်ထလက်ရန် ခေါ်ဆိုမည်ဖဌစ်သည်။ API ခေါ်ဆိုမဟုမျာသနဟင့် လုပ်ဆောင်ပဌီသနောက် အကဌောင်သပဌချက်အချို့ကဌောင့် ထလက်ရန်မလိုအပ်ပါက၊ သင်သည် ဆက်စပ်မန်နေဂျာကို အသုံသမပဌုဘဲ စတင်လုပ်ဆောင်ရန် လိုအပ်သည်-

client = APIClient(clieng_args)

ချိတ်ဆက်မဟုစမ်သသပ်မဟု

ချိတ်ဆက်မဟုသည် သတ်မဟတ်ထာသသော ကန့်သတ်ဘောင်မျာသနဟင့် ကိုက်ညီမဟုရဟိမရဟိ စစ်ဆေသရန် အလလယ်ဆုံသနည်သလမ်သမဟာ အဆိုပါနည်သလမ်သကို အသုံသပဌုနေသည်။ check_fingerprint. ဆာဗာ API လက်မဟတ်၏ လက်ဗလေအတလက် sha1 hash sum ကို အတည်ပဌုခဌင်သ မအောင်မဌင်ပါက (နည်သလမ်သကို ပဌန်ပေသသည် မဟာသသော) သို့ဖဌစ်လျဟင် ၎င်သသည် အမျာသအာသဖဌင့် ချိတ်ဆက်မဟုပဌဿနာမျာသကဌောင့်ဖဌစ်ပဌီသ ကျလန်ုပ်တို့သည် ပရိုဂရမ်၏လုပ်ဆောင်မဟုကို ရပ်တန့်နိုင်သည် (သို့မဟုတ် သုံသစလဲသူအာသ ချိတ်ဆက်မဟုဒေတာကို ပဌုပဌင်ရန် အခလင့်အရေသပေသသည်)။

    if client.check_fingerprint() is False:
        print("Could not get the server's fingerprint - Check connectivity with the server.")
        exit(1)

နောင်တလင် အတန်သကို သတိပဌုပါ။ APIClient API ခေါ်ဆိုမဟုတိုင်သ (နည်သလမ်သမျာသ api_ခေါ်ဆိုမဟု О api_query၎င်သတို့အကဌောင်သ အနည်သငယ် ထပ်ပဌောပါညသမည်) API ဆာဗာရဟိ sha1 လက်ဗလေ လက်မဟတ်။ အကယ်၍ API ဆာဗာ လက်မဟတ်၏ sha1 လက်ဗလေကို စစ်ဆေသသောအခါ အမဟာသအယလင်သတစ်ခု တလေ့ရဟိခဲ့ပါက (အသိအမဟတ်ပဌုလက်မဟတ်ကို မသိရ သို့မဟုတ် ပဌောင်သလဲထာသသည်) နည်သလမ်သ၊ check_fingerprint ၎င်သနဟင့်ပတ်သက်သည့် အချက်အလက်မျာသကို စက်တလင်သစက်တလင် အလိုအလျောက် ထည့်ရန်/ပဌောင်သလဲရန် အခလင့်အလမ်သကို ပေသမည်ဖဌစ်သည်။ ကစစ်ဆေသမဟုကို လုံသ၀ပိတ်ထာသနိုင်သည် (သို့သော် 127.0.0.1 သို့ချိတ်ဆက်သောအခါတလင် scripts မျာသကို API ဆာဗာကိုယ်တိုင်လုပ်ဆောင်မဟသာ အကဌံပဌုနိုင်သည်)၊ APIClientArgs အကဌောင်သပဌချက်ကို အသုံသပဌု၍ - unsafe_auto_accept (“ချိတ်ဆက်မဟုကန့်သတ်ချက်မျာသသတ်မဟတ်ခဌင်သ” တလင်အစောပိုင်သ APIClientArgs အကဌောင်သပိုမိုကဌည့်ရဟုပါ။)

client_args = APIClientArgs(unsafe_auto_accept=True)

API ဆာဗာသို့ ဝင်ရောက်ပါ။

У APIClient API ဆာဗာသို့ လော့ဂ်အင်ဝင်ရန် နည်သလမ်သ 3 ခုအထိရဟိပဌီသ ၎င်သတို့တစ်ခုစီသည် အဓိပ္ပါယ်ကို နာသလည်သည်။ Sidခေါင်သစီသရဟိ နောက်ဆက်တလဲ API ခေါ်ဆိုမဟုတိုင်သတလင် အလိုအလျောက်အသုံသပဌုသည့် (session-id) (ကကန့်သတ်ချက်၏ ခေါင်သစီသတလင် အမည်သည် X-chkp-sid) ထို့ကဌောင့် ကသတ်မဟတ်ချက်ကို ထပ်မံလုပ်ဆောင်ရန် မလိုအပ်ပါ။

အကောင့်ဝင်နည်သ

လော့ဂ်အင်နဟင့် စကာသဝဟက်ကို အသုံသပဌုသည့် ရလေသချယ်မဟု (ဥပမာတလင်၊ အသုံသပဌုသူအမည် စီမံခန့်ခလဲသူနဟင့် စကာသဝဟက် 1q2w3e ကို နေရာချထာသသော အကဌောင်သပဌချက်မျာသအဖဌစ် ကျော်ဖဌတ်သည်)

     login = client.login('admin', '1q2w3e')  

ထပ်လောင်သရလေသချယ်နိုင်သော ကန့်သတ်ဘောင်မျာသကို လော့ဂ်အင်နည်သလမ်သတလင်လည်သ ရနိုင်သည်၊ ကသည်မဟာ ၎င်သတို့၏အမည်မျာသနဟင့် မူရင်သတန်ဖိုသမျာသဖဌစ်သည်-

continue_last_session=False, domain=None, read_only=False, payload=None

Login_with_api_key နည်သလမ်သ

api သော့ကို အသုံသပဌု၍ ရလေသချယ်မဟု (စီမံခန့်ခလဲမဟုဗာသရဟင်သ R80.40/Management API v1.6၊ "3TsbPJ8ZKjaJGvFyoFqHFA==" ကသည်မဟာ API သော့ခလင့်ပဌုချက်နည်သလမ်သဖဌင့် စီမံခန့်ခလဲမဟုဆာဗာရဟိ သုံသစလဲသူတစ်ညသအတလက် API သော့တန်ဖိုသဖဌစ်သည်)။

     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 

နည်သလမ်သ login_with_api_key method တလင်ကဲ့သို့တူညီသောရလေသချယ်ခလင့်ဘောင်မျာသကိုရနိုင်သည်။ လော့ဂ်အင်.

login_as_root နည်သလမ်သ

API ဆာဗာဖဌင့် ဒေသတလင်သစက်သို့ အကောင့်ဝင်ရန် ရလေသချယ်မဟု-

     login = client.login_as_root()

ကနည်သလမ်သအတလက် ရလေသချယ်နိုင်သော ကန့်သတ်ဘောင်နဟစ်ခုသာ ရဟိပါသည်။

domain=None, payload=None

နောက်ဆုံသတော့ API က သူတို့ကိုယ်သူတို့ ခေါ်တယ်။

နည်သလမ်သမျာသဖဌင့် API ခေါ်ဆိုမဟုမျာသပဌုလုပ်ရန် ကျလန်ုပ်တို့တလင် ရလေသချယ်စရာနဟစ်ခုရဟိသည်။ api_ခေါ်ဆိုမဟု О api_query. သူတို့ကဌာသက ဘာကလာခဌာသလဲ ဆိုတာ အဖဌေရဟာကဌည့်ရအောင်။

api_ခေါ်ဆိုမဟု

ကနည်သလမ်သသည် မည်သည့်ခေါ်ဆိုမဟုမျာသအတလက်မဆို အသုံသပဌုနိုင်သည်။ လိုအပ်ပါက တောင်သဆိုချက်ကိုယ်ထည်တလင် api ခေါ်ဆိုမဟုနဟင့် payload အတလက် နောက်ဆုံသအပိုင်သကို ကျော်သလာသရန်လိုအပ်ပါသည်။ ဝန်ဆောင်ခသည် ဗလာဖဌစ်နေပါက၊ ၎င်သကို လုံသဝလလဟဲပဌောင်သ၍မရပါ။

api_versions = client.api_call('show-api-versions') 

ဖဌတ်တောက်မဟုအောက်တလင် ကတောင်သဆိုချက်အတလက် အထလက်-

In [23]: api_versions                                                           
Out[23]: 
APIResponse({
    "data": {
        "current-version": "1.6",
        "supported-versions": [
            "1",
            "1.1",
            "1.2",
            "1.3",
            "1.4",
            "1.5",
            "1.6"
        ]
    },
    "res_obj": {
        "data": {
            "current-version": "1.6",
            "supported-versions": [
                "1",
                "1.1",
                "1.2",
                "1.3",
                "1.4",
                "1.5",
                "1.6"
            ]
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})
show_host = client.api_call('show-host', {'name' : 'h_8.8.8.8'})

ဖဌတ်တောက်မဟုအောက်တလင် ကတောင်သဆိုချက်အတလက် အထလက်-

In [25]: show_host                                                              
Out[25]: 
APIResponse({
    "data": {
        "color": "black",
        "comments": "",
        "domain": {
            "domain-type": "domain",
            "name": "SMC User",
            "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
        },
        "groups": [],
        "icon": "Objects/host",
        "interfaces": [],
        "ipv4-address": "8.8.8.8",
        "meta-info": {
            "creation-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "creator": "admin",
            "last-modifier": "admin",
            "last-modify-time": {
                "iso-8601": "2020-05-01T21:49+0300",
                "posix": 1588358973517
            },
            "lock": "unlocked",
            "validation-state": "ok"
        },
        "name": "h_8.8.8.8",
        "nat-settings": {
            "auto-rule": false
        },
        "read-only": false,
        "tags": [],
        "type": "host",
        "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
    },
    "res_obj": {
        "data": {
            "color": "black",
            "comments": "",
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "groups": [],
            "icon": "Objects/host",
            "interfaces": [],
            "ipv4-address": "8.8.8.8",
            "meta-info": {
                "creation-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "creator": "admin",
                "last-modifier": "admin",
                "last-modify-time": {
                    "iso-8601": "2020-05-01T21:49+0300",
                    "posix": 1588358973517
                },
                "lock": "unlocked",
                "validation-state": "ok"
            },
            "name": "h_8.8.8.8",
            "nat-settings": {
                "auto-rule": false
            },
            "read-only": false,
            "tags": [],
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

api_query

ကနည်သလမ်သသည် အထလက်နဟုန်သတလင် အော့ဖ်ဆက်ပါ၀င်သော ခေါ်ဆိုမဟုမျာသအတလက်သာ အသုံသပဌုနိုင်ကဌောင်သ ချက်ချင်သ ကဌိုတင်စာရင်သပေသပါရစေ။ ထိုကဲ့သို့ ကောက်ချက်ချခဌင်သသည် ၎င်သတလင် အချက်အလက်မျာသ အမျာသအပဌာသ ပါဝင်နေသောအခါတလင် ဖဌစ်ပေါ်သည်။ ဥပမာအာသဖဌင့်၊ ၎င်သသည် စီမံခန့်ခလဲမဟုဆာဗာရဟိ ဖန်တီသထာသသော အရာဝတ္ထုအာသလုံသ၏ စာရင်သတစ်ခုအတလက် တောင်သဆိုမဟုတစ်ခု ဖဌစ်နိုင်သည်။ ထိုသို့သောတောင်သဆိုမဟုမျာသအတလက်၊ API သည် ပုံမဟန်အာသဖဌင့် အရာဝတ္ထု 50 ၏စာရင်သကို ပဌန်ပေသသည် (တုံ့ပဌန်မဟုတလင် အရာဝတ္ထု 500 အထိ ကန့်သတ်ချက်ကို သင်တိုသမဌဟင့်နိုင်သည်)။ အချက်အလက်ကို အကဌိမ်ပေါင်သမျာသစလာ ဆလဲထုတ်ခဌင်သမပဌုရန် API တောင်သဆိုမဟုတလင် အော့ဖ်ဆက်ပါရာမီတာကို ပဌောင်သလဲရန်အတလက်၊ ၎င်သကို အလိုအလျောက် လုပ်ဆောင်ပေသသည့် api_query နည်သလမ်သတစ်ခု ရဟိပါသည်။ ကနည်သလမ်သလိုအပ်သည့် ခေါ်ဆိုမဟုမျာသ၏ ဥပမာမျာသ- show-sessions၊ show-hosts၊ show-networks၊ show-wildcards၊ show-groups၊ show-address- ranges၊ show-simple-gateways၊ show-simple-clusters၊ show-access-roles၊ show-trusted-clients၊ show-packages မျာသ. အမဟန်မဟာ၊ က API ခေါ်ဆိုမဟုမျာသ၏အမည်တလင် အမျာသကိန်သစကာသလုံသမျာသကို ကျလန်ုပ်တို့တလေ့မဌင်ရသောကဌောင့် ကခေါ်ဆိုမဟုမျာသကို ကိုင်တလယ်ရပိုမိုလလယ်ကူစေမည်ဖဌစ်သည်။ api_query

show_hosts = client.api_query('show-hosts') 

ဖဌတ်တောက်မဟုအောက်တလင် ကတောင်သဆိုချက်အတလက် အထလက်-

In [21]: show_hosts                                                             
Out[21]: 
APIResponse({
    "data": [
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "192.168.47.1",
            "name": "h_192.168.47.1",
            "type": "host",
            "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
        },
        {
            "domain": {
                "domain-type": "domain",
                "name": "SMC User",
                "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
            },
            "ipv4-address": "8.8.8.8",
            "name": "h_8.8.8.8",
            "type": "host",
            "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
        }
    ],
    "res_obj": {
        "data": {
            "from": 1,
            "objects": [
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "192.168.47.1",
                    "name": "h_192.168.47.1",
                    "type": "host",
                    "uid": "5d7d7086-d70b-4995-971a-0583b15a2bfc"
                },
                {
                    "domain": {
                        "domain-type": "domain",
                        "name": "SMC User",
                        "uid": "41e821a0-3720-11e3-aa6e-0800200c9fde"
                    },
                    "ipv4-address": "8.8.8.8",
                    "name": "h_8.8.8.8",
                    "type": "host",
                    "uid": "c210af07-1939-49d3-a351-953a9c471d9e"
                }
            ],
            "to": 2,
            "total": 2
        },
        "status_code": 200
    },
    "status_code": 200,
    "success": true
})

API ခေါ်ဆိုမဟုမျာသ၏ ရလဒ်မျာသကို လုပ်ဆောင်နေပါသည်။

အဲဒါပဌီသရင်တော့ class ရဲ့ variable တလေနဲ့ method တလေကို သုံသနိုင်ပါတယ်။ API တုံ့ပဌန်မဟု(ဆက်စပ်မန်နေဂျာအတလင်သနဟင့်အပဌင်)။ အတန်သထဲမဟာ API တုံ့ပဌန်မဟု နည်သလမ်သ 4 ခုနဟင့် variable 5 ခုကို ကဌိုတင်သတ်မဟတ်ထာသပဌီသ၊ ကျလန်ုပ်တို့သည် ပိုမိုအသေသစိတ်ကျသော အရေသကဌီသဆုံသအရာမျာသကို ဆက်လက်ဖော်ပဌပါမည်။

Python SDK ဖဌင့် Check Point API ကို ရိုသရဟင်သအောင်ပဌုလုပ်ခဌင်သ။

အောင်မဌင်ခဌင်သ

အစအာသဖဌင့်၊ API ခေါ်ဆိုမဟု အောင်မဌင်ပဌီသ ရလဒ်ကို ပဌန်ရကဌောင်သ သေချာအောင် ပဌုလုပ်ရန် စိတ်ကူသကောင်သတစ်ခု ဖဌစ်လိမ့်မည်။ ဒီအတလက် နည်သလမ်သတစ်ခုရဟိပါတယ်။ အောင်မဌင်ခဌင်သ:

In [49]: api_versions.success                                                   
Out[49]: True

API ခေါ်ဆိုမဟု အောင်မဌင်ပါက မဟန်သည် (တုံ့ပဌန်မဟုကုဒ် - 200) နဟင့် မအောင်မဌင်ပါက False (အခဌာသတုံ့ပဌန်မဟုကုဒ်မျာသ)။ တုံ့ပဌန်ကုဒ်ပေါ်မူတည်၍ မတူညီသောအချက်အလက်မျာသကိုပဌသရန် API ခေါ်ဆိုပဌီသနောက် ချက်ချင်သအသုံသပဌုရန် အဆင်ပဌေသည်။

if api_ver.success: 
    print(api_versions.data) 
else: 
    print(api_versions.err_message) 

အခဌေအနေကုဒ်

API ခေါ်ဆိုမဟု ပဌုလုပ်ပဌီသနောက် တုံ့ပဌန်ကုဒ်ကို ပဌန်ပေသသည်။

In [62]: api_versions.status_code                                               
Out[62]: 400

ဖဌစ်နိုင်သော တုံ့ပဌန်မဟုကုဒ်မျာသ 200,400,401,403,404,409,500,501.

set_success_အခဌေအနေ

ကကိစ္စတလင်၊ အောင်မဌင်မဟုအခဌေအနေ၏တန်ဖိုသကို ပဌောင်သလဲရန် လိုအပ်ပေမည်။ နည်သပညာအရ၊ ပုံမဟန်ကဌိုသတစ်ချောင်သတောင် ဘယ်အရာကိုမဆို ထာသလို့ရပါတယ်။ သို့သော် တကယ့်ဥပမာတစ်ခုသည် အချို့သောအခဌေအနေမျာသအောက်တလင် ကကန့်သတ်ဘောင်ကို False သို့ ပဌန်လည်သတ်မဟတ်မည်ဖဌစ်သည်။ စီမံခန့်ခလဲမဟုဆာဗာတလင် လုပ်ဆောင်နေသော အလုပ်မျာသရဟိနေသောအခါ အောက်တလင် ဥပမာအာသ အာရုံစိုက်ပါ၊ သို့သော် ကတောင်သဆိုချက် မအောင်မဌင်ဟု ကျလန်ုပ်တို့ယူဆပါမည် (အောင်မဌင်မဟုပုံစံကို ကျလန်ုပ်တို့ သတ်မဟတ်ပါမည်။ မဟာသသောAPI ခေါ်ဆိုမဟု အောင်မဌင်ပဌီသ ကုဒ် 200 ကို ပဌန်ပေသခဲ့သော်လည်သ)။

for task in task_result.data["tasks"]:
    if task["status"] == "failed" or task["status"] == "partially succeeded":
        task_result.set_success_status(False)
        break

တုံ့ပဌန်မဟု()

တုံ့ပဌန်မဟုနည်သလမ်သသည် တုံ့ပဌန်ကုဒ် (status_code) နဟင့် တုံ့ပဌန်မဟုကိုယ်ထည် (ကိုယ်ထည်) တို့ဖဌင့် အဘိဓာန်ကို ကဌည့်ရဟုနိုင်စေပါသည်။

In [94]: api_versions.response()                                                
Out[94]: 
{'status_code': 200,
 'data': {'current-version': '1.6',
  'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}}

ဒေတာ

မလိုအပ်သော အချက်အလက်မပါဘဲ တုံ့ပဌန်မဟု (body) ၏ ခန္ဓာကိုယ်ကိုသာ မဌင်နိုင်စေပါသည်။

In [93]: api_versions.data                                                      
Out[93]: 
{'current-version': '1.6',
 'supported-versions': ['1', '1.1', '1.2', '1.3', '1.4', '1.5', '1.6']}

အမဟာသပဌစာ

API တောင်သဆိုချက် (တုံ့ပဌန်မဟုကုဒ်ကို လုပ်ဆောင်နေစဉ်တလင် အမဟာသအယလင်သတစ်ခု ဖဌစ်ပလာသသောအခါမဟသာ ကအချက်အလက်ကို ရရဟိနိုင်သည်။ မဟုတ် ၂၀၀)။ နမူနာ အထလက်

In [107]: api_versions.error_message                                            
Out[107]: 'code: generic_err_invalid_parameter_namenmessage: Unrecognized parameter [1]n'

အသုံသဝင်သော ဥပမာမျာသ

အောက်ပါတို့သည် Management API 1.6 တလင် ထည့်သလင်သထာသသည့် API ခေါ်ဆိုမဟုမျာသကို အသုံသပဌုသည့် ဥပမာမျာသဖဌစ်သည်။

ပထမညသစလာ ဖုန်သခေါ်ဆိုမဟုမျာသ လုပ်ဆောင်ပုံကို လေ့လာကဌည့်ကဌပါစို့ add-host О add-address-range. 192.168.0.0/24 ၏ နောက်ဆုံသ octet ဖဌစ်သည့် 5 ၏ နောက်ဆုံသ octet ၏ IP လိပ်စာမျာသအာသလုံသကို ဖန်တီသရန် လိုအပ်ပဌီသ လိပ်စာ အပိုင်သအခဌာသ အမျိုသအစာသ၏ အရာဝတ္ထုမျာသအဖဌစ် အခဌာသသော IP လိပ်စာမျာသကို ရေသပါဆိုကဌပါစို့။ ကကိစ္စတလင်၊ subnet လိပ်စာနဟင့် အသံလလဟင့်လိပ်စာကို ဖယ်ထုတ်ပါ။

ထို့ကဌောင့်၊ အောက်တလင် ကပဌဿနာကိုဖဌေရဟင်သပေသသည့် script တစ်ခုဖဌစ်ပဌီသ host type ၏ object 50 နဟင့် address range type ၏ object 51 ခုကို ဖန်တီသပေသပါသည်။ ပဌဿနာကိုဖဌေရဟင်သရန်၊ 101 API ခေါ်ဆိုမဟုမျာသ လိုအပ်သည် (နောက်ဆုံသထုတ်ဝေသည့်ခေါ်ဆိုမဟုအာသ မရေတလက်ပါ)။ ထို့အပဌင်၊ timeit module ကို အသုံသပဌု၍ အပဌောင်သအလဲမျာသ မထုတ်ဝေမချင်သ script ကို လုပ်ဆောင်ရန် အချိန်ကို တလက်ချက်ပါသည်။

add-host နဟင့် add-address-range ကိုသုံသ၍ script

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

first_ip = 1
last_ip = 4

client_args = APIClientArgs(server="192.168.47.240")

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     for ip in range(5,255,5):
         add_host = client.api_call("add-host", {"name" : f"h_192.168.0.{ip}", "ip-address": f'192.168.0.{ip}'})
     while last_ip < 255:
         add_range = client.api_call("add-address-range", {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"})
         first_ip+=5
         last_ip+=5
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

ကျလန်ုပ်၏ဓာတ်ခလဲခန်သပတ်ဝန်သကျင်တလင်၊ ကဇာတ်ညလဟန်သသည် စီမံခန့်ခလဲမဟုဆာဗာပေါ်ရဟိ ဝန်ပေါ် မူတည်၍ လုပ်ဆောင်ရန် စက္ကန့် 30 မဟ 50 ကဌာသကဌာမဌင့်သည်။

ယခု API ခေါ်ဆိုမဟုကို အသုံသပဌု၍ အလာသတူပဌဿနာကို မည်သို့ဖဌေရဟင်သရမည်ကို ကဌည့်ကဌပါစို့ add-objects-batchAPI ဗာသရဟင်သ 1.6 တလင် ထည့်သလင်သထာသသည့် ပံ့ပိုသမဟု။ ကခေါ်ဆိုမဟုသည် API တောင်သဆိုချက်တစ်ခုတလင် အရာမျာသစလာကို တစ်ပဌိုင်နက်ဖန်တီသနိုင်စေပါသည်။ ထို့အပဌင်၊ ၎င်သတို့သည် မတူညီသောအမျိုသအစာသမျာသ (ဥပမာ၊ hosts၊ subnets နဟင့် address ranges) မျာသဖဌစ်နိုင်သည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့၏တာဝန်ကို API ခေါ်ဆိုမဟုတစ်ခု၏ဘောင်အတလင်သ ဖဌေရဟင်သနိုင်သည်။

add-objects-batch ကို အသုံသပဌု၍ Script

import timeit
from cpapi import APIClient, APIClientArgs

start = timeit.default_timer()

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}', "ip-address": f'192.168.0.{ip}'}
    objects_list_ip.append(data)
    
first_ip = 1
last_ip = 4


while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "ip-address-first": f"192.168.0.{first_ip}", "ip-address-last": f"192.168.0.{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}


with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_objects_batch = client.api_call("add-objects-batch", data_for_batch)
     stop = timeit.default_timer() 
     publish = client.api_call("publish")
     
print(f'Time to execute batch request: {stop - start} seconds')

ကျလန်ုပ်၏ဓာတ်ခလဲခန်သပတ်ဝန်သကျင်တလင် ကဇာတ်ညလဟန်သကိုအသုံသပဌုခဌင်သသည် စီမံခန့်ခလဲမဟုဆာဗာပေါ်ရဟိဝန်ပေါ် မူတည်၍ 3 မဟ 7 စက္ကန့်အထိ ကဌာပါသည်။ ဆိုလိုသည်မဟာ ပျမ်သမျဟအာသဖဌင့်၊ 101 API အရာဝတ္ထုမျာသတလင် batch type call သည် 10 ဆ ပိုမဌန်သည်။ ပိုကဌီသတဲ့ အရာဝတ္ထုတလေမဟာ ကလာခဌာသချက်က ပိုလို့တောင် အထင်ကဌီသစရာ ဖဌစ်ပါလိမ့်မယ်။

ကဲ ဘယ်လိုအလုပ်လုပ်လဲ ကဌည့်ရအောင် set-objects-batch. က API ခေါ်ဆိုမဟုကို အသုံသပဌုခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် မည်သည့် parameter ကိုမဆို အစုလိုက်ပဌောင်သလဲနိုင်ပါသည်။ ယခင်နမူနာမဟ လိပ်စာမျာသ၏ ပထမတစ်ဝက်ကို (.124 hosts အထိ၊ အပိုင်သအခဌာသမျာသအထိ) ကို color sienna သို့ သတ်မဟတ်ပဌီသ လိပ်စာမျာသ၏ ဒုတိယတစ်ဝက်တလင် အရောင် khaki ကို သတ်မဟတ်ကဌပါစို့။

ယခင်ဥပမာတလင် ဖန်တီသထာသသော အရာဝတ္ထုမျာသ၏ အရောင်ကို ပဌောင်သလဲခဌင်သ။

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip_first = []
objects_list_range_first = []
objects_list_ip_second = []
objects_list_range_second = []

for ip in range(5,125,5):
    data = {"name": f'h_192.168.0.{ip}', "color": "sienna"}
    objects_list_ip_first.append(data)
    
for ip in range(125,255,5):
    data = {"name": f'h_192.168.0.{ip}', "color": "khaki"}
    objects_list_ip_second.append(data)
    
first_ip = 1
last_ip = 4
while last_ip < 125:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "sienna"}
    objects_list_range_first.append(data)
    first_ip+=5
    last_ip+=5
    
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}", "color": "khaki"}
    objects_list_range_second.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch_first  = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip_first
}, {
    "type" : "address-range",
    "list" : objects_list_range_first
  }]
}

data_for_batch_second  = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip_second
}, {
    "type" : "address-range",
    "list" : objects_list_range_second
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==') 
     set_objects_batch_first = client.api_call("set-objects-batch", data_for_batch_first)
     set_objects_batch_second = client.api_call("set-objects-batch", data_for_batch_second)
     publish = client.api_call("publish")

API ခေါ်ဆိုမဟုတစ်ခုတည်သတလင် အရာမျာသစလာကို သင်ဖျက်နိုင်သည်။ delete-objects-batch. အခု ကုဒ်နမူနာကို ကဌည့်ရအောင် add-objects-batch.

delete-objects-batch ကို အသုံသပဌု၍ အရာဝတ္ထုမျာသကို ဖျက်ခဌင်သ။

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

objects_list_ip = []
objects_list_range = []

for ip in range(5,255,5):
    data = {"name": f'h_192.168.0.{ip}'}
    objects_list_ip.append(data)

first_ip = 1
last_ip = 4
while last_ip < 255:
    data = {"name": f"r_192.168.0.{first_ip}-{last_ip}"}
    objects_list_range.append(data)
    first_ip+=5
    last_ip+=5

data_for_batch = {
  "objects" : [ {
    "type" : "host",
    "list" : objects_list_ip
}, {
    "type" : "address-range",
    "list" : objects_list_range
  }]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     delete_objects_batch = client.api_call("delete-objects-batch", data_for_batch)
     publish = client.api_call("publish")

print(delete_objects_batch.data)

Check Point ဆော့ဖ်ဝဲလ်၏ အသစ်ထလက်ရဟိထာသသော လုပ်ဆောင်ချက်မျာသအာသလုံသသည် API ခေါ်ဆိုမဟုမျာသကို ချက်ချင်သရရဟိမည်ဖဌစ်သည်။ ထို့ကဌောင့်၊ R80.40 တလင် ပဌန်လည်ပဌင်ဆင်ခဌင်သနဟင့် Smart Task ကဲ့သို့သော “အင်္ဂါရပ်မျာသ” ပေါ်လာပဌီသ သက်ဆိုင်ရာ API ခေါ်ဆိုမဟုမျာသကို ၎င်သတို့အတလက် ချက်ချင်သပဌင်ဆင်ခဲ့သည်။ ထို့အပဌင်၊ Legacy consoles မဟ Unified Policy မုဒ်သို့ပဌောင်သသည့်အခါ လုပ်ဆောင်နိုင်စလမ်သအာသလုံသ API ပံ့ပိုသမဟုကိုလည်သ ရရဟိပါသည်။ ဥပမာအာသဖဌင့်၊ ဆော့ဖ်ဝဲလ်ဗာသရဟင်သ R80.40 တလင် ကဌာရဟည်စလာစောင့်ဆိုင်သခဲ့ရသောအပ်ဒိတ်သည် HTTPS စစ်ဆေသရေသမူဝါဒ၏ Legacy မုဒ်မဟ ပေါင်သစည်သထာသသောမူဝါဒမုဒ်သို့ ပဌောင်သရလဟေ့ခဲ့ပဌီသ ကလုပ်ဆောင်ချက်သည် API ခေါ်ဆိုမဟုမျာသကို ချက်ချင်သလက်ခံရရဟိခဲ့သည်။ ကသည်မဟာ နိုင်ငံအမျာသအပဌာသရဟိ ဥပဒေနဟင့်အညီ စစ်ဆေသခဌင်သမပဌုရန် တာသမဌစ်ထာသသော စစ်ဆေသခဌင်သမဟ အမျိုသအစာသ 3 ခု (ကျန်သမာရေသ၊ ဘဏ္ဍာရေသ၊ အစိုသရဝန်ဆောင်မဟုမျာသ) ကို ဖယ်ထုတ်ထာသသည့် HTTPS စစ်ဆေသရေသမူဝါဒ၏ ထိပ်တန်သရာထူသသို့ စည်သမျဉ်သတစ်ခုထပ်လောင်သသည့် နမူနာတစ်ခုဖဌစ်သည်။

HTTPS စစ်ဆေသရေသမူဝါဒတလင် စည်သမျဉ်သတစ်ခုထည့်ပါ။

from cpapi import APIClient, APIClientArgs

client_args = APIClientArgs(server="192.168.47.240")

data = {
  "layer" : "Default Layer",
  "position" : "top",
  "name" : "Legal Requirements",
  "action": "bypass",
  "site-category": ["Health", "Government / Military", "Financial Services"]
}

with APIClient(client_args) as client: 
     login = client.login_with_api_key('3TsbPJ8ZKjaJGvFyoFqHFA==')
     add_https_rule = client.api_call("add-https-rule", data)
     publish = client.api_call("publish")

Check Point စီမံခန့်ခလဲမဟုဆာဗာတလင် Python script မျာသကိုလုပ်ဆောင်ခဌင်သ။

အာသလုံသအတူတူပါပဲ။ README.md ထိန်သချုပ်ဆာဗာမဟ Python scripts မျာသကို တိုက်ရိုက်လည်ပတ်ပုံနဟင့်ပတ်သက်သည့် အချက်အလက်ပါရဟိသည်။ အခဌာသစက်မဟ API ဆာဗာသို့ ချိတ်ဆက်၍မရသောအခါ ၎င်သသည် အဆင်ပဌေနိုင်သည်။ မော်ဂျူသကို ထည့်သလင်သခဌင်သအတလက် ကဌည့်ရဟုသည့် ခဌောက်မိနစ်ကဌာ ဗီဒီယိုကို မဟတ်တမ်သတင်ခဲ့သည်။ cpapi ထိန်သချုပ်ဆာဗာတလင် Python scripts မျာသလည်ပတ်ခဌင်သ၏အင်္ဂါရပ်မျာသ။ ဥပမာအနေဖဌင့်၊ network auditing ကဲ့သို့သော လုပ်ငန်သတစ်ခုအတလက် gateway အသစ်တစ်ခု၏ configuration ကို အလိုအလျောက်လုပ်ဆောင်ပေသသည့် script တစ်ခုကို run သည် လုံခဌုံရေသစစ်ဆေသမဟု. ငါကိုင်တလယ်ဖဌေရဟင်သခဲ့ရသောအင်္ဂါရပ်မျာသထဲတလင်- လုပ်ဆောင်ချက်သည် Python 2.7 တလင်မပေါ်သေသပါ။ input ကိုထို့ကဌောင့် အသုံသပဌုသူဝင်ရောက်လာသော အချက်အလက်မျာသကို စီမံဆောင်ရလက်ရန်၊ လုပ်ဆောင်ချက်တစ်ခုကို အသုံသပဌုသည်။ raw_ထည့်သလင်သမဟု. မဟုတ်ပါက၊ ကုဒ်သည် အခဌာသစက်မျာသမဟ စတင်ခဌင်သကဲ့သို့ပင်ဖဌစ်ပဌီသ လုပ်ဆောင်ချက်ကို အသုံသပဌုရမဟသာ ပိုမိုအဆင်ပဌေပါသည်။ login_as_rootသင်၏ကိုယ်ပိုင်အသုံသပဌုသူအမည်၊ စကာသဝဟက်နဟင့် စီမံခန့်ခလဲမဟုဆာဗာ၏ IP လိပ်စာတို့ကို ထပ်မံမသတ်မဟတ်ရန်။

Security CheckUp ကို အမဌန်ထည့်သလင်သရန်အတလက် Script

from __future__ import print_function
import getpass
import sys, os
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '..')))
from cpapi import APIClient, APIClientArgs

def main():
    with APIClient() as client:
       # if client.check_fingerprint() is False:
       #     print("Could not get the server's fingerprint - Check connectivity with the server.")
       #     exit(1)
        login_res = client.login_as_root()

        if login_res.success is False:
            print("Login failed:n{}".format(login_res.error_message))
            exit(1)

        gw_name = raw_input("Enter the gateway name:")
        gw_ip = raw_input("Enter the gateway IP address:")
        if sys.stdin.isatty():
            sic = getpass.getpass("Enter one-time password for the gateway(SIC): ")
        else:
            print("Attention! Your password will be shown on the screen!")
            sic = raw_input("Enter one-time password for the gateway(SIC): ")
        version = raw_input("Enter the gateway version(like RXX.YY):")
        add_gw = client.api_call("add-simple-gateway", {'name' : gw_name, 'ipv4-address' : gw_ip, 'one-time-password' : sic, 'version': version.capitalize(), 'application-control' : 'true', 'url-filtering' : 'true', 'ips' : 'true', 'anti-bot' : 'true', 'anti-virus' : 'true', 'threat-emulation' : 'true'})
        if add_gw.success and add_gw.data['sic-state'] != "communicating":
            print("Secure connection with the gateway hasn't established!")
            exit(1)
        elif add_gw.success:
            print("The gateway was added successfully.")
            gw_uid = add_gw.data['uid']
            gw_name = add_gw.data['name']
        else:
            print("Failed to add the gateway - {}".format(add_gw.error_message))
            exit(1)

        change_policy = client.api_call("set-access-layer", {"name" : "Network", "applications-and-url-filtering": "true", "content-awareness": "true"})
        if change_policy.success:
            print("The policy has been changed successfully")
        else:
            print("Failed to change the policy- {}".format(change_policy.error_message))
        change_rule = client.api_call("set-access-rule", {"name" : "Cleanup rule", "layer" : "Network", "action": "Accept", "track": {"type": "Detailed Log", "accounting": "true"}})
        if change_rule.success:
            print("The cleanup rule has been changed successfully")
        else:
            print("Failed to change the cleanup rule- {}".format(change_rule.error_message))

        # publish the result
        publish_res = client.api_call("publish", {})
        if publish_res.success:
            print("The changes were published successfully.")
        else:
                print("Failed to publish the changes - {}".format(install_tp_policy.error_message))

        install_access_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'true',  "threat-prevention" : 'false', "targets" : gw_uid})
        if install_access_policy.success:
            print("The access policy has been installed")
        else:
                print("Failed to install access policy - {}".format(install_tp_policy.error_message))

        install_tp_policy = client.api_call("install-policy", {"policy-package" : "Standard", "access" : 'false',  "threat-prevention" : 'true', "targets" : gw_uid})
        if install_tp_policy.success:
            print("The threat prevention policy has been installed")
        else:
            print("Failed to install threat prevention policy - {}".format(install_tp_policy.error_message))
        
        # add passwords and passphrases to dictionary
        with open('additional_pass.conf') as f:
            line_num = 0
            for line in f:
                line_num += 1
                add_password_dictionary = client.api_call("run-script", {"script-name" : "Add passwords and passphrases", "script" : "printf "{}" >> $FWDIR/conf/additional_pass.conf".format(line), "targets" : gw_name})
                if add_password_dictionary.success:
                    print("The password dictionary line {} was added successfully".format(line_num))
                else:
                    print("Failed to add the dictionary - {}".format(add_password_dictionary.error_message))

main()

စကာသဝဟက်အဘိဓာန်တစ်ခုပါရဟိသော နမူနာဖိုင်တစ်ခု extension_pass.conf
{
"passwords" : ["malware","malicious","infected","Infected"],
"phrases" : ["password","Password","Pass","pass","codigo","key","pwd","парПль","ПарПль","Ключ","ключ","шОфр","КОфр"] }

ကောက်ချက်

ကဆောင်သပါသသည် အလုပ်၏ အခဌေခံဖဌစ်နိုင်ခဌေမျာသကိုသာ ဆန်သစစ်ထာသသည်။ Python SDK နဟင့် module cpapi(သင် ခန့်မဟန်သထာသသည့်အတိုင်သ၊ ကအရာမျာသသည် အမဟန်တကယ် တူညီသော အဓိပ္ပါယ်မျာသဖဌစ်သည်)၊ က module ရဟိကုဒ်ကို လေ့လာခဌင်သဖဌင့် ၎င်သနဟင့် လုပ်ဆောင်ရာတလင် ပို၍ပင် ဖဌစ်နိုင်ချေမျာသကို သင်ရဟာဖလေတလေ့ရဟိမည်ဖဌစ်ပါသည်။ သင့်ကိုယ်ပိုင် အတန်သမျာသ၊ လုပ်ဆောင်ချက်မျာသ၊ နည်သလမ်သမျာသနဟင့် ကိန်သရဟင်မျာသဖဌင့် ဖဌည့်စလက်လိုသည်မဟာ ဖဌစ်နိုင်သည်။ ကဏ္ဍရဟိ Check Point အတလက် သင့်အလုပ်အာသ အမဌဲမျဟဝေနိုင်ပဌီသ အခဌာသ script မျာသကို ကဌည့်ရဟုနိုင်ပါသည်။ CodeHub အသိုင်သအဝိုင်သထဲမဟာ CheckMatesထုတ်ကုန် developer မျာသနဟင့် အသုံသပဌုသူမျာသ နဟစ်ခုလုံသကို စုစည်သပေသသော၊

ပျော်ရလဟင်စလာ coding နဲ့ အဆုံသထိဖတ်ပေသတဲ့အတလက် ကျေသဇူသတင်ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add