> For the complete documentation index, see [llms.txt](https://docs.medcrypt.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.medcrypt.com/ko/helm/automate-and-integrate/api-sdk-documentation.md).

# Helm API SDK를 통해 SBOM 및 취약점 관리 자동화

## 개요

이 **Helm API** 를 사용하면 SBOM을 효율적으로 관리하고, 취약점을 평가하며, 상세 보고서를 생성할 수 있습니다. 현재 **Python SDK** (protobuf 기반)로 제공되는 Helm API는 API와의 상호 작용을 지원하는 바인딩과 도우미 스크립트를 제공합니다.

### 주요 기능

* 하나 또는 여러 개의 SBOM을 업로드합니다.
* 모든 취약점을 조회하거나 필터를 적용하여 다음 항목에 집중할 수 있습니다: **CISA KEV 취약점**.
* 다음 보고서를 생성합니다: **FDA SBOM 보고서** 또는 **CycloneDX VEX 보고서**.
* 데이터에서 일치하는 항목이 없는 SBOM 구성 요소를 식별합니다.

## 시작하기

### API 액세스 요청

1. [문의해 주시면](mailto:support@medcrypt.com) Helm API를 사용할 수 있습니다. Helm API는 현재 Python SDK로 제공됩니다. API는 protobuf로 작성되었으며, API SDK는 Python 바인딩과 SDK를 호출하기 위한 도우미 bash 스크립트를 제공합니다. 현재 API SDK 버전은 2.125.2입니다.
2. C# SDK가 필요한 경우, 현재 알파 단계로 제공되고 있습니다. [문의해 주시면](mailto:support@medcrypt.com) 액세스 권한을 받으실 수 있습니다.

### Helm API SDK 다운로드

1. Helm API 액세스 권한을 부여하는 이메일을 받으면 사이드바에서 **Developers** 항목을 클릭합니다.
2. 아래 파일을 다운로드합니다.

{% file src="/files/b333360d43194ea657b8bdaf73a5991d4dbcbec4" %}
클릭하여 Helm API Python SDK를 다운로드한 후 체크섬을 확인합니다.
{% endfile %}

3. 파일을 사용하기 전에 MD5 체크섬이 다음 값인지 확인해야 합니다: `6433eaceb2dc442e5e45a0cfe8912051`. 확인 방법을 잘 모르는 경우 [이 자료](https://www.autodesk.com/support/technical/article/caas/sfdcarticles/sfdcarticles/Checking-the-MD5-checksum-of-a-Downloaded-File.html) 를 참고할 수 있습니다.
4. API 문서는 Gitbook에서 호스팅되므로 Gitbook이 이 파일의 안전성을 확인하고 있다는 중간 페이지가 표시됩니다. *이 페이지는 사라지지 않지만 파일 다운로드는 정상적으로 완료됩니다.*.

### 인증 및 설정

Helm API 액세스 권한을 부여받은 후 API SDK를 다운로드하고 API 키를 생성해야 API를 호출할 수 있습니다.

<details>

<summary>1단계: 위에서 API SDK 다운로드</summary>

위 섹션에서 파일을 다운로드합니다. Helm API에는 다음 네 가지 스크립트가 있습니다:

* `run_upload_sbom.sh`
* `run_unmatched_sbom_entries.sh`
* `run_vuln_list.sh`
* `run_product_version_report.sh`

</details>

<details>

<summary>2단계: SDK 사전 요구 사항 설치</summary>

1. python3 설치: `pip3 install -r requirements.txt`. 이 명령은 필요한 Python 모듈을 설치합니다.
2. 다음 파일에 나열된 모든 Python 종속성이 환경에 설치되어 있는지 확인합니다: `requirements.txt` .

</details>

<details>

<summary>3단계: Helm UI에서 인증</summary>

1. 사이드바에서 **Developers** 옵션을 클릭합니다. 그러면 다음이 표시됩니다: **Developers** 페이지입니다.
2. Helm UI에서 **이메일** 필드를 확인할 수 있습니다. 이 필드는 API 액세스 권한이 있는 Helm 이메일 주소입니다. 이 값은 다음 단계에서 스크립트에 업데이트할 `client_id` 입니다.
3. Helm UI에서 **Generate API key**을 클릭합니다. 이 값은 다음 단계에서 스크립트에 업데이트할 `client_secret` 입니다.

</details>

<details>

<summary>4단계: SDK 스크립트 구성</summary>

이 파일의 압축을 풀면 나머지 API 실행 단계를 설명하는 `readme.txt` 문서를 확인할 수 있습니다.

1. 명령줄에서 `cd` 명령으로 `api/run`.
2. 다음 스크립트의 `client_id` 및 `client_secret` 값을 업데이트합니다. `run_upload_sbom.sh`, `run_unmatched_sbom_entries.sh`, `run_vuln_list.sh`및 `run_product_version_report.sh`.
3. 아래에서 해당하는 스크립트 섹션을 참조한 다음, 해당 매개변수를 업데이트합니다.

</details>

### 스크립트를 실행하여 SBOM 및 취약점 관리 자동화

<details>

<summary>1단계: 스크립트를 실행하여 하나 이상의 SBOM 업로드</summary>

run\_upload\_sbom.sh `스크립트를 사용하여 하나 이상의 SBOM을 업로드할 수 있습니다. 사용할 수 있는 명령줄 매개변수는 다음과 같습니다.` 다음 명령줄 매개변수를 사용할 수 있습니다.

* `--client_id`: API 계정 사용자 이름입니다. Helm UI에서는 **API 사용자 이름**.
* `--client_secret`: Helm UI에서 생성하는 API 키입니다.
* `--sbom_files`: 시스템에 있는 SBOM 파일의 경로입니다.
* `--workspace_name`: 제품을 할당할 워크스페이스의 이름입니다. 이 매개변수는 선택 사항입니다. 지정하지 않으면 기본 워크스페이스가 사용됩니다.
* `--product_name`: 버전을 생성할 제품의 이름입니다.
* `--version:` SBOM을 생성하고 업로드할 제품 버전입니다.
* `--createProdVers`: 제품 버전이 아직 없는 경우, 지정된 SBOM 제품에 대해 새 제품 버전을 생성할 수 있습니다.
* `--api_url`: Medcrypt에서 제공하는 API URL입니다.
* `--file_type`: 업로드할 파일 형식입니다. SPDX SBOM을 업로드하는 경우에만 설정하면 됩니다. 이 경우 다음과 같이 설정합니다. `SPDX`.

매개변수를 설정한 후 다음 명령을 실행합니다. `./run_upload_sbom.sh`.

</details>

<details>

<summary>2단계: 제품 버전에서 일치하지 않는 모든 SBOM 항목을 가져오는 스크립트 실행</summary>

특정 제품 및 버전에서 일치하지 않는 모든 SBOM 항목을 가져오려면 `run_unmatched_sbom_entries.sh` 스크립트를 사용합니다. 다음 명령줄 매개변수를 사용할 수 있습니다.

* `--client_id`: API 계정 사용자 이름입니다. Helm UI에서는 **API 사용자 이름**.
* `--client_secret`: Helm UI에서 생성하는 API 키입니다.
* `--workspace_name`: 제품을 할당할 워크스페이스의 이름입니다. 이 매개변수는 선택 사항입니다. 지정하지 않으면 기본 워크스페이스가 사용됩니다.
* `--product_name`: 버전을 생성할 제품의 이름입니다.
* `--version:` SBOM을 생성하고 업로드할 제품 버전입니다.
* `--api-url`: Medcrypt에서 제공하는 API URL입니다.

매개변수를 설정한 후 다음 명령을 실행합니다. `./run_unmatched_sbom_entries.sh`.

</details>

<details>

<summary>3단계: 제품 버전의 모든 취약점 또는 CISA KEV 취약점을 가져오는 스크립트 실행</summary>

특정 제품 및 버전의 모든 취약점 또는 CISA KEV 취약점만 가져오려면 `run_vuln_list.sh` 스크립트를 사용합니다. 다음 명령줄 매개변수를 사용할 수 있습니다.

* `--client_id`: API 계정 사용자 이름입니다. Helm UI에서는 **API 사용자 이름**.
* `--client_secret`: Helm UI에서 생성하는 API 키입니다.
* `--workspace_name`: 제품을 할당할 워크스페이스의 이름입니다. 이 매개변수는 선택 사항입니다. 지정하지 않으면 기본 워크스페이스가 사용됩니다.
* `--product_name`: 버전을 생성할 제품의 이름입니다.
* `--version:` SBOM을 생성하고 업로드할 제품 버전입니다.
* `--api-url`: Medcrypt에서 제공하는 API URL입니다.
* `--start_date`: 취약점 필터링을 시작할 시작 날짜입니다.
* `--end_date`: 취약점 필터링을 종료할 종료 날짜입니다.
* `--exploit_source`: 다음 값을 지정하여 `CISA_KEV` CISA KEV 목록에 있는 취약점만 가져올 수 있습니다. 이 값을 지정하지 않으면 모든 취약점이 반환됩니다. 기본값은 UNDEFINED입니다.

매개변수를 설정한 후 다음 명령을 실행합니다. `./run_vuln_list.sh`.

</details>

<details>

<summary>4단계: 제품 버전 보고서를 생성하는 스크립트 실행</summary>

특정 제품 및 버전에 대한 FDA SBOM 또는 CycloneDX VEX 보고서를 만들고 다운로드하려면 `run_product_version_report.sh` 스크립트를 사용합니다. 다음 명령줄 매개변수를 사용할 수 있습니다.

* `--client_id`: API 계정 사용자 이름입니다. Helm UI에서는 **API 사용자 이름**.
* `--client_secret`: Helm UI에서 생성하는 API 키입니다.
* `--workspace_name`: 제품을 할당할 워크스페이스의 이름입니다. 이 매개변수는 선택 사항입니다. 지정하지 않으면 기본 워크스페이스가 사용됩니다.
* `--product_name`: 버전을 생성할 제품의 이름입니다.
* `--version:` SBOM을 생성하고 업로드할 제품 버전입니다.
* `--api-url`: Medcrypt에서 제공하는 API URL입니다.
* `--file_path`: 생성된 보고서를 저장할 경로입니다.
* `--report_type`: 다음 중 하나를 지정합니다. `FDA_EXCEL` 또는 `CDX_VEX` 를 지정하면 FDA SBOM을 Excel 형식으로 생성하거나 CycloneDX VEX 보고서를 생성합니다.
* `--report_id` : 생성되는 VEX 보고서의 고유 식별자입니다. 이 매개변수는 선택 사항입니다. 제공하지 않으면 기본 고유 ID가 생성되어 사용됩니다. 기본 ID 형식은 다음과 같습니다. `UUID:workspace_name:product_name:product_version_name`.

매개변수를 설정한 후 다음 명령을 실행합니다. `./run_product_version_report.sh`.

</details>

## API 메서드

Helm API는 다음 메서드를 제공합니다.

* **listorganizations:** 사용자가 액세스할 수 있는 조직을 가져옵니다.
* **listworkspacesforuser:** 사용자가 액세스할 수 있는 조직 내 작업 공간을 나열합니다.
* **listorganizationproducts:** 지정된 조직의 제품을 가져옵니다.
* **listorganizationproductversions:** 해당 조직의 특정 제품 버전을 가져옵니다.
* **createorganizationproduct:** 제공된 제품 이름으로 해당 조직에 새 제품을 생성합니다. 사용자는 이 제품에 액세스할 수 있습니다.
* **createorganizationproductversions:** 제공된 버전 이름으로 선택한 제품에 새 제품 버전을 생성합니다.
* **submitsbom:**
  * 다음에 제공된 SBOM을 업로드합니다. `--sbom_files` 매개변수.
  * 기존 제품 및 제품 버전에 SBOM을 업로드할 수 있습니다.
  * 사용자는 새 제품과 제품 버전을 생성하고, 이 새 버전에 SBOM을 업로드할 수 있습니다.
* **listunmatchedsbomentries:** 지정된 SBOM 제품 및 버전에 대해 일치하지 않는 모든 SBOM 항목을 나열합니다.
* **listvulnerabilities:** 지정된 SBOM 제품 및 버전의 모든 취약점을 나열합니다. 다음을 사용하여 결과를 필터링할 수도 있습니다. `--exploit_source` 아래에 자세히 설명된 대로 CISA KEV 취약점만 표시할 수 있습니다.
* **requestreport:** 제품 버전 보고서 생성을 요청합니다. 보고서 생성은 비동기적으로 진행되므로 완료까지 시간이 걸릴 수 있습니다.
* **getreportrequeststate:** 요청한 보고서의 상태를 확인합니다.
* **getreportfile:** 보고서 요청이 완료되면(report\_request\_state=4) 보고서 파일을 다운로드할 수 있습니다.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.medcrypt.com/ko/helm/automate-and-integrate/api-sdk-documentation.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
