Uso de LDAP la autenticación para Presto en Amazon EMR - Amazon EMR

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Uso de LDAP la autenticación para Presto en Amazon EMR

Siga los pasos de esta sección para configurarloLDAP. Examine cada paso para ver ejemplos y enlaces a información adicional.

Paso 1: Recopile información sobre su LDAP servidor y copie el certificado del servidor en Amazon S3

Necesitará la información y los elementos de la siguiente sección de su LDAP servidor para configurar la LDAP autenticación.

La dirección IP o el nombre de host del LDAP servidor

El coordinador de Presto del nodo EMR maestro de Amazon debe poder comunicarse con el LDAP servidor en la dirección IP o el nombre de host especificados. De forma predeterminada, Presto se comunica con el LDAP servidor a LDAPS través del puerto 636. Si su LDAP implementación requiere un puerto personalizado, puede especificarlo mediante la ldap.url propiedad de Amazon EMR 5.16.0 o posterior, o authentication.ldap.url con versiones anteriores. Sustituya el puerto personalizado de 636 que se muestra en los ejemplos de clasificación de configuración presto-config en Paso 3: Cree una configuración JSON con las propiedades de Presto para LDAP. Asegúrese de que todos los firewalls y grupos de seguridad permiten el tráfico entrante y saliente en el puerto 636 (o en el puerto personalizado) y también en el puerto 8446 (o en el puerto personalizado), que se utiliza para las comunicaciones internas del clúster.

El certificado del servidor LDAP

Debe cargar el archivo de certificado en una ubicación segura en Amazon S3. Para obtener más información, consulte ¿Cómo puedo cargar archivos y carpetas en un bucket de S3? en la Guía del usuario de Amazon Simple Storage Service. Debe crear una acción de arranque que copie este certificado de Amazon S3 en cada nodo del clúster cuando se lance el clúster. En Paso 4: Cree el script para copiar el certificado LDAP del servidor y subirlo a Amazon S3. El certificado de ejemplo es s3://amzn-s3-demo-bucket/ldap_server.crt.

La configuración del LDAP servidor para el enlace anónimo

Si el enlace anónimo está deshabilitado en PrestoDB, necesitará el ID de usuario UID () y la contraseña de una cuenta con permisos para vincularse al servidor, de modo que LDAP el servidor PrestoDB pueda establecer una conexión. La contraseña UID y la contraseña se especifican mediante las internal-communication.authentication.ldap.password propiedades internal-communication.authentication.ldap.user y de la clasificación de configuración. presto-config Amazon EMR 5.10.0 no admite esta configuración, por lo que el LDAP servidor debe admitir el enlace anónimo cuando utilice esta versión de lanzamiento.

Tenga en cuenta que Trino no requiere la configuración de enlace anónimo.

Para obtener el estado de la vinculación anónima en el servidor LDAP
  • Utilice el comando ldapwhoami desde un cliente Linux, tal y como se muestra en el ejemplo siguiente:

    ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress

    Si la conexión anónima no está permitida, el comando devuelve lo siguiente:

    ldap_bind: Inappropriate authentication (48) additional info: anonymous bind disallowed
Para comprobar que una cuenta tiene permisos para acceder a un LDAP servidor que utiliza la autenticación simple
  • Utilice el comando ldapwhoami desde un cliente Linux, tal y como se muestra en el ejemplo siguiente. En el ejemplo se utiliza un usuario ficticio, presto, almacenado en un LDAP servidor Open que se ejecuta en una EC2 instancia con un nombre de host ficticio ip-xxx-xxx-xxx-xxx.ec2.internal. El usuario está asociado a la unidad organizativa (OU) admins y con la contraseña 123456:

    ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal

    Si la cuenta es válida y tiene los permisos adecuados, el comando devuelve:

    dn:uid=presto,ou=admins,dc=ec2,dc=internal

Las configuraciones de ejemplo de Paso 3: Cree una configuración JSON con las propiedades de Presto para LDAP incluyen esta cuenta por razones de claridad, con la excepción del ejemplo de 5.10.0, en el que no se admite. Si el LDAP servidor utiliza un enlace anónimo, elimine los pares internal-communication.authentication.ldap.user y internal-communication.authentication.ldap.password nombre/valor.

El nombre LDAP distintivo (DN) de los usuarios de Presto

