JEA szerepkör-képességekJEA Role Capabilities

JEA-végpont létrehozásakor meg kell adnia egy vagy több szerepkör-funkciót, amely leírja, hogy mit tehet valaki egy JEA-munkamenetben.When creating a JEA endpoint, you need to define one or more role capabilities that describe what someone can do in a JEA session. A szerepkör-képesség egy PowerShell-adatfájl, .psrc amely tartalmazza az összes olyan parancsmagot, funkciót, szolgáltatót és külső programot, amelyet a felhasználók összekapcsolásához elérhetővé tettek.A role capability is a PowerShell data file with the .psrc extension that lists all the cmdlets, functions, providers, and external programs that are made available to connecting users.

Az engedélyezni kívánt parancsok meghatározásaDetermine which commands to allow

A szerepkör-képesség fájl létrehozásának első lépéseként meg kell fontolni, hogy mire van szükségük a felhasználóknak a használatához.The first step in creating a role capability file is to consider what the users need access to. A követelmények gyűjtésének folyamata eltarthat egy ideig, de ez egy fontos folyamat.The requirements gathering process can take a while, but it's an important process. Ahhoz, hogy a felhasználók a túl kevés parancsmaghoz és funkcióhoz hozzáférjenek, meggátolhatja a feladatok elvégzését.Giving users access to too few cmdlets and functions can prevent them from getting their job done. A túl sok parancsmaghoz és funkcióhoz való hozzáférés engedélyezése lehetővé teszi a felhasználók számára, hogy a kívántnál nagyobb mennyiségű, és gyengítse a biztonsági irányvonalat.Allowing access to too many cmdlets and functions can allow users to do more than you intended and weaken your security stance.

A folyamat menete a szervezettől és a céloktól függ.How you go about this process depends on your organization and goals. A következő tippek segíthetnek a megfelelő elérési úton.The following tips can help ensure you're on the right path.

  1. Azonosítsa azokat a parancsokat, amelyeket a felhasználók a feladatok elvégzéséhez használnak.Identify the commands users are using to get their jobs done. Ez magában foglalhatja az informatikai munkatársak felmérését, az automatizálási parancsfájlok ellenőrzését, illetve a PowerShell-munkamenetek átiratának és naplófájljainak elemzését.This may involve surveying IT staff, checking automation scripts, or analyzing PowerShell session transcripts and logs.
  2. A legjobb naplózási és JEA testreszabási élmény érdekében frissítse a parancssori eszközök használatát a PowerShell-lel egyenértékűként.Update use of command-line tools to PowerShell equivalents, where possible, for the best auditing and JEA customization experience. A külső programok nem állíthatók be részletesen a JEA natív PowerShell-parancsmagjai és funkciói.External programs can't be constrained as granularly as native PowerShell cmdlets and functions in JEA.
  3. Korlátozza a parancsmagok hatókörét, hogy csak bizonyos paramétereket vagy paramétereket engedélyezzen.Restrict the scope of the cmdlets to only allow specific parameters or parameter values. Ez különösen akkor fontos, ha a felhasználóknak csak a rendszer egy részét kell kezelnie.This is especially important if users should manage only part of a system.
  4. Hozzon létre egyéni függvényeket a JEA-ben nehéznek bizonyuló összetett parancsok vagy parancsok cseréjéhez.Create custom functions to replace complex commands or commands that are difficult to constrain in JEA. Egy egyszerű függvény, amely egy összetett parancsot csomagol vagy további érvényesítési logikát alkalmaz, további vezérlést biztosíthat a rendszergazdák és a végfelhasználók egyszerűsége érdekében.A simple function that wraps a complex command or applies additional validation logic can offer additional control for admins and end-user simplicity.
  5. Tesztelje az engedélyezett parancsok hatókörű listáját a felhasználókkal vagy az Automation szolgáltatásokkal, és szükség esetén módosítsa azokat.Test the scoped list of allowable commands with your users or automation services, and adjust as necessary.

Példák a potenciálisan veszélyes parancsokraExamples of potentially dangerous commands

