다음을 통해 공유


방법: 서비스 애플리케이션이 클라우드 기반 RMS를 사용할 수 있도록 설정

중요

2020년 3월 이전에 릴리스된 Microsoft Rights Management Service SDK 버전은 더 이상 사용되지 않습니다. 2020년 3월 릴리스를 사용하려면 이전 버전을 사용하는 애플리케이션을 업데이트해야 합니다. 자세한 내용은 사용 중단 알림을 참조하세요.

Microsoft Rights Management Service SDK에 대한 추가 개선 사항은 계획되지 않았습니다. 분류, 레이블 지정 및 보호 서비스에 Microsoft Information Protection SDK를 채택하는 것이 좋습니다.

이 항목에서는 Azure 권한 관리를 사용하도록 서비스 애플리케이션을 설정하는 단계를 간략하게 설명합니다. 자세한 내용은 Azure 권한 관리 시작을 참조하세요.

중요
Azure RMS와 함께 권한 관리 서비스 SDK 2.1 서비스 애플리케이션을 사용하려면 사용자 고유의 테넌트를 만들어야 합니다. 자세한 내용은 Azure RMS 요구 사항: Azure RMS를 지원하는 클라우드 구독을 참조하세요.

사전 요구 사항

Azure 권한 관리 서비스 연결

  • IpcInitialize를 호출합니다.

  • IpcSetGlobalProperty를 설정합니다.

    int mode = IPC_API_MODE_SERVER;
    IpcSetGlobalProperty(IPC_EI_API_MODE, &(mode));
    

    참고 자세한 내용은 API 보안 모드 설정을 참조하세요.

  • 다음 단계는 azure Rights Management Service의 연결 정보로 채워진 pcCredential(IPC_CREDENTIAL) 멤버를 사용하여 IPC_PROMPT_CTX구조의 인스턴스를 만들기 위한 설정입니다.

  • 대칭 키 서비스 ID 생성의 정보(이 항목의 앞부분에서 나열된 필수 구성 요소 참조)를 사용하여 IPC_CREDENTIAL_SYMMETRIC_KEY 구조의 인스턴스를 만들 때 wszServicePrincipal, wszBposTenantIdcbKey 매개 변수를 설정합니다.

참고 - 검색 서비스의 기존 조건으로 인해 북아메리카 지역에 거주하지 않는 경우 다른 지역의 대칭 키 자격 증명은 수락되지 않으므로 테넌트 URL을 직접 지정해야 합니다. 이 작업은 함수 IpcGetTemplateList 또는 IpcGetTemplateIssuerList에서 pConnectionInfo 매개 변수, 형식 IPC_CONNECTION_INFO 통해 수행됩니다.

대칭 키를 생성하고 필요한 정보 수집

대칭 키 생성 지침

참고 - Powershell cmdlet을 사용하려면 테넌트 관리자여야 합니다.

  • Powershell을 시작하고 다음 명령을 실행하여 키를 생성합니다.

    Import-Module MSOnline

    Connect-MsolService (관리자 자격 증명 입력)

    New-MsolServicePrincipal (표시 이름 입력)

  • 대칭 키를 생성한 후 키 자체와 AppPrincipalId를 포함하여 키에 대한 정보를 출력합니다.

    The following symmetric key was created as one was not supplied
    ZYbF/lTtwE28qplQofCpi2syWd11D83+A3DRlb2Jnv8=
    
    DisplayName : RMSTestApp
    ServicePrincipalNames : {7d9c1f38-600c-4b4d-8249-22427f016963}
    ObjectId : 0ee53770-ec86-409e-8939-6d8239880518
    AppPrincipalId : 7d9c1f38-600c-4b4d-8249-22427f016963
    

TenantBposIdUrl확인 지침

  • Azure RMS powershell 모듈을 설치합니다.

  • Powershell을 시작하고 다음 명령을 실행하여 테넌트의 RMS 구성을 가져옵니다.

    Import-Module AIPService

    Connect-AipService (관리자 자격 증명 입력)

    Get-AipServiceConfiguration

  • IPC_CREDENTIAL_SYMMETRIC_KEY 인스턴스를 만들고 몇 명의 멤버를 설정합니다.

    // Create a key structure.
    IPC_CREDENTIAL_SYMMETRIC_KEY symKey = {0};
    
    // Set each member with information from service creation.
    symKey.wszBase64Key = "your service principal key";
    symKey.wszAppPrincipalId = "your app principal identifier";
    symKey.wszBposTenantId = "your tenant identifier";
    

자세한 내용은 IPC_CREDENTIAL_SYMMETRIC_KEY 참조하세요.

  • IPC_CREDENTIAL_SYMMETRIC_KEY 인스턴스를 포함하는 IPC_CREDENTIAL 구조체의 인스턴스를 만듭니다.

    참고 - connectionInfo 멤버는 이전 Get-AipServiceConfiguration 호출의 URL로 설정되며 여기서 해당 필드 이름으로 설명됩니다.

    // Create a credential structure.
    IPC_CREDENTIAL cred = {0};
    
    IPC_CONNECTION_INFO connectionInfo = {0};
    connectionInfo.wszIntranetUrl = LicensingIntranetDistributionPointUrl;
    connectionInfo.wszExtranetUrl = LicensingExtranetDistributionPointUrl;
    
    // Set each member.
    cred.dwType = IPC_CREDENTIAL_TYPE_SYMMETRIC_KEY;
    cred.pcCertContext = (PCCERT_CONTEXT)&symKey;
    
    // Create your prompt control.
    IPC_PROMPT_CTX promptCtx = {0};
    
    // Set each member.
    promptCtx.cbSize = sizeof(IPC_PROMPT_CTX);
    promptCtx.hwndParent = NULL;
    promptCtx.dwflags = IPC_PROMPT_FLAG_SILENT;
    promptCtx.hCancelEvent = NULL;
    promptCtx.pcCredential = &cred;
    

템플릿 식별 후 암호화

  • 암호화에 사용할 템플릿을 선택합니다. 동일한 IPC_PROMPT_CTX 인스턴스를 전달하는 IpcGetTemplateList를 호출합니다.

    PCIPC_TIL pTemplates = NULL;
    IPC_TEMPLATE_ISSUER templateIssuer = (pTemplateIssuerList->aTi)[0];
    
    hr = IpcGetTemplateList(&(templateIssuer.connectionInfo),
           IPC_GTL_FLAG_FORCE_DOWNLOAD,
           0,
           &promptCtx,
           NULL,
           &pTemplates);
    
  • 이 항목의 앞부분에서 템플릿을 사용하여 IpcfEncrcyptFile을 호출하여 동일한 IPC_PROMPT_CTX 인스턴스를 전달합니다.

    IpcfEncrcyptFile 사용 예:

    LPCWSTR wszContentTemplateId = pTemplates->aTi[0].wszID;
    hr = IpcfEncryptFile(wszInputFilePath,
           wszContentTemplateId,
           IPCF_EF_TEMPLATE_ID,
           IPC_EF_FLAG_KEY_NO_PERSIST,
           &promptCtx,
           NULL,
           &wszOutputFilePath);
    

    IpcfDecryptFile 사용 예:

    hr = IpcfDecryptFile(wszInputFilePath,
           IPCF_DF_FLAG_DEFAULT,
           &promptCtx,
           NULL,
           &wszOutputFilePath);
    

이제 애플리케이션이 Azure 권한 관리를 사용할 수 있도록 설정하는 데 필요한 단계를 완료했습니다.