本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 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憑證。
-
產生 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 -
建立憑證。
keytool -export -alias
<host>
-keystore mykeystore.jks -rfc -filemycertificate.cert
-storepass<storePassword>
-
建立信任存放區檔案。
keytool -import -noprompt -alias
<host>
-file<cert_file>
-keystore<truststore_file>
-storepass<truststorePassword>
-
在 中儲存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-binaryfileb://mykeystore.jks
-
在 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>
\"}" -
使用下列命令建立 Livy 伺服器命名空間。
kubectl create ns
<livy-ns>
-
為具有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。
-
建立 Livy 伺服器命名空間。
kubectl create namespace
<livy-ns>
設定 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
-
安裝 Livy。對於 Helm Chart --version 參數,請使用您的 Amazon EMR版本標籤,例如
7.1.0
。您還必須將 Amazon ECR登錄帳戶 ID 和區域 ID 取代為您自己的 IDs。您可以從 Amazon 登錄帳戶 AWS 區域 依區域 找到 的對應ECR-registry-account
值。 ECRhelm install
<livy-app-name>
\ oci://895885662937.dkr.ecr.region-id.amazonaws.com/livy \ --version 7.3.0 \ --namespacelivy-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