A parancsok körültekintő kiválasztása fontos annak biztosítása érdekében, hogy a JEA-végpont ne engedélyezze a felhasználónak az engedélyeik kiterjesztését.Careful selection of commands is important to ensure the JEA endpoint doesn't allow the user to elevate their permissions.

Fontos

A JEA-munkamenet felhasználói successCommands szükséges alapvető információk gyakran emelt szintű jogosultságokkal futnak.Essential information required for user successCommands in a JEA session are often run with elevated privileges.

A következő táblázat példákat tartalmaz olyan parancsokra, amelyek rosszindulatúan használhatók, ha nem korlátozott állapotban engedélyezettek.The following table contains examples of commands that can be used maliciously if allowed in an unconstrained state. Ez a lista nem teljes, és csak figyelmeztető kiindulási pontként használható.This isn't an exhaustive list and should only be used as a cautionary starting point.

KockázatRisk PéldaExample Kapcsolódó parancsokRelated commands
A felhasználó rendszergazdai jogosultságának megadása a JEA megkerüléséhezGranting the connecting user admin privileges to bypass JEA Add-LocalGroupMember -Member 'CONTOSO\jdoe' -Group 'Administrators' Add-ADGroupMember, Add-LocalGroupMember, net.exe, dsadd.exeAdd-ADGroupMember, Add-LocalGroupMember, net.exe, dsadd.exe
Tetszőleges programkód, például kártevők, biztonsági rések vagy egyéni parancsfájlok futtatása a védelem megkerüléséhezRunning arbitrary code, such as malware, exploits, or custom scripts to bypass protections Start-Process -FilePath '\\san\share\malware.exe' Start-Process, New-Service, Invoke-Item, Invoke-WmiMethod, Invoke-CimMethod, Invoke-Expression, Invoke-Command, New-ScheduledTask, Register-ScheduledJobStart-Process, New-Service, Invoke-Item, Invoke-WmiMethod, Invoke-CimMethod, Invoke-Expression, Invoke-Command, New-ScheduledTask, Register-ScheduledJob

Szerepkör-képesség fájl létrehozásaCreate a role capability file

A New-PSRoleCapabilityFile parancsmaggal létrehozhat egy új PowerShell szerepkör-képesség fájlt.You can create a new PowerShell role capability file with the New-PSRoleCapabilityFile cmdlet.

New-PSRoleCapabilityFile -Path .\MyFirstJEARole.psrc

Az eredményül kapott szerepkör-képesség fájlt úgy kell módosítani, hogy engedélyezze a szerepkörhöz szükséges parancsokat.The resulting role capability file should be edited to allow the commands required for the role. A PowerShell súgójának dokumentációja több példát is tartalmaz a fájl konfigurálására.The PowerShell help documentation contains several examples of how you can configure the file.

PowerShell-parancsmagok és függvények engedélyezéseAllowing PowerShell cmdlets and functions

Ha engedélyezni szeretné, hogy a felhasználók PowerShell-parancsmagokat vagy függvényeket futtassanak, adja hozzá a parancsmagot vagy a függvény nevét a VisibleCmdlets vagy a VisibleFunctions mezőhöz.To authorize users to run PowerShell cmdlets or functions, add the cmdlet or function name to the VisibleCmdlets or VisibleFunctions fields. Ha nem biztos abban, hogy egy parancs parancsmag vagy függvény, futtathatja a Get-Command <name> kimenetben, és megtekintheti a CommandType tulajdonságot.If you aren't sure whether a command is a cmdlet or function, you can run Get-Command <name> and check the CommandType property in the output.

VisibleCmdlets = 'Restart-Computer', 'Get-NetIPAddress'

Előfordulhat, hogy egy adott parancsmag vagy függvény hatóköre túl széles a felhasználói igények kielégítéséhez.Sometimes the scope of a specific cmdlet or function is too broad for your users' needs. A DNS-rendszergazda például valószínűleg csak a DNS-szolgáltatás újraindításához van szükség.A DNS admin, for example, probably only needs access to restart the DNS service. A több-bérlős környezetekben a bérlők hozzáférhetnek az önkiszolgáló felügyeleti eszközökhöz.In multi-tenant environments, tenants have access to self-service management tools. A bérlőket a saját erőforrásaik kezelésére kell korlátozni.Tenants should be limited to managing their own resources. Ilyen esetekben korlátozhatja, hogy mely paraméterek legyenek elérhetők a parancsmagból vagy a függvényből.For these cases, you can restrict which parameters are exposed from the cmdlet or function.

