Création d'un paramètre SecureString et association d'un nœud à un domaine (PowerShell) - AWS Systems Manager

Création d'un paramètre SecureString et association d'un nœud à un domaine (PowerShell)

Cette démonstration illustre la manière d'associer un nœud Windows Server à un domaine à l'aide de paramètres AWS Systems Manager SecureString et Run Command. Elle a recours à des paramètres de domaine classiques, tels que le nom de domaine et un nom d'utilisateur de domaine. Ces valeurs sont transmises sous forme de valeurs de chaîne non chiffrées. Le mot de passe du domaine est chiffré à l'aide d'une Clé gérée par AWS et transmise en tant que chaîne chiffrée.

Prérequis

Cette démonstration suppose que vous avez déjà spécifié votre nom de domaine et l'adresse IP du serveur DNS dans le jeu d'options DHCP associé à votre Amazon VPC. Pour en savoir plus, consultez Utilisation des jeux d'options DHCP dans le Guide de l'utilisateur Amazon VPC.

Pour créer un paramètre SecureString et associer un nœud à un domaine

  1. Saisissez les paramètres dans le système en utilisant AWS Tools for Windows PowerShell (Tools for Windows PowerShell).

    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
    Important

    Seule la valeur d'un paramètre SecureString est chiffrée. Les noms de paramètres, les descriptions et d'autres propriétés ne sont pas chiffrés.

  2. Attachez les politiques AWS Identity and Access Management (IAM) suivantes aux autorisations de rôle IAM pour votre nœud :

    • AmazonSSMManagedInstanceCore – Obligatoire. Cette politique gérée par AWS permet à une nœud géré d'utiliser les fonctions de base du service Systems Manager.

    • AmazonSSMDirectoryServiceAccess – Obligatoire. Cette politique gérée par AWS permet à SSM Agent d'accéder à AWS Directory Service en votre nom pour les demandes d'association du domaine par le nœud géré.

    • Une politique personnalisée pour l'accès au compartiment S3 – Obligatoire. SSM Agent, qui se trouve sur votre nœud et effectue des tâches Systems Manager, a besoin d'accéder à des compartiments Amazon Simple Storage Service (Amazon S3) spécifiques appartenant à Amazon. Dans la politique de compartiment S3 personnalisée que vous créez, vous pouvez également fournir l'accès à vos propres compartiments S3 qui sont nécessaires pour les opérations Systems Manager.

      Exemples : Vous pouvez écrire la sortie pour des commandes Run Command ou des sessions Session Manager dans un compartiment S3, puis utiliser cette sortie ultérieurement aux fins d'audit ou de dépannage. Vous stockez des scripts d'accès ou des listes de références de correctifs personnalisées dans un compartiment S3, puis vous faites référence au script ou à la liste lorsque vous exécutez une commande, ou lorsqu'un référentiel de correctifs est appliquée.

      Pour obtenir des informations sur la création d'une politique personnalisée pour l'accès à un compartiment Amazon S3, veuillez consulter Créer une politique de compartiment S3 personnalisée pour un profil d'instance

      Note

      L'enregistrement des données de journal de sortie dans un compartiment S3 est facultatif, mais nous vous recommandons de le configurer au début de votre processus de configuration de Systems Manager si vous avez décidé d'utiliser. Pour plus d'informations, consultez Création d'un compartiment dans le Guide de l'utilisateur Amazon Simple Storage Service.

    • CloudWatchAgentServerPolicy – Facultatif. Cette politique gérée AWS vous permet d'exécuter l'agent CloudWatch sur des nœuds gérés. Cette politique permet de lire les informations sur un nœud et de les écrire dans Amazon CloudWatch. Votre profil d'instance n'a besoin de cette politique que si vous utilisez des services tels qu'Amazon EventBridge ou CloudWatch Logs.

      Note

      L'utilisation des fonctions CloudWatch et EventBridge est facultative, mais nous vous recommandons de les configurer au début de votre processus de configuration de Systems Manager si vous avez décidé de les utiliser. Pour plus d'informations, consultez le Guide de l'utilisateur Amazon EventBridge et le Guide de l'utilisateur Amazon CloudWatch Logs.

  3. Modifiez le rôle IAM attaché au nœud et ajoutez la politique ci-dessous. Cette politique autorise le nœud à appeler l'API kms:Decrypt et ssm:CreateDocument.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "ssm:CreateDocument" ], "Resource": [ "arn:aws:kms:region:account-id:key/kms-key-id" ] } ] }
  4. Copiez et collez l'exemple json suivant dans un éditeur de texte simple et enregistrez le fichier en tant que JoinInstanceToDomain.json à l'emplacement suivant : 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. Exécutez la commande suivante dans Tools for Windows PowerShell pour créer un document SSM.

    $json = Get-Content C:\temp\JoinInstanceToDomain | Out-String New-SSMDocument -Name JoinInstanceToDomain -Content $json -DocumentType Command
  6. Exécutez la commande suivante dans Tools for Windows PowerShell pour associer le nœud au domaine.

    Send-SSMCommand -InstanceId instance-id -DocumentName JoinInstanceToDomain

    Si la commande aboutit, le système renvoie des informations similaires à ce qui suit.

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

    Si la commande échoue, le système renvoie des informations similaires à ce qui suit.

    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.