使用 TLS/SSL 设置安全的 Apache Livy 端点 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用 TLS/SSL 设置安全的 Apache Livy 端点

请参阅以下章节,详细了解如何在 EKS 上使用 TLS 和 SSL 加密设置 Apache end-to-end Livy for Amazon EMR。

设置 TLS 和 SSL 加密

要在你的 Apache Livy 端点上设置 SSL 加密,请按照以下步骤操作。

  • 安装 Secrets Store CSI 驱动程序以及机 Amazon 密和配置提供程序 (ASCP) — Secrets Store CSI 驱动程序和 ASCP 可以安全地存储 Livy 的 JKS 证书和密码,Livy 服务器舱需要这些证书和密码才能启用 SSL。您也可以只安装 Secrets Store CSI 驱动程序并使用任何其他支持的密钥提供程序。

  • 创建 ACM 证书 — 此证书是保护客户端和 ALB 端点之间连接所必需的。

  • 为 Amazon Secrets Manager — 设置 JKS 证书、密钥密码和密钥库密码,这是保护 ALB 端点和 Livy 服务器之间连接所必需的。

  • 向 Livy 服务帐户添加从中检索机密的权限 Amazon Secrets Manager — Livy 服务器需要这些权限才能从 ASCP 检索机密并添加 Livy 配置来保护 Livy 服务器。要向服务账户添加 IAM 权限,请参阅使用服务账户的 IAM 角色设置访问权限 (IRSA)。

使用密钥和密钥库密码设置 JKS 证书 Amazon Secrets Manager

按照以下步骤设置带有密钥和密钥库密码的 JKS 证书。

  1. 为 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. 创建证书。

    keytool -export -alias <host> -keystore mykeystore.jks -rfc -file mycertificate.cert -storepass <storePassword>
  3. 创建信任库文件。

    keytool -import -noprompt -alias <host>-file <cert_file> -keystore <truststore_file> -storepass <truststorePassword>
  4. 将 JKS 证书保存在中。 Amazon Secrets Managerlivy-jks-secret替换为您的密钥和fileb://mykeystore.jks密钥库 JKS 证书的路径。

    aws secretsmanager create-secret \ --name livy-jks-secret \ --description "My Livy keystore JKS secret" \ --secret-binary fileb://mykeystore.jks
  5. 将密钥库和密钥密码保存在 Secrets Manager 中。请务必使用自己的参数。

    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. 使用以下命令创建 Livy 服务器命名空间。

    kubectl create ns <livy-ns>
  7. 为具有 JKS 证书和密码的 Livy 服务器创建ServiceProviderClass对象。

    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>

启用 SSL 的 Apache Livy 入门

在 Livy 服务器上启用 SSL 后,必须设置才能访问keyStore和开启keyPasswords Amazon Secrets Manager密码。serviceAccount

  1. 创建 Livy 服务器命名空间。

    kubectl create namespace <livy-ns>
  2. 设置 Livy 服务账户以访问 Secrets Manager 中的密钥。有关设置 IRSA 的更多信息,请参阅在安装 Apache Livy 时设置 IRSA

    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. 安装 Livy。对于 Helm chart--version 参数,请使用您的 Amazon EMR 版本标签,例如。7.1.0您还必须将 Amazon ECR 注册账户编号和地区编号替换为自己的 ID。您可以按地区 Amazon Web Services 区域 从 Amazon ECR 注册账户中找到相应的ECR-registry-account值。

    helm install <livy-app-name> \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/livy \ --version 7.1.0 \ --namespace livy-namespace-name \ --set image=<ECR-registry-account.dkr.ecr>.<region>.amazonaws.com/livy/emr-7.1.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. 继续在 EKS 上的 “在亚马逊 EMR 上安装 Apache Livy” 的第 5 步。