Web Application Firewall介面調用是向WAF API的服務端地址發送HTTP GET請求,並按照介面說明在請求中加入相應請求參數,調用後系統會返回處理結果。請求及返回結果都使用UTF-8字元集編碼。
請求結構
Web Application Firewall的API是RPC風格,您可以通過發送HTTP GET請求調用WAF API。
其請求結構如下:
https://Endpoint/?Action=xx&Parameters其中:
Endpoint:根據WAF執行個體所屬的地區選擇適合的API服務接入地址。
中國內地:wafopenapi.cn-hangzhou.aliyuncs.com
非中國內地:wafopenapi.ap-southeast-1.aliyuncs.com
Action:要執行的操作,如使用DescribeDomainNames查詢已添加的網域名稱名稱列表。
Version:要使用的API版本,WAF的API版本是2019-09-10。
Parameters:請求參數,每個參數之間用“&”分隔。
請求參數由公用請求參數和API自訂參數組成。公用參數中包含API版本號碼、身分識別驗證等資訊,詳情請參見公用參數。
下面是一個調用DescribeDomainNames介面查詢指定WAF執行個體中已添加的網域名稱名稱列表的樣本:
為了便於使用者查看,本文檔中的樣本都做了格式化處理。
https://wafopenapi.cn-hangzhou.aliyuncs.com/?Action=DescribeDomainNames
&Region=cn
&InstanceId=waf_elasticity-cn-0xldbqtm005
&Format=xml
&Version=2019-09-10
&Signature=xxxx%xxxx%3D
&SignatureMethod=HMAC-SHA1
&SignatureNonce=15215528852396
&SignatureVersion=1.0
&AccessKeyId=**********
&TimeStamp=2012-06-01T12:00:00Z
…API授權
為了確保您的帳號安全,建議您使用子帳號的身份憑證調用API。如果您使用RAM使用者調用WAF API,您需要為該RAM使用者建立、附加相應的授權策略。
API簽名
WAF服務會對每個API請求進行身分識別驗證,無論使用HTTP還是HTTPS協議提交請求,都需要在請求中包含簽名(Signature)資訊。
WAF通過使用AccessKey ID和AccessKey Secret進行對稱式加密的方法來驗證請求的寄件者身份。AccessKey是為阿里雲帳號和RAM使用者發布的一種身份憑證(類似於使用者的登入密碼),其中AccessKey ID用於標識訪問者的身份,AccessKey Secret是用於加密簽名字串和伺服器端驗證簽名字串的密鑰,必須嚴格保密。
RPC API需按如下格式在請求中增加簽名(Signature):
https://endpoint/?SignatureVersion=1.0&SignatureMethod=HMAC-SHA1&Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf以DescribeDomainNames為例,則簽名前的請求URL如下:
https://wafopenapi.cn-hangzhou.aliyuncs.com/?Action=DescribeDomainNames
&Region=cn
&InstanceId=waf_elasticity-cn-0xldbqtm005
&TimeStamp=2016-02-23T12:46:24Z
&Format=XML
&AccessKeyId=testid
&SignatureMethod=HMAC-SHA1
&SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf
&Version=2019-09-10
&SignatureVersion=1.0完成以下步驟計算簽名:
使用請求參數建立待簽名字串:
GET&%2F&AccessKeyId%****************DomainNames&Region%3Dcn&InstanceId%3Dwaf_elasticity-cn-0xldbqtm005&Format%3DXML&SignatureMethod%3DHMAC-SHA1&SignatureNonce%3D3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf&SignatureVersion%3D1.0&TimeStamp%3D2016-02-23T12%253A46%253A24Z&Version%3D2019-09-10計算待簽名的HMAC的值。
在AccessKey Secret後添加一個“&”作為計算HMAC值的key。本樣本中的key為
testsecret&。CT9X0VtwR86fNWSnsc6v8YGOjuE=將簽名加到請求參數中:
https://wafopenapi.cn-hangzhou.aliyuncs.com/?Action=DescribeDomainNames &Region=cn &InstanceId=waf_elasticity-cn-0xldbqtm005 &TimeStamp=2016-02-23T12:46:24Z &Format=XML &AccessKeyId=*********** &SignatureMethod=HMAC-SHA1 &SignatureNonce=3ee8c1b8-83d3-44af-a94f-4e0ad82fd6cf &Version=2019-09-10 &SignatureVersion=1.0 &Signature=CT9X0VtwR86fNWSnsc6v8YGOjuE%3D