VisibleCmdlets = @{ Name = 'Restart-Computer'; Parameters = @{ Name = 'Name' }}

A fejlettebb forgatókönyvek esetében előfordulhat, hogy korlátozni kell azokat az értékeket is, amelyeket a felhasználók használhatnak ezekkel a paraméterekkel.In more advanced scenarios, you may also need to restrict the values a user may use with these parameters. A szerepkör-képességek lehetővé teszik értékek vagy reguláris kifejezési minta definiálását, amely meghatározza, hogy milyen bevitelre van lehetőség.Role capabilities let you define a set of values or a regular expression pattern that determine what input is allowed.

VisibleCmdlets = @{ Name = 'Restart-Service'; Parameters = @{ Name = 'Name'; ValidateSet = 'Dns', 'Spooler' }},
                 @{ Name = 'Start-Website'; Parameters = @{ Name = 'Name'; ValidatePattern = 'HR_*' }}

Megjegyzés

A Common PowerShell-paraméterek mindig engedélyezve vannak, még akkor is, ha korlátozza az elérhető paramétereket.The common PowerShell parameters are always allowed, even if you restrict the available parameters. Ezeket a paramétereket a parameters (paraméterek) mezőben nem szabad explicit módon listázni.You should not explicitly list them in the Parameters field.

Az alábbi táblázat ismerteti a látható parancsmagok vagy függvények testreszabásának különböző módszereit.The table below describes the various ways you can customize a visible cmdlet or function. A VisibleCmdlets mezőben a lent láthatók közül bármelyiket összekeverheti és egyeztetheti.You can mix and match any of the below in the VisibleCmdlets field.

PéldaExample Használati esetUse case
'My-Func' vagy @{ Name = 'My-Func' }'My-Func' or @{ Name = 'My-Func' } Lehetővé teszi, hogy a felhasználó a My-Func Paraméterek korlátozása nélkül fusson.Allows the user to run My-Func without any restrictions on the parameters.
'MyModule\My-Func' Lehetővé teszi a felhasználó számára, hogy a My-Func MyModule Paraméterek korlátozása nélkül fusson a modulból.Allows the user to run My-Func from the module MyModule without any restrictions on the parameters.
'My-*' Lehetővé teszi, hogy a felhasználó bármely parancsmagot vagy függvényt futtasson a művelettel My .Allows the user to run any cmdlet or function with the verb My.
'*-Func' Lehetővé teszi, hogy a felhasználó bármilyen parancsmagot vagy függvényt futtasson a főnévi kapcsolatban Func .Allows the user to run any cmdlet or function with the noun Func.
@{ Name = 'My-Func'; Parameters = @{ Name = 'Param1'}, @{ Name = 'Param2' }} Lehetővé teszi, hogy a felhasználó My-Func a Param1 és Param2 a paraméterekkel fusson.Allows the user to run My-Func with the Param1 and Param2 parameters. A paraméterekhez bármilyen értéket megadhat.Any value can be supplied to the parameters.
@{ Name = 'My-Func'; Parameters = @{ Name = 'Param1'; ValidateSet = 'Value1', 'Value2' }} Lehetővé teszi, hogy a felhasználó My-Func a Param1 paraméterrel fusson.Allows the user to run My-Func with the Param1 parameter. Csak a "érték1" és a "érték2" adható meg a paraméterhez.Only "Value1" and "Value2" can be supplied to the parameter.
@{ Name = 'My-Func'; Parameters = @{ Name = 'Param1'; ValidatePattern = 'contoso.*' }} Lehetővé teszi, hogy a felhasználó My-Func a Param1 paraméterrel fusson.Allows the user to run My-Func with the Param1 parameter. A "contoso" kezdetű értékek a paraméterhez is megadhatók.Any value starting with "contoso" can be supplied to the parameter.

Figyelmeztetés

