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 kimenet
- 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
- 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 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.
- 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
- Az alkalmazás hitelesítést kér az AIP szolgáltatáson keresztül.
- Az AIP megerősíti a hitelesítést
- Az alkalmazás sablonokat kér az AIP szolgáltatástól.
- Az alkalmazás visszaküldi az előre definiált sablonokat.
- Az alkalmazás megkeresi az adott helyen található fájlt.
- 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:
A rendszer egy titkosítási módszer kiválasztását kéri.
A rendszer a védendő fájl elérési útjának megadását kéri.
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).
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).
Kiválasztja egy listából azokat a jogosultságokat, amelyeket a hitelesített felhasználók kapnak.
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