Share via


Hitelesítő adatok beállításai a konfigurációs adatokban

Érintett kiadások: Windows PowerShell 5.0

Egyszerű szöveges jelszavak és tartományi felhasználók

A titkosítás nélküli hitelesítő adatokat tartalmazó DSC-konfigurációk hibaüzenetet generálnak az egyszerű szöveges jelszavakról. Emellett a DSC figyelmeztetést is generál a tartományi hitelesítő adatok használatakor. A hiba- és figyelmeztető üzenetek mellőzéséhez használja a DSC konfigurációs adat kulcsszavainak használatát:

  • PsDscAllowPlainTextPassword
  • PsDscAllowDomainUser

Megjegyzés

A titkosítatlan egyszerű szöveges jelszavak tárolása/továbbítása általában nem biztonságos. A hitelesítő adatoknak a jelen témakör későbbi részében ismertetett technikákkal történő biztonságossá tétele ajánlott. A Azure Automation DSC szolgáltatással központilag kezelheti a konfigurációkban lefordítandó és biztonságosan tárolt hitelesítő adatokat. További információ: DSC-konfigurációk / hitelesítő adatok eszközeinek összeállítása

Hitelesítő adatok kezelése a DSC-ben

A DSC konfigurációs erőforrásai alapértelmezés szerint a következőképpen Local System futnak. Egyes erőforrásoknak azonban hitelesítő adatokra van szükségük, például ha az Package erőforrásnak szoftvereket kell telepítenie egy adott felhasználói fiókban.

A korábbi erőforrások egy rögzített Credential tulajdonságnevet használtak a kezeléshez. A WMF 5.0 hozzáadott egy automatikus PsDscRunAsCredential tulajdonságot az összes erőforráshoz. A használatával PsDscRunAsCredentialkapcsolatos információkért lásd: A DSC futtatása felhasználói hitelesítő adatokkal. Az újabb erőforrások és az egyéni erőforrások ezt az automatikus tulajdonságot használhatják ahelyett, hogy saját tulajdonságot hoznak létre a hitelesítő adatokhoz.

Megjegyzés

Egyes erőforrások tervezésekor több hitelesítő adatot kell használniuk egy adott okból, és saját hitelesítő adataik lesznek.

Az erőforráson elérhető hitelesítő adatok tulajdonságainak megkereséséhez használja Get-DscResource -Name ResourceName -Syntax az ISE-ben az Intellisense () vagy az Intellisense (CTRL+SPACE) tulajdonságot.

Get-DscResource -Name Group -Syntax
Group [String] #ResourceName
{
    GroupName = [string]
    [Credential = [PSCredential]]
    [DependsOn = [string[]]]
    [Description = [string]]
    [Ensure = [string]{ Absent | Present }]
    [Members = [string[]]]
    [MembersToExclude = [string[]]]
    [MembersToInclude = [string[]]]
    [PsDscRunAsCredential = [PSCredential]]
}

Ez a példa egy csoporterőforrást használ a PSDesiredStateConfiguration beépített DSC-erőforrásmodulból. Létrehozhat helyi csoportokat, és tagokat vehet fel vagy távolíthat el. A tulajdonságot és az Credential automatikus PsDscRunAsCredential tulajdonságot is elfogadja. Az erőforrás azonban csak a tulajdonságot Credential használja.

A tulajdonsággal kapcsolatos PsDscRunAsCredential további információkért lásd: A DSC futtatása felhasználói hitelesítő adatokkal.

Példa: A Group resource Credential tulajdonság

A DSC a alatt Local Systemfut, így már rendelkezik a helyi felhasználók és csoportok módosítására vonatkozó engedélyekkel. Ha a hozzáadott tag egy helyi fiók, akkor nincs szükség hitelesítő adatokra. Ha az Group erőforrás tartományi fiókot ad hozzá a helyi csoporthoz, hitelesítő adatokra van szükség.

Az Active Directoryba történő névtelen lekérdezések nem engedélyezettek. Az Credential erőforrás tulajdonsága Group az Active Directory lekérdezéséhez használt tartományi fiók. A legtöbb esetben ez egy általános felhasználói fiók lehet, mivel alapértelmezés szerint a felhasználók az Active Directory legtöbb objektumát olvashatják .

Konfigurációs példa