A legjobb biztonsági gyakorlatok esetében nem ajánlott helyettesítő karaktereket használni a látható parancsmagok vagy függvények definiálásához.For best security practices, it is not recommended to use wildcards when defining visible cmdlets or functions. Ehelyett explicit módon fel kell sorolnia az egyes megbízható parancsokat, hogy az azonos elnevezési sémával rendelkező más parancsok ne legyenek szándékosan engedélyezve.Instead, you should explicitly list each trusted command to ensure no other commands that share the same naming scheme are unintentionally authorized.

ValidatePattern és ValidateSet nem alkalmazható ugyanarra a parancsmagra vagy függvényre.You can't apply both a ValidatePattern and ValidateSet to the same cmdlet or function.

Ha így tesz, a ValidatePattern felülbírálja a ValidateSet.If you do, the ValidatePattern overrides the ValidateSet.

A ValidatePatternkapcsolatos további információkért tekintse meg a következőt: Hey, Scripting Guy! post és a PowerShell reguláris kifejezések hivatkozási tartalma.For more information about ValidatePattern, check out this Hey, Scripting Guy! post and the PowerShell Regular Expressions reference content.

Külső parancsok és PowerShell-parancsfájlok engedélyezéseAllowing external commands and PowerShell scripts

Annak engedélyezéséhez, hogy a felhasználók végrehajtható fájlokat és PowerShell-parancsfájlokat (. ps1) futtassanak egy JEA-munkamenetben, hozzá kell adnia a VisibleExternalCommands mezőben szereplő összes program teljes elérési útját.To allow users to run executables and PowerShell scripts (.ps1) in a JEA session, you have to add the full path to each program in the VisibleExternalCommands field.

VisibleExternalCommands = 'C:\Windows\System32\whoami.exe', 'C:\Program Files\Contoso\Scripts\UpdateITSoftware.ps1'

Ha lehetséges, a PowerShell-parancsmag vagy a függvény egyenértékű funkciójának használata bármely olyan külső végrehajtható fájlhoz, amelyet Ön engedélyez, mivel a PowerShell-parancsmagokkal és-függvényekkel engedélyezett paramétereket szabályozhatja.Where possible, to use PowerShell cmdlet or function equivalents for any external executables you authorize since you have control over the parameters allowed with PowerShell cmdlets and functions.

Számos végrehajtható fájl lehetővé teszi az aktuális állapot olvasását, majd a különböző paraméterek megadásával történő módosítását.Many executables allow you to read the current state and then change it by providing different parameters.

Vegyünk például egy olyan fájlkiszolgáló-rendszergazda szerepkörét, amely felügyeli a rendszeren tárolt hálózati megosztásokat.For example, consider the role of a file server admin that manages network shares hosted on a system. A megosztások kezelésének egyik módja a használata net share .One way of managing shares is to use net share. A net.exe engedélyezése azonban veszélyes, mert a felhasználó a paranccsal rendszergazdai jogosultságokat szerezhet a alkalmazással net group Administrators unprivilegedjeauser /add .However, allowing net.exe is dangerous because the user could use the command to gain admin privileges with net group Administrators unprivilegedjeauser /add. A biztonságosabb megoldás a Get-SmbShareengedélyezése, amely ugyanazt az eredményt éri el, de sokkal korlátozottabb hatókörrel rendelkezik.A more secure option is to allow Get-SmbShare, which achieves the same result but has a much more limited scope.

Ha a JEA-munkamenetben elérhetővé teszi a külső parancsokat a felhasználók számára, mindig adja meg a végrehajtható fájl teljes elérési útját.When making external commands available to users in a JEA session, always specify the complete path to the executable. Ez megakadályozza a rendszeren máshol található, hasonló névvel ellátott és potenciálisan kártékony programok végrehajtását.This prevents the execution of similarly named and potentially malicious programs located elsewhere on the system.

A PowerShell-szolgáltatók hozzáférésének engedélyezéseAllowing access to PowerShell providers

Alapértelmezés szerint nem érhetők el PowerShell-szolgáltatók a JEA-munkamenetekben.By default, no PowerShell providers are available in JEA sessions. Ez csökkenti a kapcsolódó felhasználó felé irányuló bizalmas információk és konfigurációs beállítások kockázatát.This reduces the risk of sensitive information and configuration settings being disclosed to the connecting user.

