Verbinden Sie eine Linux EC2-Instanz nahtlos mit AWS Managed Microsoft AD

Es gibt eine Umgebung, in der Linux EC2-Instanzen zur integrierten Verwaltung von IDs mit AWS Managed Microsoft AD verbunden werden. Bisher wird jedoch jedes Mal, wenn die Anzahl der Instanzen zunimmt, der Vorgang zum manuellen Ausführen des AD-Join-Befehls und zur Eingabe des Kennworts für die Instanz ausgeführt. Die Bereitstellung dauerte lange. Als ich über EC2 Auto Scaling nachdachte und untersuchte, dass ich diese Barriere für die Passworteingabe überwinden musste, wurde dieses Jahr eine nahtlose AD-Teilnahme unterstützt!

[Amazon EC2 for Linux-Instanz nahtlos mit AWS Directory Service verbinden](https://aws.amazon.com/jp/about-aws/whats-new/2020/08/seamhless-join-amazon-ec2-for -linux-Instanz-zu-aws-Verzeichnis-Service /)

Daher habe ich versucht zu überprüfen, wie AD beim Bereitstellen einer Linux-Instanz verbunden werden soll. Hier ist übrigens die am Anfang erwähnte AD-Teilnahmemethode ↓ ↓ Linux-Instanzen manuell verbinden

Klicken Sie hier, um das diesmal überprüfte Verfahren anzuzeigen. ↓ ↓ Nahtloses Beitreten zur Linux EC2-Instanz AWS Managed Microsoft AD Directory

Voraussetzungen

Erstens lauten die ab dem 17. November 2020 unterstützten Distributionen und Versionen wie folgt.

In Hinweis "Distributions prior to Ubuntu 14 and Red Hat Enterprise Linux 7 do not support the seamless domain join feature." Also entschied ich, dass RHEL7 in Ordnung war und überprüfte es mit RHEL7.

Darüber hinaus erfordert die Zielinstanz AWS Systems Manager (SSM Agent) Version 2.3.1644.0 oder höher.

Damit

Überprüfungsumgebung

environment.png

Lassen Sie uns überprüfen

Verbinden Sie die RHEL7.9-Instanz beim Start mit AWS Managed Microsoft AD. Erstellen Sie zunächst einen Domänenbenutzer.

Erstellen eines Domänenbenutzers für die AD-Teilnahme

Um einer Linux-Instanz in AD beizutreten, legen Sie einen Domänenbenutzer fest, der berechtigt ist, ein Computerkonto als Dienstkonto zu erstellen. In dieser Konfiguration habe ich unter Windows Server 2019 mit AD-Beteiligung "Active Directory-Domänendienste" geöffnet (Als anderer Benutzer ausführen und als Microsoft AD-Administratorbenutzer verbinden) und einen neuen Benutzer erstellt.

ユーザー追加.png

Gewähren Sie dem erstellten Domänenbenutzer als Nächstes Berechtigungen. Da es nur für die AD-Teilnahme verwendet wird, wurde der folgende PowerShell-Befehl vorbereitet, da wir die minimal mögliche Berechtigung haben wollten. Geben Sie den zuvor erstellten Domain-Benutzernamen in `` $ AccountName``` in der ersten Zeile ein.

$AccountName = 'awsSeamlessDomain'
# DO NOT modify anything below this comment.
# Getting Active Directory information.
Import-Module 'ActiveDirectory'
$Domain = Get-ADDomain -ErrorAction Stop
$BaseDn = $Domain.DistinguishedName
$ComputersContainer = $Domain.ComputersContainer
$SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext'
[System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID
# Getting Service account Information.
$AccountProperties = Get-ADUser -Identity $AccountName
$AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value
# Getting ACL settings for the Computers container.
$ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer" 
# Setting ACL allowing the service account the ability to create child computer objects in the Computers container.
$AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All'
$ObjectAcl.AddAccessRule($AddAccessRule)
Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"

Ich habe den obigen Befehl unter Windows Server 2019 ausgeführt und ** awsSeamlessDomain ** als Dienstkonto mit den minimal erforderlichen Berechtigungen festgelegt.

Speichern Sie die Dienstkontoinformationen in Secrets Manager

Speichern Sie die Informationen in Secrets Manager, um das zuvor beim Beitritt zur Domäne beim Starten der Instanz erstellte Dienstkonto zu verwenden. Klicken Sie nach dem Übergang zur Secrets Manager-Dienstkonsole auf ** Neues Geheimnis speichern ** und stellen Sie es wie in der folgenden Abbildung gezeigt ein.

  1. Wählen Sie ** Andere Art von Geheimnissen ** und geben Sie den Namen und das Kennwort des Dienstkontos in Schlüssel / Wert an. secretmanager01.png

  2. Geben Sie den geheimen Namen an. secretmanager.png

  3. Geben Sie unter Rotation konfigurieren ** Automatische Rotation deaktivieren ** an.

  4. Überprüfen und speichern Sie Ihre Einstellungen und ein neues Geheimnis wird hinzugefügt. Notieren Sie sich die geheime ARN, da diese beim Festlegen der IAM-Richtlinie verwendet wird.

Erstellen einer IAM-Rolle

Erstellen Sie eine IAM-Rolle, die AD-teilnehmenden Instanzen gewährt wird. Die von AWS verwaltete Richtlinie x 2 und die vom Kunden verwaltete Richtlinie x 1 werden an die Ziel-IAM-Rolle angehängt. Erstellen Sie daher zuerst die vom Kunden verwaltete Richtlinie. Obwohl die Prozedur weggelassen wurde, lautet der Richtlinienname ** SM-Secret-Linux-DJ- -Read ** und wurde mit dem folgenden Richtliniendokument erstellt.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret"
            ],
            "Resource": [
                "<Erstellt geheime ARN>"
            ]
        }
    ]
}

Wählen Sie als Nächstes für die IAM-Rolle ** EC2 ** in ** Typ der vertrauenswürdigen Entität auswählen ** aus und überprüfen Sie die folgenden drei Verwaltungsrichtlinien in der Richtlinienauswahl.

Erstellen Sie eine IAM-Rolle mit dem Rollennamen ** LinuxEC2DomainJoin **.

Verbinden Sie eine Linux EC2-Instanz mit AD

An diesem Punkt können Sie AD bei einem neuen Start eine Linux EC2-Instanz hinzufügen! Starten Sie die Instanz und überprüfen Sie, ob Sie an AD teilnehmen können.

--Klicken Sie in der EC2-Konsole auf ** Instanzen starten **.

#!/bin/bash -xe
exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1
yum install -y https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm
systemctl enable amazon-ssm-agent
systemctl start amazon-ssm-agent
systemctl status amazon-ssm-agent

Eine neue Linux EC2-Instanz wurde gestartet. Melden Sie sich jetzt erneut bei Windows Server an und versuchen Sie, Ihr AD-Computerkonto zu überprüfen.

Vor dem Booten wurde nur Windows angezeigt, das bereits AD beigetreten war. ad02.png

Aktualisieren Sie nach dem Booten der Linux EC2-Instanz den Bildschirm und das Computerkonto wird hinzugefügt. ad03.png

Wenn ich überprüfe, ob sich der Domänenbenutzer SSH bei der Linux EC2-Instanz anmelden kann, ssh.png Ich konnte mich erfolgreich einloggen!

Zusammenfassung

Wir haben überprüft, wie AD beim Starten einer Linux EC2-Instanz nahtlos verbunden werden kann. In der Vergangenheit gab es Zeiten, in denen die Domänenbeteiligung aufgrund der manuellen Befehlsausführung verloren ging. Wenn es beim Start automatisch teilnimmt, werden keine Arbeiten ausgelassen. Damit scheint es, dass es auch während der automatischen EC2-Skalierung verwendet werden kann.

(Hinzugefügt am 19.11.2020) In der Gruppe "Automatische Skalierung" angegebene Startvorlagen scheinen nicht in der Lage zu sein, die Domäne anzugeben, der beigetreten werden soll. .. Am Ende frage ich mich also, ob es keine andere Wahl gibt, als dies mit UserData zu tun. ..

Recommended Posts

Verbinden Sie eine Linux EC2-Instanz nahtlos mit AWS Managed Microsoft AD
AWS EC2 2. SSH-Verbindung zur EC2-Instanz (Amazon Linux 2)
Ändern Sie die AWS EC2-Instanz von t2 in t3
Erstellen einer AWS EC2 EC2-Instanz (Amazon Linux AMI) 2
[AWS EC2] So installieren Sie Maven unter Amazon Linux 2
[AWS EC2] Einstellungen, die Sie unter Amazon Linux 2 vornehmen möchten
Eine super Einführung in Linux
Fügen Sie Benutzer mit SSH-Zugriff zu Ihrer Amazon EC2 Linux-Instanz hinzu
Erstellen einer Umgebung zum Ausführen von ChainerMN auf einer AWS-GPU-Instanz
Ein Memorandum zur Umstellung auf Manjaro Linux
So richten Sie ein Jupyter-Notebook am SSH-Ziel ein (AWS EC2)