Erstellen eines SecureString-Parameters und Verknüpfen eines Knotens mit einer Domain (PowerShell) - AWS Systems Manager

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen eines SecureString-Parameters und Verknüpfen eines Knotens mit einer Domain (PowerShell)

Dieser Walkthrough zeigt Ihnen das Verknüpfen eines Windows Server-Knotens mit einer Domain mittels AWS Systems Manager SecureString-Parametern und Run Command. In der Anleitung werden typische Domain-Parameter verwendet, z. B. der Domain-Name und ein Benutzername für die Domain. Diese Werte werden als unverschlüsselte Zeichenfolgen weitergegeben. Das Passwort für die Domain wird unter Verwendung eines Von AWS verwalteter Schlüsselverschlüsselt und als verschlüsselte Zeichenfolge übergeben.

Voraussetzungen

In dieser Anleitung wird davon ausgegangen, dass Sie Ihren Domain-Namen und die DNS-Server-IP-Adresse in der DHCP-Optionsliste, die Ihrer Amazon VPC zugeordnet ist, bereits angegeben haben. Informationen finden Sie unter Arbeiten mit DHCP-Optionslisten im Amazon VPC-Benutzerhandbuch.

So erstellen Sie einen SecureString-Parameter und verknüpfen einen Knoten mit einer Domain
  1. Geben Sie die Parameter mithilfe von AWS Tools for Windows PowerShell in das System ein.

    Ersetzen Sie in den folgenden Befehlen jeden Platzhalter für Benutzereingaben durch Ihre eigenen Informationen.

    Write-SSMParameter -Name "domainName" -Value "DOMAIN-NAME" -Type String Write-SSMParameter -Name "domainJoinUserName" -Value "DOMAIN\USERNAME" -Type String Write-SSMParameter -Name "domainJoinPassword" -Value "PASSWORD" -Type SecureString
    Wichtig

    Nur der Wert eines SecureString-Parameters wird verschlüsselt. Der Name des Parameters, die Beschreibung und andere Eigenschaften sind nicht verschlüsselt.

  2. Fügen Sie die folgenden AWS Identity and Access Management (IAM)-Richtlinien an die IAM-Rollenberechtigungen für Ihren Knoten an:

    • AmazonSSMManagedInstanceCore – Erforderlich. Diese AWS-verwaltete Richtlinie erlaubt es einem verwalteten Knoten, Systems-Manager-Service-Kernfunktionalität zu verwenden.

    • AmazonSSMDirectoryServiceAccess – Erforderlich. Diese AWS-verwaltete Richtlinie erlaubt SSM Agent in Ihrem Namen den Zugriff auf AWS Directory Service für Anforderungen zum Beitritt zur Domain von dem verwalteten Knoten.

    • Eine benutzerdefinierte Richtlinie für S3-Bucket-Zugriff – Erforderlich. SSM Agent, der sich auf Ihrem Knoten befindet und Systems-Manager-Aufgaben ausführt, erfordert Zugriff auf bestimmte Amazon Simple Storage Service (Amazon S3)-Buckets im Besitz von Amazon. In der benutzerdefinierten S3-Bucket-Richtlinie, die Sie erstellen, können Sie auch Zugriff auf Ihre eigenen S3-Buckets gewähren, die für Systems Manager-Operationen benötigt werden.

      Beispiele: Sie können Ausgabe für Run Command-Befehle oder Session Manager-Sitzungen in einen S3-Bucket schreiben und diese Ausgabe dann zu einem späteren Zeitpunkt für Auditing-Zwecke oder zur Fehlerbehebung nutzen. Sie speichern Zugriffsskripts oder benutzerdefinierte Patch-Baseline-Listen in einem S3-Bucket und verweisen dann auf das Skript oder die Liste, wenn Sie einen Befehl ausführen oder wenn eine Patch-Baseline angewendet wird.

      Weitere Informationen zum Erstellen einer benutzerdefinierten Richtlinie für den Zugriff auf einen Amazon S3-Bucket finden Sie unter Erstellen einer benutzerdefinierten S3-Bucket-Richtlinie für ein Instance-Profil

      Anmerkung

      Die Speicherung von Ausgabeprotokolldaten in einem S3-Bucket ist optional. Wenn Sie sich jedoch hierzu entschlossen haben, sollte die Funktion zu Beginn des Systems Manager-Konfigurationsprozesses eingerichtet werden. Weitere Informationen finden Sie unter Erstellen eines Buckets im Benutzerhandbuch zu Amazon Simple Storage Service.

    • CloudWatchAgentServerPolicy – Optional. Diese AWS-verwaltete Richtlinie erlaubt es Ihnen, den CloudWatch-Agenten auf verwalteten Knoten auszuführen. Diese Richtlinie ermöglicht es, Informationen auf einem Knoten zu lesen und sie in Amazon CloudWatch zu schreiben. Ihr Instance-Profil benötigt diese Richtlinie nur, wenn Sie Services wie Amazon EventBridge oder CloudWatch Logs verwenden.

      Anmerkung

      Die Verwendung von CloudWatch- und EventBridge-Features ist optional. Es wird aber empfohlen, sie am Anfang Ihres Systems Manager-Konfigurationsprozesses einzurichten, wenn Sie sich für deren Verwendung entschieden haben. Weitere Informationen finden Sie im Amazon EventBridge-Benutzerhandbuch und dem Amazon CloudWatch Logs-Benutzerhandbuch.

  3. Bearbeiten Sie die IAM-Rolle, die dem Knoten zugeordnet ist, und fügen Sie die folgende Richtlinie hinzu. Diese Richtlinie erteilt dem Knoten Berechtigungen, um die kms:Decrypt- und ssm:CreateDocument-API aufrufen zu können.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "ssm:CreateDocument" ], "Resource": [ "arn:aws:kms:region:account-id:key/kms-key-id" ] } ] }
  4. Kopieren Sie den folgenden JSON-Text in einen Texteditor und speichern Sie die Datei unter dem Namen JoinInstanceToDomain.json am folgenden Speicherort: c:\temp\JoinInstanceToDomain.json.

    { "schemaVersion": "2.2", "description": "Run a PowerShell script to securely join a Windows Server instance to a domain", "mainSteps": [ { "action": "aws:runPowerShellScript", "name": "runPowerShellWithSecureString", "precondition": { "StringEquals": [ "platformType", "Windows" ] }, "inputs": { "runCommand": [ "$domain = (Get-SSMParameterValue -Name domainName).Parameters[0].Value", "if ((gwmi Win32_ComputerSystem).domain -eq $domain){write-host \"Computer is part of $domain, exiting\"; exit 0}", "$username = (Get-SSMParameterValue -Name domainJoinUserName).Parameters[0].Value", "$password = (Get-SSMParameterValue -Name domainJoinPassword -WithDecryption $True).Parameters[0].Value | ConvertTo-SecureString -asPlainText -Force", "$credential = New-Object System.Management.Automation.PSCredential($username,$password)", "Add-Computer -DomainName $domain -Credential $credential -ErrorAction SilentlyContinue -ErrorVariable domainjoinerror", "if($?){Write-Host \"Instance joined to domain successfully. Restarting\"; exit 3010}else{Write-Host \"Instance failed to join domain with error:\" $domainjoinerror; exit 1 }" ] } } ] }
  5. Führen Sie den folgenden Befehl in Tools for Windows PowerShell aus, um ein neues SSM-Dokument zu erstellen.

    $json = Get-Content C:\temp\JoinInstanceToDomain | Out-String New-SSMDocument -Name JoinInstanceToDomain -Content $json -DocumentType Command
  6. Führen Sie den folgenden Befehl in Tools for Windows PowerShell aus, um den Knoten mit der Domain zu verknüpfen.

    Send-SSMCommand -InstanceId instance-id -DocumentName JoinInstanceToDomain

    Wenn der Befehl erfolgreich ausgeführt wurde, sieht das Ergebnis im System in etwa wie folgt aus:

    WARNING: The changes will take effect after you restart the computer EC2ABCD-EXAMPLE.
    Domain join succeeded, restarting
    Computer is part of example.local, exiting

    Wenn der Befehl nicht erfolgreich ausgeführt wurde, sieht das Ergebnis im System in etwa wie folgt aus:

    Failed to join domain with error:
    Computer 'EC2ABCD-EXAMPLE' failed to join domain 'example.local'
    from its current workgroup 'WORKGROUP' with following error message:
    The specified domain either does not exist or could not be contacted.