TLS/SSL を使用した安全な Apache Livy エンドポイントの設定 - Amazon EMR

TLS/SSL を使用した安全な Apache Livy エンドポイントの設定

エンドツーエンドの TLS および SSL 暗号化を使用した Amazon EMR on EKS 用の Apache Livy の設定について詳しくは、以下のセクションを参照してください。

TLS および SSL 暗号化の設定

Apache Livy エンドポイントで SSL 暗号化を設定するには、次の手順に従います。

  • Secrets Store CSI Driver と AWS Secrets and Configuration Provider (ASCP) のインストール – Secrets Store CSI Driver と ASCP は、Livy サーバーポッドが SSL を有効にするために必要な Livy の JKS 証明書とパスワードを安全に保存します。Secrets Store CSI Driver のみをインストールし、サポートされている他のシークレットプロバイダーを使用することもできます。

  • ACM 証明書の作成 – この証明書は、クライアントと ALB エンドポイント間の接続を保護するために必要です。

  • JKS 証明書、キーパスワード、キーストアパスワードを AWS Secrets Manager に設定 – ALB エンドポイントと Livy サーバー間の接続を保護するために必要です。

  • Livy サービスアカウントにアクセス権限を追加して AWS Secrets Manager からシークレットを取得 – Livy サーバーは、ASCP からシークレットを取得して Livy サーバーを保護する Livy 設定を追加するために、これらのアクセス権限を必要とします。サービスアカウントに IAM アクセス権限を追加するには、「サービスアカウント用 IAM ロール (IRSA、IAM roles for service accounts) でアクセス権限を設定する」を参照してください。

AWS Secrets Manager のキーとキーストアパスワードによる JKS 証明書の設定

キーとキーストアパスワードを使用して 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 を有効にしたら、AWS Secrets Manager で keyStore シークレットと keyPasswords シークレットにアクセスできるように serviceAccount を設定する必要があります。

  1. Livy サーバーの名前空間を作成します。

    kubectl create namespace <livy-ns>
  2. Secrets Manager のシークレットにアクセスできるように Livy のサービスアカウントを設定します。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 チャートのバージョンパラメータには、7.1.0 などの Amazon EMR リリースラベルを使用します。また、Amazon ECR レジストリのアカウント ID とリージョン ID を独自の ID に置き換える必要があります。リージョン別の Amazon ECR レジストリアカウントから AWS リージョンに対応する ECR-registry-account 値を確認できます。

    helm install <livy-app-name> \ oci://895885662937.dkr.ecr.region-id.amazonaws.com/livy \ --version 7.10.0 \ --namespace livy-namespace-name \ --set image=<ECR-registry-account.dkr.ecr>.<region>.amazonaws.com/livy/emr-7.10.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 EMR on EKS への Apache Livy のインストールのステップ 5 から続けます。