> 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/guardian/understand-device-provisioning/begin-device-provisioning/provision-devices-using-api.md).

# API를 사용하여 디바이스 프로비저닝

## 개요

Guardian API는 의료 기기의 전체 수명 주기 프로비저닝뿐 아니라 안전한 통신 및 암호화 작업을 제공합니다.  [Guardian Library](/ko/guardian/get-started.md#guardian-components) 를 애플리케이션 코드에 직접 통합하면 수동 개입이나 외부 도구 없이 프로비저닝 프로세스 전체를 프로그래밍 방식으로 제어할 수 있습니다.

이 항목에서는 API로 수행할 수 있는 세 가지 주요 프로비저닝 워크플로를 다룹니다.

* [연결이 끊긴 기기](#disconnected-device-provisioning)
* [연결된 기기](#connected-device-provisioning)
* [프록시 프로비저닝](#proxy-device-provisioning)

프로세스, 플랫폼, 프로비저닝 및 기타 용어에 관한 자세한 내용은  [용어](/ko/guardian/get-started/guardian-terminology.md) 를 참조하세요.

### API 사용 시점

* 기기 소프트웨어에 프로비저닝 로직을 직접 포함해야 하는 경우
* 수동 개입 없이 프로비저닝 워크플로를 자동화해야 하는 경우
* 프로비저닝 프로세스를 세밀하게 제어해야 하는 경우
* 기존 기기 관리 시스템과 통합해야 하는 경우

## 일반 사전 요구 사항

디바이스 프로비저닝을 시작하기 전에 다음을 준비했는지 확인하세요.

* Guardian 계정
* Guardian에서 시스템을 생성하고 구성했습니다
* Medcrypt에서 프로비저닝 패키지를 받았습니다
* 플랫폼에 맞는 Guardian Library를 다운로드하여 설치했습니다
* 디바이스에 프로비저닝 패키지를 설치했습니다

## **연결되지 않은 기기 프로비저닝**

**사용 시점:** 네트워크에 연결되지 않아 프로비저닝 요청을 Guardian Cloud로 수동 전송해야 하는 기기에 사용합니다. 파일 형식과 확장자에 관한 자세한 내용은  [Guardian 파일 형식](/ko/guardian/understand-device-provisioning/begin-device-provisioning.md#guardian-file-types-and-extensions).

1. **프로비저닝 파일 준비:** 프로비저닝 파일의 콘텐츠를 애플리케이션 메모리에 로드합니다. 다음 파일이 포함됩니다.

   1. TrustStore(`.mcts`)
   2. 프로비저닝용 개인 ID(`.mcpip`)
   3. 프로비저닝용 인증 프로필(`.mcpp`)

   여기서 애플리케이션은 Guardian Library를 통합하여 개발 중인 소프트웨어를 의미합니다.
2. **새 Guardian 인스턴스 생성:** 이 작업은 멤버 변수를 초기화하고 시스템을 시작 상태로 설정합니다.
3. **프로비저닝 요청 및 개인 ID 파일 생성:** 다음 함수를 호출합니다:  [GenerateProvisionRequest()](#step-3-generate-device-provisioning-request) 이 함수는 오프라인 프로세스의 첫 번째이자 유일한 프로비저닝 단계입니다. 기기 키를 생성하고 프로비저닝 요청(`.mcpr`) 파일과 개인 ID(`.mcpi`) 파일을 만듭니다.  `.mcpi` 파일에는 기기에 보관되는 개인 키가 포함됩니다.
4. 생성된 프로비저닝 요청 및 개인 ID 파일을 로컬 저장소에 저장합니다.
5. **PR 업로드:** 프로비저닝 요청 파일을 Guardian Cloud에 수동으로 업로드합니다.
6. **인증 프로필 다운로드**: PR이 처리 및 승인되면 Guardian Cloud UI에서  `.mcp`  파일을 다운로드합니다.
7. **기기에 인증 프로필 설치**: 프로비저닝을 완료하려면  `.mcp`  파일을  `.mcpi`  파일이 있는 기기로 전송합니다.

## **연결된 기기 프로비저닝**

**사용 시점:** Guardian Cloud와 직접 통신할 수 있도록 네트워크에 연결된 기기에 사용합니다. 수동 개입이 필요 없는 완전 자동화 프로세스입니다. 파일 형식과 확장자에 관한 자세한 내용은  [Guardian 파일 형식](/ko/guardian/understand-device-provisioning/begin-device-provisioning.md#guardian-file-types-and-extensions).

1. 의 1\~3단계를 따르세요. [오프라인 프로비저닝](#disconnected-device-provisioning) 위 단계에서 프로비저닝 파일을 로드하고, Guardian을 시작한 다음, PR 및 개인 ID 파일을 생성합니다.
2. **PR을 Guardian Cloud에 제출:** 호출합니다 [StartProvisioningOnline()](/ko/guardian/api-overview.md#startprovisioningonline) 를 호출하여 프로비저닝 요청을 자동으로 제출합니다. 이렇게 하면 온라인 프로비저닝 상태 머신이 시작되고 Guardian Cloud와의 통신이 시작됩니다.
3. **프로비저닝 진행 상황 모니터링:**
   1. 애플리케이션의 메인 루프에서 Run 함수를 반복적으로 호출하여 백그라운드 작업을 실행합니다.
   2. 다음을 사용합니다: [IsProvisioningRunning()](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-isprovisioningrunning) 프로세스가 아직 활성 상태인지 확인합니다.
4. **인증된 프로필 검색 및 저장:**
   1. 다음의 경우 [IsProvisioningRunning()](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-isprovisioningrunning) 가 `false`이면 프로세스가 완료된 것입니다.
   2. 다음을 호출합니다: [GetProvisionedProfile()](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-getprovisionedprofile) 를 호출하여 완료된 인증 프로필을 검색합니다.
5. 이 파일을 기기의 저장소에 보존하거나 저장합니다.

## 프록시를 통한 기기 프로비저닝

**사용 시점:** 연결된 기기(프록시)를 사용하여 연결이 끊긴 다른 기기의 프로비저닝 요청을 처리하는 경우입니다.

**설정 요구 사항**

* 다른 기기의 프로비저닝 요청을 업로드하기 전에 **프록시 기기를 완전히 온라인 구성 요소로 프로비저닝해야 합니다** .
* 연결이 끊긴 기기의 `.mcpr` 파일을 먼저 프록시 기기로 전송해야 합니다

**프록시를 사용하여 프로비저닝**

1. **프록시 기기 초기화:** 먼저 프록시 기기를 완전히 온라인 구성 요소로 프로비저닝해야 합니다. 프록시 기기의 Guardian 인스턴스를 프록시 자체의 인증 프로필(`.mcp`)로 초기화해야 합니다. 이 파일은 최종 프로필 파일입니다.
2. **다른 기기의 인증 프로필 검색 및 저장:**
   1. 다음의 경우 [IsProvisioningRunning()](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-isprovisioningrunning) 가 `false`이면 프로세스가 완료된 것입니다.
   2. 호출합니다 [GetProvisionedProfile()](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-getprovisionedprofile) 를 호출하여 완료된 인증 프로필을 검색합니다.
3. **기기에 인증 프로필 설치**: 프로비저닝을 완료하려면  `.mcp`  파일을  `.mcpi`  파일이 있는 기기로 전송합니다.

## 함수 개요

### 기기 프로비저닝 함수

* [Guardian](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-guardian) : 생성자는 멤버 변수를 초기화하는 것 외에는 아무 작업도 수행하지 않습니다.
* [Initialize](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-initialize): 제공된 프로필, ID 및 신뢰 파일을 사용하여 Guardian 시스템을 초기화합니다.
* [GenerateProvisionRequest](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-generateprovisionrequest): 프로비저닝 프로세스의 첫 번째 기기 프로비저닝 단계입니다.
* [StartProvisioningOnline](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-startprovisioningonline): 온라인 기기 프로비저닝 프로세스를 시작합니다.
* [IsProvisioningRunning](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-isprovisioningrunning): 프로비저닝 프로세스가 활성 상태인지 확인합니다.
* [GetProvisionedProfile](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-getprovisionedprofile): 디바이스 프로비저닝에 성공한 후 디바이스의 프로비저닝된 인증 프로필을 추출합니다.

### 인증서 관리 함수

* [GetCertificateManager:](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-getcertificatemanager) 실행 중인 인증서 관리자를 가져옵니다.
* [GetProvisionedRevocationList](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-getprovisionedrevocationlist): 인증서 폐지 목록을 가져와 버퍼에 채웁니다.

### **보안 작업 함수**

* [FindSecureOperation](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-findsecureoperation): 서명/검증을 위한 보안 작업 핸들러를 조회합니다.

### **서비스 관리 함수**

* [FindService:](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-findservice) 구성된 서비스를 찾으려면 서비스 이름 조회를 수행합니다.
* [CreateTask](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-createtask): 서비스, 세션 또는 채널 작업을 위한 태스크를 생성합니다. 제공된 객체와 모든 하위 항목을 다음 항목에서 분리합니다. [Run](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-run).

### **시스템 관리 함수**

* [GetAuthenticationManager](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-getauthenticationmanager): 실행 중인 인증 관리자를 가져옵니다.
* [GetTelemetryManager](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-gettelemetrymanager): 실행 중인 텔레메트리 관리자를 가져옵니다.
* [\~Guardian](https://docs.medcrypt.com/ko/guardian/understand-device-provisioning/begin-device-provisioning/pages/5c32f6198fb24f923e75655a8dec70644f6ea302#function-~guardian): 소멸자는 Guardian을 정상적으로 종료하려고 시도합니다.
* [종료](/ko/guardian/api-overview/api-reference/classes/classmedcrypt-guardian-guardian.md#function-shutdown): Guardian을 정상적으로 종료합니다

## 파일 형식

Guardian은 프로비저닝 프로세스에서 특정 확장자를 사용하는 여러 파일 형식을 사용합니다.

**프로비저닝 요청:** 공개 키를 포함한 정보를 Guardian Cloud 백엔드로 전송하는 데 사용하는 파일입니다. 이 파일에는 Guardian Cloud로 전송되는 인증서 서명 요청(CSR)이 포함됩니다. 확장자: `.mcpr`

**TrustStore:** Guardian 플랫폼의 신뢰 앵커입니다. 확장자: `.mcts`

**프로필 파일:**

1. **프로비저닝할 인증된 프로필:** Guardian 라이브러리 및 프로비저닝 작업을 위한 서명된 지침과 구성입니다. 프로비저닝 과정에서 이 장치 유형에 대해 생성되는 초기 프로필 템플릿입니다. 확장자: `.mcpp`
2. **인증된 프로필:** Guardian 라이브러리 실행 및 재프로비저닝 작업을 위한 서명된 지침과 구성입니다. 프로비저닝 과정에서 생성되는 최종 장치 프로필입니다. 확장자: `.mcp`

**ID 파일:**

1. **프로비저닝할 개인 ID:** 초기 프로비저닝 작업 및 연결을 위한 키 자료입니다. 초기 개인 ID 템플릿입니다. 확장자: `.mcpip`
2. **개인 ID:** 재프로비저닝 및 실행 작업과 연결을 위한 키 자료입니다. 장치에 남아 있는 개인 키가 포함된 최종 개인 ID 파일입니다. 확장자: `.mcpi`

* **인증서 폐기 목록:** 폐기된 인증서는 `.mccrl` 파일에 포함됩니다.

## 디바이스 설정 및 프로비저닝 워크플로

이 단계에서는 Guardian의 핵심 프로비저닝 기능을 다룹니다.

### 1단계: Guardian 인스턴스 생성

해당 `Guardian()` 함수는 새 Guardian 인스턴스를 생성하고 초기화할 준비가 된 시작 상태로 설정합니다. 자세한 내용은 다음을 참조하세요. [Guardian 함수](/ko/guardian/api-overview.md#guardian) 。

### 2단계: Guardian 초기화

해당 `Initialize()` 함수는 장치 자격 증명 및 구성 파일을 사용해 Guardian을 초기화합니다. 제공된 프로필, ID 및 신뢰 파일을 사용하여 Guardian 시스템을 초기화합니다. 자세한 내용은 다음을 참조하세요. [Initialize 함수](/ko/guardian/api-overview.md#initialize) 자세한 내용은 참조하세요.

### 3단계: 디바이스 프로비저닝 요청 생성

&#x20;`GenerateProvisionRequest()`  함수는 디바이스 ID를 설정하기 위한 프로비저닝 요청을 생성합니다. 자세한 내용은 [GenerateProvisionRequest 함수](/ko/guardian/api-overview.md#generateprovisionrequest) 를 참조하세요.

### 4단계: 프로비저닝 요청 제출 및 처리

&#x20;`StartProvisioningOnline()` 연결된 장치가 프로비저닝 요청을 Guardian Cloud에 제출하도록 온라인 프로비저닝 프로세스를 시작하는 함수입니다.

### 5단계: 프로비저닝을 모니터링하고 장치의 인증된 프로필을 가져옵니다

1. 다음을 호출합니다. `Run()` 프로비저닝 작업을 처리하기 위해 반복해서 호출합니다.
2. 다음을 호출합니다. `IsProvisioningRunning()` 프로비저닝이 완료되었는지 확인합니다.
3. 다음이 `IsProvisioningRunning()` false를 반환하면 다음을 호출합니다. `GetProvisionedProfile()` 인증된 프로필을 가져옵니다.

자세한 내용은 [요청 처리 함수](/ko/guardian/api-overview.md#run) 를 참조하세요.

## 디버깅 및 로깅

Guardian은 로그 파일을 생성하지 않습니다. 대신 로깅은 애플리케이션에서 제어합니다.

* Guardian은 로그를 다음으로 출력합니다: `stdout` 및 `stderr`이러한 로그는 실행 중인 애플리케이션의 터미널/CLI에 표시됩니다. 출력에서 특정 오류 코드나 연결 실패를 확인하세요.
* **사용자 지정 로깅:** 다음을 사용하여 `SetLoggingCallback` 로그 메시지를 콜백 함수로 리디렉션할 수 있습니다. 이렇게 하면 터미널 출력이 중단되고 사용자 지정 로그 처리가 가능해집니다.
* **로그 제어:** 애플리케이션에서 로그 수준과 상세도를 제어할 수 있습니다.
* **Guardian Cloud UI**: Guardian Cloud 인터페이스에서 추가 오류 세부 정보와 프로비저닝 상태를 확인하세요.


---

# 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/guardian/understand-device-provisioning/begin-device-provisioning/provision-devices-using-api.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.
