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 返回错误响应时,该响应将根据异常类型成为某个异常类的实例。

  1. SDKConnectionError- 当 PAM360 SDK 无法连接到 PAM360 服务器时,会发生此异常。
  2. SDKRegistrationError- 在 PAM360 应用程序中使用 PAM360 SDK 注册 Python 应用程序/服务时出现问题。
  3. SDKOperationFailedError- 当在传递必要的输入后,预期的 API 操作失败时,会发生此异常。
  4. SDKInvalidArgumentError- 当解析的 API 输入数据类型无效时,会引发此异常。

所有其他异常(如 SDK 异常和其他意外行为)均抛出为SDKError类。







Top