Docs/APIとWebhook/認証とスコープ

認証とスコープ

すべてのパブリックAPIリクエストは、長期間有効なAPIキーをベアラートークンとして運ぶ必要があります。スコープは各キーが実行できる内容を制約します — 統合が実際に必要とするものだけを付与してください。

ベアラートークン形式

APIキーは次のようになります:

scs_live_t9JQ10cDjddmslzv9mRKYqaDS5ZU1KuDH

プレフィックスscs_live_は、キーがSecureCodingHubのプロダクション認証情報であることを識別します。トークンの合計は41文字 (9文字のプレフィックス + 32文字のランダムボディ) です。キー作成時に1回のみ返されます。

標準のベアラー認証ヘッダーとして、すべてのリクエストでトークンを送信してください:

Authorization: Bearer scs_live_t9JQ10cDjddmslzv9mRKYqaDS5ZU1KuDH

APIキーの作成

APIキーはAPIではなく管理コンソールで作成します。

1

組織管理者としてapp.securecodinghub.comにサインインします。

2

サイドバーから組織 → APIキーを開きます。

3

+ 新規キーを作成をクリックします。キーに分かりやすい名前 (例: GitHub Actions — CILooker BI sync) を付けます。

4

統合に必要なスコープのみをチェックします。読み取り専用スコープは青、書き込みスコープは琥珀色でハイライトされます。

5

(任意) 有効期限を設定します。有効期限のないキーは、取り消すまで有効です。

6

キーを作成をクリックします。完全なトークンはモーダルに表示されます。今すぐシークレットマネージャーにコピーしてください。再取得することはできません — プレフィックスと最後の4文字のみが保存されます。

スコープリファレンス

SecureCodingHubは、読み取り階層と書き込み階層に分かれた16個の細粒度スコープを使用します。一致するスコープなしでエンドポイントに到達したリクエストは、レスポンスボディ{"error":"insufficient_scope","required":"…","present":[…]}とともに403 Forbiddenを返します。

スコープリソース階層付与権限
org:read組織読み取り組織メタデータ (名前、プラン、シート) を読み取ります。
users:readユーザー読み取りユーザーをリスト表示、ユーザー詳細を取得します。
users:writeユーザー書き込みユーザーを作成、更新、非アクティブ化します。
teams:readチーム読み取りチームとメンバーをリスト表示します。
teams:writeチーム書き込みチームを作成、更新、削除します。
assignments:read課題読み取り課題をリスト表示、完了状況を含む詳細を取得します。
assignments:write課題書き込み課題を作成、更新、非アクティブ化します。
custom-courses:readカスタムコース読み取りアイテム付きのカスタムコースをリスト表示します。
custom-courses:writeカスタムコース書き込みカスタムコースを作成、更新、削除します。
progress:read進捗読み取りユーザーごとの練習と学習の進捗を取得します。
certificates:read証明書読み取り証明書をリスト表示してダウンロードします。
audit-log:read監査ログ読み取り監査ログエントリをリスト表示します。
compliance:readコンプライアンス読み取りコンプライアンスダッシュボードデータを取得します。
content:readコンテンツ読み取りトピック、シナリオ、CWE-to-topicマッピングを取得します。
sarif:ingestSARIF書き込みSARIF実行を取り込み、トレーニングを自動割り当てします。
webhook:manageWebhook書き込みアウトバウンドWebhookエンドポイントを管理します。

推奨スコープセット

ユースケース最小スコープ
CI/CD SARIF取り込みsarif:ingest
HR駆動のユーザープロビジョニングusers:write, teams:write
BI / レポートエクスポートusers:read, progress:read, assignments:read, audit-log:read
チケッティングとSOAR (イベントサブスクライバー)webhook:manage, assignments:read
監査人読み取り専用エクスポートorg:read, audit-log:read, compliance:read, certificates:read

ローテーションと取り消し

キーをローテーションするには、まず置き換え用のキーを作成し、新しいトークンをデプロイしてから、組織 → APIキーで古いキーを取り消してください。取り消しは即座に有効になります — 古いトークンを使用中のリクエストは数秒以内に401 Unauthorizedを返し始めます。

キーが漏洩した場合は取り消してください。「一時停止」状態はありません。取り消しは永続的です。トークンを再度有効化することはできません。

保管のベストプラクティス

  • トークンはデータベースパスワードと同じように扱ってください。ソース管理にコミットしないでください。
  • プラットフォームのネイティブシークレットストア (AWS Secrets Manager、GCP Secret Manager、GitHub Actions secrets、Vault、1Password Connect) を優先してください。
  • CIでは、必要なステップでのみトークンを注入し、echoは避けてください。
  • 個別に取り消せるよう、統合ごとに1つのキーを発行してください。CI、BI、SOARで1つのキーを共有しないでください。
  • 短期間の統合 (概念実証、ベンダー評価) 用に作成したトークンには有効期限を設定してください。

一般的なエラー

ステータスレスポンス意味
401{"error":"unauthorized"}トークンが欠落、不正、取り消し済み、または期限切れです。
403{"error":"insufficient_scope",…}トークンは有効ですが、このエンドポイントに必要なスコープが不足しています。
429{"error":"rate_limited"}1分あたりまたは1時間あたりの上限に達しました。レート制限を参照してください。