Ha szükséges, a parancs használatával engedélyezheti a PowerShell-szolgáltatók elérését VisibleProviders .When necessary, you can allow access to the PowerShell providers using the VisibleProviders command. A szolgáltatók teljes listájáért futtassa a parancsot Get-PSProvider .For a full list of providers, run Get-PSProvider.

VisibleProviders = 'Registry'

A fájlrendszer, a beállításjegyzék, a tanúsítványtároló vagy más érzékeny szolgáltatók hozzáférését igénylő egyszerű feladatokhoz érdemes lehet olyan egyéni függvényt írni, amely együttműködik a szolgáltatóval a felhasználó nevében.For simple tasks that require access to the file system, registry, certificate store, or other sensitive providers, consider writing a custom function that works with the provider on the user's behalf. A JEA-munkamenetekben elérhető függvények, parancsmagok és külső programok nem vonatkoznak ugyanazokra a korlátozásokra, mint a JEA.The functions, cmdlets, and external programs available in a JEA session aren't subject to the same constraints as JEA. Alapértelmezés szerint bármely szolgáltatóhoz hozzáférhetnek.They can access any provider by default. Érdemes megfontolni a felhasználói meghajtó használatát is, ha a fájlokat egy JEA-végpontra másol, vagy ha a fájlt átmásolja.Also consider using the user drive when copying files to or from a JEA endpoint is required.

Egyéni függvények létrehozásaCreating custom functions

A szerepkör-képességi fájlban egyéni függvények hozhatók létre, amelyek egyszerűbbé teszik a végfelhasználók összetett feladatait.You can author custom functions in a role capability file to simplify complex tasks for your end users. Az egyéni függvények akkor is hasznosak, ha speciális érvényesítési logikára van szükség a parancsmag paramétereinek értékeihez.Custom functions are also useful when you require advanced validation logic for cmdlet parameter values. Az egyszerű függvények a FunctionDefinitions mezőben is írhatók:You can write simple functions in the FunctionDefinitions field:

VisibleFunctions = 'Get-TopProcess'

FunctionDefinitions = @{
    Name = 'Get-TopProcess'

    ScriptBlock = {
        param($Count = 10)

        Get-Process | Sort-Object -Property CPU -Descending |
            Microsoft.PowerShell.Utility\Select-Object -First $Count
    }
}

Fontos

Ne felejtse el felvenni az egyéni függvények nevét a VisibleFunctions mezőbe, hogy a JEA-felhasználók is futtathatják őket.Don't forget to add the name of your custom functions to the VisibleFunctions field so they can be run by the JEA users.

Az egyéni függvények törzse (szkript blokkja) a rendszer alapértelmezett nyelvi módjában fut, és nem a JEA nyelvi korlátozásai vonatkoznak rá.The body (script block) of custom functions runs in the default language mode for the system and isn't subject to JEA's language constraints. Ez azt jelenti, hogy a függvények hozzáférhetnek a fájlrendszerhez és a beállításjegyzékhez, és futtathatnak olyan parancsokat, amelyek nem láthatók a szerepkör-képesség fájljában.This means that functions can access the file system and registry, and run commands that weren't made visible in the role capability file. Ügyeljen arra, hogy ne futtasson tetszőleges kódot paraméterek használatakor.Take care to avoid running arbitrary code when using parameters. Kerülje a felhasználói adatbevitelt közvetlenül olyan parancsmagokra, mint például a Invoke-Expression .Avoid piping user input directly into cmdlets like Invoke-Expression.

A fenti példában azt láthatja, hogy a teljes modul neve (FQMN) Microsoft.PowerShell.Utility\Select-Object a Gyorsírás helyett lett használva Select-Object .In the above example, notice that the fully qualified module name (FQMN) Microsoft.PowerShell.Utility\Select-Object was used instead of the shorthand Select-Object. A szerepkör-képesség fájljaiban definiált függvények továbbra is a JEA-munkamenetek hatókörét képezik, amely tartalmazza a JEA által a meglévő parancsok korlátozására létrehozott proxy-függvényeket.Functions defined in role capability files are still subject to the scope of JEA sessions, which includes the proxy functions JEA creates to constrain existing commands.

