测试SDK
ibm-cloud-security-advisor-test的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云安全顾问^ u的令牌。在
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)
使用ehiam生成密钥: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
Example http method create channel POST /v1/{account_id}/notifications/channels list channels GET /v1/{account_id}/notifications/channels get channel GET /v1/{account_id}/notifications/channels/{channel_id} delete bulk channels DELETE /v1/{account_id}/notifications/channels delete channel DELETE /v1/{account_id}/notifications/channels/{channel_id} update channel PUT /v1/{account_id}/notifications/channels/{channel_id} test channel GET /v1/{account_id}/notifications/channels/{channel_id}/test get public key GET /v1/{account_id}/notifications/public_key
文件
参见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
凭据文件包括文件名。在
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中找到。在
标签:
- 项目
推荐PyPI第三方库
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
Example | http method |
---|---|
create channel | POST /v1/{account_id}/notifications/channels |
list channels | GET /v1/{account_id}/notifications/channels |
get channel | GET /v1/{account_id}/notifications/channels/{channel_id} |
delete bulk channels | DELETE /v1/{account_id}/notifications/channels |
delete channel | DELETE /v1/{account_id}/notifications/channels/{channel_id} |
update channel | PUT /v1/{account_id}/notifications/channels/{channel_id} |
test channel | GET /v1/{account_id}/notifications/channels/{channel_id}/test |
get public key | GET /v1/{account_id}/notifications/public_key |
文件
参见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
凭据文件包括文件名。在
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中找到。在
- 项目
标签: