Hướng dẫn tenable sc python - con trăn có thể tenable sc

Hướng dẫn tenable sc python - con trăn có thể tenable sc


Tác giả Steve McGrath, kiến ​​trúc sư giải pháp chính có thể sử dụng được

Tất cả các khả năng của quản lý lỗ hổng Tenable.io đều có sẵn trong API Tenable.io, một nền tảng mạnh mẽ cho người dùng ở tất cả các cấp độ kinh nghiệm. Sử dụng API Tenable.io, bạn có thể tích hợp liền mạch Tenable.io vào cơ sở hạ tầng an ninh mạng của mình; Ví dụ: bạn có thể:

  • Tự động hóa dữ liệu tài sản vào Tenable.io.
  • Nhập dữ liệu quét bên thứ ba.
  • Xuất kết quả quét từ Tenable.io vào một hệ thống quản lý quy trình công việc để khắc phục.

Bạn có thể tự động hóa hầu hết mọi tác vụ trong nền tảng Tenable.io thông qua API. Đối với một số người, ý nghĩ này có vẻ khó khăn; Tuy nhiên, Tenable đã làm cho đường cong học tập càng thấp càng tốt với thư viện Python API có thể sử dụng được có tên là PyTenable.

Thư viện Pytenable cung cấp cho người dùng giao diện cấp thấp vào API và nó sử dụng danh pháp pythonic để tương tác với API đơn giản, trao quyền và cuối cùng không đau. Bài viết này cung cấp một giới thiệu về Pytenable để giúp bạn phát triển các tích hợp Tenable.io của mình nhanh chóng và dễ dàng nhất có thể.

Trước khi sử dụng pytenable, bạn cần các điều kiện tiên quyết sau:

  • Python 3.6 trở lên, có thể tham gia vào Python 3.6 trở lên.
  • Các khóa API Bạn cần một tài khoản trong Tenable.io với một bộ khóa API được tạo. Để tạo các khóa API để sử dụng với API Tenable.io, hãy xem Tạo các khóa API trong Hướng dẫn sử dụng quản lý lỗ hổng Tenable.io. Để biết thông tin về cách sử dụng các khóa API, hãy xem ủy quyền trong cổng thông tin nhà phát triển có thể sử dụng. Điều đáng chú ý là sử dụng nhiều điểm cuối, bạn có thể cần quyền nâng cao hoặc tài khoản quản trị viên để thực hiện hành động.

Bài viết này giả định rằng bạn đã cài đặt Python 3.6 hoạt động trở lên. Tôi có thể viết toàn bộ hướng dẫn về các cách khác nhau mà bạn có thể định cấu hình môi trường của mình, nhưng vì lợi ích của sự ngắn gọn, bạn có thể tham khảo thiết lập phát triển của tôi trên blog nhà phát triển của tôi nếu bạn tò mò về môi trường phát triển cá nhân của tôi.

  1. Cài đặt pytenstalling pytenstallable có thể thay thế thường là một lệnh một dòng đơn giản sử dụng pip (chỉ mục gói python). PIP có thể kéo tất cả các phụ thuộc cần thiết cần thiết cho thư viện pytenable và đó là cách tiếp cận được khuyến nghị để cài đặt. Để cài đặt PyTenable qua PIP, chỉ cần thực hiện lệnh sau:
  1. . Sử dụng các biến môi trường có thể khá hữu ích khi tạo mẫu hoặc viết một tập lệnh nhanh. Để đặt các phím API của bạn làm biến môi trường, chỉ cần thực hiện các lệnh sau:
export TIO_ACCESS_KEY="YOUR_API_ACCESS_KEY_HERE"
export TIO_SECRET_KEY="YOUR_API_SECRET_KEY_HERE"

Khi bạn đã hoàn thành các bước này, bạn đã hoàn thành cấu hình môi trường và sẵn sàng để đi sâu vào!

