Share via


Az alkalmazás fejlesztése

Fontos

A Microsoft Rights Management Service SDK 2020 márciusa előtt kiadott verziói elavultak; a korábbi verziókat használó alkalmazásokat frissíteni kell a 2020. márciusi kiadás használatához. További részletekért tekintse meg az elavulással kapcsolatos közleményt.

A Microsoft Rights Management Service SDK-hoz nem tervezünk további fejlesztéseket. Határozottan javasoljuk, hogy a besorolási, címkézési és védelmi szolgáltatásokhoz használja a Microsoft-információvédelem SDK-t.

Az alábbi példában egy egyszerű konzolalkalmazást hoz létre, amely együttműködik az Azure Information Protection szolgáltatással (AIP). A rendszer a védendő dokumentum elérési útját használja fel bemenetként, majd egy ad-hoc szabályzattal vagy Azure-sablonnal gondoskodik a dokumentum védelméről. Ezután a rendszer a bemenet alapján alkalmazza a megfelelő szabályzatokat, és létrehoz egy olyan dokumentumot, amelynek az információi védettek. A példában használandó mintakód Azure IP tesztalkalmazás néven található meg a GitHubon.

A mintaalkalmazás előfeltételei

  • Operációs rendszer: Windows 10, Windows 8, Windows 7, Windows Server 2008, Windows Server 2008 R2 vagy Windows Server 2012
  • Programozási nyelv: C# (a .NET-keretrendszer 3.0-s vagy újabb verziója)
  • Fejlesztői környezet: Visual Studio 2015 (vagy újabb verzió)

Az Azure-konfiguráció beállítása

Az Azure-konfiguráció alkalmazással történő használatának beállítása magában foglalja egy bérlői azonosító, egy szimmetrikus kulcs és az alkalmazás résztvevő-azonosítójának létrehozását.

Az Azure AD-bérlő konfigurálása

Az Azure Information Protection Azure AD környezetének konfigurálásához kövesse az Azure Information Protection védelmi szolgáltatás aktiválásával kapcsolatos útmutatást.

A szolgáltatás aktiválása után szükség van a PowerShell-összetevőkre a következő lépésekhez. Ehhez kövesse az Azure Information Protection védelmének felügyeletét a PowerShell használatával.

A bérlői azonosító beszerzése

  • Futtassa a PowerShellt rendszergazdaként.
  • Importálja az RMS-modult: Import-Module AIPService
  • Csatlakozzon a szolgáltatáshoz a hozzárendelt felhasználói hitelesítő adatokkal: Connect-AipService –Verbose
  • Gondoskodjon az RMS engedélyezéséről: enable-aipservice
  • Szerezze be a bérlő azonosítóját a(z) Get-AipServiceConfiguration futtatásával

Jegyezze fel a BPOSId (bérlő azonosítója) értéket. A későbbi lépésekben szüksége lesz rá.

Példa kimenetGet-AadrmConfiguration parancsmag kimenete

  • Bontsa a kapcsolatot a szolgáltatással: Disconnect-AipServiceService

A szolgáltatásnév létrehozása

Az alábbi lépések követésével hozhat létre egy szolgáltatásnevet:

A szolgáltatásnév olyan hitelesítő adat, amelynek hozzáférés-vezérlése globálisan konfigurált, és amely lehetővé teszi egy szolgáltatás Microsoft Azure AD-n keresztüli hitelesítését, valamint az információk védelmét a Microsoft Azure AD Rights Management használatával

  • Futtassa a PowerShellt rendszergazdaként
  • Importálja a Microsoft Azure AD modult a(z) Import-Module MSOnline használatával
  • Csatlakozzon az online szolgáltatáshoz a hozzárendelt felhasználói hitelesítő adatokkal: Connect-MsolService
  • Hozzon létre egy új szolgáltatásnevet a(z) New-MsolServicePrincipal futtatásával
  • Adja meg a szolgáltatásnévhez tartozó nevet

    Későbbi használat céljából jegyezze fel a szimmetrikus kulcsot és az alkalmazás résztvevő-azonosítóját.

