다음을 통해 공유


Microsoft Information Protection SDK - 프로필 및 엔진 개체 개념

프로필

MipContext가 SDK 관련 설정을 저장하기 위한 클래스인 경우 프로필은 MIP SDK의 모든 MIP 레이블 지정 및 보호 관련 작업에 대한 루트 클래스입니다. 세 가지 API 집합을 사용하기 전에 클라이언트 애플리케이션에서 프로필을 만들어야 합니다. 향후 작업은 프로필 또는 프로필에 추가된 다른 개체에 의해 수행됩니다. 프로세스당 단일 프로필 개체만 권장됩니다. 둘 이상을 만들면 예기치 않은 동작이 발생할 수 있습니다.

MIP SDK에는 다음 세 가지 유형의 프로필이 있습니다.

사용 중인 애플리케이션에 사용된 API는 사용해야 하는 프로필 클래스를 결정합니다.

프로필 자체는 다음과 같은 기능을 제공합니다.

  • 상태를 메모리에 로드할지 또는 디스크에 보관할지 여부 및 디스크에 보관하는 경우 암호화해야 하는지를 정의합니다.
  • 동의 작업에 사용해야 하는 mip::ConsentDelegate를 정의합니다.
  • 프로필 작업에 대한 비동기 콜백에 사용할 mip::FileProfile::Observer 구현을 정의합니다.

프로필 설정

  • MipContext: 애플리케이션 정보, 상태 경로 등을 저장하도록 초기화된 MipContext 개체입니다.
  • CacheStorageType: 메모리 내, 디스크 내 또는 디스크 내 및 암호화된 상태를 저장하는 방법을 정의합니다.
  • consentDelegate: 클래스 mip::ConsentDelegate의 공유 포인터입니다.
  • observer: 프로필 Observer 구현(in , PolicyProfileProtectionProfile)에 FileProfile대한 공유 포인터입니다.
  • applicationInfo: 개체입니다 mip::ApplicationInfo . Microsoft Entra 애플리케이션 등록 ID 및 이름과 일치하는 SDK를 사용하는 애플리케이션에 대한 정보입니다.

엔진

파일, 프로필 및 보호 SDK 엔진은 특정 ID가 수행하는 작업에 대한 인터페이스를 제공합니다. 애플리케이션에 로그인하는 각 사용자 또는 서비스 주체에 대해 하나의 엔진이 프로필 개체에 추가됩니다. mip::ProtectionSettings 및 파일 또는 보호 처리기를 통해 위임된 작업을 수행할 수 있습니다. 자세한 내용은 FileHandler 개념의 보호 설정 섹션을 참조하세요.

SDK에는 각 API에 대해 하나씩 세 개의 엔진 클래스가 있습니다. 다음 목록에서는 엔진 클래스 및 각각과 연결된 몇 가지 함수를 보여 줍니다.

  • mip::ProtectionEngine
  • mip::PolicyEngine
    • ListSensitivityLabels(): 로드된 엔진에 대한 레이블 목록을 가져옵니다.
    • GetSensitivityLabel(): 기존 콘텐츠에서 레이블을 가져옵니다.
    • ComputeActions(): 레이블 ID 및 선택적 메타데이터와 함께 제공된 경우 특정 항목에 대해 발생해야 하는 작업 목록을 반환합니다.
  • mip::FileEngine
    • ListSensitivityLabels(): 로드된 엔진에 대한 레이블 목록을 가져옵니다.
    • CreateFileHandler(): 특정 파일 또는 스트림에 대한 a를 만듭니다 mip::FileHandler .

엔진을 만들려면 만들 엔진 유형에 대한 설정이 포함된 특정 엔진 설정 개체를 전달해야 합니다. 설정 개체를 사용하면 개발자가 엔진 식별자, mip::AuthDelegate 구현, 로캘 및 사용자 지정 설정뿐만 아니라 다른 API 관련 세부 정보에 대한 세부 정보를 지정할 수 있습니다.

엔진 상태

엔진에는 다음 두 가지 상태 중 하나가 있을 수 있습니다.

  • CREATED: 필요한 백 엔드 서비스를 호출한 후 SDK에 충분한 로컬 상태 정보가 있음을 나타냅니다.
  • LOADED: SDK는 엔진 작동에 필요한 데이터 구조를 구축했습니다.

모든 작업을 수행하려면 엔진을 만들고 로드해야 합니다. 클래스는 Profile 다음과 같은 몇 가지 AddEngineAsync엔진 관리 메서드를 DeleteEngineAsyncUnloadEngineAsync노출합니다.

다음 표에서는 가능한 엔진 상태 및 해당 상태를 변경할 수 있는 메서드에 대해 설명합니다.

엔진 상태 NONE CREATED 로드
NONE AddEngineAsync
CREATED DeleteEngineAsync AddEngineAsync
로드 DeleteEngineAsync UnloadEngineAsync

엔진 ID

각 엔진에는 모든 엔진 관리 작업에 사용되는 고유 식별자가 id있습니다. 애플리케이션에서 id를 제공하거나, 애플리케이션에서 제공하지 않는 경우 SDK에서 생성할 수 있습니다. 다른 모든 엔진 속성(예: ID 정보의 이메일 주소)은 SDK에 대한 불투명 페이로드입니다. SDK는 다른 속성을 고유하게 유지하거나 다른 제약 조건을 적용하는 논리를 수행하지 않습니다.

Important

**사용자 고유의 엔진 ID를 사용하고 사용자가 SDK로 작업을 수행할 때마다 사용하는 것이 좋습니다. 사용자 또는 서비스에 대해 기존의 고유한 engineId를 제공하지 못하면 추가 서비스 왕복이 발생합니다. 이러한 서비스 왕복은 성능 저하 및 제한을 초래할 수 있습니다. **

// Create the FileEngineSettings object
FileEngine::Settings engineSettings(mip::Identity(mUsername), // This will be the engine ID. UPN, email address, or other unique user identifiers are recommended. 
													          mAuthDelegate,            // authDelegate implementation 
													          "",                       // ClientData
													          "en-US",                  // Client Locale
                                    false);                   // Load Sensitive Information Types

엔진 관리 방법

앞에서 언급했듯이 SDK에는 AddEngineAsync, DeleteEngineAsyncUnloadEngineAsync의 세 가지 엔진 관리 메서드가 있습니다.

AddEngineAsync

이 메서드는 기존 엔진을 로드하거나 로컬 상태에 아직 없는 경우 엔진을 만듭니다.

애플리케이션에서 idFileEngineSettings를 제공하지 않으면 AddEngineAsync는 새 id를 생성합니다. 그런 다음 해당 id가 있는 엔진이 로컬 스토리지 캐시에 이미 존재하는지 확인합니다. 이 경우 해당 엔진을 로드합니다. 엔진이 로컬 캐시에 없으면 필요한 API 및 백엔드 서비스를 호출하여 새 엔진이 생성됩니다.

두 경우 모두 메서드가 성공하면 엔진이 로드되고 사용할 준비가 됩니다.

DeleteEngineAsync

지정된 id엔진을 사용하여 엔진을 삭제합니다. 엔진의 모든 추적이 로컬 캐시에서 제거됩니다.

UnloadEngineAsync

지정된 id엔진에 대한 메모리 내 데이터 구조를 언로드합니다. 이 엔진의 로컬 상태는 그대로 유지되며 .을 사용하여 AddEngineAsync다시 로드할 수 있습니다.

이 메서드를 사용하면 곧 사용되지 않을 것으로 예상되는 엔진을 언로드하여 애플리케이션이 메모리 사용에 대해 신중하게 고려할 수 있습니다.

다음 단계