Alapértelmezés szerint a Select-Object egy korlátozott parancsmag az összes JEA-munkamenetben, amely nem teszi lehetővé az objektumok tetszőleges tulajdonságainak kijelölését.By default, Select-Object is a constrained cmdlet in all JEA sessions that doesn't allow the selection of arbitrary properties on objects. A Select-Object nem korlátozás nélküli függvények használatához explicit módon kell megadnia a teljes implementációt a FQMN használatával.To use the unconstrained Select-Object in functions, you must explicitly request the full implementation using the FQMN. A JEA-munkamenetekben a korlátozott parancsmagok megegyeznek a függvények hívásakor felmerülő korlátozásokkal.Any constrained cmdlet in a JEA session has the same constraints when invoked from a function. További információ: about_Command_Precedence.For more information, see about_Command_Precedence.

Ha több egyéni függvényt ír, érdemes lehet őket egy PowerShell-parancsfájl modulba helyezni.If you're writing several custom functions, it's more convenient to put them in a PowerShell script module. Ezeket a függvényeket a JEA-munkamenetben láthatja a VisibleFunctions mezővel, például a beépített és a külső gyártótól származó modulok esetén.You make those functions visible in the JEA session using the VisibleFunctions field like you would with built-in and third-party modules.

Ahhoz, hogy a TAB Befejezés megfelelően működjön a JEA-munkamenetekben, bele kell foglalni a beépített függvényt tabexpansion2 a VisibleFunctions listába.For tab completion to work properly in JEA sessions you must include the built-in function tabexpansion2 in the VisibleFunctions list.

Szerepkör-funkciók elérhetővé tétele egy konfiguráció számáraMake the role capabilities available to a configuration

A PowerShell 6 előtt a PowerShell számára a szerepkör-képességi fájl megkereséséhez a PowerShell-modul RoleCapabilities mappájában kell tárolni.Prior to PowerShell 6, for PowerShell to find a role capability file it must be stored in a RoleCapabilities folder in a PowerShell module. A modul a környezeti változóban található bármelyik mappában tárolható $env:PSModulePath , de nem helyezheti azt be $env:SystemRoot\System32 vagy egy olyan mappába, ahol a nem megbízható felhasználók módosíthatják a fájlokat.The module can be stored in any folder included in the $env:PSModulePath environment variable, however you shouldn't place it in $env:SystemRoot\System32 or a folder where untrusted users could modify the files.

A következő példa létrehoz egy ContosoJEA nevű PowerShell-parancsfájl-modult a $env:ProgramFiles szerepkör-képességek fájljának elérési útjában.The following example creates a PowerShell script module called ContosoJEA in the $env:ProgramFiles path to host the role capabilities file.

# Create a folder for the module
$modulePath = Join-Path $env:ProgramFiles "WindowsPowerShell\Modules\ContosoJEA"
New-Item -ItemType Directory -Path $modulePath

# Create an empty script module and module manifest.
# At least one file in the module folder must have the same name as the folder itself.
New-Item -ItemType File -Path (Join-Path $modulePath "ContosoJEAFunctions.psm1")
New-ModuleManifest -Path (Join-Path $modulePath "ContosoJEA.psd1") -RootModule "ContosoJEAFunctions.psm1"

# Create the RoleCapabilities folder and copy in the PSRC file
$rcFolder = Join-Path $modulePath "RoleCapabilities"
New-Item -ItemType Directory $rcFolder
Copy-Item -Path .\MyFirstJEARole.psrc -Destination $rcFolder

A PowerShell-modulokkal kapcsolatos további információkért lásd a PowerShell-modul ismertetésecímű témakört.For more information about PowerShell modules, see Understanding a PowerShell Module.

A PowerShell 6-os verziótól kezdődően a RoleDefinitions tulajdonság hozzá lett adva a munkamenet-konfigurációs fájlhoz.Starting in PowerShell 6, the RoleDefinitions property was added to the session configuration file. Ez a tulajdonság lehetővé teszi, hogy megadja a szerepkör-definícióhoz tartozó szerepkör-konfigurációs fájl helyét.This property lets you specify the location of a role configuration file for your role definition. Tekintse meg a példákat a New-PSSessionConfigurationFile.See the examples in New-PSSessionConfigurationFile.

