Crear un parámetro SecureString en Parameter Store y unir un nodo con un dominio (PowerShell) - AWS Systems Manager

Crear un parámetro SecureString en Parameter Store y unir un nodo con un dominio (PowerShell)

Esta explicación muestra cómo unir un nodo Windows Server a un dominio mediante parámetros AWS Systems Manager SecureString y Run Command. El tutorial utiliza parámetros de dominio típicos, como el nombre de dominio y un nombre de usuario del dominio. Estos valores se transfieren como valores de cadena no cifrados. La contraseña del dominio se cifra con una Clave administrada de AWS y se transfiere como una cadena segura.

Requisitos previos

En este tutorial se supone que ya ha especificado el nombre de dominio y la dirección IP del servidor DNS en el conjunto de opciones de DHCP asociadas a su Amazon VPC. Para obtener más información, consulte Trabajar con conjuntos de opciones DHCP en la Guía del usuario de Amazon VPC.

Para crear un parámetro SecureString y unir un nodo a un dominio
  1. Escriba parámetros en el sistema utilizando AWS Tools for Windows PowerShell.

    En el siguiente ejemplo, reemplace cada marcador de posición del usuario con su propia información.

    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
    importante

    Solo se cifra el valor de un parámetro SecureString. Los nombres de parámetros, las descripciones y otras propiedades no se cifran.

  2. Adjunte las siguientes políticas de AWS Identity and Access Management (IAM) a los permisos de rol de IAM para el nodo:

    • AmazonSSMManagedInstanceCore: obligatorio. Esta política administrada por AWS permite que un nodo administrado utilice la funcionalidad básica del servicio Systems Manager.

    • AmazonSSMDirectoryServiceAccess: obligatorio. Esta política administrada de AWS permite a SSM Agent acceder a AWS Directory Service en su nombre para las solicitudes de unión al dominio por parte del nodo administrado.

    • Una política personalizada para el acceso al bucket de S3: obligatorio. SSM Agent, ubicado en su nodo y que desempeña las tareas de Systems Manager, requiere acceso a buckets de Amazon específicos de Amazon Simple Storage Service (Amazon S3). En la política de bucket de S3 personalizada que crea, también ofrece acceso a los buckets de S3 de su propiedad que sean necesarios para las operaciones de Systems Manager.

      Ejemplos: puede escribir resultados para los comandos de Run Command o sesiones de Session Manager en un bucket de S3 y utilizar este resultado más tarde para tareas de auditoría o resolución de problemas. Puede almacenar scripts de acceso o listas de línea de base de revisiones personalizadas en un bucket de S3 y, a continuación, consultar el script o la lista cuando ejecute un comando o cuando aplique la línea de base de revisiones.

      Para obtener más información acerca de la creación de políticas personalizadas para el acceso al bucket de Amazon S3, consulte Crear una política de bucket de S3 personalizada para un perfil de instancia

      nota

      Guardar los datos del registro de salida en un bucket de S3 es opcional, pero recomendamos que configure esta opción al principio de su proceso de configuración de Systems Manager si ha decidido utilizarlo. Para obtener más información, consulte Create a Bucket (Creación de un bucket) en la Guía del usuario de Amazon Simple Storage Service.

    • CloudWatchAgentServerPolicy: opcional. Esta política administrada de AWS le permite ejecutar el agente de CloudWatch en nodos administrados. Esta política permite la lectura de información en un nodo y su escritura en Amazon CloudWatch. Su perfil de instancias solo precisa de esta política si hace uso de servicios, como Amazon EventBridge o Registros de CloudWatch.

      nota

      El uso de características de CloudWatch y EventBridge es opcional, pero recomendamos que las configure al principio de su proceso de configuración de Systems Manager si ha decidido usarlas. Para obtener más información, consulte la Guía del usuario de Amazon EventBridge y la Guía del usuario de Registros de Amazon CloudWatch.

  3. Edite el rol de IAM adjunto al nodo y agregue la siguiente política. Esta política concede al nodo los permisos para llamar a kms:Decrypt y a ssm:CreateDocument de la API.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "ssm:CreateDocument" ], "Resource": [ "arn:aws:kms:region:account-id:key/kms-key-id" ] } ] }
  4. Copie y pegue el siguiente texto de json en un editor de texto y guarde el archivo como JoinInstanceToDomain.json en la siguiente ubicación: 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. Ejecute el siguiente comando en Tools for Windows PowerShell para crear un nuevo documento de SSM.

    $json = Get-Content C:\temp\JoinInstanceToDomain | Out-String New-SSMDocument -Name JoinInstanceToDomain -Content $json -DocumentType Command
  6. Ejecute el siguiente comando en Tools for Windows PowerShell para unir el nodo con el dominio.

    Send-SSMCommand -InstanceId instance-id -DocumentName JoinInstanceToDomain

    Si el comando es exitoso, este devuelve información similar a la siguiente.

    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 el comando falla, este devuelve información similar a la siguiente.

    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.