Thư viện PyTenable sử dụng khái niệm của lớp kết nối để đóng vai trò là giao diện chính cho API Tenable.io. Các lớp kết nối thường được sử dụng trong nhiều thư viện và cho phép các nhà phát triển có nhiều đối tượng kết nối trong mã. Điều này rất hữu ích nếu bạn cần sử dụng người dùng hoặc giao diện khác nhau vào các trường hợp khác nhau. Trong thực tế, thư viện pytenable rất dễ sử dụng, chỉ cần khởi tạo một đối tượng và bạn có mọi thứ bạn cần trong đối tượng đó.

Ví dụ: để khởi tạo một đối tượng có tên

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
2:

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)

Nếu bạn đã cấu hình các khóa API của mình dưới dạng các biến môi trường, thì việc khởi tạo thậm chí còn dễ dàng hơn:

from tenable.io import TenableIO

tio = TenableIO()

Trong cả hai trường hợp, bây giờ bạn có một đối tượng có tên

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
2 mà bạn có thể tương tác.

Khi bạn phát triển tích hợp cho Tenable.io, Tenable khuyên bạn nên xác định chính mình với API. Nhận dạng cho phép Tenable xác định các cuộc gọi tích hợp và API của bạn và nó hỗ trợ gỡ lỗi và khắc phục sự cố nếu bạn có vấn đề với API, giới hạn tỷ lệ hoặc giới hạn đồng thời. Ngoài ra, đây thường là một yêu cầu cho tích hợp đối tác.

Trong thư viện pytenable, việc thêm nhận dạng là dễ dàng. Bạn chỉ cần vượt qua một vài tham số bổ sung khi khởi tạo một đối tượng, ví dụ:

from tenable.io import TenableIO

tio = TenableIO(
    vendor='Widgets Inc.',
    product='Widget Maker 5000',
    build='0.0.1'
)

Với các tham số này, thư viện PyTenable hiện có thông tin cần thiết để xây dựng chuỗi tiêu đề

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
4 với thông tin phù hợp. Để biết thêm thông tin về việc sử dụng các tiêu đề của tác nhân người dùng với API Tenable.io, hãy xem Tiêu đề Tác nhân người dùng.

Bây giờ bạn đã khởi tạo đối tượng

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
2, bạn có thể thực hiện một cuộc gọi đơn giản đến API Tenable.io. Đối với cuộc gọi đầu tiên này, hãy lấy danh sách các lần quét được cấu hình từ nền tảng Tenable.io:

scans = tio.scans.list()
for scan in scans:
    print(f'Scan {scan["id"]} is named {scan["name"]}')

Bạn sẽ thấy một danh sách mọi lần quét mà bạn có quyền truy cập cùng với ID và tên của họ.

Một trong những chức năng cơ bản của nền tảng Tenable.io là thu thập dữ liệu thông qua quét. Quét có thể đơn giản hoặc phức tạp tùy thuộc vào môi trường của bạn và nhu cầu cụ thể của bạn. Thư viện Pytenable cố gắng quét đơn giản nhất có thể. Đối với phần giới thiệu này, chúng tôi sẽ tập trung vào các mẫu chính sách quét được xác định trước và lưu quét phức tạp hơn cho một bài viết khác.

Quét bên ngoài là loại đơn giản nhất, vì bạn không cần triển khai máy quét trong môi trường để quét chu vi. Thuận tiện, thư viện có thể thực hiện được các giả định được xác định trước để giảm số lượng tham số bạn vượt qua.

Ví dụ: để chạy quét mạng cơ bản đối với máy chủ (được gọi là

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
6 trong các ví dụ sau), bạn chỉ cần một vài dòng:

scan = tio.scans.create(
    name='External Example Scan',
    targets=['external-target.company.tld']
)
tio.scans.launch(scan['id'])

Chúng tôi chỉ phải chỉ định tên của quét và danh sách các mục tiêu để quét. Nếu bạn muốn làm một cái gì đó phức tạp hơn một chút, chẳng hạn như quét PCI-ASV, bạn chỉ cần chỉ định tên mẫu quét:

scan = tio.scans.create(
    name='External Example ASV Scan',
    template='asv',
    targets=['external-target.company.tld']
)
tio.scans.launch(scan['id'])

Nếu bạn tình cờ biết UUID của mẫu quét, bạn có thể vượt qua UUID thay vì thư viện đủ thông minh để biết những gì đang được thông qua:

