Megosztás a következőn keresztül:


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ásról szóló közleményt.

A Microsoft Rights Management Service SDK-hoz nem terveznek további fejlesztéseket. Határozottan javasoljuk a Microsoft Information Protection SDK bevezetését besorolási, címkézési és védelmi szolgáltatásokhoz.

Ebben a példában egy egyszerű konzolalkalmazást fog létrehozni, amely az Azure Information Protection szolgáltatással (AIP) kommunikál. A védelemhez a dokumentum elérési útját kell megadnia, majd egy alkalmi szabályzattal vagy Egy Azure-sablonnal védenie kell. Az alkalmazás ezután a bemeneteknek megfelelően alkalmazza a megfelelő szabályzatokat, és létrehoz egy védett dokumentumot. A használni kívánt mintakód az Azure IP-tesztalkalmazás , amely a GitHubon található.

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# (.NET-keretrendszer 3.0 vagy újabb)
  • Fejlesztői környezet: Visual Studio 2015 (és újabb verziók)

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

Ahhoz, hogy az Azure be legyen állítva ehhez az alkalmazáshoz, létre kell hoznia egy bérlőazonosítót, egy szimmetrikus kulcsot és egy alkalmazásnév-azonosítót.

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

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

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

Bérlőazonosító lekérése

  • Rendszergazdaként futtassa a PowerShellt.
  • 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
  • Győződjön meg arról, hogy az RMS engedélyezve van: enable-aipservice
  • A bérlőazonosító lekérése a következő futtatásával: Get-AipServiceConfiguration

Jegyezze fel a BPOSId (bérlőazonosító) értéket. A jövőbeli lépésekben szüksége lesz rá.

PéldakimenetGet-AadrmConfiguration parancsmag kimenete

  • Válassza le a szolgáltatást: Disconnect-AipServiceService

Szolgáltatásnév létrehozása

A szolgáltatásnév létrehozásához kövesse az alábbi lépéseket:

A szolgáltatásnév a hozzáférés-vezérléshez globálisan konfigurált hitelesítő adatok, amelyek lehetővé teszik a szolgáltatás számára a Microsoft Azure AD-vel való hitelesítést és az információk védelmét a Microsoft Azure AD Rights Management használatával

  • Rendszergazdaként futtassa a PowerShellt
  • Importálja a Microsoft Azure AD-modult a következő használatával: Import-Module MSOnline
  • 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 következő futtatásával: New-MsolServicePrincipal
  • Adja meg a szolgáltatásnév nevét

    Jegyezze fel a szimmetrikus kulcsot és az alkalmazásnév azonosítóját későbbi használatra.

PéldakimenetNewMsolServicePrincipal parancsmag kimenete

  • Adja hozzá az alkalmazás egyszerű azonosítóját, szimmetrikus kulcsát és bérlőazonosítóját az alkalmazás App.config fájljához.

Példa App.config fájlraPélda App.config fájlra

  • A ClientID és a RedirectUri az alkalmazás Azure-ban való regisztrálásakor lesz elérhető. Az alkalmazás Azure-ban való regisztrálásáról, valamint a ClientID és a RedirectUri beszerzéséről további információt az Azure RMS konfigurálása ADAL-hitelesítéshez című témakörben talál.

A tervezés összefoglalása

Az alábbi ábra a létrehozott alkalmazás architektúráját és folyamatait mutatja be, az alábbi lépésekben. tervezés összefoglalása

  1. A felhasználói bemenetek:
    • A védeni kívánt fájl elérési útja
    • Sablon kiválasztása vagy alkalmi szabályzat létrehozása
  2. Az alkalmazás hitelesítést kér az AIP-vel.
  3. Az AIP megerősíti a hitelesítést
  4. Az alkalmazás sablonokat kér az AIP-től.
  5. Az AIP előre definiált sablonokat ad vissza.
  6. Az alkalmazás megkeresi a megadott helyet tartalmazó fájlt.
  7. Az alkalmazás az AIP védelmi szabályzatot alkalmazza a fájlra.

A kód működése

Az Azure IP Test mintában a megoldás a Iprotect.cs fájllal kezdődik. Ez egy C#-konzolalkalmazás, és a többi AIP-kompatibilis alkalmazáshoz hasonlóan a MSIPC.dll a metódusban main() látható módon kezdi betölteni.

//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"];

Amikor megadja a fájl elérési útját a konzolalkalmazásban, az alkalmazás ellenőrzi, hogy a dokumentum már titkosítva van-e. A metódus a SafeFileApiNativeMethods osztály.

var checkEncryptionStatus = SafeFileApiNativeMethods.IpcfIsFileEncrypted(filePath);

Ha a dokumentum nincs titkosítva, a dokumentum titkosítása az üzenetben megadott kijelöléssel folytatódik.

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 lehetőség tovább folytatódik, hogy lekérje a sablonlistát a kiszolgálóról, és megadja a felhasználónak a kiválasztandó lehetőséget.

Ha nem módosította a sablonokat, akkor az AIP-től kap alapértelmezett sablonokat

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);
    }
  }
}

Ha alkalmi szabályzatot választ, az alkalmazás felhasználójának meg kell adnia a jogosultságokkal rendelkező személyek e-mailjeit. Ebben a szakaszban a licenc az IpcCreateLicenseFromScratch() metódussal jön létre, és alkalmazza az új szabályzatot a sablonra.

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);
    }
}

Példa felhasználói beavatkozásra

Miután minden elkészült és végrehajtható, az alkalmazás kimenetének a következőképpen kell kinéznie:

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

  2. A rendszer felkéri, hogy adja meg a védeni kívánt fájl elérési útját. alkalmazás kimenete – 2. lépés

  3. A rendszer kérni fogja, hogy adja meg a licenctulajdonos e-mail-címét (ennek a tulajdonosnak globális rendszergazdai jogosultságokkal kell rendelkeznie az Azure AD-bérlőn). alkalmazás kimenete – 3. lépés

  4. Meg kell adnia azon felhasználók e-mail-címét, akik hozzáférhetnek a fájlhoz (az e-maileket szóközzel kell elválasztani). alkalmazás kimenete – 4. lépés

  5. A jogosult felhasználóknak adható jogosultságok listájából választhat. alkalmazás kimenete – 5. lépés

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