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();
레이블 및 ID 인쇄
이름을 인쇄하면 서비스에서 정책을 성공적으로 가져와서 레이블을 가져올 수 있음을 쉽게 표시할 수 있습니다. 레이블을 적용하려면 레이블 식별자가 필요합니다. 아래 코드는 모든 레이블을 반복하여 각 부모 및 자식 레이블에 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의 파일 처리기를 참조 하세요.