脆弱性API
GitLab 12.6 で導入されました。
脆弱性への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": []
}
}
}