Next-Gen WAF での API の使用
- English
- 日本語
Next-Gen WAF とは、以下のいずれかの API を使用してやり取りできます。
| API | 対象ユーザー |
| Next-Gen WAF API | Next-Gen WAF コンソールへのアクセス権がある場合は、この API をご利用ください。 |
| Fastly Next-Gen WAF API | Fastly コンソール内の Next-Gen WAF にアクセスできる場合は、この API をご利用ください。 |
- Next-Gen WAF API
- Fastly Next-Gen WAF API
Next-Gen WAF API の使用
Next-Gen WAF コンソールへのアクセス権がある場合は、Next-Gen WAF API を使用して Next-Gen WAF を操作できます。
ヒント: 私たちは Terraform プロバイダーを提供しています。
API アクセストークンについて
適切な権限を持つユーザーであれば誰でも、個人用の API アクセストークンを作成して使用することで API に接続できます。メールアドレスとアクセストークンを使用して、API に対する認証を行います。
Corp Manage メニューから API Access Tokens を選択すると、API Access Tokens ページが表示されます。API Access Tokens ページから、企業の全トークンを一覧表示するテーブルを表示し、検索バーを使用してトークンの作成者や名前でテーブルをフィルタリングできます。このテーブルには、以下の列が含まれます。
Created by: トークンを作成した人の名前。
Token Name: トークンのフレンドリー名。
Logged IP: リクエストの IP アドレス。
User Agent: リクエストのユーザーエージェント。
Timestamp: トークンが使用された日付。
Status: トークンのステータス。
Expires: トークンの有効期限日。
デフォルトでは、誰でも API アクセストークンを作成して使用できます。ただし、所有者は API アクセストークンの作成および使用を特定のユーザーに制限することもできます。すべてのプランで、1人あたり最大5件のアクセストークンを作成可能です。
API アクセストークンの管理
API アクセストークンを管理する際は、以下の手順に従います。
API アクセストークンの作成
- Next-Gen WAF コンソールにログインします。
[My Profile (マイプロフィール)] メニューから、[API access tokens (API アクセストークン)] を選択します。
[Add API access token (API アクセストークンを追加)] をクリックします。
[Token name] フィールドに、アクセストークンを識別する名前を入力します。
警告 : トークン名に特殊文字 (例 :
-、@、!、%) を使用しないでください。特殊文字を使用すると、400 Bad RequestHTTP ステータスコードエラーが送信される場合があります。[Create API access token (API アクセストークンを作成)] をクリックします。
ご自身で再確認できるよう、トークンを安全な場所に記録します。
重要 : トークンが表示されるのは、この時のみです。トークンを記録して安全に保存してください。セキュリティ上の理由から、コンソールには表示されません。
[Continue] をクリックして、トークンの作成を完了します。
API アクセストークンの作成および使用権限の制限
所有者は、API アクセストークンの作成および使用を制限できます。制限の適用後、所有者は特定のユーザーに API アクセストークンを作成して使用する権限を手動で付与できます。
制限が有効化される前に作成された API アクセスのトークンは削除されません。しかし、既存のトークンを持つユーザーには API アクセストークンを使用する権限を与える必要があります。ユーザーが API アクセストークンを使用する許可を再度与えられるまで、トークンは無効な状態のままになります。ユーザーに権限が付与された後、コンソールはその権限を今後も記憶します。
所有者が API アクセストークンの制限を有効にする手順は以下のとおりです。
- Next-Gen WAF コンソールにログインします。
[Corp Manage (企業管理)] メニューから、[User Authentication (ユーザー認証)] を選択します。
[API access tokens (API アクセストークン)] セクションに移動します。
[Access token permissions (アクセストークンの権限)] フィールドで、[Restrict access by user (ユーザーごとにアクセスを制限する)] オプションを選択します。この設定と制限内容についての警告メッセージが表示されます。
[Continue (続行)] をクリックして続行します。
[Update API access tokens (API アクセストークンを更新)] をクリックして、変更を保存します。
API アクセストークンの作成および使用権限の付与
API アクセストークンの作成および使用が制限されている場合、所有者のみが他のユーザーに API アクセストークンの作成を許可できます。
重要: API アクセストークンの使用を制限した後、所有者本人も API アクセストークンを作成および使用する権限を自身に付与する必要があります。
- Next-Gen WAF コンソールにログインします。
[Corp Manage (企業管理)] メニューから、[Corp Users (企業ユーザー)]を選択します。
権限を付与するユーザーをクリックします。
[Edit corp user (企業ユーザーの編集)] をクリックします。
[Authentication] セクションで、[Allow this user to create API access tokens (このユーザーが API アクセストークンを作成することを許可する)] チェックボックスをオンにします。
[Update user (ユーザーの更新)] をクリックします。
API アクセストークンの削除
- Next-Gen WAF コンソールにログインします。
[My Profile (マイプロフィール)] メニューから、[API access tokens (API アクセストークン)] を選択します。
削除したいトークンの右側にある [Delete (削除)] をクリックします。
Delete をクリックして、トークンの削除を確定します。
個人用 API トークンの表示
所有者が [Corp Manage (企業管理)] メニューに移動して [API access tokens (API アクセストークン)] を選択すると、企業全体の全アクセストークンのテーブルを表示できます。このテーブルには、各トークンのステータス (有効、期限切れ、所有者による無効化)、作成者、使用された IP、有効期限などが記載されています。
企業全体の API アクセストークン設定の管理
企業全体の API アクセストークン設定を管理する際は、次の手順に従います。
トークンの自動有効期限切れの設定
所有者は、一定期間経過後に API アクセストークンが自動的に有効期限切れになるよう設定できます。
- Next-Gen WAF コンソールにログインします。
[Corp Manage (企業管理)] メニューから、[User Authentication (ユーザー認証)] を選択します。
[API access tokens (API アクセストークン)] セクションに移動します。
[Access token expiration (アクセストークンの有効期限)] で、[Custom expiration (カスタム有効期限)] オプションを選択します。
デフォルトの期間を選択するか、[Custom (カスタム)] を選択して特定のカスタム期間を設定します。
有効期限は、有効期限ポリシーの開始日ではなく、トークン自体の作成日に基づいて設定されます。たとえば、作成から60日間経過したトークンについて30日間の有効期限ポリシーを設定した場合、トークンは即座に有効期限切れになります。この場合も、後に有効期限を90日に切り替えると、トークンの有効期限は切れなくなります。
[Update API access tokens (API アクセストークンを更新)] をクリックします。
IP による API アクセストークンの使用制限
所有者は、API アクセストークンの使用を特定の IP アドレスに制限できます。
- Next-Gen WAF コンソールにログインします。
[Corp Manage (企業管理)] メニューから、[User Authentication (ユーザー認証)] を選択します。
[API access tokens (API アクセストークン)] セクションに移動します。
[Restrict usage by IP (optional) (IPアドレスごとに使用を制限する (オプション)] フィールドに、トークンの使用を制限する IP アドレスと IP アドレス範囲を入力します。各 IP アドレスを新しい行に入力します。
[Update API access tokens (API アクセストークンを更新)] をクリックします。
個人用 API アクセストークンの使用
Golang
package main
import ( "encoding/json" "fmt" "io/ioutil" "log" "net/http" "os" "time")
var ( // Defines the API endpoint endpoint = "https://dashboard.signalsciences.net/api/v0" email = os.Getenv("SIGSCI_EMAIL") token = os.Getenv("SIGSCI_TOKEN"))
// Corp is a Signal Sciences corp (also known as account)type Corp struct { Name string DisplayName string SmallIconURI string Created time.Time SiteLimit int Sites struct { URI string } AuthType string MFAEncorced bool}
// CorpResponse is the response from the Signal Sciences API// containing the corp (account) data.type CorpResponse struct { Data []Corp}
func main() { // No need for timestamps or anything log.SetFlags(0)
// Get corps req, err := http.NewRequest("GET", endpoint+"/corps", nil) if err != nil { log.Fatal(err) }
// Set headers req.Header.Set("x-api-user", email) req.Header.Set("x-api-token", token) req.Header.Set("Content-Type", "application/json") req.Header.Add("User-Agent", "SigSci Go-Example")
// Make request var transport http.RoundTripper = &http.Transport{} response, err := transport.RoundTrip(req) if err != nil { log.Fatal(fmt.Sprintf("Error connecting to API: %v", err)) } defer response.Body.Close()
payload, err := ioutil.ReadAll(response.Body) if err != nil { log.Fatal(fmt.Sprintf("Unable to read API response: %v", err)) }
if response.StatusCode != http.StatusOK { log.Fatal(fmt.Sprintf("API request failed, status: %d, resp: %s", response.StatusCode, payload)) }
var corpResp CorpResponse err = json.Unmarshal(payload, &corpResp) if err != nil { log.Fatal(err) }
// Print out corp (account) data fmt.Printf("%+v\n", corpResp.Data)}Python
import requests, os
# Initial setup
endpoint = 'https://dashboard.signalsciences.net/api/v0'email = os.environ.get('SIGSCI_EMAIL')token = os.environ.get('SIGSCI_TOKEN')
# Fetch list of corps (accounts)
headers = { 'Content-type': 'application/json', 'x-api-user': email, 'x-api-token': token}corps = requests.get(endpoint + '/corps', headers=headers)print (corps.text)Ruby
require 'net/http'require 'json'
# Initial setup
endpoint = "https://dashboard.signalsciences.net/api/v0"email = ENV['SIGSCI_EMAIL']token = ENV['SIGSCI_TOKEN']
# Fetch list of corps (accounts)
corps_uri = URI(endpoint + "/corps")
http = Net::HTTP.new(corps_uri.host, corps_uri.port)http.use_ssl = true
request = Net::HTTP::Get.new(corps_uri.request_uri)request["x-api-user"] = emailrequest["x-api-token"] = tokenrequest["Content-Type"] = "application/json"
response = http.request(request)puts response.bodyShell
$ curl -H "x-api-user:$SIGSCI_EMAIL" -H "x-api-token:$ACCESS_TOKEN" -H "Content-Type: application/json" https://dashboard.signalsciences.net/api/v0/corps