Back to Gitlabhq

API d'export de vulnérabilité

doc-locale/fr-fr/api/vulnerability_exports.md

19.1.013.3 KB
Original Source

{{< details >}}

  • Édition : Ultimate
  • Offre : GitLab.com, GitLab Self-Managed, GitLab Dedicated

{{< /details >}}

{{< history >}}

{{< /history >}}

Utilisez cette API pour exporter des rapports de vulnérabilité. Chaque appel à cette API nécessite une authentification.

Créer un export de vulnérabilité au niveau du projet {#create-a-project-level-vulnerability-export}

Crée un nouvel export de vulnérabilité pour un projet.

Si un utilisateur authentifié n'est pas autorisé à créer une nouvelle vulnérabilité, cette requête renvoie un code de statut 403 Forbidden.

Chaque utilisateur ne peut créer qu'un seul export de vulnérabilité à la fois pour un projet spécifique. Si vous demandez un export pendant que votre requête précédente est toujours en cours, le résultat est une erreur 429 Too Many Requests.

Les exports de vulnérabilité ne sont accessibles que par l'auteur de l'export.

plaintext
POST /security/projects/:id/vulnerability_exports
AttributTypeObligatoireDescription
identier ou chaîneouiL'identifiant ou le chemin encodé en URL du projet dont l'utilisateur authentifié est membre
send_emailbooleannonLorsque défini sur true, envoie une notification par e-mail à l'utilisateur ayant demandé l'export lorsque l'export est terminé.
export_formatstringnonValeurs : csv,pdf. La valeur par défaut est csv. Un rapport pdf nécessite le feature flag vulnerabilities_pdf_export.
report_dataobjetnonUn hash de composants de rapport mappés aux ressources de données frontend à utiliser dans l'export. Par exemple : { project_vulnerabilities_history: '<svg>some report asset</svg>' }

[!flag] La disponibilité des exports PDF est contrôlée par un feature flag. Pour plus d'informations, consultez l'historique.

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/security/projects/1/vulnerability_exports"

L'export de vulnérabilité créé est automatiquement supprimé à l'heure spécifiée dans le champ expires_at.

Exemple de réponse :

json
{
  "id": 2,
  "created_at": "2020-03-30T09:35:38.746Z",
  "project_id": 1,
  "group_id": null,
  "format": "csv",
  "status": "created",
  "started_at": null,
  "finished_at": null,
  "send_email": false,
  "expires_at": "2020-04-06T09:35:38.746Z",
  "_links": {
    "self": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2",
    "download": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2/download"
  }
}

Créer un export de vulnérabilité au niveau du groupe {#create-a-group-level-vulnerability-export}

Crée un nouvel export de vulnérabilité pour un groupe.

Si un utilisateur authentifié n'est pas autorisé à créer une nouvelle vulnérabilité, cette requête renvoie un code de statut 403 Forbidden.

Chaque utilisateur ne peut créer qu'un seul export de vulnérabilité à la fois pour un groupe spécifique. Si vous demandez un export pendant que votre requête précédente est toujours en cours, le résultat est une erreur 429 Too Many Requests.

Les exports de vulnérabilité ne sont accessibles que par l'auteur de l'export.

plaintext
POST /security/groups/:id/vulnerability_exports
AttributTypeObligatoireDescription
identier ou chaîneouiL'identifiant ou le chemin encodé en URL du groupe dont l'utilisateur authentifié est membre
export_formatstringnonValeurs : csv,pdf. La valeur par défaut est csv. Un rapport PDF nécessite le feature flag vulnerabilities_pdf_export.
report_dataobjetnonUn hash de composants de rapport mappés aux ressources de données frontend à utiliser dans l'export. Par exemple : { project_vulnerabilities_history: '<svg>some report asset</svg>' }

[!flag] La disponibilité des exports PDF est contrôlée par un feature flag. Pour plus d'informations, consultez l'historique.

shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/security/groups/1/vulnerability_exports"

L'export de vulnérabilité créé est automatiquement supprimé à l'heure spécifiée dans le champ expires_at.

Exemple de réponse :

json
{
  "id": 2,
  "created_at": "2020-03-30T09:35:38.746Z",
  "project_id": null,
  "group_id": 1,
  "format": "csv",
  "status": "created",
  "started_at": null,
  "finished_at": null,
  "expires_at": "2020-04-06T09:35:38.746Z",
  "_links": {
    "self": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2",
    "download": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2/download"
  }
}

Créer un export de vulnérabilité au niveau de l'instance {#create-an-instance-level-vulnerability-export}

Crée un nouvel export de vulnérabilité pour les projets de l'utilisateur sélectionné dans le tableau de bord de sécurité.

plaintext
POST /security/vulnerability_exports
shell
curl --request POST \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/security/vulnerability_exports"

L'export de vulnérabilité créé est automatiquement supprimé à l'heure spécifiée dans le champ expires_at.

Exemple de réponse :

json
{
  "id": 2,
  "created_at": "2020-03-30T09:35:38.746Z",
  "project_id": null,
  "group_id": null,
  "format": "csv",
  "status": "created",
  "started_at": null,
  "finished_at": null,
  "expires_at": "2020-04-06T09:35:38.746Z",
  "_links": {
    "self": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2",
    "download": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2/download"
  }
}

Récupérer un export de vulnérabilité {#retrieve-a-vulnerability-export}

Récupère un export de vulnérabilité spécifié.

plaintext
GET /security/vulnerability_exports/:id
AttributTypeObligatoireDescription
identier ou chaîneouiL'identifiant de l'export de vulnérabilité
shell
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/security/vulnerability_exports/2"

Si l'export de vulnérabilité n'est pas terminé, la réponse est 202 Accepted.

Exemple de réponse :

json
{
  "id": 2,
  "created_at": "2020-03-30T09:35:38.746Z",
  "project_id": 1,
  "group_id": null,
  "format": "csv",
  "status": "finished",
  "started_at": "2020-03-30T09:36:54.469Z",
  "finished_at": "2020-03-30T09:36:55.008Z",
  "expires_at": "2020-04-06T09:35:38.746Z",
  "_links": {
    "self": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2",
    "download": "https://gitlab.example.com/api/v4/security/vulnerability_exports/2/download"
  }
}

Télécharger un export de vulnérabilité {#download-a-vulnerability-export}

Télécharge un export de vulnérabilité spécifié.

plaintext
GET /security/vulnerability_exports/:id/download
AttributTypeObligatoireDescription
identier ou chaîneouiL'identifiant de l'export de vulnérabilité
shell
curl --request GET \
  --header "PRIVATE-TOKEN: <your_access_token>" \
  --url "https://gitlab.example.com/api/v4/security/vulnerability_exports/2/download"

La réponse est 404 Not Found si l'export de vulnérabilité n'est pas encore terminé ou n'a pas été trouvé.

Exemple de réponse :

plaintext
Group Name,Project Name,Tool,Scanner Name,Status,Vulnerability,Details,Additional Info,Severity,CVE,CWE,Other Identifiers,Detected At,Location,Activity,Comments,Full Path,CVSS Vectors,Dismissal Reason
Gitlab.org,Defend,container_scanning,Trivy,resolved,CVE-2019-14697 in musl-utils-1.1.20-r4,"musl libc through 1.1.23 has an x87 floating-point stack adjustment imbalance, related to the math/i386/ directory. In some cases, use of this library could introduce out-of-bounds writes that are not present in an application's source code.",CVE-2019-14697 in musl-utils-1.1.20-r4,critical,CVE-2019-14697,,"",2022-10-07 13:34:41 UTC,"{""image""=>""python:3.4-alpine"", ""dependency""=>{""package""=>{""name""=>""musl-utils""}, ""version""=>""1.1.20-r4""}, ""operating_system""=>""alpine 3.9.2""}",true,"2022-10-07 13:41:08 UTC|root|resolved|changed vulnerability status to resolved",group/project/1,,,
Gitlab.org,Defend,container_scanning,Trivy,detected,CVE-2019-19242 in sqlite-libs-3.26.0-r3,"SQLite 3.30.1 mishandles pExpr->y.pTab, as demonstrated by the TK_COLUMN case in sqlite3ExprCodeTarget in expr.c.",CVE-2019-19242 in sqlite-libs-3.26.0-r3,medium,CVE-2019-19242,,"",2022-10-07 13:34:41 UTC,"{""image""=>""python:3.4-alpine"", ""dependency""=>{""package""=>{""name""=>""sqlite-libs""}, ""version""=>""3.26.0-r3""}, ""operating_system""=>""alpine 3.9.2""}",true,"",group/project/2,,,
Gitlab.org,Defend,container_scanning,Trivy,detected,CVE-2020-28928 in musl-1.1.20-r4,"In musl libc through 1.2.1, wcsnrtombs mishandles particular combinations of destination buffer size and source character limit, as demonstrated by an invalid write access (buffer overflow).",CVE-2020-28928 in musl-1.1.20-r4,medium,CVE-2020-28928,,"",2022-10-07 13:34:41 UTC,"{""image""=>""python:3.4-alpine"", ""dependency""=>{""package""=>{""name""=>""musl""}, ""version""=>""1.1.20-r4""}, ""operating_system""=>""alpine 3.9.2""}",true,"",group/project/3,,,
Gitlab.org,Defend,dependency_scanning,Gemnasium,detected,Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') in rack,Carefully crafted requests can cause shell escape sequences to be written to the terminal via Rack's Lint middleware and CommonLogger middleware. These escape sequences can be leveraged to possibly execute commands in the victim's terminal.,Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') in rack,unknown,Gemfile.lock:rack:gemnasium:60b5a27f-4e4d-4ab4-8ae7-74b4b212e177,,Gemnasium-60b5a27f-4e4d-4ab4-8ae7-74b4b212e177; GHSA-wq4h-7r42-5hrr,2022-10-14 13:16:00 UTC,"{""file""=>""Gemfile.lock"", ""dependency""=>{""package""=>{""name""=>""rack""}, ""version""=>""2.2.3""}}",false,group/project/4,,,
Gitlab.org,Defend,dependency_scanning,Gemnasium,detected,Denial of Service Vulnerability in Rack Multipart Parsing in rack,"Carefully crafted multipart POST requests can cause Rack's multipart parser to take much longer than expected, leading to a possible denial of service vulnerability. Impacted code will use Rack's multipart parser to parse multipart posts.",Denial of Service Vulnerability in Rack Multipart Parsing in rack,unknown,Gemfile.lock:rack:gemnasium:20daa17a-47b5-4f79-80c2-cd8f2db9805c,,Gemnasium-20daa17a-47b5-4f79-80c2-cd8f2db9805c; GHSA-hxqx-xwvh-44m2,2022-10-14 13:16:00 UTC,"{""file""=>""Gemfile.lock"", ""dependency""=>{""package""=>{""name""=>""rack""}, ""version""=>""2.2.3""}}",false,group/project/5,,,
Gitlab.org,Defend,sast,Brakeman,detected,Possible SQL injection,,Possible SQL injection,medium,e52f23a259cd489168b4313317ac94a3f13bffde57b9635171c1a44a9f329e9a,,"""Brakeman Warning Code 0""",2022-10-13 15:16:36 UTC,"{""file""=>""main.rb"", ""class""=>""User"", ""method""=>""index"", ""start_line""=>3}",false,"",group/project/6,,,
Gitlab.org,Defend,sast,Semgrep,dismissed,Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection'),"SQL Injection is a critical vulnerability that can lead to data or system compromise...",,critical,,CWE-89,SCS0002,2023-12-28 10:48:34 UTC,"{""file""=>""WebGoat/App_Code/DB/SqliteDbProvider.cs"", ""start_line""=>274}",false,"2023-12-28 10:51:32 UTC|root|Dismissed|""changed vulnerability status to Dismissed: Not Applicable and the following comment: ""dismiss 5""",gitlab-org/defend/579,,Not applicable,