Szerepkör-képességek frissítéseUpdating role capabilities

A szerepkör-képesség fájl szerkesztésével bármikor frissítheti a beállításokat.You can edit a role capability file to update the settings at any time. A szerepkör-képesség frissítése után elindított új JEA-munkamenetek tükrözik a felülvizsgált képességeket.Any new JEA sessions started after the role capability has been updated will reflect the revised capabilities.

Ezért fontos a szerepkör-képességek mappához való hozzáférés szabályozása.This is why controlling access to the role capabilities folder is so important. Csak a nagyon megbízható rendszergazdák módosíthatják a szerepkör-képesség fájljait.Only highly trusted administrators should be allowed to change role capability files. Ha egy nem megbízható felhasználó megváltoztathatja a szerepkör-képesség fájljait, egyszerűen hozzáférhetnek olyan parancsmagokhoz, amelyek lehetővé teszik számukra a jogosultságuk kiterjesztését.If an untrusted user can change role capability files, they can easily give themselves access to cmdlets that allow them to elevate their privileges.

Ahhoz, hogy a rendszergazdák le tudjanak zárni a szerepkör-képességekhez való hozzáférést, győződjön meg arról, hogy a helyi rendszer rendelkezik olvasási hozzáféréssel a szerepkör-képesség fájljaihoz és a modulokhoz.For administrators looking to lock down access to the role capabilities, ensure Local System has read access to the role capability files and containing modules.

A szerepkör-képességek egyesítéseHow role capabilities are merged

A felhasználók hozzáférést kapnak a munkamenet-konfigurációs fájl összes megfelelő szerepkör-képességéhez, amikor belépnek egy JEA-munkamenetbe.Users are granted access to all matching role capabilities in the session configuration file when they enter a JEA session. A JEA megpróbálja megadni a felhasználónak az egyik szerepkör által engedélyezett legszigorúbb parancsokat.JEA tries to give the user the most permissive set of commands allowed by any of the roles.

VisibleCmdlets és VisibleFunctionsVisibleCmdlets and VisibleFunctions

A legösszetettebb egyesítési logika a parancsmagokat és a függvényeket is érinti, amelyek paramétereit és paramétereit a JEA korlátozhatja.The most complex merge logic affects cmdlets and functions, which can have their parameters and parameter values limited in JEA.

A szabályok a következők:The rules are as follows:

  1. Ha egy parancsmag csak egyetlen szerepkörben látható, akkor a felhasználó a megfelelő paraméterekkel megkötésekkel látható.If a cmdlet is only made visible in one role, it is visible to the user with any applicable parameter constraints.
  2. Ha egy parancsmag több szerepkörben is látható, és mindegyik szerepkör ugyanazokkal a korlátozásokkal rendelkezik a parancsmagon, akkor a parancsmag látható a felhasználó számára ezekkel a korlátozásokkal.If a cmdlet is made visible in more than one role, and each role has the same constraints on the cmdlet, the cmdlet is visible to the user with those constraints.
  3. Ha egy parancsmag több szerepkörben is látható, és az egyes szerepkörök különböző paramétereket tesznek lehetővé, a parancsmag és az összes szerepkörben definiált összes paraméter látható a felhasználó számára.If a cmdlet is made visible in more than one role, and each role allows a different set of parameters, the cmdlet and all the parameters defined across every role are visible to the user. Ha egy szerepkör nem tartalmaz korlátozásokat a paraméterekhez, az összes paraméter engedélyezve lesz.If one role doesn't have constraints on the parameters, all parameters are allowed.
  4. Ha az egyik szerepkör egy validate set vagy validate mintát határoz meg egy parancsmag-paraméterhez, és a másik szerepkör lehetővé teszi, hogy a paraméter értéke ne korlátozza a paramétereket, a rendszer figyelmen kívül hagyja az érvényesítési készletet vagy a mintát.If one role defines a validate set or validate pattern for a cmdlet parameter, and the other role allows the parameter but does not constrain the parameter values, the validate set or pattern is ignored.
  5. Ha egy érvényesítési készlet egynél több szerepkörben ugyanahhoz a parancsmag-paraméterhez van definiálva, az összes érvényesítési csoport összes értéke engedélyezett.If a validate set is defined for the same cmdlet parameter in more than one role, all values from all validate sets are allowed.
  6. Ha egy érvényesítési minta egynél több szerepkörben ugyanahhoz a parancsmag-paraméterhez van definiálva, akkor az egyik mintázatnak megfelelő értékek engedélyezettek.If a validate pattern is defined for the same cmdlet parameter in more than one role, any values that match any of the patterns are allowed.
  7. Ha egy érvényesítési csoport egy vagy több szerepkörben van definiálva, és egy érvényesítési minta van definiálva egy másik szerepkörben ugyanahhoz a parancsmag-paraméterhez, az érvényesítési csoport figyelmen kívül lesz hagyva, és a szabály (6) a fennmaradó érvényesítési mintákra vonatkozik.If a validate set is defined in one or more roles, and a validate pattern is defined in another role for the same cmdlet parameter, the validate set is ignored and rule (6) applies to the remaining validate patterns.