Al especificar la LDAP configuración de Presto, se especifica un patrón de encuadernación que consiste ${USER} en una unidad organizativa (OU) y componentes de dominio adicionales (DCs). Presto lo reemplaza por el ID de usuario (UID) real de cada usuario durante la autenticación ${USER} con contraseña para que coincida con el nombre distintivo (DN) que especifica este patrón de enlace. Necesita el nombre al OUs que pertenecen los usuarios aptos y el suyo. DCs Por ejemplo, para permitir que los usuarios de la unidad organizativa admins del dominio corp.example.com se autentiquen en Presto, debe especificar ${USER},ou=admins,dc=corp,dc=example,dc=com como el patrón de conexión del usuario.

nota

Cuando la utilices AWS CloudFormation, tendrás que utilizar la función Fn: :Sub para sustituirla por ${USER} la ID de usuario real ()UID. Para obtener más información, consulte el tema Fn::Sub en la Guía del usuario de AWS CloudFormation .

Al utilizar Amazon EMR 5.10.0, solo puede especificar uno de esos patrones. Con Amazon EMR 5.11.0 o una versión posterior, puede especificar varios patrones separados por dos puntos (:). Los usuarios que intentan autenticarse en Presto se cotejan con el primer patrón, después con el segundo y así sucesivamente. Para ver un ejemplo, consulte Paso 3: Cree una configuración JSON con las propiedades de Presto para LDAP.

Paso 2: Definir una configuración de seguridad

Cree una configuración de seguridad con el cifrado en tránsito habilitado. Para obtener más información, consulta Cómo crear una configuración de seguridad en la Amazon EMR Management Guide. Los artefactos de cifrado que proporcionó al configurar el cifrado en tránsito se utilizan para cifrar la comunicación interna entre los nodos de Presto. Para obtener más información, consulte Proporcionar certificados para cifrado de datos en tránsito. El certificado LDAP del servidor se utiliza para autenticar las conexiones de los clientes al servidor de Presto.

Paso 3: Cree una configuración JSON con las propiedades de Presto para LDAP

Utilice la clasificación de presto-config configuración para establecer las propiedades de Presto. LDAP El formato y el contenido varían ligeramente según la versión de presto-config EMR lanzamiento de Amazon y la instalación de Presto (PrestoDB o Trino). Más adelante en esta sección, se proporcionan ejemplos de las diferencias de configuración. Para obtener más información, consulte Configuración de aplicaciones.

En los siguientes pasos se supone que guardas los JSON datos en un archivo, MyPrestoConfig.json. Si usa la consola, cargue el archivo en una ubicación segura en Amazon S3 para que pueda hacer referencia a él cuando cree el clúster. Si usa el AWS CLI, puede hacer referencia al archivo localmente.

ejemplo Amazon EMR 6.1.0 y versiones posteriores con Presto SQL (Trino)

En el siguiente ejemplo, se utiliza el nombre de LDAP host de Paso 1: Recopile información sobre su LDAP servidor y copie el certificado del servidor en Amazon S3 para autenticarse en el servidor para el LDAP enlace. Se especifican dos patrones de enlace de usuarios, lo que indica que los usuarios de la admins datascientists OU y de la OU LDAP del servidor pueden autenticarse en el servidor Trino como usuarios. Los patrones de conexión están separados por un signo de dos puntos (:).

EMRLas versiones 6.4.0 y posteriores de Amazon usan el nuevo nombre Trino en lugar de Presto. SQL Si usa Trino, reemplace prestosql-config en la siguiente clasificación de configuración con y con. trino-config prestosql-password-authenticator trino-password-authenticator

[ { "Classification":"prestosql-config", "Properties":{ "http-server.authentication.type":"PASSWORD" } }, { "Classification":"prestosql-password-authenticator", "Properties":{ "password-authenticator.name":"ldap", "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal" } } ]
ejemplo Amazon EMR 5.16.0 y versiones posteriores

En el siguiente ejemplo, se utilizan el ID LDAP de usuario y la contraseña, así como el nombre de LDAP host de, Paso 1: Recopile información sobre su LDAP servidor y copie el certificado del servidor en Amazon S3 para autenticarse en el LDAP servidor y realizar el enlace. Se especifican dos patrones de enlace de usuario, lo que indica que los usuarios de la admins datascientists OU y de la OU LDAP del servidor pueden autenticarse en el servidor Presto como usuarios. Los patrones de conexión están separados por un signo de dos puntos (:).

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "PASSWORD" } }, { "Classification": "presto-password-authenticator", "Properties": { "password-authenticator.name": "ldap", "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal", "internal-communication.authentication.ldap.user": "presto", "internal-communication.authentication.ldap.password": "123456" } }]
ejemplo Amazon EMR 5.11.0 a 5.15.0

