Python SDK API 示例
所有 PAM360 API 均可通过 Python SDK 访问,具体取决于 PAM360 中分配的用户角色,从而支持开发自定义应用程序以高效地执行数据同步。
此处提供了 PAM360 Python SDK 中所有可用 API 方法的示例代码,供您参考,同时附有相关的 SDK 异常说明。
您还可以参考 Python 文档 以获取更多详细信息。
使用 Python SDK 的 REST API 示例代码
1. 资源操作
类- Resource
构造函数- Resource(service:PAMService)
描述- 创建一个包含与 PAMService 相关资源功能的 Resource 实体类实例。
方法 |
描述 |
创建
create_resource_model = ResourceModel(
resource_name="CHTOW-T11-1108",
dns_name="manageengine.com",
resource_type="Windows",
resource_group_name="特权资源",
resource_description="工作站 - 1108J6 - 虚拟",
domain_name="acme.com",
department="系统管理",
location="加利福尼亚",
resource_password_policy="Strong",
resource_custom_field={
"SERIES": "A"
},
account_name="sysadmin",
account_password="$rgvhTnCSD7h%",
enable_private_key=True,
所有者名称="Anderson",
备注="审计用途",
账户自定义字段={
"本地": True
}
)
资源ID: int = 资源实体.create(创建资源模型)
print(f"创建的资源的资源ID为 {资源ID}")
|
在 PAM360 存储库中使用提供的属性创建一个新资源。 |
删除
resource_deletion_status: bool = resource_entity.delete(resource="CHTOW-T11-1108")
print(f"资源删除状态为 {resource_deletion_status}")
|
根据提供的资源 ID 或资源名称,从 PAM360 存储库中删除资源。 |
编辑 edit_resource_model = ResourceModel( resource_name="CHTOW-T11-1105", dns_name="gofrugal.com", resource_custom_field={ "SERIES": "B" }, ) print(resource_entity.edit(resource="CHTOW-T11-1109", resource_model=edit_resource_model)) |
根据提供的属性编辑 PAM360 存储库中的资源。 |
get_all_resource_types
resource_types_list: list[ResourceTypeDetails] = resource_entity.get_all_resource_types(
resource_type_filter_list=["Win"])
for resource_type in resource_types_list:
print(resource_type)
|
使用资源过滤器获取所有资源类型。 |
get_associated_resource_groups
associated_resource_group_list: list[dict] = resource_entity.get_associated_resource_groups(resource="CHTOW-T11-1109")
for details in associated_resource_group_list:
print(details)
|
根据资源名称获取与该资源关联的资源组列表。 |
get_resources_of_user
resource_details_list: list[ResourceDetails] = resource_entity.get_resources_of_user()
for details in resource_details_list:
print(details)
|
获取由用户共享或拥有的资源列表。 |
shareToUser resource_share_to_user_status: bool = (resource_entity.share_to_user(resource="CHTOW-65H3", user="john", access_type=ResourceConstant.AccessPermission.MODIFY)) print(f"资源共享给用户的状态是 {resource_share_to_user_status}") |
使用资源名称和用户名作为输入,将资源共享给用户。 |
sharetoUsergroups resource_share_to_user_group_status: bool = (resource_entity.share_to_user_group(resource="CHTOW-65H3", user_group="System Administration", access_type=ResourceConstant.AccessPermission.MODIFY)) print(f"资源共享至用户组的状态为 {resource_share_to_user_group_status}") |
使用资源名称和用户组名称作为输入,将资源共享给用户组。 |
move_resource_to_trash
resource_trash_status: bool = resource_entity.trash(resource=301)
print(f"资源已移至回收站的状态为 {resource_trash_status}")
|
将用户拥有的资源移至垃圾桶。 |
fetch_all_trashed_resources
trash_details: list[TrashDetails] = trash_entity.get_trashed_resource_details()
print(f"已移至回收站的资源详情:{trash_details}")
|
从 PAM360 中检索用户已移至垃圾桶的自有资源。 |
restore_resources_from_trash
status: bool = trash_entity.restore_trashed_resources([301, 302])
print(f"资源恢复状态:{status}")
|
将用户拥有的资源从 PAM360 的回收站中恢复。 |
configure_remote_password_reset_mssql configure_remote_password_reset_model = ConfigureRemotePasswordResetModel(mssql_authentication=ResourceConstant.ConfigureRemotePasswordReset.MSSQLAuthenticationType.WINDOWS, mssql_port="1433", win_auth_resource_name="resource_1", win_auth_account_name="account_1", mssql_account="admin", connection_mode=ResourceConstant.ConfigureRemotePasswordReset.ConnectionMode.SSL, resource=[1201, 304], resource_type=ResourceConstant.ConfigureRemotePasswordReset.ResourceType.MSSQL, mssql_instance_name="sample" ) configure_remote_password_reset_detail: list[RemotePasswordResetDetails] = (resource_entity.configure_remote_password_reset(configure_remote_password_reset_model) ) print(f"已配置的远程密码重置详细信息:{configure_remote_password_reset_detail}") |
用于配置 PAM360 中可用 MS SQL 资源的远程密码重置。 |
2. 访问控制操作
类- AccessControl
构造函数- AccessControl(service)
描述- 创建一个包含访问控制相关功能的访问控制实体类实例。
方法 |
描述 |
approve_password_requests account_access_approval_status: bool = access_control_entity.approve_password_requests(account_name="sysadmin", resource_name="CHTOW-T11-1109", requester="Anderson") print(f"账户访问批准状态为 {account_access_approval_status}") |
批准用户使用资源名称和请求的用户名提出的密码访问请求。 |
check_in_admin account_checkin_by_admin_status: bool = access_control_entity.check_in_admin(account_name="aut-2k19", resource_name="CHTOW-T11-1109", requester="guest") print(f"管理员状态下的账户签入状态为 {account_checkin_by_admin_status}") |
以管理员身份,使用资源名称、账户名称和请求者名称,为某个账户签入所请求的密码。 |
check_in_user account_checkin_by_user_status: bool = access_control_entity.check_in_user(account_name="sysadmin", resource_name="CHTOW-T11-1109") print(f"用户登录状态为 {account_checkin_by_user_status}") |
以用户身份,使用资源名称和账户名称,签入为该账户请求的密码。 |
check_out_user account_checkout_status: bool = access_control_entity.check_out_user(account_name="sysadmin", resource_name="CHTOW-T11-1109") print(f"账户签出状态为 {account_checkout_status}") |
在批准后,使用资源名称和理由为账户签出所请求的密码。 |
get_password_requests
password_requests_list: list[PasswordRequestDetails] = access_control_entity.get_password_requests()
for requests in password_requests_list:
print(requests)
|
获取待审批的密码访问请求列表。 |
reject_password_requests account_access_rejection_status: bool = access_control_entity.reject_password_requests(account_name="sysadmin", resource_name="CHTOW-T11-1109", requester="guest") print(f"账户访问拒绝状态为 {account_access_rejection_status}") |
根据资源名称和请求的用户名,拒绝用户提出的密码访问请求。 |
request_password_approval password_request_approval_status: str = access_control_entity.request_password_approval(account_name="sysadmin", resource_name="CHTOW-T11-1109", reason="访问软件") print(f"密码请求批准状态为 {password_request_approval_status}") |
使用账户名称和请求理由,申请对该账户的密码访问权限。 |
3. 账户操作
类- Account
构造函数- Account(service)
描述- 创建一个包含账户相关操作的 Account 实体类实例。
方法 |
描述 |
create account_creation_status_list: list[dict] = account_entity.create(resource="CHTOW-T11-1109", account_model_list=[AccountModel(account_name="aud-2024", password="JhfEr54#*hb", account_password_policy="Strong", notes="用于审计的账户",record_rdp_sessions=True)]) for status in account_creation_status_list: print(status) |
使用提供的账户属性和资源名称,在资源中创建一个新账户。 |
delete account_deletion_status: bool = account_entity.delete(resource_name="CHTOW-T11-1109", account_name="guest") print(f"账户删除状态为 {account_deletion_status}") |
根据提供的资源名称和账户名称,删除资源中的该账户。 |
编辑 account_editing_status: bool = account_entity.edit(resource_name="CHTOW-T12-1106", account_name="guest", account_model=AccountModel(account_name="aut-2k23", notes="该账户在虚拟机中维护")) print(f"账户编辑状态为 {account_editing_status}") |
根据提供的账户属性和资源名称,编辑资源中的某个账户。 |
get_accounts_of_resource
account_details_list: list[AccountsOfResourceDetails] = account_entity.get_accounts_of_resource(resource="CHTOW-T12-1106")
for account in account_details_list:
print(account)
|
根据提供的资源 ID 或资源名称,获取该资源下的账户列表。 |
get_details account_details: AccountDetails = account_entity.get_details(resource_name="CHTOW-T12-1106", account_name="sysadmin") print(account_details) |
使用资源名称和账户名称,获取资源中某个账户的详细信息。 |
get_resource_and_accounts_id 资源与账户ID详情: ResourceAndAccountIdDetails = account_entity.get_resource_and_account_id(resource_name="CHTOW-T12-1106", account_name="guest") print(resource_and_account_id_details) |
根据资源名称和账户名称,获取该账户的 ID 及其所属资源的 ID。 |
shareToUser 账户共享给用户状态: bool = account_entity.share_to_user(resource_name="CHTOW-T12-1106", account_name="aut-2k23", user="anderson", access_type=AccountConstant.AccessPermission.VIEW) print(f"账户共享给用户的状态是 {account_share_to_user_status}") |
使用资源名称、账户名称和用户名作为输入,将账户共享给用户。 |
shareToUserGroup account_share_to_user_group_status: bool = ( account_entity.share_to_user_group(resource_name="CHTOW-T12-1106", account_name="aut-2k23", user_group="System Administration", access_type=AccountConstant.AccessPermission.MODIFY)) print(f"账户共享至用户组状态为 {account_share_to_user_group_status}") |
使用资源名称、账户名称和用户组名称作为输入,将资源共享给用户组。 |
move_account_to_trash
status: bool = account_entity.trash(301, 302)
print(f"账户移入回收站状态: {bool}")
|
将用户拥有的账户移至 PAM360 的回收站。 |
fetch_all_trashed_accounts
trash_details: list[TrashDetails] = trash_entity.get_trashed_account_details()
print(f"已移至回收站的账户详情:{trash_details}")
|
用于检索用户在 PAM360 中已移至垃圾桶的所属账户。 |
从回收站恢复账户
status: bool = trash_entity.restore_trashed_accounts(
resource=301,
trash=[301, 302]
)
print(f"账户恢复状态: {status}")
|
将用户拥有的账户从 PAM360 的回收站中恢复。 |
4. 密码操作
类- 密码
构造函数- Password(service)
描述- 创建一个包含密码相关操作的 Password 实体类实例。
方法 |
描述 |
change_password_account resource_name = "CHTOW-T12-1106" account_name = "aut-2k23" new_password = "Drg56&*hjk$" 密码重置类型 = PasswordConstant.ResetType.LOCAL 密码更改状态: bool = password_entity.change_password_account(resource=resource_name, account=account_name, new_password=new_password, reset_type=password_reset_type) print(f"密码更改状态为 {password_change_status}") |
使用资源名称和账户名称更改账户密码 |
generate_password
policy = "Strong>"
password = password_entity.generate_password(policy=policy)
print(f"根据策略 {policy} 生成的密码是 {password}")
|
根据提供的策略生成新密码。 |
get_password_account resource_name = "CHTOW-T12-1106" account_name = "aut-2k23" password = password_entity.get_password_account(resource=resource_name, account=account_name) print(f"资源 {resource_name} 下的账户 {account_name} 的密码是 {password}") |
使用提供的资源名称和账户名称获取账户密码。 |
get_password_policies print(password_entity.get_password_policies()) |
获取组织中所有可用的密码策略。 |
validate_password policy_name = "Strong" password = "fyuiKEFD34#%" password_validation_status: bool = password_entity.validate_password(policy=policy_name, password=password) print(f"密码 {password} 根据策略 {policy_name} 的验证状态为 {password_validation_status}") |
用于验证密码是否符合密码策略。 |
reset_passwords_accessed_by_user password_reset_status: bool = user_entity.reset_owned_and_shared_passwords(user=301, emails_to_notify=["admin@example.com", "security@example.com"] ) print(f"密码重置状态: {password_reset_status}") |
重置用户在 PAM360 中拥有的所有密码以及与该用户共享的密码。 |
5. 用户操作
类- User
构造函数- User(PAMService service, APIRequestHandler rest)
描述- 创建一个包含用户相关操作的 User 实体类实例。
方法 |
描述 |
add_to_user_group 用户加入用户组状态: bool = user_entity.add_to_user_group(user_name="anderson", user_group_name="SDP Group") print(f"用户加入用户组状态为 {user_to_user_group_addition_status}") |
使用用户名和用户组名称作为输入,将用户添加到用户组中。 |
create_user
create_user_model = UserModel(
first_name="Samuel",
last_name="Anderson",
user_name="sam-anderson",
password="WrE#RTgHBj%6",
password_policy="Strong",
role="Administrator",
email="sam.anderson@zykler.com",
department="系统管理",
location="诺伊达",
web_access=True,
language_code="english",
mobile_access=True,
addon_access=True,
restapi_access=True,
auth_token_validity=datetime.today() + timedelta(days=180),
hostcheck=True,
主机名="sam-7276"
)
用户创建详情: UserDetails = user_entity.create_user(user_model=create_user_model)
print(f"用户创建状态消息: {created_user_details.message}")
print(f"用户 API 授权令牌: {created_user_details.auth_token}")
|
根据提供的用户属性创建用于访问 PAM360 的新用户账户。 |
delete_user
删除状态: bool = user_entity.delete_user(user="sam-anderson")
print(f"用户删除状态为 {deletion_status}")
|
使用用户名删除用户账户。 |
delete_user_groups user_group_deletion_status_list: list[dict] = user_entity.delete_user_groups(user_group_list=["系统管理", "实习生与培训生"]) for status in user_group_deletion_status_list: print(status) |
根据用户组名称或用户组 ID 删除用户组。 |
edit_user edit_user_model = UserModel(auth_token_validity=datetime.today() + timedelta(days=90), ) edited_user_details: UserDetails = user_entity.edit_user(user="sam-anderson", user_model=edit_user_model) print(f"编辑后的用户状态消息:{edited_user_details.message}") |
根据提供的用户属性作为输入,编辑 PAM360 用户账户。 |
get_user_group_id
user_group_id: int = user_entity.get_user_group_id(user_group_name="SDP Group")
print(f"用户组 ID 为 {user_group_id}")
|
根据用户组名称获取用户组的 ID。 |
get_user_id
user_id: int = user_entity.get_user_id(user_name="sam-anderson")
print(f"该用户的用户 ID 是 {user_id}")
|
根据指定组织中的用户名获取用户的用户 ID。 |
lock
user_lock_statu: bool = user_entity.lock(user_name="sam-anderson")
print(f"用户锁定状态为 {user_lock_statu}")
|
使用用户名锁定用户账户。 |
auth_token
auth_token: str = user_entity.regenerate_auth_token(expiry_date=datetime.today() + timedelta(days=28))
print(f"重新生成的用户 RestAPI 认证令牌是 {auth_token}")
|
重新生成当前 SDK 用户的身份验证令牌。 |
remove_from_user_group user_removal_from_user_group_status_list: list[dict] = user_entity.remove_from_user_group(user_list=["sam-anderson",1], user_group="SDP Group") for status in user_removal_from_user_group_status_list: print(status) |
使用用户名和用户 ID 配合用户组名称或用户组 ID,将用户从用户组中移除。 |
reset_multi_factor_authentication
mfa_reset_status: bool = user_entity.reset_multi_factor_authentication(user_name="sam-anderson")
print(f"MFA 重置状态为 {mfa_reset_status}")
|
使用用户名重置用户的多因素身份验证。 |
unlock
user_unlock_status: bool = user_entity.unlock(user_name="sam-anderson")
print(f"用户解锁状态为 {user_unlock_status}")
|
使用用户名解锁用户账户。 |
6. 资源组操作
类- ResourceGroup
构造函数- ResourceGroup(service:PAMService)
描述- 创建一个包含资源组相关操作的 ResourceGroup 类实例。
方法 |
描述 |
associate_resources 资源组关联状态列表: list[dict] = 资源组实体.关联资源( 资源列表=["CHTOW-T12-1106", "CHTOW-T09-1109"], 资源组="系统管理员资源", 资源组所有者="sam-anderson") for status in resource_group_association_status_list: print(status) |
使用资源 ID 和资源组 ID 或资源名称和资源组名称,将资源关联到静态资源组。 |
create create_resource_group = ResourceGroupModel( resource_group_name="VM Windows Resources", parent_group="VM Instance Resources", group_type=ResourceGroupConstant.GroupType.DYNAMIC, description="在虚拟机中维护的资源", password_policy="Strong", dynamic_group_criteria_list=[DynamicGroupCriteria(condition=ResourceGroupConstant.Condition.RESOURCE_NAME, value="VM"), DynamicGroupCriteria(condition=ResourceGroupConstant.Condition.RESOURCE_TYPE, value="Windows")], match_all_criteria=True ) resource_group_creation_status: bool = resource_group_entity.create(resource_group_model=create_resource_group, user="sam-anderson") print(f"资源组创建状态为 {resource_group_creation_status}") |
根据提供的属性创建动态资源组。 |
delete resource_group_deletion_status: bool = resource_group_entity.delete(resource_group="Intern Resources", resource_group_owner="sam-anderson") print(f"资源组删除状态为 {resource_group_deletion_status}") |
使用资源名称删除资源组。 |
disassociate_resources resource_group_dissociation_status_list: list[dict] = resource_group_entity.dissociate_resources( resources_list=["CHTOW-T12-1106", "CHTOW-T08-1109"], resource_group="Intern Resources", resource_group_owner="sam-anderson") for status in resource_group_dissociation_status_list: print(status) |
根据资源 ID 和资源组 ID,或资源名称和资源组名称,将资源从静态资源组中解除关联。 |
get_id resource_group_id: int = resource_group_entity.get_id(resource_group_name="VM Windows Resources", user="sam-anderson") print(f"资源组 ID 为 {resource_group_id}") |
根据资源组名称获取资源组 ID。 |
get_resource_groups_of_user resource_group_details_list: list[ResourceGroupDetails] = resource_group_entity.get_resource_groups_of_user() for details in resource_group_details_list: print(details) |
用于获取您的用户账户拥有或共享的所有资源组。 |
7. 审计操作
类- Audit
构造函数- Audit(service:PAMService)
描述- 创建一个包含审计相关操作的 Audit 实体类实例。
方法 |
描述 |
get_details
audit_model = AuditModel(audit_type=AuditConstant.Type.RESOURCE, date=datetime.datetime.today())
print(audit_entity.get_details(audit_model=audit_model))
|
从 PAM360 存储库中获取资源和用户审计详细信息。 |
8. 组织操作
类- Organizations
构造函数- Organizations(PAMService service, APIRequestHandler rest)
描述- 创建一个包含资源组相关操作的组织类实例。
方法 |
描述 |
manage_org_access
manage_org_model = ManageOrgModel(
users=[301, 302],
user_groups=[601, 602],
manage_permission=OrganizationConstants.ManageOrganization.GRANT,
org_ids=[2, 302],
approval_admin=901
)
manage_org_detail: list[ManageOrgDetails] = organization_entity.manage_organization(manage_org_model)
print(f"受管组织详情: {manage_org_detail}")
|
请求授予或撤销用户管理客户组织的审批工作流权限。 |
9. 报告操作
类- 报告
构造函数- Reports(PAMService service, APIRequestHandler rest)
描述- 创建一个包含报告相关操作的报告类实例。
方法 |
描述 |
fetch_all_users_report
create_search_model = SearchModel(
limit=10,
start_index=0,
search_value="admin",
search_column=SearchConstant.UserSearchColumn.USER_NAME,
search_operator=SearchConstant.SearchOperator.STARTS_WITH)
report_details: list[ReportDetails] = report_entity.get_user_report_details(create_search_model)
print(f"报告详情:{report_details}")
|
用于获取 PAM360 中所有用户的用户名和用户 ID。 |
fetch_all_user_groups_report
create_search_model = SearchModel(
limit=10,
start_index=0,
search_value="admin",
search_column=SearchConstant.UserSearchColumn.USER_GROUP_NAME,
search_operator=SearchConstant.SearchOperator.STARTS_WITH
)
report_details: list[ReportDetails] = report_entity.get_usergroup_report_details(create_search_model)
print(f"报告详情:{report_details}")
|
用于获取 PAM360 中所有用户组的名称和用户组 ID。 |
fetch_all_resources_report
create_search_model = SearchModel(
limit=10,
start_index=0,
search_value="test",
search_column=SearchConstant.UserSearchColumn.RESOURCE_NAME,
search_operator=SearchConstant.SearchOperator.STARTS_WITH
)
report_details: list[ReportDetails] = report_entity.get_resource_report_details()
print(f"资源报告详情:{report_details}")
|
用于获取 PAM360 中所有资源的资源名称和资源 ID。 |
fetch_all_resource_groups_report
create_search_model = SearchModel(
limit=10,
start_index=0,
search_value="test",
search_column=SearchConstant.UserSearchColumn.RESOURCE_GROUP_NAME,
search_operator=SearchConstant.SearchOperator.STARTS_WITH
)
report_details: list[ReportDetails] = report_entity.get_resourcegroup_report_details()
print(f"资源报告详情:{report_details}")
|
用于获取 PAM360 中所有资源组的名称和 ID。 |
Python SDK 异常
每当 API 返回错误响应时,该响应将根据异常类型成为某个异常类的实例。
- SDKConnectionError- 当 PAM360 SDK 无法连接到 PAM360 服务器时,会发生此异常。
- SDKRegistrationError- 在 PAM360 应用程序中使用 PAM360 SDK 注册 Python 应用程序/服务时出现问题。
- SDKOperationFailedError- 当在传递必要的输入后,预期的 API 操作失败时,会发生此异常。
- SDKInvalidArgumentError- 当解析的 API 输入数据类型无效时,会引发此异常。
所有其他异常(如 SDK 异常和其他意外行为)均抛出为SDKError类。