使用 TLS/ 設定安全的 Apache Livy 端點SSL - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 TLS/ 設定安全的 Apache Livy 端點SSL

請參閱下列各節,進一步了解如何使用 TLS和 SSL加密EKS在 EMR end-to-end 上設定 Apache Livy for Amazon。

設定TLS和SSL加密

若要在 Apache Livy 端點上設定SSL加密,請遵循下列步驟。

  • 安裝 Secrets Store CSI Driver 和 AWS Secrets and Configuration Provider (ASCP) – Secrets Store CSI Driver,並ASCP安全地存放 Livy 伺服器 Pod 啟用 所需的 Livy JKS憑證和密碼SSL。您也可以僅安裝 Secrets Store CSI Driver,並使用任何其他支援的秘密提供者。

  • 建立ACM憑證 – 需要此憑證才能保護用戶端與ALB端點之間的連線。

  • 為 設定JKS憑證、金鑰密碼和金鑰存放區密碼 AWS Secrets Manager – 為保護ALB端點與 Livy 伺服器之間的連線所必需。

  • 將許可新增至 Livy 服務帳戶以從中擷取秘密 AWS Secrets Manager – Livy 伺服器需要這些許可,才能從中擷取秘密,ASCP並新增 Livy 組態以保護 Livy 伺服器。若要將IAM許可新增至服務帳戶,請參閱設定具有服務帳戶IAM角色的存取許可 (IRSA)。

使用 的金鑰和金鑰存放區密碼設定JKS憑證 AWS 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憑證 AWS Secrets Manager。將 取代livy-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 伺服器上啟用 之後,您必須設定 serviceAccount才能存取 keyStore和 上的keyPasswords秘密 AWS Secrets Manager。

  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 和區域 ID 取代為您自己的 IDs。您可以從 Amazon 登錄帳戶 AWS 區域 依區域 找到 的對應ECR-registry-account值。 ECR

    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. 從在 Amazon 上安裝 Apache Livy 的步驟 EMR EKS5 繼續。