APIトークン

VulnCheckプラットフォームのすべてのAPIコールには、VulnCheckが発行する有効なAPIトークンが必要です。

VulnCheckプラットフォームでは、APIとポータルの両方で共有されるトークンシステムを採用しています。この共有トークンシステムにより、同じトークンを使用してAPIとウェブポータルの両方を操作でき、両者を行き来することが可能です。また、トークンを一元管理できます。このガイドでは、トークンの作成と使用方法について説明します。

APIトークンの発行

VulnCheckプラットフォームでAPIコールを開始するには、アカウントにトークンを発行する必要があります。以下の手順に従ってください:

  1. 右上のユーザープロフィールからトークンとSSHキーページに移動します。
  2. 右上の「Create Token」ボタンをクリックします。
  3. トークンの用途を思い出しやすくするために、ラベルを入力し、トークンアイコンを選択します。
  4. トークンを作成すると、トークンの値が表示されます。トークンの値を確認できるのはこのタイミングのみです。紛失した場合は、トークンを削除して新しいトークンを作成する必要があります。

30日間使用されなかったトークンは自動的に失効します。

HTTPリクエストでAPIトークンを使用する

VulnCheckでは、トークンを渡す方法が3つあります。

ベアラ認証ヘッダーでのAPIトークンの使用

カスタムヘッダーとしてAuthorization: Bearer insert_token_hereを追加します。

curl --request GET \
  --url https://api.vulncheck.com/v3/index/initial-access \
  --header 'Accept: application/json' \
  --header 'Authorization: Bearer insert_token_here'

クエリパラメータでのAPIトークンの使用

APIトークンをGET/URLパラメータとして渡すことができ、ブラウザでのテストやエンドポイントの閲覧が容易になります。

curl --request GET \
     --url https://api.vulncheck.com/v3/index/initial-access \
     --header 'Accept: application/json' \
     --url-query token=insert_token_here

JavaScriptクッキーでのAPIトークンの使用

トークンはクッキーとして渡すことが可能です。これにより、APIへのアクセスをポータル経由で行い、トークンの完全な管理を提供できます。

curl --request GET \
     --url https://api.vulncheck.com/v3/index/initial-access \
     --header 'Accept: application/json' \
     --cookie "token=insert_token_here"

CLIやSDKでのAPIトークンの使用

VulnCheckは、APIと対話するためのCLIおよびSDKを提供しています。VC_TOKEN環境変数を設定することで、CLIやSDKでトークンを使用できます。

package main

import (
 "context"
 "encoding/json"
 "fmt"
 "log"
 "os"

 vulncheck "github.com/vulncheck-oss/sdk-go-v2/v2"
)

func main() {
 configuration := vulncheck.NewConfiguration()
 configuration.Scheme = "https"
 configuration.Host = "api.vulncheck.com"

 client := vulncheck.NewAPIClient(configuration)

 token := os.Getenv("VULNCHECK_API_TOKEN")
 auth := context.WithValue(
  context.Background(),
  vulncheck.ContextAPIKeys,
  map[string]vulncheck.APIKey{
   "Bearer": {Key: token},
  },
 )
 resp, httpRes, err := client.IndicesAPI.IndexInitialAccessGet(auth).Execute()

 if err != nil || httpRes.StatusCode != 200 {
  log.Fatal(err)
 }

 prettyJSON, err := json.MarshalIndent(resp.Data, "", "  ")
 if err != nil {
  log.Fatalf("Failed to generate JSON: %v", err)
  return
 }

 fmt.Println(string(prettyJSON))
}