Amazon での Presto のLDAP認証の使用 EMR - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon での Presto のLDAP認証の使用 EMR

このセクションの手順に従って を設定しますLDAP。例および詳細へのリンクについては、各ステップを参照してください。

ステップ 1: LDAPサーバーに関する情報を収集し、サーバー証明書を Amazon S3 にコピーする

LDAP 認証LDAPを設定するには、サーバーから次のセクションの情報と項目が必要です。

LDAP サーバーの IP アドレスまたはホスト名

Amazon EMRマスターノードの Presto コーディネーターは、指定された IP アドレスまたはホスト名でLDAPサーバーに到達できる必要があります。デフォルトでは、Presto はポート 636 LDAPS経由で を使用してLDAPサーバーと通信します。LDAP 実装にカスタムポートが必要な場合は、Amazon 5.16.0 EMR 以降の ldap.urlプロパティを使用するか、以前のバージョンauthentication.ldap.urlで を使用して指定できます。「636」の presto-config の設定分類の例に示すように、ステップ 3: の Presto プロパティJSONを使用して設定を作成する LDAP のカスタムポートを置き換えます。ファイアウォールやセキュリティグループにより、ポート 636 (またはカスタムポート) およびポート 8446 (またはカスタムポート) でインバウンドおよびアウトバウンドトラフィックが許可されることを確認します。これは内部クラスター通信に使用されます。

LDAP サーバー証明書

証明書ファイルを Amazon S3 の安全な場所にアップロードする必要があります。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「S3 バケットにファイルとフォルダをアップロードする方法」を参照してください。クラスターの起動時に、この証明書を Amazon S3 からクラスター内の各ノードにコピーするブートストラップアクションを作成します。「ステップ 4: LDAPサーバー証明書をコピーして Amazon S3 にアップロードするスクリプトを作成する」で、証明書の例は ですs3://amzn-s3-demo-bucket/ldap_server.crt

匿名バインディングのLDAPサーバー設定

PrestoDB で匿名バインドが無効になっている場合は、PrestoDB サーバーが接続を確立できるように、LDAPサーバーにバインドするアクセス許可を持つアカウントのユーザー ID (UID) とパスワードが必要です。presto-config 設定分類の UIDおよび internal-communication.authentication.ldap.passwordプロパティを使用して、 internal-communication.authentication.ldap.userおよび パスワードを指定します。Amazon EMR 5.10.0 はこれらの設定をサポートしていないため、このリリースバージョンを使用する場合はLDAP、サーバーで匿名バインディングをサポートする必要があります。

Trino では匿名バインディングを設定する必要はありません。

LDAP サーバー上の匿名バインディングのステータスを取得するには
  • 次の例に示すように、Linux クライアントから ldapwhoami コマンドを使用します。

    ldapwhoami -x -H ldaps://LDAPServerHostNameOrIPAddress

    匿名バインドが許可されない場合、コマンドの出力は次のようになります。

    ldap_bind: Inappropriate authentication (48) additional info: anonymous bind disallowed
シンプルな認証を使用する LDAPサーバーに対するアクセス許可がアカウントにあることを確認するには
  • 次の例に示すように、Linux クライアントから ldapwhoami コマンドを使用します。この例では、架空のホスト名が のEC2インスタンスで実行されている Open LDAPサーバーprestoに保存されている架空のユーザー を使用しますip-xxx-xxx-xxx-xxx.ec2.internal。ユーザーは組織単位 (OU) adminsとパスワード に関連付けられています123456

    ldapwhoami -x -w "123456" -D uid=presto,ou=admins,dc=ec2,dc=internal -H ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal

    アカウントが有効であり、適切なアクセス権限がある場合、コマンドの出力は次のようになります。

    dn:uid=presto,ou=admins,dc=ec2,dc=internal

ステップ 3: の Presto プロパティJSONを使用して設定を作成する LDAP の設定例には、わかりやすくするためにこのアカウントが含まれています。ただし、5.10.0 の例は例外で、サポートされていません。LDAP サーバーが匿名バインディングを使用している場合は、 internal-communication.authentication.ldap.userinternal-communication.authentication.ldap.passwordの名前と値のペアを削除します。

Presto ユーザーのLDAP識別名 (DN)

Presto LDAPの設定を指定するときは、組織単位 (OU) および追加のドメインコンポーネント () ${USER}とともに で構成されるバインドパターンを指定しますDCs。Presto は${USER}、このバインドパターンが指定する識別名 (DNUID) と一致するように、パスワード認証中に を各ユーザーの実際のユーザー ID () に置き換えます。対象となるユーザーが属OUsする とその が必要ですDCs。たとえば、admins ドメインの corp.example.com OU のユーザーが Presto に対して認証されるようにするには、ユーザーバインドパターンとして ${USER},ou=admins,dc=corp,dc=example,dc=com を指定します。