Példakimenet: NewMsolServicePrincipal parancsmag kimenete

  • Adja hozzá az alkalmazás résztvevő-azonosítóját, a szimmetrikus kulcsot és a bérlő azonosítóját az alkalmazás App.config nevű fájljához.

Example App.config fileExample App.config file

  • A ClientID és a RedirectUri az alkalmazás Azure-ban való regisztrálásakor lesz elérhető. Az alkalmazás Azure-beli regisztrációjával, valamint a ClientID és a RedirectUri beszerzésével kapcsolatos további információért olvassa el Az Azure RMS beállítása az ADAL-hitelesítéshez című témakört.

A tervezés összefoglalása

Az alábbi ábra a létrehozandó alkalmazás architektúráját és folyamatábráját szemlélteti a következőkben ismertetett lépéseknek megfelelően. tervezés összegzése

  1. A felhasználói bemenetek:
    • A védendő fájl elérési útja
    • Sablon kiválasztása vagy ad-hoc szabályzat létrehozása
  2. Az alkalmazás hitelesítést kér az AIP szolgáltatáson keresztül.
  3. Az AIP megerősíti a hitelesítést
  4. Az alkalmazás sablonokat kér az AIP szolgáltatástól.
  5. Az alkalmazás visszaküldi az előre definiált sablonokat.
  6. Az alkalmazás megkeresi az adott helyen található fájlt.
  7. Az alkalmazás alkalmazza a fájlra az AIP védelmi szabályzatát.

A kód működése

Az Azure IP tesztalkalmazásban a megoldás első lépését az Iprotect.cs nevű fájl képezi. Ez egy C#-konzolalkalmazás, és minden egyéb AIP-kompatibilis alkalmazáshoz hasonlóan az MSIPC.dll nevű fájl betöltésével indíthatja a műveletet, ahogyan az a main() metódusban látható.

//Loads MSIPC.dll
SafeNativeMethods.IpcInitialize();
SafeNativeMethods.IpcSetAPIMode(APIMode.Server);

Az Azure-hoz való csatlakozáshoz szükséges paraméterek betöltése

//Loads credentials for the service principal from App.Config
SymmetricKeyCredential symmetricKeyCred = new SymmetricKeyCredential();
symmetricKeyCred.AppPrincipalId = ConfigurationManager.AppSettings["AppPrincipalId"];
symmetricKeyCred.Base64Key = ConfigurationManager.AppSettings["Base64Key"];
symmetricKeyCred.BposTenantId = ConfigurationManager.AppSettings["BposTenantId"];

Miután megadja a fájl elérési útját a konzolalkalmazásban, az alkalmazás ellenőrzi, hogy a dokumentum titkosított-e. A metódus osztálya: SafeFileApiNativeMethods.

var checkEncryptionStatus = SafeFileApiNativeMethods.IpcfIsFileEncrypted(filePath);

Ha a dokumentum nem titkosított, az alkalmazás elvégzi a titkosítást a megjelenő rendszerüzenetben kiválasztott módszerrel.

if (!checkEncryptionStatus.ToString().ToLower().Contains(alreadyEncrypted))
{
  if (method == EncryptionMethod1)
  {
    //Encrypt a file via AIP template
    ProtectWithTemplate(symmetricKeyCred, filePath);

  }
  else if (method == EncryptionMethod2)
  {
    //Encrypt a file using ad-hoc policy
    ProtectWithAdHocPolicy(symmetricKeyCred, filePath);
  }
}

A sablonalapú védelem kiválasztásakor a rendszer beolvassa a sablonlistát a kiszolgálóról, majd felajánlja a felhasználónak a választás lehetőségét.

Ha Ön nem módosította a sablonokat, a rendszer az alapértelmezett sablonokat olvassa be az AIP szolgáltatásból

