正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

外部コントロールAPI

  • プラン: Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

外部サービスを使用するチェックのステータスを設定するには、外部コントロールAPIを使用します。

外部コントロールは定期的なping機能で設定できます。pingが有効な場合(デフォルト)、GitLabはコントロールステータスをpendingに12時間ごとに自動的にリセットします。pingが無効な場合、コントロールステータスはAPIコールによってのみ更新されます。

外部コントロールのステータスを設定する

指定された外部コントロールのステータスを設定します。この操作を使用して、コントロールが外部サービスによるチェックに合格したか失敗したかをGitLabに通知します。

前提条件

  • セキュリティのため、HMAC、タイムスタンプ、およびNonceの認証を使用する必要があります。
PATCH /api/v4/projects/:id/compliance_external_controls/:external_control_id/status

HTTPヘッダー:

ヘッダー必須説明
X-Gitlab-Timestamp文字列はい現在のUnixタイムスタンプ。
X-Gitlab-Nonce文字列はいリプレイ攻撃を防ぐためのランダムな文字列またはトークン。
X-Gitlab-Hmac-Sha256文字列はいリクエストのHMAC-SHA256署名。

HMAC-SHA256署名を計算するには:

  1. これらの値を次の順序で連結します:
    • X-Gitlab-Timestamp
    • X-Gitlab-Nonce
    • リクエストの完全なパス
    • status属性の値を、status=<status>の形式で指定します。
  2. 連結された文字列のHMAC-SHA256を、シークレットキーを使用して計算します。

サポートされている属性は以下のとおりです:

属性必須説明
id整数はいプロジェクトのID。
external_control_id整数はい外部コントロールのID。
status文字列はいコントロールを合格としてマークするにはpass、失敗としてマークするにはfailに設定します。

成功した場合、200 OKと次のレスポンス属性を返します:

属性説明
status文字列コントロールに設定されたステータス。

リクエスト例:

curl --request PATCH \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --header "X-Gitlab-Timestamp: <X-Gitlab-Timestamp>" \
  --header "X-Gitlab-Nonce: <X-Gitlab-Nonce>" \
  --header "X-Gitlab-Hmac-Sha256: <X-Gitlab-Hmac-Sha256>" \
  --header "Content-Type: application/json" \
  --data '{"status": "pass"}' \
  --url "https://gitlab.example.com/api/v4/projects/<id>/compliance_external_controls/<external_control_id>/status"

レスポンス例:

{
    "status":"pass"
}