Az alábbi példakód a DSC használatával tölt fel egy helyi csoportot egy tartományi felhasználóval:

Configuration DomainCredentialExample
{
    param
    (
        [PSCredential] $DomainCredential
    )
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    node localhost
    {
        Group DomainUserToLocalGroup
        {
            GroupName        = 'ApplicationAdmins'
            MembersToInclude = 'contoso\alice'
            Credential       = $DomainCredential
        }
    }
}

$cred = Get-Credential -UserName contoso\genericuser -Message "Password please"
DomainCredentialExample -DomainCredential $cred

Ez a kód egy hibaüzenetet és egy figyelmeztető üzenetet is létrehoz:

ConvertTo-MOFInstance : System.InvalidOperationException error processing property 'Credential' OF
TYPE 'Group': Converting and storing encrypted passwords as plain text is not recommended.
For more information on securing credentials in MOF file, please refer to MSDN blog:
https://go.microsoft.com/fwlink/?LinkId=393729

At line:11 char:9
+   Group
At line:341 char:16
+     $aliasId = ConvertTo-MOFInstance $keywordName $canonicalizedValue
+                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Write-Error], InvalidOperationException
    + FullyQualifiedErrorId : FailToProcessProperty,ConvertTo-MOFInstance
WARNING: It is not recommended to use domain credential for node 'localhost'. In order to suppress
the warning, you can add a property named 'PSDscAllowDomainUser' with a value of $true to your DSC
configuration data for node 'localhost'.

Compilation errors occurred while processing configuration
'DomainCredentialExample'. Please review the errors reported in error stream and modify your
configuration code appropriately.
At C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules\PSDesiredStateConfiguration\PSDesiredStateConfiguration.psm1:3917 char:5
+     throw $ErrorRecord
+     ~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (DomainCredentialExample:String) [], InvalidOperationException
    + FullyQualifiedErrorId : FailToProcessConfiguration

Ebben a példában két probléma merült fel:

  1. Egy hiba azt magyarázza, hogy az egyszerű szöveges jelszavak nem ajánlottak
  2. A figyelmeztetés azt javasolja, hogy ne használjon tartományi hitelesítő adatokat

A PSDSCAllowPlainTextPassword és a PSDSCAllowDomainUser jelzők letiltják a hibát, és figyelmeztetik a felhasználót az érintett kockázatra.

PSDSCAllowPlainTextPassword

Az első hibaüzenet url-címe dokumentációval rendelkezik. Ez a hivatkozás bemutatja, hogyan titkosíthatja a jelszavakat ConfigurationData-struktúrával és tanúsítvánnyal. A tanúsítványokkal és a DSC-kkel kapcsolatos további információkért olvassa el ezt a bejegyzést.

Egyszerű szöveges jelszó kényszerítéséhez az erőforrásnak a PsDscAllowPlainTextPassword konfigurációs adatok szakaszban szereplő kulcsszóra van szüksége az alábbiak szerint:

$password = "ThisIsAPlaintextPassword" | ConvertTo-SecureString -asPlainText -Force
$username = "contoso\Administrator"
[PSCredential] $credential = New-Object System.Management.Automation.PSCredential($username,$password)

Configuration DomainCredentialExample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    node localhost
    {
        Group DomainUserToLocalGroup
        {
            GroupName        = 'ApplicationAdmins'
            MembersToInclude = 'contoso\alice'
            Credential       = $credential
        }
    }
}

$cd = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            PSDscAllowPlainTextPassword = $true
        }
    )
}

DomainCredentialExample -ConfigurationData $cd

localhost.mof

A PSDSCAllowPlainTextPassword jelölő megköveteli, hogy a felhasználó nyugtázza az egyszerű szöveges jelszavak MOF-fájlban való tárolásának kockázatát. A létrehozott MOF-fájlban annak ellenére, hogy egy SecureStringet tartalmazó PSCredential objektumot használtak, a jelszavak továbbra is egyszerű szövegként jelennek meg. Ez az egyetlen alkalom, amikor a hitelesítő adatok elérhetővé válnak. Ha hozzáférést szerez ehhez az MOF-fájlhoz, bárki hozzáférhet a rendszergazdai fiókhoz.

/*
@TargetNode='localhost'
@GeneratedBy=Administrator
@GenerationDate=01/31/2019 06:43:13
@GenerationHost=Server01
*/

instance of MSFT_Credential as $MSFT_Credential1ref
{
Password = "ThisIsAPlaintextPassword";
 UserName = "Administrator";

};

instance of MSFT_GroupResource as $MSFT_GroupResource1ref
{
ResourceID = "[Group]DomainUserToLocalGroup";
 MembersToInclude = {
    "contoso\\alice"
};
 Credential = $MSFT_Credential1ref;
 SourceInfo = "::11::9::Group";
 GroupName = "ApplicationAdmins";
 ModuleName = "PSDesiredStateConfiguration";

ModuleVersion = "1.0";

 ConfigurationName = "DomainCredentialExample";

};

Hitelesítő adatok átvitel közben és inaktív állapotban

  • A PSDscAllowPlainTextPassword jelző lehetővé teszi a jelszavakat tartalmazó MOF-fájlok fordítását tiszta szövegben. A tiszta szöveges jelszavakat tartalmazó MOF-fájlok tárolásakor óvintézkedéseket kell tenni.
  • Ha az MOF-fájl leküldéses módban érkezik egy csomópontra, a WinRM titkosítja a kommunikációt a tiszta szöveges jelszó védelme érdekében, hacsak nem bírálja felül az alapértelmezett értéket az AllowUnencrypted paraméterrel.
    • Az MOF tanúsítványsal való titkosítása megvédi az inaktív MOF-fájlt, mielőtt a csomópontra alkalmazták volna.
  • Lekéréses módban úgy konfigurálhatja a Windows lekéréses kiszolgálót, hogy HTTPS protokollal titkosítsa a forgalmat az Internet Information Serverben megadott protokoll használatával. További információ: DSC lekéréses ügyfél beállítása és MOF-fájlok biztonságossá tétele tanúsítványokkal.
  • A csomóponton az MOF-fájlok inaktív állapotban vannak titkosítva a PowerShell 5.0-tól kezdve.
    • A PowerShell 4.0-s verziójában a MOF-fájlok titkosítatlanok maradnak, kivéve, ha tanúsítványsal vannak titkosítva, amikor leküldik vagy leküldik őket a csomópontra.

A Microsoft azt javasolja, hogy a jelentős biztonsági kockázat miatt kerülje el az egyszerű szöveges jelszavakat.

Tartományi hitelesítő adatok

A példakonfigurációs szkript ismételt futtatása (titkosítással vagy anélkül) továbbra is figyelmeztetést jelenít meg arról, hogy nem ajánlott tartományi fiókot használni a hitelesítő adatokhoz. A helyi fiók használata kiküszöböli a más kiszolgálókon használható tartományi hitelesítő adatok lehetséges kitettségét.

Ha hitelesítő adatokat használ DSC-erőforrásokkal, lehetőség szerint inkább helyi fiókot használjon a tartományi fiókokkal szemben.

Ha a hitelesítő adat tulajdonságában "\" vagy "@" szerepel, akkor a Username DSC tartományi fiókként fogja kezelni. Kivételt jelent a "localhost", a "127.0.0.1" és a ""::1" kifejezés a felhasználónév tartományrészében.

PSDscAllowDomainUser

A fenti DSC-erőforrás Group példájában egy Active Directory-tartomány lekérdezéséhez tartományi fiókra van szükség . Ebben az esetben adja hozzá a PSDscAllowDomainUser tulajdonságot a blokkhoz az ConfigurationData alábbiak szerint:

$password = "ThisIsAPlaintextPassword" | ConvertTo-SecureString -asPlainText -Force
$username = "contoso\Administrator"
[PSCredential] $credential = New-Object System.Management.Automation.PSCredential($username,$password)

Configuration DomainCredentialExample
{
    Import-DscResource -ModuleName PSDesiredStateConfiguration

    node localhost
    {
        Group DomainUserToLocalGroup
        {
            GroupName        = 'ApplicationAdmins'
            MembersToInclude = 'contoso\alice'
            Credential       = $credential
        }
    }
}

$cd = @{
    AllNodes = @(
        @{
            NodeName = 'localhost'
            PSDscAllowDomainUser = $true
            PSDscAllowPlainTextPassword = $true
        }
    )
}

DomainCredentialExample -ConfigurationData $cd

Most a konfigurációs szkript hibaüzenetek és figyelmeztetések nélkül hozza létre az MOF-fájlt.