EMRFS プロパティを使用して Amazon S3 の暗号化を指定する
重要
Amazon EMR リリースバージョン 4.8.0 から、セキュリティ設定を使用して、より簡単により豊富なオプションで暗号化設定を適用できるようになりました。セキュリティ設定を使用することをお勧めします。詳細については、「データ暗号化の設定」を参照してください。このセクションで説明するコンソールの手順は、リリース 4.8.0 より前のリリースバージョンで使用できます。AWS CLI を使用して、クラスター設定とそれ以降のバージョンのセキュリティ設定の両方で Amazon S3 の暗号化を設定すると、セキュリティ設定がクラスター設定より優先されます。
クラスターを作成するときに、コンソールを使用するか、AWS CLI または EMR SDK 経由で emrfs-site
分類プロパティを使用して、Amazon S3 内の EMRFS データのサーバー側の暗号化 (SSE) かクライアント側の暗号化 (CSE) を指定できます。Amazon S3 の SSE と CSE は相互排他的であるため、いずれかを選択できますが、両方は選択できません。
AWS CLI の手順については、使用する暗号化タイプに該当するセクションを以下で参照してください。
AWS Management Console を使用して EMRFS 暗号化オプションを指定するには
新しい Amazon EMR コンソールに移動し、サイドナビゲーションから [古いコンソールに切り替え] を選択します。古いコンソールに切り替えたときの動作の詳細については、「Using the old console」を参照してください。
-
[Create cluster (クラスターの作成)]、[Go to advanced options (詳細オプションに移動する)] の順に選択します。
4.7.2 以前の [Release] を選択します。
アプリケーションに合わせて [Software and Steps] の他のオプションを選択し、[Next] を選択します。
アプリケーションに合わせて、[Hardware] ペインおよび [General Cluster Settings] ペインで設定を選択します。
[Security] ペインの [Authentication and encryption] で、使用する [S3 Encryption (with EMRFS)] オプションを選択します。
注記
Amazon EMR リリースバージョン 4.4 以前を使用しているときは、[KMS Key Management を使用した S3 サーバー側の暗号化] (SSE-KMS) を使用できません。
AWS Key Management を使用するオプションを選択する場合は、[AWS KMS キー ID] を選択します。詳細については、「EMRFS 暗号化に AWS KMS keysを使用する」を参照してください。
[S3 client-side encryption with custom materials provider] を選択した場合、[Class name] と [JAR location] に入力してください。詳細については、「Amazon S3 クライアント側暗号化」を参照してください。
必要に応じて、アプリケーションの他のオプションを選択し、[Create Cluster] を選択します。
EMRFS 暗号化に AWS KMS keysを使用する
AWS KMS 暗号化キーは、Amazon EMR クラスターインスタンス、および EMRFS で使用する Amazon S3 バケットと同じリージョンに作成する必要があります。指定するキーが、クラスターの設定に使用するアカウントとは異なるアカウントにある場合は、その ARN を使用してキーを指定する必要があります。
Amazon EC2 インスタンスプロファイルのロールには、指定した KMS キーを使用するためのアクセス許可が必要です。Amazon EMR 内のインスタンスプロファイルのデフォルトのロールは EMR_EC2_DefaultRole
です。インスタンスプロファイルに別のロールを使用する場合、または Amazon S3 への EMRFS リクエストに IAM ロールを使用する場合は、必要に応じて各ロールがキーユーザーとして追加されていることを確認してください。これにより、KMS キーを使用するアクセス許可がロールに付与されます。詳細については、「AWS Key Management Service デベロッパーガイド」の「キーポリシーの使用」と、「Amazon S3 への EMRFS リクエストの IAM ロールの設定」を参照してください。
AWS Management Consoleを使用して、指定した KMS キーのキーユーザーのリストにインスタンスプロファイルまたは EC2 インスタンスプロファイルを追加することも、AWS CLI または AWS SDK を使用して、該当するキーポリシーをアタッチすることもできます。
Amazon EMR は、対称 KMS キーのみをサポートします。非対称 KMS キーを使用して、Amazon EMR クラスター内の保管中のデータを暗号化することはできません。KMS キーが対称か非対称かを判別するには、「対称および非対称 KMS キーを識別する」を参照してください。
以下の手順では、AWS Management Consoleを使用して、デフォルトの Amazon EMR インスタンスプロファイル EMR_EC2_DefaultRole
をキーユーザーとして追加する方法について説明します。既に KMS キーが作成されていることを前提としています。新しい KMS キーを作成するには、「AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。
暗号化キーユーザーのリストに Amazon EMR の EC2 インスタンスプロファイルを追加するには
-
AWS Management Console にサインインし、AWS Key Management Service (AWS KMS) コンソール (https://console.aws.amazon.com/kms
) を開きます。 -
AWS リージョン を変更するには、ページの右上隅にあるリージョンセレクターを使用します。
-
変更する KMS キーのエイリアスを選択します。
-
[Key Users] のキーの詳細ページで、[Add] を選択します。
-
[Add key users] ダイアログボックスで、適切なロールを選択します。デフォルトロールの名前は
EMR_EC2_DefaultRole
です。 -
[Add] (追加) を選択します。
Amazon S3 のサーバー側の暗号化
Amazon S3 のサーバー側の暗号化をセットアップすると、Amazon S3 はデータをディスクに書き込むときにオブジェクトレベルで暗号化し、アクセスするときに復号します。SSE に関する詳細は、「Amazon Simple Storage Service ユーザーガイド」の「サーバー側の暗号化を使用したデータの保護」を参照してください。
Amazon EMR で SSE を指定するときに、次の 2 つの異なるキー管理システムから選択できます。
-
SSE-S3 — Amazon S3 がキーを管理します。
-
SSE-KMS — AWS KMS key を使用して、Amazon EMR に適したポリシーを設定します。Amazon EMR の主要な要件の詳細については、「AWS KMS keysを使用した暗号化」を参照してください。
SSE とお客様が用意したキーとの組み合わせ (SSE-C) は、Amazon EMR では使用できません。
AWS CLI を使用して有効な SSE-S3 でクラスターを作成する
-
次のコマンドを入力します。
aws emr create-cluster --release-label
emr-4.7.2 or earlier
\ --instance-count 3 --instance-type m5.xlarge --emrfs Encryption=ServerSide
emrfs-site
プロパティで fs.s3.enableServerSideEncryption プロパティを true に設定して、SSE-S3 を有効にすることもできます。以下の SSE-KMS の例を参照して、キー ID のプロパティを省略します。
AWS CLI を使用して有効な SSE-KMS でクラスターを作成する
注記
SSE-KMS は、Amazon EMR リリースバージョン 4.5.0 以降でのみ使用できます。
-
次の AWS CLI コマンドを入力し、SSE-KMS を使用してクラスターを作成します。この例の
keyID
は AWS KMS key を意味します (例:a4567b8-9900-12ab-1234-123a45678901
)。aws emr create-cluster --release-label
emr-4.7.2 or earlier
--instance-count3
\ --instance-typem5.xlarge
--use-default-roles \ --emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryption.kms.keyId=keyId
]--または--
emrfs-site
分類を使用して次の AWS CLI コマンドを入力し、以下の例のmyConfig.json
のようなコンテンツの設定 JSON ファイルを提供します。aws emr create-cluster --release-label
emr-4.7.2 or earlier
--instance-count 3 --instance-typem5.xlarge
--applications Name=Hadoop
--configurationsfile://myConfig.json
--use-default-rolesmyConfig.json のサンプルコンテンツ:
[ { "Classification":"emrfs-site", "Properties": { "fs.s3.enableServerSideEncryption": "true", "fs.s3.serverSideEncryption.kms.keyId":"
a4567b8-9900-12ab-1234-123a45678901
" } } ]
SSE-S3 と SSE-KMS の設定プロパティ
これらのプロパティは emrfs-site
設定分類を使用して設定できます。SSE-KMS は、Amazon EMR リリースバージョン 4.5.0 以降でのみ使用できます。
プロパティ | デフォルト値 | 説明 |
---|---|---|
fs.s3.enableServerSideEncryption |
false |
|
fs.s3.serverSideEncryption.kms.keyId |
n/a |
AWS KMS キー ID または ARN を指定します。キーを指定した場合、SSE-KMS が使用されます。 |