安全顾问API客户端SDK
ibm-cloud-security-advisor的Python项目详细描述
ibm云安全顾问
此存储库包含已发布的用于ibmcloudsecurityadvisor发现和通知api的python客户机SDK。查看下面的详细信息。在
- 调查结果API:https://cloud.ibm.com/apidocs/security-advisor/findings
- 通知API:https://cloud.ibm.com/apidocs/security-advisor/notifications
通知
对Python版本2.x和版本<;=3.4的支持已被弃用,并将在预计2019年12月底的下一个主要版本中正式放弃。参考https://github.com/IBM/python-sdk-core
概述
ibm云安全顾问允许开发人员以编程方式与ibmcloudsecurityadvisor发现和通知api交互
先决条件
安装
要安装,请使用pip
或easy_install
:
pip install --upgrade "ibm_cloud_security_advisor>=1.0.0"
或者
^{pr2}$身份验证
ibm云安全顾问使用基于令牌的Identity and Access Management (IAM) authentication。在
IAM身份验证使用服务API密钥获取随调用一起传递的访问令牌。 访问令牌在有限的时间内有效,必须重新生成。在
要向SDK提供凭据,请提供IAM服务API密钥或访问令牌:
- 使用API密钥让SDK管理访问令牌的生命周期。SDK请求访问令牌,确保访问令牌有效,并在必要时刷新它。在
- 如果要自己管理生命周期,请使用访问令牌。有关详细信息,请参见
Generating bearer tokens using the IAM API key
和Supplying the access token
部分
提供IAM API密钥:
fromibm_cloud_security_advisorimportFindingsApiV1fromibm_cloud_sdk_core.authenticatorsimportIAMAuthenticatorauthenticator=IAMAuthenticator('apikey')findings_service=FindingsApiV1(authenticator=authenticator)
使用IAM API密钥生成承载令牌:
fromibm_cloud_sdk_core.authenticatorsimportIAMAuthenticator# In your API endpoint use this to generate new bearer tokensiam_token_manager=IAMAuthenticator('<apikey>')token=iam_token_manager.get_token()
提供访问令牌:
#FINDINGSfromibm_cloud_security_advisorimportFindingsApiV1fromibm_cloud_sdk_core.authenticatorsimportBearerTokenAuthenticator# in the constructor, assuming control of managing the tokenauthenticator=BearerTokenAuthenticator('your token')findings_service=FindingsApiV1(authenticator=authenticator)
#NOTIFICATIONSfromibm_cloud_security_advisorimportNotificationsApiV1fromibm_cloud_sdk_core.authenticatorsimportBearerTokenAuthenticator# in the constructor, assuming control of managing the tokenauthenticator=BearerTokenAuthenticator('your token')notifications_service=NotificationsApiV1(authenticator=authenticator)
使用SDK
ibmcloud_security_advisor Python SDK只支持服务方法的同步(阻塞)执行。所有服务方法的返回值都是DetailedResponse对象。使用此SDK执行基本的ibm_cloud_security_advisor创建操作,如下所示,并使用上面的安装和初始化说明:
#Findingsfromibm_cloud_security_advisorimportFindingsApiV1fromibm_cloud_sdk_core.authenticatorsimportIAMAuthenticatorauthenticator=IAMAuthenticator('your apikey')ibm_cloud_security_advisor_findings_service=FindingsApiV1(authenticator=authenticator)response=ibm_cloud_security_advisor_findings_service.<Methodhere<>>print(response)
#Notificationsfromibm_cloud_security_advisorimportNotificationsApiV1fromibm_cloud_sdk_core.authenticatorsimportIAMAuthenticatorauthenticator=IAMAuthenticator('your apikey')ibm_cloud_security_advisor_notifications_service=NotificationsApiV1(authenticator=authenticator)response=ibm_cloud_security_advisor_notifications_service.<Methodhere<>>print(response)
这将给出一个DetailedResponse
的输出,从中可以使用get_result()
、get_headers()
和{
发送请求头
自定义头可以在任何请求中以dict
的形式传递,如下所示:
headers={'Custom-Header':'custom_value'}
例如,要将名为Custom-Header
的头发送到ibm_security_advisor_findings_api_sdk中的调用,将headers参数传递为:
fromibm_cloud_security_advisorimportFindingsApiV1fromibm_cloud_sdk_core.authenticatorsimportIAMAuthenticatorauthenticator=IAMAuthenticator('your apikey')ibm_security_advisor_findings_api_sdk_service=FindingsApiV1(authenticator=authenticator)response=ibm_security_advisor_findings_api_sdk_service.<<METHODHERE>>(headers={'Custom-Header':'custom_value'}).get_result()
错误处理
ibmcloud_security_advisor Python SDK为任何不成功的方法调用生成异常。
如果方法从对服务的API调用接收到错误响应,它将生成一个
ApiException
包含以下字段。在
NAME | DESCRIPTION |
---|---|
code | The HTTP response code that is returned. |
message | A message that describes the error. |
info | A dictionary of additional information about the error. |
ApiException
可以这样处理。在
fromibm_cloud_sdk_core.api_exceptionimportApiExceptiontry:response=ibm_cloud_security_advisor_findings_service.create_note(account_id="<<Account ID here>>",**data)exceptApiExceptionaserr:try:# err.code gives status codeexcep_resp=err.http_response.json()print(excep_resp)except:print(err)
例外情况是-
{"detail":"Document already exists: abc/providers/sdktest/notes/sdk_note_id1","instance":"abc/providers/sdktest/notes/sdk_note_id1","status":409,"title":"Conflict","type":"about:blank"}
错误日志级别
默认情况下,错误日志级别被禁用,因此用户不会看到logger.error
和logger.exception
记录的任何错误/异常,而是会看到其他错误/异常。
要启用它,用户可以传递enable_error_log=True
。在
ibm_cloud_security_advisor_findings_service=FindingsApiV1(authenticator=authenticator,enable_error_log=True)
示例代码
调查结果API
^{tb2}$通知API
^{3}$文件
参见Findings API doc。
见Notifications API doc。在
集成测试
要运行pytest,请创建virtual env,然后运行。否则,您可能会看到以下错误
问题-https://github.com/pytest-dev/pytest/issues/2287
Traceback:
test/integration/test_note.py:26: in <module>
from ibm_cloud_security_advisor import FindingsApiV1
ModuleNotFoundError: No module named 'ibm_cloud_security_advisor'
- 安装开发模块。
python3 -m venv env #(for python3)source env/bin/activate cd ibm-coud-security-advisor-sdk-python pip install -r requirements-dev.txt
在 - 先决条件变量,要么直接导出所有变量,要么在文件中提供-
确保
API_KEY
有足够的权限执行结果api操作。- 导出环境变量
exportAPI_KEY=<YOUR_API_KEY> exportACCOUNT_ID=<YOUR_ACCOUNT_ID> exportFINDING_API_ENDPOINT=<FINDING_API_ENDPOINT> exportNOTIFICATION_API_ENDPOINT=<NOTIFICATION_API_ENDPOINT> #optional. Use it for dev/preprod iam endpointexportIAM_ENDPOINT= <IAM_ENDPOINT>
- 在
/integration/input/cred/ibm-credentials.env
文件中提供或导出您自己的.env
凭据f包含文件名的完整路径的文件。在
exportIBM_CREDENTIALS_FILE= <file_path>
在 - 运行测试-
python -m pytest test/integration --html=report.html --json-report --json-report-summary
一旦运行完成,html报告和。报表.json将在同一个目录中生成,它将如下所示
许可证
ibm云计算安全顾问Python SDK是在apache2.0许可下发布的。许可证的全文可以在LICENSE中找到。在
- 项目
标签: