Aracılığıyla paylaş


Yapılandırma Verilerinde Kimlik Bilgileri Seçenekleri

Şunlar için geçerlidir: Windows PowerShell 5.0

Düz Metin Parolaları ve Etki Alanı Kullanıcıları

Şifreleme içermeyen bir kimlik bilgisi içeren DSC yapılandırmaları düz metin parolaları hakkında bir hata iletisi oluşturur. Ayrıca, DSC etki alanı kimlik bilgilerini kullanırken bir uyarı oluşturur. Bu hata ve uyarı iletilerini engellemek için DSC yapılandırma veri anahtar sözcüklerini kullanın:

  • PsDscAllowPlainTextPassword
  • PsDscAllowDomainUser

Not

Düz metin parolaların şifrelenmemiş olarak depolanması/iletilmesi genellikle güvenli değildir. Bu konunun ilerleyen bölümlerinde ele alınan teknikleri kullanarak kimlik bilgilerinin güvenliğinin sağlanması önerilir. Azure Otomasyonu DSC hizmeti, yapılandırmalarda derlenecek ve güvenli bir şekilde depolanacak kimlik bilgilerini merkezi olarak yönetmenizi sağlar. Bilgi için bkz. DSC Yapılandırmalarını Derleme / Kimlik Bilgileri Varlıkları

DSC'de Kimlik Bilgilerini İşleme

DSC yapılandırma kaynakları varsayılan olarak olarak Local System çalışır. Ancak bazı kaynaklar için kimlik bilgileri gerekir. Örneğin, kaynağın Package belirli bir kullanıcı hesabı altına yazılım yüklemesi gerekir.

Önceki kaynaklar bunu işlemek için sabit kodlanmış Credential bir özellik adı kullanıyordu. WMF 5.0, tüm kaynaklar için otomatik PsDscRunAsCredential bir özellik ekledi. kullanma PsDscRunAsCredentialhakkında bilgi için bkz . DSC'yi kullanıcı kimlik bilgileriyle çalıştırma. Daha yeni kaynaklar ve özel kaynaklar, kimlik bilgileri için kendi özelliklerini oluşturmak yerine bu otomatik özelliği kullanabilir.

Not

Bazı kaynakların tasarımı, belirli bir nedenle birden çok kimlik bilgisi kullanmaktır ve kendi kimlik bilgileri özelliklerine sahip olur.

Bir kaynakta kullanılabilir kimlik bilgisi özelliklerini bulmak için ISE(CTRL+SPACE) içindeki IntelliSense'i kullanınGet-DscResource -Name ResourceName -Syntax.

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]]
}

Bu örnekte, yerleşik DSC kaynak modülünden PSDesiredStateConfiguration bir Grup kaynağı kullanılır. Yerel gruplar oluşturabilir ve üye ekleyebilir veya kaldırabilir. Hem özelliği hem de Credential otomatik PsDscRunAsCredential özelliği kabul eder. Ancak, kaynak yalnızca özelliğini kullanır Credential .

Özelliği hakkında PsDscRunAsCredential daha fazla bilgi için bkz . DSC'yi kullanıcı kimlik bilgileriyle çalıştırma.

Örnek: Grup kaynağı Kimlik Bilgisi özelliği

DSC altında Local Systemçalıştığından, yerel kullanıcıları ve grupları değiştirme izinleri zaten vardır. Eklenen üye yerel bir hesapsa, kimlik bilgisi gerekmez. Group Kaynak yerel gruba bir etki alanı hesabı eklerse, kimlik bilgisi gereklidir.

Active Directory'de anonim sorgulara izin verilmez. Kaynağın CredentialGroup özelliği, Active Directory'yi sorgulamak için kullanılan etki alanı hesabıdır. Varsayılan olarak kullanıcılar Active Directory'deki nesnelerin çoğunu okuyabileceğinden , bu genellikle genel bir kullanıcı hesabı olabilir.

Örnek Yapılandırma

Aşağıdaki örnek kod, yerel bir grubu bir etki alanı kullanıcısı ile doldurmak için DSC kullanır:

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

Bu kod hem hata hem de uyarı iletisi oluşturur:

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

Bu örnekte iki sorun vardır:

  1. Hata, düz metin parolalarının önerilmediğini açıklar
  2. Etki alanı kimlik bilgilerinin kullanılmasını öneren bir uyarı

PSDSCAllowPlainTextPassword ve PSDSCAllowDomainUser bayrakları, kullanıcıyı ilgili risk konusunda bilgilendiren hatayı ve uyarıyı bastırır.

PSDSCAllowPlainTextPassword

İlk hata iletisinde belge içeren bir URL var. Bu bağlantıda ConfigurationData yapısı ve sertifika kullanarak parolaların nasıl şifrelenmesi açıklanmaktadır. Sertifikalar ve DSC hakkında daha fazla bilgi için bu gönderiyi okuyun.

Düz metin parolasını zorlamak için kaynak, yapılandırma verileri bölümünde aşağıdaki gibi anahtar sözcüğünü gerektirir PsDscAllowPlainTextPassword :

$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

PSDSCAllowPlainTextPassword bayrağı, kullanıcının düz metin parolalarını bir MOF dosyasında depolama riskini kabul etmelerini gerektirir. Oluşturulan MOF dosyasında, SecureString içeren bir PSCredential nesnesi kullanılsa da parolalar düz metin olarak görünmeye devam ediyor. Kimlik bilgilerinin kullanıma sunulduğu tek zaman budur. Bu MOF dosyasına erişim kazanmak herkesin Yönetici hesabına erişmesini sağlar.

/*
@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";

};

Aktarımdaki ve bekleyen kimlik bilgileri

  • PSDscAllowPlainTextPassword bayrağı, şifresiz metinde parolalar içeren MOF dosyalarının derlenmesine olanak tanır. Düz metin parolaları içeren MOF dosyalarını depolarken önlemler alın.
  • MOF dosyası Gönderme modunda bir Düğüme teslim edildiğinde, Varsayılanı AllowUnencrypted parametresiyle geçersiz kılmadığınız sürece WinRM, düz metin parolasını korumak için iletişimi şifreler.
    • MOF'nin bir sertifikayla şifrelenmesi, bekleyen MOF dosyasını bir düğüme uygulanmadan önce korur.
  • Çekme modunda, Internet Information Server'da belirtilen protokolü kullanarak trafiği şifrelemek için Windows çekme sunucusunu HTTPS kullanacak şekilde yapılandırabilirsiniz. Daha fazla bilgi için DSC çekme istemcisi ayarlama ve Sertifikalarla MOF dosyalarını güvenli hale getirme makalelerine bakın.
  • Node'da MOF dosyaları, PowerShell 5.0'da başlayarak beklemede şifrelenir.
    • PowerShell 4.0 MOF dosyaları, Node'a gönderildiklerinde veya çekildiğinde bir sertifikayla şifrelenmedikleri sürece bekleyen dosyaların şifresi çözülemez.

Microsoft, önemli güvenlik riski nedeniyle düz metin parolalardan kaçınmayı önerir.

Etki Alanı Kimlik Bilgileri

Örnek yapılandırma betiğini yeniden çalıştırmak (şifreleme ile veya şifreleme olmadan), yine de bir kimlik bilgisi için etki alanı hesabı kullanmanın önerilmez uyarısı oluşturur. Yerel hesap kullanmak, diğer sunucularda kullanılabilecek etki alanı kimlik bilgilerinin olası kullanıma açık olmasını ortadan kaldırır.

DSC kaynaklarıyla kimlik bilgilerini kullanırken, mümkün olduğunda etki alanı hesabı yerine yerel bir hesap tercih edin.

Kimlik bilgilerinin özelliğinde Username '\' veya '@' varsa, DSC bunu bir etki alanı hesabı olarak ele alır. Kullanıcı adının etki alanı bölümünde "localhost", "127.0.0.1" ve "::1" için bir özel durum vardır.

PSDscAllowDomainUser

Yukarıdaki DSC Group kaynağı örneğinde, bir Active Directory etki alanını sorgulamak için bir etki alanı hesabı gerekir. Bu durumda, aşağıdaki gibi özelliğini bloğuna ConfigurationData ekleyinPSDscAllowDomainUser:

$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

Şimdi yapılandırma betiği, MOF dosyasını hatasız veya uyarısız olarak oluşturur.