翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon EMR における HDFS での透過的暗号化
透過性暗号化は、お客様が定義する HDFS パスである HDFS 暗号化ゾーンを通じて実装されます。各暗号化ゾーンには独自のキーがあり、hdfs-site
設定分類を使用して指定されたキーサーバーに保存されます。
Amazon EMR リリースバージョン 4.8.0 から、Amazon EMR セキュリティ設定を使用して、クラスターのデータ暗号化設定をより簡単に行うことができます。セキュリティ設定は、Amazon Elastic Block Store (Amazon EBS) ストレージボリュームおよび Amazon S3 の EMRFS データで伝送時のデータと保管時のデータに対するセキュリティを有効にするオプションを提供します。詳細については、「Amazon EMR 管理ガイド」の「データを伝送中と保管時に暗号化」を参照してください。
Amazon EMR はデフォルトで Hadoop KMS を使用しますが、API オペレーションを実装する別の KMS を使用することもできます。 KeyProvider HDFS 暗号化ゾーンの各ファイルには、独自のデータ暗号化キーがあり、これは暗号化ゾーンキーで暗号化されます。 end-to-end 暗号化と復号化のアクティビティはクライアントでのみ行われるため、データが暗号化ゾーンに書き込まれる際に HDFS データは (保存中も転送中も) 暗号化されます。
暗号化ゾーン間でファイルを移動したり、暗号化ゾーンから暗号化されていないパスにファイルを移動することはできません。
NameNode と HDFS クライアントは API オペレーションを通じて Hadoop KMS (またはユーザーが設定した代替 KMS) と通信します。 KeyProvider KMS はバッキングキーストアで暗号化キーを保存します。また、Amazon EMR には JCE 無制限強度のポリシーが含まれているため、必要な長さでキーを作成できます。
詳細については、Hadoop のドキュメントの「Transparent encryption in HDFS (HDFS での透過的暗号化)
注記
Amazon EMR では、Hadoop KMS における HTTPS 経由の KMS はデフォルトで有効になりません。HTTPS 経由の KMS を有効にする方法については、Hadoop KMS のドキュメント
HDFS 透過的暗号化を設定する
キーを作成し、暗号化ゾーンを追加することで、Amazon EMR で透過的暗号化を設定できます。これはいくつかの方法で行うことができます。
-
クラスターの作成時に Amazon EMR 設定 API オペレーションを使用する
-
command-runner.jar で Hadoop JAR のステップを使用する
-
Hadoop クラスターのマスターノードにログインして、
hadoop key
とhdfs crypto
コマンドラインクライアントを使用する -
Hadoop KMS と HDFS で REST API を使用する
REST API の詳細については、Hadoop KMS と HDFS の各ドキュメントを参照してください。
CLI を使用してクラスター作成時に暗号化ゾーンとそのキーを作成するには
設定 API hdfs-encryption-zones オペレーションの分類により、クラスターの作成時にキー名と暗号化ゾーンを指定できます。Amazon EMR はクラスターの Hadoop KMS でこのキーを作成し、暗号化ゾーンを設定します。
-
次のコマンドを使用してクラスターを作成します。
aws emr create-cluster --release-label
emr-5.36.1
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json注記
読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。
myConfig.json
:[ { "Classification": "hdfs-encryption-zones", "Properties": { "/myHDFSPath1": "path1_key", "/myHDFSPath2": "path2_key" } } ]
マスターノードで手動で暗号化ゾーンおよびそのキーを作成するには
-
Amazon EMR リリース 4.1.0 以降を使用してクラスターを起動します。
-
SSH を使用してクラスターのマスターノードに接続します。
-
Hadoop KMS 内でキーを作成します。
$ hadoop key create path2_key path2_key has been successfully created with options Options{cipher='AES/CTR/NoPadding', bitLength=256, description='null', attributes=null}. KMSClientProvider[http://ip-x-x-x-x.ec2.internal:16000/kms/v1/] has been updated.
重要
Hadoop KMS では、キー名が小文字である必要があります。大文字が含まれているキーを使用すると、起動中にクラスターが失敗します。
-
HDFS で暗号化ゾーンのパスを作成します。
$ hadoop fs -mkdir /myHDFSPath2
-
作成したキーを使用して HDFS パスを暗号化ゾーンにします。
$ hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2 Added encryption zone /myHDFSPath2
AWS CLI を使用して暗号化ゾーンおよびキーを手動で作成する
-
次のコマンドで KMS キーおよび暗号化ゾーンを作成するステップを追加します。
aws emr add-steps --cluster-id j-2AXXXXXXGAPLF --steps Type=CUSTOM_JAR,Name="Create First Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path1_key\""] \ Type=CUSTOM_JAR,Name="Create First Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create First Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path1_key -path /myHDFSPath1\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop KMS Key",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop key create path2_key\""] \ Type=CUSTOM_JAR,Name="Create Second Hadoop HDFS Path",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hadoop fs -mkdir /myHDFSPath2\""] \ Type=CUSTOM_JAR,Name="Create Second Encryption Zone",Jar="command-runner.jar",ActionOnFailure=CONTINUE,Args=[/bin/bash,-c,"\"hdfs crypto -createZone -keyName path2_key -path /myHDFSPath2\""]
注記
読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。
HDFS 透過的暗号化の考慮事項
ベストプラクティスとして、アプリケーションがファイルを書き込む可能性がある各アプリケーション用に暗号化ゾーンを作成します。また、構成 API hdfs-encryption-zones の分類を使用してすべての HDFS を暗号化し、ルートパス (/) を暗号化ゾーンとして指定できます。
Hadoop キー管理サーバー
Hadoop KMS
Hadoop KMS を設定するには、分類を使用して設定を変更します。 hadoop-kms-site ACL を設定するには、分類の kms-acls を使用します。
詳細については、Hadoop KMS のドキュメント
注記
Amazon EMR では、Hadoop KMS における HTTPS 経由の KMS はデフォルトで有効になりません。HTTPS 経由で KMS を有効にする方法については、Hadoop KMS のドキュメント
重要
Hadoop KMS では、キー名が小文字である必要があります。大文字が含まれているキーを使用すると、起動中にクラスターが失敗します。
Amazon EMR での Hadoop KMS の設定
Amazon EMR リリースバージョン 4.6.0 以降を使用すると、kms-http-port
は 9700、kms-admin-port
は 9701 になります。
Amazon EMR リリースの設定 API を使用して、クラスター作成時に Hadoop KMS を設定できます。次の設定オブジェクト分類が Hadoop KMS で使用できます。
Hadoop KMS 設定分類 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
分類 | Filename | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hadoop-kms-site | kms-site.xml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hadoop-kms-acls | kms-acls.xml |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hadoop-kms-env | kms-env.sh |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
hadoop-kms-log4j | kms-log4j.properties |
CLI を使用して Hadoop KMS の ACL を設定するには
-
Hadoop KMS と ACL でクラスターを作成するには、次のコマンドを使用します。
aws emr create-cluster --release-label
emr-5.36.1
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json注記
読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。
myConfig.json
:[ { "Classification": "hadoop-kms-acls", "Properties": { "hadoop.kms.blacklist.CREATE": "hdfs,foo,myBannedUser", "hadoop.kms.acl.ROLLOVER": "myAllowedUser" } } ]
CLI を使用して Hadoop KMS のキャッシュを無効にするには
-
次のコマンドを使用し、Hadoop KMS
hadoop.kms.cache.enable
をfalse
に設定してクラスターを作成します。aws emr create-cluster --release-label
emr-5.36.1
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json注記
読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。
myConfig.json
:[ { "Classification": "hadoop-kms-site", "Properties": { "hadoop.kms.cache.enable": "false" } } ]
CLI を使用して kms-env.sh
スクリプトで環境変数を設定するには
-
kms-env.sh
設定を通じてhadoop-kms-env
で設定を変更できます。次のコマンドを使用し、Hadoop KMS でクラスターを作成します。aws emr create-cluster --release-label
emr-5.36.1
--instance-type m5.xlarge --instance-count 2 \ --applications Name=App1
Name=App2
--configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json注記
読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。
myConfig.json
:[ { "Classification": "hadoop-kms-env", "Properties": { }, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_LIBRARY_PATH": "
/path/to/files
", "KMS_SSL_KEYSTORE_FILE": "/non/Default/Path/
.keystore", "KMS_SSL_KEYSTORE_PASS": "myPass
" }, "Configurations": [ ] } ] } ]
Hadoop KMS の設定については、Hadoop KMS のドキュメント
複数のマスターノードを持つ EMR クラスターでの HDFS 透過的暗号化
Apache Ranger
Apache Ranger KMS は、複数のプライマリノードを持つ Amazon EMR クラスターの Amazon RDS にルートキーと暗号化ゾーン (EZ) キーを保存します。複数のプライマリノードがある Amazon EMR クラスターの HDFS で透過的な暗号化を有効にするには、以下の設定を行う必要があります。
-
レンジャー KMS ルートキーと EZ キーを保存するための Amazon RDS または独自の MySQL サーバー接続 URL
-
MySQL のユーザー名とパスワード
-
レンジャー KMS ルートキーのパスワード
-
MySQL サーバーへの SSL 接続用の認証機関 (CA)PEM ファイル
次の例に示すように、ranger-kms-dbks-site
分類と ranger-kms-db-ca
分類を使用して、これらの設定を提供できます。
[ { "Classification": "ranger-kms-dbks-site", "Properties": { "ranger.ks.jpa.jdbc.url": "
jdbc:log4jdbc:mysql://mysql-host-url.xx-xxx-1.xxx.amazonaws.com:3306/rangerkms
", "ranger.ks.jpa.jdbc.user": "mysql-user-name
", "ranger.ks.jpa.jdbc.password": "mysql-password
", "ranger.db.encrypt.key.password": "password-for-encrypting-a-master-key
" } }, { "Classification": "ranger-kms-db-ca", "Properties": { "ranger.kms.trust.ca.file.s3.url": "s3://rds-downloads/rds-ca-2019-root.pem
" } } ]
以下は、Apache Ranger KMS の設定オブジェクト分類です。
Hadoop KMS 設定分類 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
分類 | 説明 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ranger-kms-dbks-site | Ranger KMS の dbks-site.xml ファイルの値を変更します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ranger-kms-site | レンジャー KMS ranger-kms-site の.xml ファイル内の値を変更します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ranger-kms-env | Ranger KMS 環境の値を変更します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ranger-kms-log4j | Ranger KMS の kms-log4j.properties ファイルの値を変更します。 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ranger-kms-db-ca | Ranger KMS を使用した MySQL SSL 接続用の S3 の CA ファイルの値を変更します。 |
考慮事項
-
セキュリティ向上のため、Amazon RDS インスタンスを暗号化することを強くお勧めします。詳細については、「Amazon RDS リソースの暗号化の概要」を参照してください。
-
高いセキュリティバーを実現するために、Amazon EMR クラスターごとに個別の MySQL データベースを複数のプライマリノードで使用することを強くお勧めします。
-
複数のプライマリノードがある Amazon EMR クラスターで HDFS の透過的暗号化を設定するには、
hdfs-encryption-zones
クラスターの作成時に分類を指定する必要があります。指定しない場合、Ranger KMS は設定も起動もしません。hdfs-encryption-zones
実行中のクラスターでの分類や Hadoop KMS 設定分類の再設定は、複数のプライマリノードを持つ Amazon EMR クラスターではサポートされていません。