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éldakimenet
- 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éldakimenet
- 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á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.
- 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
- Az alkalmazás hitelesítést kér az AIP-vel.
- Az AIP megerősíti a hitelesítést
- Az alkalmazás sablonokat kér az AIP-től.
- Az AIP előre definiált sablonokat ad vissza.
- Az alkalmazás megkeresi a megadott helyet tartalmazó fájlt.
- 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:
A rendszer egy titkosítási módszer kiválasztását kéri.
A rendszer felkéri, hogy adja meg a védeni kívánt fájl elérési útját.
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).
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).
A jogosult felhasználóknak adható jogosultságok listájából választhat.
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