【新発表】- Amazon EMRクラスタをプライベートサブネットで起動
私の同僚のJon FritzがAmazon EMRの新しい機能を紹介する以下の様なゲスト投稿を書いてくれました。
-- Jeff;
本日我々はAmazon EMRがAmazon Virutal Private Cloud (VPC) プライベートサブネットでのクラスタ起動をサポートする様になったことを発表します。これによって選択したサブネット内に、HadoopエコシステムのアプリケーションやSpark、そしてPrestoが設定済のクラスタを、高速に、コスト効率よく、かつ安全な形で作成することができます。Amazon EMR release 4.2.0以上であれば、パブリックIPアドレスやInternet Gateway (IGW)が無いプライベートサブネット内にクラスタを起動することができます。サブネットにはAmazon EMRクラスタがAmazon S3上のデータに直接アクセスするためのプライベートエンドポイントを作成したり、Amazon DynamoDBやAWS Key Management Service (KMS)といった他のAWSサービスへクラスタが通信するためにNetwork Address Translation (NAT) インスタンスを作成することもできます。VPC内でのAmazon EMRについてより詳しい情報は、Amazon EMRドキュメントをご覧下さい。
VPCプライベートサブネットでのAmazon EMRのネットワーク構成
Amazon EMRクラスタをVPCプライベートサブネットに起動する前に、必要な権限をもったEMRサービスロールとEC2インスタンスプロファイルを設定することと、クラスタの初期化に必要なS3バケットへの必要なルーティング(VPCのサブネットから、S3エンドポイントかNAT/Proxyインスタンスへの経路)が設定できれいることを確認して下さい。サブネットの設定についてより詳しい情報はこちらをクリックして下さい。
EMRコンソール内の新しいVPCサブネットページを使えば、クラスタが利用可能なVPCサブネットを見たり、S3エンドポイントやNATインスタンスを追加する設定を行えます。
また、こちらがS3エンドポイントとNATインスタンスを組み合わせたVPCプライベートサブネット内のAmazon EMRクラスタのためのサンプルネットワーク構成になります。ただし、S3の他にAWSのサービスと組み合わせてクラスタを使う必要がなければ、それらのパブリックエンドポイントへのルーティングを提供するためのNATインスタンスは必要ありません。
暗号化して保存: Amazon S3 (EMRFSで)、HDFS、そしてローカルファイルシステム
Amazon EMRでの典型的なHadoopやSparkのワークロードは、Amazon S3 (EMRファイルシステム - EMRFS)で入力データセットと出力結果を扱っていて、更に他に2つのファイルシステムがクラスタ上に存在します: クラスタ内に分散したHadoop Dirstributed Filesystem (HDFS)と各インスタンスのローカルファイルシステムです。Amazon EMRではいずれのファイルシステムでも簡単に暗号化を使うことができ、要件に合わせて多様なオプションがあります。
- EMRファイルシステム (EMRFS)を使ったAmazon S3ではいくつかのAmazon S3の暗号化オプション(AES-256利用)がサポートされていて、クラスタ上のHadoopやSparkはS3上に暗号化されたデータを効率よく透過的に扱うことができます。EMRFSはS3のサーバサイド暗号化とクライアントサイド暗号化を切れ目なく扱ってくれます。S3クライアントサイド暗号化を使う時には、AWS Key Management ServiceまたはAWSやオンプレミス上のカスタムの鍵管理システムに保存された鍵を使うことができます。
- Hadoop KMSを使ったHDFS透過暗号化 - Hadoop Key Management Server (KMS)はHDFS透過暗号化を提供しており、EMRクラスタのマスターノード上にHDFSと共にインストールされています。暗号化と復号処理はクライアント側で行われるため、HDFSへの転送中も暗号化されています。より詳細な情報はこちらをクリックして下さい。
- 各ノード上のローカルファイルシステム - HadoopのMapReduceやSparkフレームワークは中間データの処理速度のために各スレーブインスタンスのローカルファイルシステムを利用します。ブートストラップアクションを使ってLUKSによりこれらの中間データで使われるディレクトリを暗号化することができます。
暗号化して転送: Hadoop MapReduceとSpark
Amazon EMRクラスタにインストールされているHadoopエコシステムのアプリケーションはデータ転送の暗号化のためにそれぞれ異なるメカニズムを持っています。
- Hadoop MapReduce Shuffle - HadoopのMapReduceジョブの中で、reduceフェーズが始まる前のshuffleフェーズでは、クラスタ内のノード間でデータを送信します。Shuffle暗号化のHadoopの設定を有効化して、各ノードに必要なSSL証明書を配置することで、このプロセスをSSL暗号化することができます。
- HDRS Rebalancing - HDFSはDataNodeプロセス間でブロックを転送することで再配置を行います。ただし、HDFS透過暗号化(上述)を使っていれば、HDFSは暗号化されていないブロックを持つことは絶対になく、ノード間を動く時にもブロックは暗号化されたままです。
- Spark Shuffle - Hadoop MapReduceの様に、Sparkもジョブの途中のいくつかのポイントではノード間でデータをshuffleします。Spark 1.4.0からはSASL暗号化を使うことでこのステージでのデータを暗号化できます。
IAM ユーザとロール、AWS CloudTrailによる監査
Amazon EMR APIの呼び出しに、Identity and Access Management (IAM) ユーザやフェデレーションユーザを使うことができ、各ユーザが実行できるAPIを制限することができます。加えて、Amazon EMRでクラスタを作る時には、EMRサービスとクラスタ内のEC2インスタンスのそれぞれで権限を制限するために、EMRサービスロールとEC2インスタンスプロファイルという2つのIAMロールが必要となります。EMRでは、自動アップデートされるEMRマネージドポリシーを使ったデフォルトロールを提供していますが、クラスタ毎にカスタムしたIAMロールを使うこともできます。最後に、AWS CloudTrailを使ってAmazon EMR APIが呼び出された監査ログを取得することもできます。
EC2 セキュリティグループとSSHアクセスの選択
Amazon EMRでは2つのセキュリティグループを使います。1つはマスターインスタンスグループのため、もう1つはスレーブインスタンスグループ(コアとタスクインスタンスグループ)のためで、これらによってクラスタ内のインスタンスの入出力を制限します。EMRは2つのデフォルトセキュリティグループを提供していますが、ご自身で作ったもの(EMRサービスとクラスタの間で通信をするために必要なポートが開いている必要があります)を使ったり、追加のセキュリティグループをクラスタに設定することもできます。プライベートサブネットでは、EMRサービスがクラスタと通信するために使うENIに設定するセキュリティグループを指定することもできます。
また、もしマスターノードにSSHしたければEC2の鍵ペアを設定することもできます。これを使ってクラスタにインストールされたHadoopアプリケーションを直接扱ったり、マスターのセキュリティグループのポートを開けずにproxyを使ってアプリケーションのweb-UIにアクセスすることができます。
HadoopとSparkの認証と認可
Amazon EMRはオープンソースのHadoopエコシステムアプリケーションをクラスタにインストールしているので、これらのプロダクトが持つ既存のセキュリティ機能を使うことができます。YARNのKerberos認証を有効化することで、YARN上で動くアプリケーション(Hadoop MapReduceやSpark)でユーザーレベルの認証を行うことができます。また、HiveServer2の機能を使ってHiveのテーブルやSQLレベルでの認可を行ったり、Hueのユーザ作成や認証にLDAPを連携させることもできます。
Amazon EMR上でセキュアにワークロードを実行
今年の始めに、Amazon EMRはPIIデータ(HIPAAワークロードも含む)を処理するワークロード実行のためのAWS Business Associates Agreement (BAA)に追加されました。またAmazon EMRはPCI DSS Level1、ISO 9001、ISO27001、そしてISO27018の認証を持っています。
セキュリティは我々にもお客様にも最優先事項です。我々は継続してAmazon EMRに新しいセキュリティ関連の機能や第三者認証を追加していき、より簡単にセキュアなワークロード実行とHadoop、Spark、Prestoなどのセキュリティ機能の設定が行えるようにしていきます。
— Jon Fritz, Senior Product Manager, Amazon EMR
PS - AWS Big Data BlogのSecurely Access Web Interfaces on Amazon EMR Launched in a Private Subnetにも情報があります。
原文: https://aws.amazon.com/blogs/aws/new-launch-amazon-emr-clusters-in-private-subnets/ (翻訳: SA岩永)
コメント