DevSecOps 软件开发工具包 - Python
当组织中的 PAM360 用户获得 SDK 访问权限和注册令牌后,即可通过在应用程序/服务中注册相应的 PAM360 SDK 来继续使用该 SDK。请按照以下文档操作。
1. Python SDK 先决条件
- Python SDK 要求 Python 应用程序版本为 3.12 或更高。
- 解压下载的 Python SDK zip 文件,并使用以下命令安装 Python SDK 包:pip install
<sdk-folder-path>
安装 SDK 后,请确保已安装 requests 库 2.31.0 或更高版本(https://pypi.org/project/requests/) 已安装。其他详情
在 PAM360 中获得 SDK 访问权限后,系统将向您的注册邮箱发送一封包含身份验证令牌及 Python SDK 下载链接的邮件。 此外,您也可以联系管理员获取 Python SDK 文件。
- 如果 PAM360 Web 服务器使用自签名证书,请将其下载并部署到所需的系统目录中,并在创建服务配置时更新相应的证书路径。
2. 在 PAM360 中注册 Python 应用程序
在开始开发 Python 应用程序之前,必须先配置并建立 PAM360 服务器与 Python SDK 之间的连接。此过程包含若干步骤,用于注册您的应用程序并使其能够使用 PAM360 的各项功能。
您可以使用以下示例代码(涉及ClientRegistrationManager和ServiceConfiguration对象)将 Python 应用程序注册到 PAM360 服务器。此注册操作可确保您的应用程序在 PAM360 界面中被识别,从而允许您通过可用 API 方法访问 PAM360 存储库中的数据。请注意,此注册操作仅需在您使用 PAM360 SDK 的机器上执行一次。
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__)
# 配置步骤
sdk_registration_token = "#######-####-####-####-############"
host_name = "CH-TEN-53D07"
port_no =8282
certificate_path = "D:\2024\Python\Secure Vault\SDK" # SSL 证书文件路径(.pem 格式)
service_config = ServiceConfiguration(host_name, port_no, certificate_path)
# 注册步骤
try:
sdk_client_name = "示例 Python 应用程序名称"
registration_manager = ClientRegistrationManager(service_config)
registration_manager.register(sdk_registration_token, sdk_client_name)
except SDKRegistrationError as ex:
app_logger.error(ex)
- sdk_registration_token- 通过电子邮件或管理员获取的、与 SDK 策略关联的唯一标识符。
- host_name- PAM360 应用程序运行的特定主机。
- port_no- 与 PAM360 服务器通信所使用的端口号。
运行此代码后,您的 Python 应用程序将注册到 PAM360 服务器,从而能够通过 API 调用与 PAM360 功能进行交互。
2.1 用户注册如何运作?
使用指定的ClientRegistrationManager和ServiceConfigurationSDK 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" # 当为 PAM360 Web 服务器使用自签名证书时,请提供证书路径
)
user_api_token = "########-####-####-####-############"
# PAMService 是所有实体的入口点
service = PAMService(service_config=config, user_token=user_api_token, org_name="Client Organisation")
# Entity 是所有实体相关操作的入口点
# 本例中为密码实体
password_entity = service.get_password_instance()
# 获取资源下某个账户的密码
resource = "ad-services2k19"
account = "sysadmin"
password = password_entity.get_password_account(resource_name=resource, account_name=account)
print(f"{resource} 资源下 {account} 账户的密码为 {password}")
except SDKError as ex:
app_logger.error(ex)
请参阅 此 帮助文档,查看其余由 SDK 支持的 API 示例代码。您还可以参考 此 Python 文档,了解可用的类、对象和函数。
4. Python SDK 最佳实践
虚拟环境- 建议使用 虚拟环境 。此举旨在隔离依赖项、简化管理、确保可重现性、为测试提供沙箱环境、增强安全性并便于清理,因此成为应用程序开发的最佳实践,尤其是在集成 SDK 包时。
SDK 日志 - PAMSDKLogger 负责记录 PAM360 SDK 内的所有内部错误和活动。该类会记录实体、注册等操作过程中发生的任何内部错误。默认情况下,与 SDK 相关的日志保存在 PAM360 SDK 已部署的 Python 应用程序中的sdk_logs文件夹内。 但出于安全考虑,您可在调用 API 时通过以下步骤,指定首选目录中的绝对文件路径。此操作仅需执行一次;一旦定义,后续 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 配置 - 配置 文件值是 Python 应用程序与 PAM360 在进行 API 调用时的主要身份验证机制。默认情况下,在应用程序注册期间,配置文件存储在 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"
}