Az alábbi példa bemutatja, hogyan történik a szerepkörök egyesítése a szabályoknak megfelelően:Below is an example of how roles are merged according to these rules:

# Role A Visible Cmdlets
$roleA = @{
    VisibleCmdlets = 'Get-Service',
                     @{ Name = 'Restart-Service';
                        Parameters = @{ Name = 'DisplayName'; ValidateSet = 'DNS Client' } }
}

# Role B Visible Cmdlets
$roleB = @{
    VisibleCmdlets = @{ Name = 'Get-Service';
                        Parameters = @{ Name = 'DisplayName'; ValidatePattern = 'DNS.*' } },
                     @{ Name = 'Restart-Service';
                        Parameters = @{ Name = 'DisplayName'; ValidateSet = 'DNS Server' } }
}

# Resulting permissions for a user who belongs to both role A and B
# - The constraint in role B for the DisplayName parameter on Get-Service
#   is ignored because of rule #4
# - The ValidateSets for Restart-Service are merged because both roles use
#   ValidateSet on the same parameter per rule #5
$mergedAandB = @{
    VisibleCmdlets = 'Get-Service',
                     @{ Name = 'Restart-Service';
                        Parameters = @{ Name = 'DisplayName'; ValidateSet = 'DNS Client', 'DNS Server' } }
}

VisibleExternalCommands, VisibleAliases, VisibleProviders, ScriptsToProcessVisibleExternalCommands, VisibleAliases, VisibleProviders, ScriptsToProcess

A szerepkör-képesség fájl összes többi mezője elérhető külső parancsok, aliasok, szolgáltatók és indítási parancsfájlok összesített készletéhez lesz hozzáadva.All other fields in the role capability file are added to a cumulative set of allowable external commands, aliases, providers, and startup scripts. Az egyik szerepkör-funkcióban elérhető bármely parancs, alias, szolgáltató vagy parancsfájl elérhető a JEA-felhasználó számára.Any command, alias, provider, or script available in one role capability is available to the JEA user.

Ügyeljen arra, hogy az egyik szerepkör-képességből és-parancsmagokból/függvényből/parancsokból álló kombinált szolgáltatók ne engedélyezzék a felhasználók számára a rendszererőforrásokhoz való véletlen hozzáférést.Be careful to ensure that the combined set of providers from one role capability and cmdlets/functions/commands from another don't allow users unintentional access to system resources. Ha például az egyik szerepkör engedélyezi a Remove-Item parancsmagot, és egy másik engedélyezi a FileSystem szolgáltatót, akkor a JEA-felhasználó a számítógépen tetszőleges fájlokat törölhet.For example, if one role allows the Remove-Item cmdlet and another allows the FileSystem provider, you are at risk of a JEA user deleting arbitrary files on your computer. A felhasználók hatékony engedélyeinek azonosításával kapcsolatos további információkért tekintse meg a naplózás JEA szóló cikket.Additional information about identifying users' effective permissions can be found in the auditing JEA article.

Következő lépésekNext steps

Munkamenet-konfigurációs fájl létrehozásaCreate a session configuration file