Configuración de un punto de conexión de Apache Livy seguro con TLS/SSL - Amazon EMR

Configuración de un punto de conexión de Apache Livy seguro con TLS/SSL

Consulte las siguientes secciones para obtener más información sobre la configuración de Apache Livy para Amazon EMR en EKS con cifrado TLS y SSL de extremo a extremo.

Configuración del cifrado TLS y SSL

Para configurar el cifrado SSL en su punto de conexión de Apache Livy, siga estos pasos.

  • Instale el controlador CSI de Secrets Store y el Secrets and Configuration Provider (ASCP) de AWS: el controlador CSI del Secrets Store y el ASCP almacenan de forma segura los certificados JKS y las contraseñas de Livy que el pod del servidor de Livy necesita para habilitar el SSL. También puede instalar solo el controlador CSI de Secrets Store y utilizar cualquier otro proveedor de secretos compatible.

  • Cree un certificado ACM: este certificado es necesario para proteger la conexión entre el cliente y el punto de conexión de ALB.

  • Configure un certificado JKS, una contraseña clave y una contraseña del almacén de claves para AWS Secrets Manager: necesarios para proteger la conexión entre el punto de conexión de ALB y el servidor de Livy.

  • Añada permisos a la cuenta de servicio de Livy para recuperar los secretos de AWS Secrets Manager: el servidor de Livy necesita estos permisos para recuperar los secretos del ASCP y añadir las configuraciones de Livy para proteger el servidor de Livy. Para añadir permisos de IAM a la cuenta del servicio, consulte Configuración de los permisos de acceso con roles de IAM para las cuentas de servicio (IRSA).

Configuración de un certificado JKS con una clave y una contraseña de almacén de claves para AWS Secrets Manager

Siga estos pasos para configurar un certificado JKS con una clave y una contraseña de almacén de claves.

  1. Genere un archivo de almacén de claves para el servidor de Livy.

    keytool -genkey -alias <host> -keyalg RSA -keysize 2048 –dname CN=<host>,OU=hw,O=hw,L=<your_location>,ST=<state>,C=<country> –keypass <keyPassword> -keystore <keystore_file> -storepass <storePassword> --validity 3650
  2. Cree un certificado.

    keytool -export -alias <host> -keystore mykeystore.jks -rfc -file mycertificate.cert -storepass <storePassword>
  3. Cree un archivo de almacén de confianza.

    keytool -import -noprompt -alias <host>-file <cert_file> -keystore <truststore_file> -storepass <truststorePassword>
  4. Guarde el certificado JKS en AWS Secrets Manager. Sustituya livy-jks-secret por su secreto y fileb://mykeystore.jks por la ruta al certificado JKS de su almacén de claves.

    aws secretsmanager create-secret \ --name livy-jks-secret \ --description "My Livy keystore JKS secret" \ --secret-binary fileb://mykeystore.jks
  5. Guarde el almacén de claves y la contraseña de claves en Secrets Manager. Asegúrese de utilizar sus propios parámetros.

    aws secretsmanager create-secret \ --name livy-jks-secret \ --description "My Livy key and keystore password secret" \ --secret-string "{\"keyPassword\":\"<test-key-password>\",\"keyStorePassword\":\"<test-key-store-password>\"}"
  6. Cree un espacio de nombres del servidor de Livy con el siguiente comando.

    kubectl create ns <livy-ns>
  7. Cree el objeto ServiceProviderClass para el servidor de Livy que tiene el certificado JKS y las contraseñas.

    cat >livy-secret-provider-class.yaml << EOF apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "livy-jks-secret" objectType: "secretsmanager" - objectName: "livy-passwords" objectType: "secretsmanager" EOF kubectl apply -f livy-secret-provider-class.yaml -n <livy-ns>

Introducción a Apache Livy con SSL habilitado

Después de habilitar el SSL en su servidor de Livy, debe configurar la serviceAccount para tener acceso a los secretos keyStore y keyPasswords en AWS Secrets Manager.

  1. Cree el espacio de nombres del servidor de Livy.

    kubectl create namespace <livy-ns>
  2. Configure la cuenta de servicio Livy para tener acceso a los secretos en Secrets Manager. Para obtener más información sobre la configuración de IRSA, consulte Configuración de los IRSA durante la instalación de Apache Livy.

    aws ecr get-login-password \--region region-id | helm registry login \ --username AWS \ --password-stdin ECR-registry-account.dkr.ecr.region-id.amazonaws.com
  3. Instale Livy. Para el gráfico de Helm: parámetro de versión, utilice su etiqueta de versión de Amazon EMR, como 7.1.0. También debe sustituir el ID de cuenta del registro de Amazon ECR y el ID de región por sus propios ID. Puede encontrar el valor ECR-registry-account correspondiente a su Región de AWS a partir de sus cuentas de registro de Amazon ECR por región.

    helm install <livy-app-name> \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/livy \ --version 7.3.0 \ --namespace livy-namespace-name \ --set image=<ECR-registry-account.dkr.ecr>.<region>.amazonaws.com/livy/emr-7.3.0:latest \ --set sparkNamespace=spark-namespace \ --set ssl.enabled=true --set ssl.CertificateArn=livy-acm-certificate-arn --set ssl.secretProviderClassName=aws-secrets --set ssl.keyStoreObjectName=livy-jks-secret --set ssl.keyPasswordsObjectName=livy-passwords --create-namespace
  4. Continúe con el paso 5 de la Instalación de Apache Livy en Amazon EMRen EKS.