2017-02-09 3 views
0

SoftLayer의 Python 라이브러리를 사용하여 자동 취약점 검색을 실행하려고합니다. 불행하게도 다음과 같은 예외가 발생합니다.SoftLayer 취약점 검사 Python

SoftLayerAPIError: SoftLayerAPIError(SoftLayer_Exception): Unable to create a new object of type SoftLayer_Network_Security_Scanner_Request_Nessus. Make sure the authentication method is correct.

아래에서 볼 수있는 코드를 볼 수 있습니다.

import SoftLayer 

USERNAME="" # I put valid value in here 
APIKEY=""  # I put valid value in here 
TARGET=""  # I put valid value in here 

client = SoftLayer.create_client_from_env(
    username=USERNAME, 
    api_key=APIKEY 
) 
""" ALTERNATE I TRIED ALSO FROM DOCUMENTATION: 
client = SoftLayer.Client(
    username=USERNAME, 
    api_key=APIKEY 
) 
""" 
account = client['Account'].getObject() 
scanner = client.call(
     "SoftLayer_Network_Security_Scanner_Request", 
     "createObject", { 
      "accountId": account.get('id'), 
      "ipAddress": TARGET 
}) 

HTTP 요청

이 같은 파이썬 라이브러리보기에 의해 전송되는 :

POST /xmlrpc/v3.1/SoftLayer_Network_Security_Scanner_Request HTTP/1.1 
Host: api.softlayer.com 
Connection: keep-alive 
Accept: */* 
Content-Type: application/xml 
Content-Length: 798 

<?xml version='1.0'?> 
<methodCall> 
<methodName>createObject</methodName> 
<params> 
<param> 
<value><struct> 
<member> 
<name>headers</name> 
<value><struct> 
<member> 
<name>authenticate</name> 
<value><struct> 
<member> 
<name>username</name> 
<value><string>***USERNAME_HERE***</string></value> 
</member> 
<member> 
<name>apiKey</name> 
<value><string>***API_KEY_HERE***</string></value> 
</member> 
</struct></value> 
</member> 
</struct></value> 
</member> 
</struct></value> 
</param> 
<param> 
<value><struct> 
<member> 
<name>ipAddress</name> 
<value><string>***TARGET_IP_HERE***</string></value> 
</member> 
<member> 
<name>accountId</name> 
<value><int>***ACCOUNT_ID_HERE***</int></value> 
</member> 
</struct></value> 
</param> 
</params> 
</methodCall> 

받은 HTTP 응답은 다음과 같습니다

HTTP/1.1 200 OK 
Date: Thu, 09 Feb 2017 12:47:17 GMT 
Server: Apache 
X-Frame-Options: SAMEORIGIN 
Vary: Accept-Encoding 
Connection: close 
Content-Type: text/xml 
Content-Length: 495 

<?xml version="1.0" encoding="iso-8859-1"?> 
<methodResponse> 
<fault> 
<value> 
    <struct> 
    <member> 
    <name>faultCode</name> 
    <value> 
    <string>SoftLayer_Exception</string> 
    </value> 
    </member> 
    <member> 
    <name>faultString</name> 
    <value> 
    <string>Unable to create a new object of type SoftLayer_Network_Security_Scanner_Request_Nessus. Make sure the authentication method is correct.</string> 
    </value> 
    </member> 
    </struct> 
</value> 
</fault> 
</methodResponse> 

누군가가 나를 도울를 보라 시겠어요 문제가 될 수있는 곳을 파악할 수없는 코드. 이 작업에 필요한 최소한의 사용 권한 목록도 제공하십시오.

: 나는 가능한 모든 권한을 시도 디버깅 그러나 이것은 API에 문제처럼 보인다

답변

0

, 그것은 당신이 hardwareId를 지정하는 데 필요한 IP 요지를 지정하는 경우에만 작동하지 않는 행운 (위해 사용할 수 가상 게스트 서버의 베어 메탈 서버) 또는 guestId()

때문에이 코드를 시도 :

import SoftLayer 

USERNAME="set me" # I put valid value in here 
APIKEY="set me"  # I put valid value in here 
TARGET="set me"  # I put valid value in here 

client = SoftLayer.create_client_from_env(
    username=USERNAME, 
    api_key=APIKEY 
) 

account = client['Account'].getObject() 
server = client['Virtual_Guest'].findByIpAddress(TARGET) 
if (server) : 
    request = { 
      "accountId": account["id"], 
      "guestId": server["id"] 
    } 
else: 
    server = client['Hardware_Server'].findByIpAddress(TARGET) 
    if (server): 
     request = { 
      "accountId": account["id"], 
      "hardwareId": server["id"] 
    } 
    else: 
     print ("server does not exist.") 
     exit 
scanner = client['Network_Security_Scanner_Request'].createObject(request) 
+0

코드를 사용하면 다음 예외가 발생합니다. SoftLayer.exceptions.SoftLayerAPIError : SoftLayerAPIError (SoftLayer_Exception_Public) : 보안 검색 요청을 시작하려면 IP 주소가 필요합니다. 그래서 요청에 IP 주소를 추가했지만 이전과 완전히 똑같은 예외가 발생합니다. – Keymandll

+0

내가 확인하자 ... –

+0

가상 서버에 대한 요청과 함께 철자가 잘못되었다 "guestId"대신 "guiestId"라고 적어졌습니다. 이제 다시 시도하십시오. –

0

내가 넬슨 위의 의견을 테스트하고 guestId 가상 설정과 협력 시스템. 따라서 지금은 accountId, guestId 및 ipAddress를 제공해야합니다. 하드웨어도 테스트 해보고 같은 성공을 기대합니다. 그렇지 않으면 다시 게시 할 것입니다.