El formato de la clasificación de configuración presto-config es ligeramente diferente para estas versiones. En el siguiente ejemplo se especifican los mismos parámetros que en el ejemplo anterior.

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "LDAP", "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal", "internal-communication.authentication.ldap.user": "presto", "internal-communication.authentication.ldap.password": "123456" } }]
ejemplo Amazon EMR 5.10.0

Amazon EMR 5.10.0 solo admite el enlace anónimo, por lo que se omiten esas entradas. Además, solo se puede especificar un patrón de conexión.

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "LDAP", "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal" } }]

Paso 4: Cree el script para copiar el certificado LDAP del servidor y subirlo a Amazon S3

Cree un script que copie el archivo de certificado en cada nodo del clúster y lo añada al almacén de claves. Cree el script con un editor de texto, guárdelo y, a continuación, cárguelo en Amazon S3. EnPaso 5: Crear el clúster, se hace referencia al archivo de script como s3://amzn-s3-demo-bucket/LoadLDAPCert.sh.

El siguiente script de ejemplo utiliza la contraseña predeterminada del almacén de claves, changeit. Se recomienda conectarse al nodo principal después de crear el clúster y cambiar la contraseña del almacén de claves mediante el comando keytool.

#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt . sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt

Paso 5: Crear el clúster

Al crear el clúster, especificas Presto y otras aplicaciones que deseas que Amazon EMR instale. Los siguientes ejemplos también hacen referencia a las propiedades de la clasificación de la configuración dentro de aJSON, pero también se puede especificar la clasificación de la configuración en línea.

Para crear un clúster de Presto con LDAP autenticación mediante la consola de Amazon EMR
  1. Ve a la nueva EMR consola de Amazon y selecciona Cambiar a la consola anterior en el panel de navegación lateral. Para más información sobre lo que puede esperar al cambiar a la consola antigua, consulte Uso de la consola antigua.

  2. Elija Crear clúster e Ir a las opciones avanzadas.

  3. Elija Presto junto con otras aplicaciones para EMR que Amazon las instale y, en Configuración del software, seleccione la versión de Amazon EMR que desee utilizar. LDAPla autenticación solo es compatible con Amazon EMR 5.10.0 y versiones posteriores.

  4. En Editar configuración de software, selecciona Cargar JSON desde S3, introduce la ubicación en Amazon S3 del archivo de JSON configuración en el que has creado yPaso 3: Cree una configuración JSON con las propiedades de Presto para LDAP, a continuación, selecciona Siguiente.

  5. Configure el hardware y la conexión en red del clúster y, a continuación, elija Next (Siguiente).

  6. Elija Bootstrap Actions (Acciones de arranque). En Add bootstrap action (Añadir acción de arranque), seleccione Custom action (Acción personalizada) y después elija Configure and add (Configurar y añadir).

  7. Introduzca un nombre para la acción de arranque, introduzca la ubicación del script en la que la creó (por ejemploPaso 4: Cree el script para copiar el certificado LDAP del servidor y subirlo a Amazon S3, s3://amzn-s3-demo-bucket/L oadLDAPCert .sh) y, a continuación, seleccione Añadir.

  8. En General Options (Opciones generales), Tags (Etiquetas) y Additional Options (Opciones adicionales), elija la configuración adecuada para su aplicación y después elija Next (Siguiente).

  9. Elija Authentication and encryption (Autenticación y cifrado) y, a continuación, seleccione el valor de Security configuration (Configuración de seguridad) correspondiente a la configuración de seguridad que creó en el Paso 2: Definir una configuración de seguridad.

  10. Elija otras opciones de seguridad que sean necesarias para su aplicación y, a continuación, elija Create cluster (Crear clúster).

Para crear un clúster de Presto con autenticación mediante LDAP AWS CLI
  • Utilice el comando aws emr create-cluster. Como mínimo, especifique la aplicación de Presto y también la clasificación de configuración de Presto, el script de arranque y la configuración de seguridad que creó en los pasos anteriores. El siguiente ejemplo hace referencia al archivo de configuración como un JSON archivo guardado en el mismo directorio en el que se ejecuta el comando. El script de arranque, por otro lado, debe guardarse en Amazon S3. El siguiente ejemplo utiliza s3://amzn-s3-demo-bucket/LoadLDAPCert.sh.

    nota

    Se incluyen caracteres de continuación de línea de Linux (\) para facilitar la lectura. Se pueden eliminar o utilizar en los comandos de Linux. En Windows, elimínelos o sustitúyalos por un signo de intercalación (^).

    aws emr create-cluster --applications Name=presto --release-label emr-5.16.0 \ --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \ --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json