다음을 통해 공유


Microsoft Purview Information Protection SDK에서 검사 액세스

규정 준수 포털에 정의된 정보 권한 관리 권한의 적용은 애플리케이션 개발자의 책임입니다. SDK는 이러한 액세스 검사 간소화하기 위한 API 및 열거자 집합을 제공합니다.

아래 예제와 표에서는 액세스 검사 필요한 시나리오, 검사 대한 권한 목록 및 검사 수행하는 방법을 보여 줍니다.

권한 목록 및 결과

사용 권한 및 설명의 전체 목록은 Azure Information Protection대한 사용 권한 구성을 참조하세요. 이 문서에서는 특정 권한이 있거나 없는 경우 권한 적용 및 사용 기능에서 애플리케이션 개발자의 책임을 정의합니다.

Important

검사 권한을 적용하는 것은 애플리케이션 개발자의 신뢰도입니다. 검사 수행하지 않으면 데이터가 손실될 수 있습니다.

시나리오

애플리케이션에서 액세스 검사 수행하는 위치와 방법은 빌드하는 애플리케이션 유형에 따라 달라집니다. 전체 파일 출력을 처리하고 사용자 인터페이스가 없는 애플리케이션은 이 또는 OWNER 권한을 가장 자주 사용합니다EXTRACT. 사용자 인터페이스가 있는 애플리케이션에는 대부분의 세분화된 컨트롤이 필요하며, 사용자 컨트롤에 대한 액세스를 차단하고 애플리케이션에서 경로를 내보냅니다. 코드 예제는 액세스 검사 수행 섹션을 참조하세요.

사용자 인터페이스가 없는 애플리케이션

사용자 인터페이스가 없는 애플리케이션은 종종 서비스 기반 또는 CLI(명령줄 인터페이스)입니다. 애플리케이션이 Purview Information Protection으로 보호되는 파일을 처리하는 경우 올바른 권한이 없는 사용자가 서비스 또는 CLI를 사용하여 보호되지 않은 형식으로 파일을 내보낼 수 없도록 해야 합니다 .

이러한 애플리케이션은 OWNER 또는 EXTRACT 권한이 있는지 확인해야 합니다. OWNER를 가진 사용자는 모든 작업을 수행할 수 있습니다. EXTRACT를 사용하는 사용자는 보호를 직접 제거하거나 해당 형식이 보호를 지원하지 않는 경우에도 새 형식으로 저장할 수 있습니다.

사용자 인터페이스가 있는 애플리케이션

사용자 인터페이스가 있는 파일 SDK 애플리케이션은 사용자가 수행할 수 없는 작업에 대한 액세스를 제한하는 컨트롤을 구현해야 합니다. 이러한 애플리케이션의 한 가지 예는 Azure Information Protection 뷰어입니다. 뷰어는 일시적으로 파일의 암호를 해독하고 애플리케이션 창에서 콘텐츠를 렌더링합니다. 문서를 표시하기 전에 세분화된 액세스 검사 수행하고 액세스 검사 결과에 따라 사용자 인터페이스 요소를 사용하지 않도록 설정합니다.

액세스 검사 수행하는 부분 워크플로는 다음과 같습니다.

  • 사용자에게 OWNER 권한이 있나요? 그렇다면 모든 컨트롤을 사용하도록 설정하고 다른 권한 처리를 중지합니다.
  • 사용자에게 PRINT 권한이 있나요? 그렇다면 인쇄 컨트롤을 사용하도록 설정합니다. 그렇지 않은 경우 인쇄 컨트롤을 사용하지 않도록 설정합니다.
  • 사용자에게 EXPORT 권한이 있나요? 그렇다면 내보내기 컨트롤 및 UI 요소를 사용하도록 설정합니다. 그렇지 않은 경우 이러한 요소를 사용하지 않도록 설정합니다.
  • 사용자에게 EXTRACT 권한이 있나요? 그렇다면 복사 및 스크린샷을 사용하도록 설정합니다. 그렇지 않은 경우 이러한 함수를 사용하지 않도록 설정합니다.
  • 사용자에게 EDIT 권한이 있나요? 그렇다면 현재 항목을 편집하고 저장할 수 있습니다. 그렇지 않은 경우 항목을 읽기 전용으로 만듭니다.

이러한 검사 VIEW 권한을 제외하고 권한 목록 및 결과 테이블의 모든 권한에 대해 수행해야 합니다. 이 권한이 없으면 파일에 액세스할 수 없습니다.

액세스 검사 수행

액세스 검사 수행하는 패턴은 C++, .NET 및 Java용 파일 및 보호 SDK에서 유사합니다.

이러한 코드 샘플에서는 SDK를 초기화하는 단계를 거쳤으며 엔진 및 처리기를 인스턴스화한 것으로 가정합니다.

.NET을 사용하여 파일 SDK에서 액세스 검사 수행

이 코드 조각은 FileHandler가 생성되었다고 가정하고 유효한 파일을 가리킵니다.

// Validate that the file referred to by the FileHandler is protected.
if(handler.Protection != null)
{                
    // Validate that user has rights to remove protection from the file.                    
    if(handler.Protection.AccessCheck(Rights.Extract))
    {
        // If user has Extract right, remove protection and commit the change. Otherwise, throw exception. 
        handler.RemoveProtection();
        bool result = handler.CommitAsync(outputPath).GetAwaiter().GetResult();     
        return result;   
    }
    else
    {
        throw new Microsoft.InformationProtection.Exceptions.AccessDeniedException("User lacks EXPORT right.");
    }
}

.NET을 사용하여 보호 SDK에서 액세스 검사 수행

이 코드 조각은 ProtectionHandler가 사용되도록 만들어졌다고 가정합니다.

// Validate that the file referred to by the FileHandler is protected.
if(protectionHandler != null)
{                
    // Validate that user has rights to remove protection from the file.                    
    if(protectionHandler.AccessCheck(Rights.Print))
    {
        // If the user has the print right, enable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(true);
    }
    else
    {
        // If the user does not have the print right, disable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(false);
    }
}

C++를 사용하여 파일 SDK에서 액세스 검사 수행

이 코드 조각은 FileHandler가 생성되었다고 가정하고 유효한 파일을 가리킵니다.

// Validate that the file referred to by the FileHandler is protected.
if (fileHandler->GetProtection() != nullptr)
{
    if (fileHandler->GetProtection()->AccessCheck(mip::rights::Extract()))
    {
        auto commitPromise = std::make_shared<std::promise<bool>>();
        auto commitFuture = commitPromise->get_future();
        fileHandler->RemoveProtection();
        fileHandler->CommitAsync(outputFile, commitPromise);
        result = commitFuture.get();
    }
    else
    {
        throw std::runtime_error("User doesn't have EXTRACT right.");
    }
}

C++를 사용하여 보호 SDK에서 액세스 검사 수행

이 코드 조각은 ProtectionHandler가 사용되도록 만들어졌다고 가정합니다.

// Validate that the file referred to by the FileHandler is protected.
if (protectionHandler != nullptr)
{
    if (protectionHandler->AccessCheck(mip::rights::Print()))
    {
        // If the user has the print right, enable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(true);
    }
    else
    {
        // If the user does not have the print right, disable the control.
        // SetPrintControlEnabled() is an example and not a MIP SDK function.  
        SetPrintControlEnabled(false);
    }
}

다음 단계

액세스 검사 올바르게 수행하고 해당 검사 관련된 권한을 적용하는 방법을 알아보려면 파일 처리기 개념을 계속 사용하여 파일에서 보호를 제거하는 방법에 대해 자세히 알아보세요.