DevSecOps向けソフトウェア開発キット - Python

組織内の PAM360 ユーザーに SDK アクセスと登録済みトークンが提供されると、ユーザーはアプリケーション/サービスに関連する PAM360 SDK を登録することで、SDK の使用をさらに進めることができます。そのためには、以下のドキュメントに従ってください。

1.Python SDKの前提条件

  1. Python SDK にはバージョン 3.12 以降の Python アプリケーションが必要です。
  2. ダウンロードしたPython SDKのzipファイルを解凍し、次のコマンドを使用してPython SDKパッケージをインストールします: pip install<sdk-folder-path>

    メモ:

    PAM360 で SDK アクセスが許可されると、認証トークンと Python SDK をダウンロードするためのリンクを含むメールが登録済みのメール アドレスに送信されます。または、Python SDK ファイルについては管理者に問い合わせることもできます。

    SDKのインストール後、requestsライブラリのバージョン2.31.0以降(https://pypi.org/project/requests/)がインストールされていることを確認してください。
  3. PAM360 Web サーバーが自己署名証明書を使用する場合は、それをダウンロードして目的のシステム ディレクトリに展開し、サービス設定の作成時にそれぞれの証明書パスを更新します。

2.PAM360 に Python アプリケーションを登録する

Python アプリケーションの開発を開始する前に、PAM360 サーバーと Python SDK 間の接続を設定して確立することが重要です。このプロセスには、アプリケーションを登録し、PAM360 機能を利用できるようにするための特定の手順が含まれます。

ClientRegistrationManager オブジェクトと ServiceConfiguration オブジェクトを含む次のサンプル コードを使用して、Python アプリケーションを PAM360 サーバーに登録できます。この登録により、アプリケーションが PAM360 インターフェース内で認識され、利用可能な API メソッドを通じて PAM360 リポジトリのデータにアクセスできるようになります。この登録は、PAM360 SDK を使用しているマシン上で 1 回限りの操作であることに注意してください。

import logging from src.com.manageengine.pam360.sdk.services.registration_utility import ClientRegistrationManager from src.com.manageengine.pam360.sdk.services.service_configuration import ServiceConfiguration app_logger = logging.getLogger(__name__) # Configuration Steps sdk_registration_token = "#######-####-####-####-############" host_name = "CH-TEN-53D07" port_no = 8282 certificate_path = "D:\2024\Python\Secure Vault\SDK" # SSL Certificate file Path in .pem format service_config = ServiceConfiguration(host_name, port_no, certificate_path) # Registration Steps try: sdk_client_name = "Sample Python Application Name" registration_manager = ClientRegistrationManager(service_config) registration_manager.register(sdk_registration_token, sdk_client_name) except SDKRegistrationError as ex: app_logger.error(ex)
  1. sdk_registration_token - 電子メールまたは管理者から受信した SDK ポリシーに関連付けられた一意の識別子。
  2. host_name - PAM360 アプリケーションが動作する特定のホスト。
  3. port_no - PAM360 サーバーとの通信用のポート番号。

このコードを実行すると、Python アプリケーションが PAM360 サーバーに登録され、 API 呼び出しを介して PAM360 機能と対話できるようになります。

2.1 ユーザー登録の仕組みについて

指定された ClientRegistrationManager および ServiceConfiguration SDK Python オブジェクトを使用して提供されたサンプル コードを実行すると、Python アプリケーションが PAM360 アプリケーションに登録されます。登録後、SDK 設定ファイルが生成され、sdk_config という名前のフォルダに保存されます。

メモ:

生成された設定ファイルは必ず安全に保存してください。この設定ファイルは、PythonアプリケーションからAPIコールを行う際に、PythonアプリケーションとPAM360間のプライマリ認証方式として機能します。

正常に完了すると、デプロイされた PAM360 SDK を利用する登録済みアプリケーションが PAM360 Web インターフェースに表示されます。ポリシー名アプリケーション タイプアクセスされた情報、PAM360 に関連するアプリケーション内で実行されたアクションの監査ログなどの詳細にアクセスできるようになります。管理者は、PAM360 インターフェースから直接、SDK で展開されたアプリケーションの詳細を監視する機能を保持します。

3.SDK でデプロイされたアプリケーション経由で PAM360 API を呼び出す

以下は、Python アプリケーション/サービスから PAM360 SDK 経由で API を初期化するためのサンプル コードです。

例: アカウントのパスワードを取得する

import logging from com.manageengine.pam360.sdk.exception.pam_exception import SDKError from com.manageengine.pam360.sdk.services.pam_service import PAMService from com.manageengine.pam360.sdk.services.service_configuration import ServiceConfiguration app_logger = logging.getLogger(__name__) try: pam_host_name = "CHEST11F-H07" pam_server_port = 8282 config = ServiceConfiguration( host=pam_host_name, port=pam_server_port, certificate_path=r"path\to\certificate.pem" # Provide the certificate path while using a self-signed certificate for the PAM360 web server ) user_api_token = "########-####-####-####-############" # PAMService is the entry point to all entities service = PAMService(service_config=config, user_token=user_api_token, org_name="Client Organisation") # Entity is the entry point to all entity-related operations # In this case, Password Entity password_entity = service.get_password_instance() # Get Password of an Account under a Resource resource = "ad-services2k19" account = "sysadmin" password = password_entity.get_password_account(resource_name=resource, account_name=account) print(f"Password of {account} Account under {resource} Resource is {password}") except SDKError as ex: app_logger.error(ex)

残りの SDK 対応 API サンプル コードについては、このヘルプ ドキュメントを参照してください。利用可能なクラス、オブジェクト、および関数については、こちらのPythonドキュメントを参照してください。

4.Python SDK のベストプラクティス

仮想環境 - アプリケーションを作成する際は、Pythonの仮想環境を使用することを推奨します。これは、依存関係を分離し、管理を簡素化し、再現性を確保し、テスト用のサンドボックスを提供し、セキュリティを強化し、簡単なクリーンアップを容易にするためのもので、特に SDK パッケージを組み込む場合のアプリケーション開発のベスト プラクティスになります。

SDK ログ - PAMSDKLogger は、PAM360 SDK 内のすべての内部エラーとアクティビティをログに記録する役割を担います。このクラスは、エンティティ、登録など内で発生した内部エラーを記録します。デフォルトでは、SDK に関連するログは、PAM360 SDK のデプロイされた Python アプリケーション内の sdk_logs という名前のフォルダに保存されます。ただし、セキュリティ上の理由から、API を呼び出すときに以下の手順を使用して、優先ディレクトリに絶対ファイル パスを指定するオプションがあります。これは 1 回限りのプロセスです。一度定義すると、後続の API 呼び出しのログに同じパスが使用されます。

from com.manageengine.pam360.sdk.services.pam_sdk_logger import PAMSDKLogger PAMSDKLogger.set_log_file_path(r"D:\2024\Python\Secure Vault\SDK")

SDK Config - 設定ファイルの値は、API 呼び出しを行うときに、Python アプリケーションと PAM360 間の主要な認証メカニズムとして機能します。デフォルトでは、アプリケーションの登録時に、設定ファイルは Python アプリケーション内の sdk_config という名前のフォルダに保存されます。ただし、セキュリティ上の考慮事項として、APIを呼び出す際に以下の手順を使用して、任意のディレクトリに希望するパスを定義することができます。これにより、SDK 設定ファイルを任意の場所に保存できるようになります。

from com.manageengine.pam360.sdk.services.service_configuration import ServiceConfiguration config = ServiceConfiguration( host=pam_host_name, port=pam_server_port, certificate_path=r"path\to\certificate.pem" config_folder_path=r"D:\2024\Python\Secure Vault\SDK" }