一个非官方的库,它为ibm security secret server restapi提供包装器。也兼容thycotic secret server

isss的Python项目详细描述


isss-用于ibm security secret server的python模块

isss模块应该是ibm security secret server rest api之上的抽象层。

它是restapi功能的完整实现。它只为最有用的场景提供包装,附加功能将不时出现。

另外,请注意,使用它的风险由您自己承担,因为IBM并不正式支持它

安装和先决条件

从终端发出以下命令即可:

$ pip install isss

就这些!图书馆应该照常工作。它也应该是OS independent,但它只与Python3.x兼容

您可以通过将这一行复制粘贴到shell中来验证您的安装:

$ python -c "import isss; print (isss.version)"

它应该显示您当前的isss版本。如果有一个错误抱怨缺少几个模块,则可能是系统配置问题导致在默认情况下运行旧的Python2.7而不是Python3

尝试发出相同的命令,但使用python3而不是python来强制使用python3.x

$ python3 -c "import isss; print (isss.version)"

当前已知限制

很多!要么是因为我没有时间,要么是因为一些restapi根本不可用(不像它们的soap对应的那样),您可能会发现您想要实现的东西在当前版本的模块中是不可能实现的。

缺少功能的非详尽列表:

  • 创建或搜索机密策略(restapi似乎不可用)
  • 高级搜索(分页、复杂查询)。大多数项目(用户、机密、组、文件夹)只能使用每个ID或全局搜索文本,并且只返回前100个项目
  • 签入,签出
  • 录制的会话
  • 团队
  • 工作流程

不过,此模块仍在进行中。

导入模块

在使用模块之前,您必须导入它(谁知道?)。isss模块包含一个名为isss的类,该类包含您需要的所有内容。

fromisssimportISSSisss=ISSS("https://your.server.demo.com/SecretServer","admin","yourpassword")

存根

存根基本上是一个值的映射,您可以读取它,也可以编辑它,然后将其推回到secret服务器以创建或更新资源。搜索、创建或更新后,您将获得存根(或存根列表)。

提示:通过交互式shell,可以很好地打印存根,以便清晰地查看其内容:

>>>u=isss.getUser(3)>>>u<Userid='3'username='python'displayName='Python App'/>>>>print(u)-id:3-userName:python-displayName:PythonApp-lastLogin:2019-06-13T12:30:31-created:2019-06-11T09:14:12-enabled:True-loginFailures:0-emailAddress:None-userLcid:0-domainId:-1-lastSessionActivity:None-isLockedOut:False-radiusUserName:None-twoFactor:False-radiusTwoFactor:False-isEmailVerified:False-mustVerifyEmail:False-verifyEmailSentDate:0001-01-01T00:00:00-passwordLastChanged:0001-01-01T00:00:00-dateOptionId:-1-timeOptionId:-1-isEmailCopiedFromAD:False-organizationUnitId:-1-adGuid:None-adAccountExpires:0001-01-01T00:00:00-resetSessionStarted:0001-01-01T00:00:00-isApplicationAccount:True-oathTwoFactor:False-oathVerified:False-duoTwoFactor:False-fido2TwoFactor:False-password:None>>>

提示:存根中的变量不区分大小写。

stub["username"]="romain"stub["userName"]="romain"#similar to the previous line

当然,访问存根中的未知变量将引发异常。

每个存根还将有一个create()、一个update()和一个delete()方法,以便推回到机密服务器。

现在是时候阅读下面的示例来更好地理解这个概念了。

进行一些搜索

每次搜索时,如果传递一个数字id,就会得到一个存根;如果传递一个字符串查询,就会得到一个存根列表。

搜索机密

forsinisss.getSecret("centos root account"):print(s['id'])

或者使用机密ID获取特定的机密

print(isss.getSecret(2))

搜索用户

foruinisss.getUser("admin"):print(u['id'])

…或使用用户ID获取特定用户

$ pip install isss
0

搜索组(并将用户添加到组中)

$ pip install isss
1

…或使用组ID获取特定组

$ pip install isss
2

搜索文件夹

$ pip install isss
3

…或使用文件夹ID获取特定文件夹

$ pip install isss
4

搜索模板

$ pip install isss
5

…或使用模板ID获取特定模板

$ pip install isss
6

创造事物

要创建某个东西,您需要一个这个特定东西的空存根。一旦获得存根,编辑存根,然后调用其create()方法。

创建秘密

$ pip install isss
7

注意在前面的示例中使用generatePassword()方法。

此方法仅在存根对象上可用,因为每个机密字段都可以有自己的机密策略。

