다음을 통해 공유


Microsoft Information Protection SDK - 파일 SDK 엔진 개념

MIP 파일 SDK의 mip::FileEngine은 지정된 ID를 대신하여 수행되는 모든 작업에 대한 인터페이스를 제공합니다. 애플리케이션에 로그인하는 각 사용자에 대해 하나의 엔진이 추가되고 엔진이 수행하는 모든 작업은 해당 ID의 컨텍스트에서 수행됩니다.

FileEngine 인증된 사용자에 대한 레이블을 나열하고 사용자를 대신하여 파일 작업을 수행하기 위한 파일 처리기를 만드는 두 가지 주요 책임이 있습니다.

  • mip::FileEngine
  • ListSensitivityLabels(): 로드된 엔진에 대한 레이블 목록을 가져옵니다.
  • CreateFileHandler(): 특정 파일 또는 스트림에 대한 a를 만듭니다 mip::FileHandler .

파일 엔진 추가

Profile 및 Engine 개체에서 다루는 것처럼 엔진에는 두 가지 상태CREATED(또는 LOADED.)가 있을 수 있습니다. 이러한 두 상태 중 하나가 아니면 존재하지 않습니다. 상태를 만들고 로드하려면 한 번만 호출하면 됩니다 FileProfile::LoadAsync. 엔진이 이미 캐시된 상태에 있으면 해당 엔진 LOADED이 됩니다. 존재하지 않는 경우, 그것은 될 CREATED 것입니다 .LOADED CREATED 는 애플리케이션이 엔진을 로드하는 데 필요한 서비스의 모든 정보를 가지고 있음을 의미합니다. LOADED 는 엔진을 활용하는 데 필요한 모든 데이터 구조가 메모리에 생성되었음을 의미합니다.

파일 엔진 설정 만들기

프로필과 마찬가지로 엔진에는 설정 개체 mip::FileEngine::Settings도 필요합니다. 이 개체는 고유한 엔진 식별자, mip::AuthDelegate 구현, 디버깅 또는 원격 분석에 사용할 수 있는 사용자 지정 가능한 클라이언트 데이터 및 필요에 따라 로캘을 저장합니다.

여기서는 애플리케이션 사용자의 ID를 사용하여 engineSettings 라는 FileEngine::Settings 개체를 만듭니다.

FileEngine::Settings engineSettings(
  mip::Identity(mUsername), // mip::Identity.
  authDelegateImpl,         // auth delegate object
  "",                       // Client data. Customizable by developer, stored with engine.
  "en-US",                  // Locale.
  false);                   // Load sensitive information types for driving classification.

이러한 방식으로 engineSettings를 만들 때는 다음을 통해 고유한 engineId를 명시적으로 설정하는 것이 중요합니다.

engineSettings.SetEngineId(engineId);

사용자 이름 또는 이메일을 사용하면 사용자가 서비스 또는 애플리케이션을 사용할 때마다 동일한 엔진이 로드되도록 할 수 있습니다.

사용자 지정 엔진 ID를 제공하는 것도 유효합니다.

FileEngine::Settings engineSettings(
  "myEngineId",     // string
  authDelegateImpl, // auth delegate object
  "",               // Client data in string format. Customizable by developer, stored with engine.
  "en-US",          // Locale. Default is en-US
  false);           // Load sensitive information types for driving classification. Default is false.

첫 번째 매개 변수 id는 엔진을 연결된 사용자에 쉽게 연결할 수 있도록 하는 것이 가장 좋습니다. 전자 메일 주소, UPN 또는 AAD 개체 GUID와 같이 ID가 고유하고 서비스를 호출하지 않고 로컬 상태에서 로드할 수 있습니다.

파일 엔진 추가

엔진을 추가하려면 프로필을 로드하는 데 사용되는 promise/future 패턴으로 돌아갑니다. 에 대한 mip::FileProfile약속을 만드는 대신 .mip::FileEngine

  //auto profile will be std::shared_ptr<mip::FileProfile>
  auto profile = profileFuture.get();

  // Instantiate the AuthDelegate implementation.
  auto authDelegateImpl = std::make_shared<sample::auth::AuthDelegateImpl>(appInfo, userName, password);

  //Create the FileEngine::Settings object
  FileEngine::Settings engineSettings("UniqueID", authDelegateImpl, "");

  //Create a promise for std::shared_ptr<mip::FileEngine>
  auto enginePromise = std::make_shared<std::promise<std::shared_ptr<mip::FileEngine>>>();

  //Instantiate the future from the promise
  auto engineFuture = enginePromise->get_future();

  //Add the engine using AddEngineAsync, passing in the engine settings and the promise
  profile->AddEngineAsync(engineSettings, enginePromise);

  //get the future value and store in std::shared_ptr<mip::FileEngine>
  auto engine = engineFuture.get();

위의 코드의 최종 결과는 인증된 사용자의 엔진이 프로필에 추가된다는 것입니다.

민감도 레이블 나열

이제 추가된 엔진을 사용하여 인증된 사용자가 사용할 수 있는 모든 민감도 레이블을 호출 engine->ListSensitivityLabels()하여 나열할 수 있습니다.

ListSensitivityLabels() 는 서비스에서 특정 사용자에 대한 레이블 및 해당 레이블의 특성 목록을 가져옵니다. 결과는 벡터에 std::shared_ptr<mip::Label>저장됩니다.

자세한 내용은 여기를 참조하세요mip::Label.

ListSensitivityLabels()

std::vector<shared_ptr<mip::Label>> labels = engine->ListSensitivityLabels();

또는 간소화된 기능:

auto labels = engine->ListSensitivityLabels();

이름을 인쇄하면 서비스에서 정책을 성공적으로 가져와서 레이블을 가져올 수 있음을 쉽게 표시할 수 있습니다. 레이블을 적용하려면 레이블 식별자가 필요합니다. 아래 코드는 모든 레이블을 반복하여 각 부모 및 자식 레이블에 name 대한 레이블과 해당 레이블을 id 표시합니다.

//Iterate through all labels in the vector
for (const auto& label : labels) {
  //Print label name and GUID
  cout << label->GetName() << " : " << label->GetId() << endl;

  //Print child label name and GUID
  for (const auto& child : label->GetChildren()) {
    cout << "->  " << child->GetName() <<  " : " << child->GetId() << endl;
  }
}

반환된 GetSensitivityLabels() 컬렉션 mip::Label 은 사용자가 사용할 수 있는 모든 레이블을 표시하는 데 사용할 수 있으며, 선택하면 ID를 사용하여 파일에 레이블을 적용할 수 있습니다.

다음 단계

이제 프로필이 로드되고 엔진이 추가되었으며 레이블이 있으므로 파일에서 레이블을 읽거나 쓰거나 제거하는 처리기를 추가할 수 있습니다. MIP SDK의 파일 처리기를 참조 하세요.