脆弱性API

GitLab 12.6 で導入されました

note
以前の脆弱性APIは脆弱性検索APIに改名され、そのドキュメントは別の場所に移動されました。このドキュメントでは、脆弱性へのアクセスを提供する新しい脆弱性APIについて説明します。
caution
このAPIは廃止予定であり、不安定なAPIです。レスポンスのペイロードは、GitLabのリリース間で変更または破損する可能性があります。代わりにGraphQL APIを使用してください。まずはGraphQL のサンプルをご覧ください。

脆弱性へのAPIコールはすべて認証が必要です。

認証されたユーザーが脆弱性を表示する権限を持っていない場合、このリクエストは403 Forbidden ステータスコードを返します。

単一の脆弱性

単一の脆弱性を取得します。

GET /vulnerabilities/:id
属性種類必須説明
id整数または文字列。yes取得する脆弱性のID
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/vulnerabilities/1"

応答例

{
  "id": 1,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "opened",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "updated_by_id": null,
  "last_edited_by_id": null,
  "closed_by_id": null,
  "start_date": null,
  "due_date": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "last_edited_at": null,
  "closed_at": null
}

脆弱性の確認

指定された脆弱性を確認します。脆弱性がすでに確認されている場合は、ステータスコード304 を返します。

認証されたユーザーが脆弱性を確認する権限を持っていない場合、このリクエストは403 というステータスコードになります。

POST /vulnerabilities/:id/confirm
属性種類必須説明
id整数または文字列。yes確認する脆弱性のID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/vulnerabilities/5/confirm"

応答例

{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "confirmed",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "updated_by_id": null,
  "last_edited_by_id": null,
  "closed_by_id": null,
  "start_date": null,
  "due_date": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "last_edited_at": null,
  "closed_at": null
}

脆弱性の解決

指定された脆弱性を解決します。脆弱性がすでに解決されている場合は、ステータスコード304 を返します。

認証されたユーザーが脆弱性を解決する権限を持っていない場合、このリクエストは403 ステータスコードを返します。

POST /vulnerabilities/:id/resolve
属性種類必須説明
id整数または文字列。yes解決する脆弱性のID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/vulnerabilities/5/resolve"

応答例

{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "resolved",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "updated_by_id": null,
  "last_edited_by_id": null,
  "closed_by_id": null,
  "start_date": null,
  "due_date": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "last_edited_at": null,
  "closed_at": null
}

脆弱性の解消

指定された脆弱性を却下します。脆弱性がすでに却下されている場合は、ステータスコード304 を返します。

認証されたユーザーが脆弱性を却下する権限を持っていない場合、 このリクエストは403 ステータスコードを返します。

POST /vulnerabilities/:id/dismiss
属性種類必須説明
id整数または文字列。yes却下する脆弱性のID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/vulnerabilities/5/dismiss"

応答例

{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "closed",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "updated_by_id": null,
  "last_edited_by_id": null,
  "closed_by_id": null,
  "start_date": null,
  "due_date": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "last_edited_at": null,
  "closed_at": null
}

脆弱性を検出された状態に戻します。

指定された脆弱性を検出状態に戻します。脆弱性がすでに検出された状態にある場合は、ステータスコード304 を返します。

認証されたユーザーが脆弱性を検出された状態に戻す権限を持っていない場合、このリクエストは403 というステータスコードになります。

POST /vulnerabilities/:id/revert
属性種類必須説明
id整数または文字列。yes検出された状態に戻す脆弱性のID
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/vulnerabilities/5/dismiss"

応答例

{
  "id": 2,
  "title": "Predictable pseudorandom number generator",
  "description": null,
  "state": "detected",
  "severity": "medium",
  "confidence": "medium",
  "report_type": "sast",
  "project": {
    "id": 32,
    "name": "security-reports",
    "full_path": "/gitlab-examples/security/security-reports",
    "full_name": "gitlab-examples / security / security-reports"
  },
  "author_id": 1,
  "updated_by_id": null,
  "last_edited_by_id": null,
  "closed_by_id": null,
  "start_date": null,
  "due_date": null,
  "created_at": "2019-10-13T15:08:40.219Z",
  "updated_at": "2019-10-13T15:09:40.382Z",
  "last_edited_at": null,
  "closed_at": null
}

脆弱性REST APIをGraphQLに置き換え

脆弱性REST APIエンドポイントの今後の非推奨に備えるため、以下の例を使用して同等のオペレーションをGraphQL APIで実行してください。

GraphQL - 単一の脆弱性

Query.vulnerabilityを使用してください。

{
  vulnerability(id: "gid://gitlab/Vulnerability/20345379") {
    title
    description
    state
    severity
    reportType
    project {
      id
      name
      fullPath
    }
    detectedAt
    confirmedAt
    resolvedAt
    resolvedBy {
      id
      username
    }
  }
}

応答例

{
  "data": {
    "vulnerability": {
      "title": "Improper Input Validation in railties",
      "description": "A remote code execution vulnerability in development mode Rails beta3 can allow an attacker to guess the automatically generated development mode secret token. This secret token can be used in combination with other Rails internals to escalate to a remote code execution exploit.",
      "state": "RESOLVED",
      "severity": "CRITICAL",
      "reportType": "DEPENDENCY_SCANNING",
      "project": {
        "id": "gid://gitlab/Project/6102100",
        "name": "security-reports",
        "fullPath": "gitlab-examples/security/security-reports"
      },
      "detectedAt": "2021-10-14T03:13:41Z",
      "confirmedAt": "2021-12-14T01:45:56Z",
      "resolvedAt": "2021-12-14T01:45:59Z",
      "resolvedBy": {
        "id": "gid://gitlab/User/480804",
        "username": "thiagocsf"
      }
    }
  }
}

GraphQL - 脆弱性の確認

Mutation.vulnerabilityConfirmを使用してください。

mutation {
  vulnerabilityConfirm(input: { id: "gid://gitlab/Vulnerability/23577695"}) {
    vulnerability {
      state
    }
    errors
  }
}

応答例

{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "CONFIRMED"
      },
      "errors": []
    }
  }
}

GraphQL - 脆弱性の解決

Mutation.vulnerabilityResolveを使用してください。

mutation {
  vulnerabilityResolve(input: { id: "gid://gitlab/Vulnerability/23577695"}) {
    vulnerability {
      state
    }
    errors
  }
}

応答例

{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "RESOLVED"
      },
      "errors": []
    }
  }
}

GraphQL - 脆弱性の解消

Mutation.vulnerabilityDismissを使用してください。

mutation {
  vulnerabilityDismiss(input: { id: "gid://gitlab/Vulnerability/23577695"}) {
    vulnerability {
      state
    }
    errors
  }
}

応答例

{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "DISMISSED"
      },
      "errors": []
    }
  }
}

GraphQL - 脆弱性を検出された状態に戻す

Mutation.vulnerabilityRevertToDetectedを使用してください。

mutation {
  vulnerabilityRevertToDetected(input: { id: "gid://gitlab/Vulnerability/20345379"}) {
    vulnerability {
      state
    }
    errors
  }
}

応答例

{
  "data": {
    "vulnerabilityConfirm": {
      "vulnerability": {
        "state": "DETECTED"
      },
      "errors": []
    }
  }
}