这就是为什么您可能还需要将字段的名称指定为参数,以便该方法为相关字段生成有效的密码。

为了方便起见,默认字段名设置为"password"

$ pip install isss
8

创建秘密权限

若要为特定机密创建新权限,必须首先获取机密ID以检索相应的存根。

$ pip install isss
9

secretaccessrolename的可能值为:"owner"、"view"、"list"或"edit"

创建文件夹权限

若要为特定文件夹创建新权限,必须首先获取文件夹ID以检索相应的存根。

$ python -c "import isss; print (isss.version)"
0

folderAccessRoleName的可能值为:"owner"、"view"、"list"或"edit"

创建用户

要创建新用户,它非常相似,但更简单:

$ python -c "import isss; print (isss.version)"
1

创建组

你现在应该熟悉这个概念了……

$ python -c "import isss; print (isss.version)"
2

如前所示,创建组后,可以将结果存储到变量中,以便开始添加用户

$ python -c "import isss; print (isss.version)"
3

注意,add()需要数字用户id用户名。不是搜索查询!

更新内容

update的工作方式与create完全相同,只是存根已经创建,所以不用调用create()而是调用…好。。。< > > >

更新用户

$ python -c "import isss; print (isss.version)"
4

更新密钥

$ python -c "import isss; print (isss.version)"
5

更新组

组可以像任何常规存根一样更新,但它们也有3个附加方法。

将用户添加到组中的方法:

$ python -c "import isss; print (isss.version)"
6

从组中删除用户的方法:

$ python -c "import isss; print (isss.version)"
7

以及列出组中当前用户的方法:

$ python -c "import isss; print (isss.version)"
8

注意:出于性能原因,getusers()方法返回一个id和用户名列表,而不是存根列表

删除内容

虽然secret server中的许多内容从未真正删除(我们应该说disabled),但您可以通过调用相应存根对象上的delete()函数从服务器中删除对象

$ python -c "import isss; print (isss.version)"
9

实验性API

出于某些原因,脚本api似乎不可用作restapi,尽管它们可用作soap api。为了简单起见(我不想搅乱soap),当前的实现会破坏web ui,因此如果您不使用secret server的好版本(仅在10.6.000027上测试),则很可能在某个时候被破坏

要启用它们,您需要将true添加到isss构造函数:

$ python3 -c "import isss; print (isss.version)"
0

获取所有脚本元数据(powershell、ssh、sql)

检索可用脚本列表非常容易。

$ python3 -c "import isss; print (isss.version)"
1

当然,如果您知道脚本的id,您仍然可以直接获取它

$ python3 -c "import isss; print (isss.version)"
2

值得注意的是,这些脚本并不像我们以前看到的那样是存根对象。

脚本文件监视程序

好吧,在你刚刚发现的糟糕的脚本api背后有一个真正的需求。我不希望有人使用它(特别是因为这个api可能会在某个时候停止工作),但如果像我一样,您厌倦了从web ui编辑心跳或密码更改脚本,您可能会对这个依赖于它的filewatcher命令感兴趣。

在shell中,只需发出以下命令:

$ python3 -c "import isss; print (isss.version)"
3

它将在指定的目录路径上启动文件监视程序(该路径应为空-如果不是,程序将提示您删除其内容)

如果目录不存在,将创建该目录,脚本将自动下载到其中。然后,文件监视程序将检测到对其中一个文件的任何更改,并将其发送回ISSS。

小心,它不适用于vim或任何使用临时文件的编辑器。我正在使用="nofollow"title="brackets.io">brackets.io,这对我来说非常有效。

此外,您将很快发现(至少现在)您无法将当前目录""作为路径参数传递,因此您需要从要使用的目录外部启动该命令。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
SpringBoot中的java@Async正在创建新线程,但控制器在发送响应之前等待异步调用完成   java如何删除字符串字符之间的前导零   Java静态变量和局部变量   java JSP TransformerFactory。newInstance()。新变压器(xsl)返回空值?   java查找数组中相同数字之间的最大跨度   java新组合未显示在对话框中   java JPA管理的不同实体映射错误   amazon web服务通过Java代码将多个项目放入DynamoDB   字体和度量。getStringBounds(…)根据图形2D返回不同的结果   java Spring批处理MultiResourceItemReader仅用于组合文件?   春爪哇。lang.NoSuchMethodException:com。太阳代理关于struts2动作   静态IP对Javasocket编程重要吗?   java apache驼峰流重新排序工作不正常   java为什么MapView的getOverlays()未定义?