注記

を使用する場合 AWS CloudFormation、 を実際のユーザー ID () ${USER}に置き換えるには、Fn::Sub 関数を使用する必要がありますUID。詳細については、「AWS CloudFormation ユーザーガイド」の「Fn::Sub」トピックを参照してください。

Amazon 5EMR.10.0 を使用する場合、このようなパターンは 1 つだけ指定できます。Amazon 5EMR.11.0 以降では、コロン (:) で区切られた複数のパターンを指定できます。Presto に対して認証を試みるユーザーは最初のパターンと比較されてから、2 番目のパターンに比較され、以降も同様に比較されます。例については、ステップ 3: の Presto プロパティJSONを使用して設定を作成する LDAPを参照してください。

ステップ 2: セキュリティ設定をセットアップする

転送時の暗号化を有効にして、セキュリティ設定を作成します。詳細については、「Amazon EMR 管理ガイド」の「セキュリティ設定の作成」を参照してください。転送時の暗号化を設定する際に指定する暗号化アーティファクトは、Presto のノード間の内部通信を暗号化するために使用されます。詳細については、「伝送中のデータの暗号化のための証明書を提供する」を参照してください。LDAP サーバー証明書は、Presto サーバーへのクライアント接続を認証するために使用されます。

ステップ 3: の Presto プロパティJSONを使用して設定を作成する LDAP

presto-config 設定分類を使用して、 の Presto プロパティを設定しますLDAP。の形式と内容はpresto-config、Amazon EMRリリースバージョンと Presto のインストール (PrestoDB または Trino) によって若干異なります。設定の違いの例については、このセクションの後半で示します。詳細については、「アプリケーションの設定」を参照してください。

次の手順では、JSONデータをファイル に保存することを前提としていますMyPrestoConfig.json。コンソールを使用する場合、Amazon S3 の安全な場所にファイルをアップロードし、クラスターを作成するときに参照できるようにします。を使用する場合は AWS CLI、ファイルをローカルで参照できます。

例 Amazon EMR 6.1.0 以降と PrestoSQL (Trino)

次の例では、 のLDAPホスト名を使用してステップ 1: LDAPサーバーに関する情報を収集し、サーバー証明書を Amazon S3 にコピーする、バインドのためにLDAPサーバーを認証します。2 つのユーザーバインドパターンが指定されています。これは、OU admins 内のユーザーとLDAPサーバー上の datascientists OU がユーザーとして Trino サーバーへの認証の対象となることを示します。バインドパターンはコロン (:) で区切られます。

Amazon EMRバージョン 6.4.0 以降では、Presto ではなく Trino という新しい名前が使用されますSQL。Trino を使用する場合、以下の設定分類で prestosql-configtrino-config に置き換え、prestosql-password-authenticatortrino-password-authenticator に置き換えてください。

[ { "Classification":"prestosql-config", "Properties":{ "http-server.authentication.type":"PASSWORD" } }, { "Classification":"prestosql-password-authenticator", "Properties":{ "password-authenticator.name":"ldap", "ldap.url":"ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal" } } ]
例 Amazon EMR 5.16.0 以降

次の例では、LDAPユーザー ID とパスワード、および からのLDAPホスト名を使用してステップ 1: LDAPサーバーに関する情報を収集し、サーバー証明書を Amazon S3 にコピーする、バインドのためにLDAPサーバーを認証します。2 つのユーザーバインドパターンが指定されています。これは、OU admins 内のユーザーとLDAPサーバー上の datascientists OU がユーザーとして Presto サーバーへの認証の対象となることを示します。バインドパターンはコロン (:) で区切られます。

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "PASSWORD" } }, { "Classification": "presto-password-authenticator", "Properties": { "password-authenticator.name": "ldap", "ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal", "internal-communication.authentication.ldap.user": "presto", "internal-communication.authentication.ldap.password": "123456" } }]
例 Amazon EMR 5.11.0 から 5.15.0

presto-config 設定分類の形式は、これらのリリースバージョンごとに少し異なります。次の例では、前の例と同じパラメータを指定します。

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "LDAP", "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "authentication.ldap.user-bind-pattern": "uid=${USER},ou=admins,dc=ec2,dc=internal:uid=${USER},ou=datascientists,dc=ec2,dc=internal", "internal-communication.authentication.ldap.user": "presto", "internal-communication.authentication.ldap.password": "123456" } }]
例 Amazon EMR 5.10.0

Amazon EMR 5.10.0 は匿名バインディングのみをサポートしているため、これらのエントリは省略されます。さらに、指定できるバインドパターンは 1 つのみです。