scan = tio.scans.create(
    name='External Example Advanced Scan',
    template='11cb4669-5aff-47d2-8f00-3ef60a669325d24bd260ef5f9e66',
    targets=['external-target.company.tld']
)
tio.scans.launch(scan['id'])

Để có được danh sách các tên mẫu chính sách và UUIDS:

Quét nội bộ chỉ khó hơn một chút so với quét bên ngoài. Khi bạn chạy quét nội bộ, bạn được yêu cầu xác định một máy quét hoặc nhóm quét là một phần của định nghĩa quét. Bạn có thể xác định nhóm quét hoặc nhóm quét bằng tên hoặc UUID, giống như với các mẫu chính sách quét trong các ví dụ quét bên ngoài.

Để tạo quét ngoài bằng cách sử dụng tên của máy quét:

internal_scan = tio.scans.create(
    name='Example Internal Scan',
    scanner='io-scanner',
    targets=['192.0.2.0/24']
)

Để tạo quét bên ngoài bằng UUID của máy quét:

internal_scan = tio.scans.create(
    name='Example Internal Scan',
    scanner='ac096e47-8505-4ae7-a479-9ad068a19241',
    targets=['192.0.2.0/24']
)

Giống như trước đây, bạn có thể lấy danh sách các máy quét và nhóm máy quét thông qua thư viện:

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
0

Nền tảng Tenable.io thường không đồng bộ trong thực tế, cho bạn tùy chọn để theo dõi trạng thái của các hành động trạng thái, chẳng hạn như quét, tuy nhiên bạn thấy phù hợp. Khi bạn khởi chạy quét thông qua API Tenable.io hoặc thư viện có thể pytenable, nó không bao giờ là một cuộc gọi chặn và phản hồi được trả về ngay lập tức. Có một loạt các điểm cuối để theo dõi trạng thái của một công việc nhất định, ví dụ, để xem liệu quét có hoàn thành không. Trong ví dụ về quét, pytenable đã phơi bày khả năng này bằng phương pháp

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
7. Phương pháp này có thể được sử dụng như vậy:

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
1

Mặc dù ví dụ có vẻ kỳ quặc, nhưng nếu bạn nhìn vào tài liệu trạng thái quét, tất cả các trạng thái trạng thái cuối đều là quá khứ ("ED"), trong khi các trạng thái trung gian hiện tại ("ing"). Điều này có nghĩa là bạn có thể tạo điều kiện trong khi vòng lặp để tiếp tục kiểm tra hai ký tự cuối cùng của

from tenable.io import TenableIO

tio = TenableIO(
    access_key='ACCESS_KEY_GOES_HERE',
    secret_key='SECRET_KEY_GOES_HERE'
)
7.

Như bạn có thể thấy, các khả năng của API Tenable.io, khi được ghép nối với thư viện có thể sử dụng được như một lớp giao diện, khá dễ dàng để sử dụng một lượng mã tối thiểu. Bài viết này chỉ là bài viết đầu tiên trong một loạt các bài viết để khám phá một số trường hợp sử dụng API có thể sử dụng phổ biến. Nếu bạn muốn xem thêm, hãy tìm bài viết chuyên gia tiếp theo trong loạt bài này, nơi chúng tôi sẽ thảo luận về việc xuất dữ liệu từ nền tảng Tenable.io.

  • Thư viện có thể bon
  • Tài liệu có thể pytenable
  • Tạo khóa API
  • Tiêu đề tác nhân người dùng
  • Trạng thái quét
  • Blog nhà phát triển của Steve McGrath

Đã cập nhật 7 tháng trước


  • Mục lục
    • Giới thiệu
    • Điều kiện tiên quyết
    • Cấu hình môi trường
    • Lặn vào
      • Khởi tạo một đối tượng
      • Xác định tích hợp của bạn
      • Thực hiện cuộc gọi API đầu tiên của bạn
    • Tạo và khởi chạy quét
      • Quét bên ngoài
      • Quét nội bộ
      • Theo dõi trạng thái quét
    • Cái gì tiếp theo?
      • Để biết thêm thông tin