public static void ProtectWithTemplate(SymmetricKeyCredential symmetricKeyCredential, string filePath)
{
  // Gets the available templates for this tenant
  Collection<TemplateInfo> templates = SafeNativeMethods.IpcGetTemplateList(null, false, true,
      false, true, null, null, symmetricKeyCredential);

  //Requests tenant template to use for encryption
  Console.WriteLine("Please select the template you would like to use to encrypt the file.");

  //Outputs templates available for selection
  int counter = 0;
  for (int i = 0; i < templates.Count; i++)
  {
    counter++;
    Console.WriteLine(counter + ". " + templates.ElementAt(i).Name + "\n" +
        templates.ElementAt(i).Description);
  }

  //Parses template selection
  string input = Console.ReadLine();
  int templateSelection;
  bool parseResult = Int32.TryParse(input, out templateSelection);

  //Returns error if no template selection is entered
  if (parseResult)
  {
    //Ensures template value entered is valid
    if (0 < templateSelection && templateSelection <= counter)
    {
      templateSelection -= templateSelection;

      // Encrypts the file using the selected template
      TemplateInfo selectedTemplateInfo = templates.ElementAt(templateSelection);

      string encryptedFilePath = SafeFileApiNativeMethods.IpcfEncryptFile(filePath,
          selectedTemplateInfo.TemplateId,
          SafeFileApiNativeMethods.EncryptFlags.IPCF_EF_FLAG_KEY_NO_PERSIST, true, false, true, null,
          symmetricKeyCredential);
    }
  }
}

Az ad-hoc szabályzat kiválasztásakor az alkalmazás felhasználójának meg kell adnia a megfelelő jogosultságot kapó személyek e-mail-címeit. Ebben a szakaszban a licenc létrehozása az IpcCreateLicenseFromScratch() metódussal történik, és a rendszer alkalmazza a sablonra az új szabályzatot.

if (issuerDisplayName.Trim() != "")
{
  // Gets the available issuers of rights policy templates.
  // The available issuers is a list of RMS servers that this user has already contacted.
  try
  {
    Collection<TemplateIssuer> templateIssuers = SafeNativeMethods.IpcGetTemplateIssuerList(
                                                    null,
                                                    true,
                                                    false,
                                                    false, true, null, symmetricKeyCredential);

    // Creates the policy and associates the chosen user rights with it
    SafeInformationProtectionLicenseHandle handle = SafeNativeMethods.IpcCreateLicenseFromScratch(
                                                        templateIssuers.ElementAt(0));
    SafeNativeMethods.IpcSetLicenseOwner(handle, owner);
    SafeNativeMethods.IpcSetLicenseUserRightsList(handle, userRights);
    SafeNativeMethods.IpcSetLicenseDescriptor(handle, new TemplateInfo(null, CultureInfo.CurrentCulture,
                                                            policyName,
                                                            policyDescription,
                                                            issuerDisplayName,
                                                            false));

    //Encrypts the file using the ad hoc policy
    string encryptedFilePath = SafeFileApiNativeMethods.IpcfEncryptFile(
                                    filePath,
                                    handle,
                                    SafeFileApiNativeMethods.EncryptFlags.IPCF_EF_FLAG_KEY_NO_PERSIST,
                                    true,
                                    false,
                                    true,
                                    null,
                                    symmetricKeyCredential);
    }
}

Felhasználói interakciós példa

Miután a létrehozás és a végrehajtás megtörtént, az alkalmazás kimenetei az alábbiakhoz hasonlóak lesznek:

  1. A rendszer egy titkosítási módszer kiválasztását kéri. alkalmazáskimenet – 1. lépés

  2. A rendszer a védendő fájl elérési útjának megadását kéri. alkalmazás kimenete – 2. lépés

  3. A rendszer a licenctulajdonos e-mail-címének megadását kéri (a tulajdonosnak globális rendszergazdai jogosultsággal kell rendelkeznie az Azure AD-bérlőn). alkalmazás kimenete – 3. lépés

  4. Megadja azoknak a felhasználóknak az e-mail-címeit, akik jogosultságot kapnak a fájl eléréséhez (az e-mail-címeket szóközzel válassza el). alkalmazás kimenete – 4. lépés

  5. Kiválasztja egy listából azokat a jogosultságokat, amelyeket a hitelesített felhasználók kapnak. alkalmazáskimenet – 5. lépés

  6. Végül meg kell adnia néhány házirend-metaadatot: szabályzat neve, leírása és kiállítója (Azure AD Bérlő) megjelenítendő név alkalmazás kimenete – 6. lépés