[{ "Classification": "presto-config", "Properties": { "http-server.authentication.type": "LDAP", "authentication.ldap.url": "ldaps://ip-xxx-xxx-xxx-xxx.ec2.internal:636", "ldap.user-bind-pattern": "uid=${USER},ou=prestousers,dc=ec2,dc=internal" } }]

ステップ 4: LDAPサーバー証明書をコピーして Amazon S3 にアップロードするスクリプトを作成する

クラスターの各ノードに証明書ファイルをコピーするスクリプトを作成し、キーストアに追加します。テキストエディタを使用してスクリプトを作成し、保存した後、Amazon S3 にアップロードします。ではステップ 5: クラスターを作成する、スクリプトファイルは として参照されますs3://amzn-s3-demo-bucket/LoadLDAPCert.sh

次のスクリプト例では、デフォルトのキーストアパスワード を使用しますchangeit。クラスターの作成後にマスターノードに接続し、keytool コマンドを使用してキーストアパスワードを変更することをお勧めします。

#!/bin/bash aws s3 cp s3://amzn-s3-demo-bucket/ldap_server.crt . sudo keytool -import -keystore /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/lib/security/cacerts -trustcacerts -alias ldap_server -file ./ldap_server.crt -storepass changeit -noprompt

ステップ 5: クラスターを作成する

クラスターを作成するときは、Presto と Amazon がEMRインストールするその他のアプリケーションを指定します。次の例では、 内の設定分類プロパティも参照しますがJSON、設定分類をインラインで指定することもできます。

Amazon EMRコンソールを使用してLDAP認証で Presto クラスターを作成するには
  1. 新しい Amazon EMRコンソールに移動し、サイドナビゲーションから古いコンソールに切り替えるを選択します。古いコンソールに切り替えたときの動作の詳細については、「Using the old console」を参照してください。

  2. [Create cluster (クラスターの作成)]、[Go to advanced options (詳細オプションに移動する)] の順に選択します。

  3. Presto と Amazon がインストールEMRする他のアプリケーションを選択し、ソフトウェア設定でEMR、使用する Amazon のリリースを選択します。 LDAP認証は Amazon 5.10.0 EMR 以降でのみサポートされています。

  4. 「ソフトウェア設定の編集」で、S3 JSONからロード」を選択し、「」で作成したJSON設定ファイルの Amazon S3 内の場所を入力しステップ 3: の Presto プロパティJSONを使用して設定を作成する LDAP「次へ」を選択します。

  5. クラスターハードウェアおよびネットワークを設定し、[次へ] を選択します。

  6. [ブートストラップアクション] を選択します。[ブートストラップアクションを追加する] で [カスタムアクション]、[設定と追加] の順に選択します。

  7. ブートストラップアクションの名前を入力し、「」で作成したスクリプトの場所を入力します。たとえばステップ 4: LDAPサーバー証明書をコピーして Amazon S3 にアップロードするスクリプトを作成するs3://amzn-s3-demo-bucket/LoadLDAPCert.sh と入力し、追加を選択します。

  8. [汎用オプション]、[タグ]、[追加のオプション] で、アプリケーションに最適な設定を選択し、[次へ] を選択します。

  9. [認証と暗号化] を選択し、「」で作成した [セキュリティ設定ステップ 2: セキュリティ設定をセットアップする] を選択します。

  10. アプリケーションに最適な他のセキュリティオプションを選択し、[クラスターの作成] を選択します。

を使用してLDAP認証で Presto クラスターを作成するには AWS CLI
  • aws emr create-cluster コマンドを使用します。少なくとも、Presto アプリケーションと、前のステップで作成した Presto 設定分類、ブートストラップスクリプト、およびセキュリティ設定を指定します。次の例では、 コマンドを実行するのと同じディレクトリに保存されているJSONファイルとして設定ファイルを参照します。一方、ブートストラップスクリプトは、Amazon S3 に保存する必要があります。次の例では s3://amzn-s3-demo-bucket/LoadLDAPCert.sh を使用しています。

    注記

    読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

    aws emr create-cluster --applications Name=presto --release-label emr-5.16.0 \ --use-default-roles --ec2-attributes KeyName=MyKeyPair,SubnetId=subnet-1234ab5 \ --instance-count 3 --instance-type m5.xlarge --region us-west-2 --name "MyPrestoWithLDAPAuth" \ --bootstrap-actions Name="Distribute LDAP server cert",Path="s3://amzn-s3-demo-bucket/LoadLDAPCert.sh" \ --security-configuration MyPrestoLDAPSecCfg --configurations file://MyPrestoConfig.json