HAQM Web Services ブログ

ネイティブ EBS およびバケットごとの S3 暗号化オプションを使用して、HAQM EMR でデータを保護



データ暗号化は、データセキュリティを強化するための効果的なソリューションです。データを暗号化し、暗号化キーへのアクセスを管理することにより、許可されたユーザーまたはアプリケーションのみが機密データを読み取るようにすることができます。医療や金融などの規制された業界の顧客が HAQM EMR を選択する主な理由の 1 つは、データを安全に保存およびアクセスするための準拠環境を提供するためです。

この投稿では、機密データを処理する EMR クラスターのセキュリティ保護に役立つ 2 つの新しい暗号化オプションの詳細なチュートリアルを提供します。最初のオプションは、EMR クラスターに接続されたボリュームを暗号化するネイティブ EBS 暗号化です。2 番目のオプションは HAQM S3 暗号化で使用すると、HAQM EMR で個々の S3 バケットにさまざまな暗号化モードとカスタマーマスターキー (CMK) を使用できます。

HAQM EMR のローカルディスク暗号化

以前は、保管時の暗号化には Linux Unified Key Setup (LUKS) しか選択できませんでした。今後は、LUKS またはネイティブ EBS 暗号化を使用して、EMR クラスターに接続された EBS ボリュームの暗号化を選択できるようになりました。EBS 暗号化には次の利点があります。

  • エンドツーエンドの暗号化 – HAQM EMR の EBS 暗号化を有効にすると、アプリケーションからの中間ディスク流出やノードと EBS ボリューム間のディスク I/O を含む EBS ボリューム上のすべてのデータが暗号化されます。暗号化された EBS ボリュームのスナップショットも暗号化され、必要に応じてそれらを AWS リージョン間で移動できます。
  • HAQM EMR ルートボリュームの暗号化 – ルートボリュームを暗号化するためにカスタム HAQM Linux イメージを作成する必要はありません。
  • 暗号化の簡単な監査 LUKS 暗号化を使用する場合、EBS ボリュームはインスタンスストアボリュームとともに暗号化されますが、HAQM EC2 API または EC2 コンソールを使用して暗号化ステータスを確認すると、EBS が [暗号化されていない] というステータスが表示されます。API が EMR クラスターを調べてディスクステータスを確認しないのが原因です。監査担当者は、ディスクに暗号化されたコンプライアンスをチェックするためにクラスターに SSH で接続する必要があります。ただし、EBS 暗号化を使用すると、EC2 コンソールまたは EC2 API 呼び出しから暗号化ステータスを確認できます。
  • 透過的な暗号化 – EBS 暗号化は、HAQM EMR で実行されているアプリケーションに対して透過的であり、コードを変更する必要はありません。

HAQM EBS 暗号化は AWS KMS と統合され、データを保護する暗号化キーを提供します。この機能を使用するには、アカウントとリージョンで CMK を使用する必要があります。CMK を使用すると、キーの有効化と無効化、アクセスのコントロール、キーのローテーション、削除など、キーの作成と管理を制御できます。詳細については、カスタマーマスターキーを参照してください。

HAQM EMR で EBS 暗号化を有効にする

HAQM EMR で EBS 暗号化を有効にするには、次の手順を完了してください。

  1. AWS KMS で CMK を作成します。
    これは、AWS KMS コンソール、AWS CLI、または AWS KMS CreateKey API のいずれかを使用して実行できます。EMR クラスターと同じリージョンにキーを作成します。詳細については、キーの作成をご参照ください。
  2. HAQM EMR サービスロールと EC2 インスタンスプロファイルに、ユーザーに代わって CMK を使用する許可を与えます。
    EMR_DefaultRole を使用している場合、次の手順でポリシーを追加します。

    • [AWS KMS コンソール] を開きます。
    • AWS リージョンを選択します。
    • 作成した CMK のキー ID またはエイリアスを選択します。
    • キー詳細ページの [キーユーザー] で、[追加] を選択します。
    • HAQM EMR サービスロールを選択します。デフォルトロールの名前は EMR_DefaultRole です。
    • [添付] を選択します。
    • HAQM EC2 インスタンスプロファイルを選択します。インスタンスプロファイルのデフォルトロールの名前は EMR_EC2_DefaultRole です。
    • [添付] を選択します。
      カスタマイズされたポリシーを使用している場合、次のコードをサービスロールに追加して、HAQM EMR が CMK ARN リソースとともに CMK を作成および使用できるようにします。

      { 
      "Version": "2012-10-17",
      "Statement": [ 
         { 
         "Sid": "EmrDiskEncryptionPolicy",
         "Effect": "Allow",
         "Action": [ 
            "kms:Encrypt",
            "kms:Decrypt",
            "kms:ReEncrypt*",
            "kms:CreateGrant",
            "kms:GenerateDataKeyWithoutPlaintext",
            "kms:DescribeKey" 
            ],
         "Resource": [ 
            " arn:aws:kms:region:account-id:key/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx " " 
            ] 
         } 
      ] 
      } 

       

  3. HAQM EMR セキュリティ設定テンプレートを作成して設定します。コンソールを使用するか、CLI または SDK を使用して次の手順を実行してください。
    • HAQM EMR コンソールを開きます。
    • [セキュリティ設定] を選択します。
    • [ローカルディスクの暗号化] で、[ローカルディスクの保管時の暗号化を有効にする] を選択します。
    • [キープロバイダータイプ] で、[AWS KMS] を選択します。
    • AWS KMS カスタマーマスターキーの場合、CMK のキー ARN を選択します。この投稿では、キー ARN ebsEncryption_emr_default_role を使用します。
    • [EBS 暗号化で EBS ボリュームを暗号化する] を選択します。

EC2 でデフォルトの暗号化対HAQM EMR EBS 暗号化

EC2 には、デフォルト暗号化と呼ばれる同様の機能があります。この機能を使用すると、リージョンごとに指定する単一の CMK を使用して、アカウント内のすべての EBS ボリュームが例外なく暗号化されます。HAQM EMR の EBS 暗号化を使用すると、EMR クラスターごとに異なる KMS キーを使用して、EBS ボリュームを保護できます。HAQM EMR が提供する EBS 暗号化と EC2 が提供するデフォルトの暗号化の両方を使用できます。

この投稿では、HAQM EMR が提供する EBS 暗号化を先に実行してから、セキュリティ設定で選択した CMK を使用してクラスターに接続された EBS ボリュームを暗号化します。

S3 暗号化

HAQM S3 暗号化は、S3 との間で読み書きされる HAQM EMR File System (EMRFS) オブジェクトでも機能します。サーバー側暗号化 (SSE) モードまたはクライアント側暗号化 (CSE) モードのいずれかを使用して、S3 バケット内のオブジェクトを暗号化できます。次の表は、HAQM EMR で S3 暗号化に使用できるさまざまな暗号化モードをまとめたものです。

暗号化の場所 キーストレージ キー管理
SSE-S3 S3 のサーバー側 S3 S3
SSE-KMS S3 のサーバー側 KMS

エイリアス aws/s3 を使用して HAQM S3 の AWS マネージド CMK を選択するか、カスタム CMK を作成します。

 

CSE-KMS EMR クラスターのクライアント側 KMS あなたが作成したカスタム CMK です。
CSE – カスタム EMR クラスターのクライアント側 あなた あなたの独自のキープロバイダーです。

実行する暗号化の選択は、特定のワークロード要件によって異なります。SSE-S3 は、チェックボックスを選択して S3 オブジェクトの暗号化を HAQM S3 に完全に委任できる最も簡単なオプションです。SSE-KMS または CSE-KMS は、ポリシーを使用して KMS で CMK をきめ細かく制御できる優れたオプションです。AWS KMS では、AWS CloudTrail がキーアクセスとキー管理の API 呼び出しを記録するため、いつ、どこで、誰がカスタマーマネージドキー (CMK) を使用したかを確認できます。これらのログは、キーの完全な監査機能を提供します。詳細については、HAQM S3 での EMRFS データの保管時の暗号化を参照してください。

さまざまな暗号化モードとキーで S3 バケットを暗号化する

HAQM EMR の S3 暗号化では、すべての暗号化モードがデフォルトで単一の CMK を使用して S3 のオブジェクトを暗号化します。特定の S3 バケットに非常に機密性の高いコンテンツがある場合、個々のバケットに異なる CMK または暗号化モードを使用して、これらのバケットの暗号化を個別に管理することができます。これを実現するには、HAQM EMR のバケットごとの暗号化オーバーライドオプションを使用します。そのためには、次のステップを完了してください。

  1. HAQM EMR コンソールを開きます。
  2. [セキュリティ設定] を選択します。
  3. [S3 暗号化] で、[HAQM S3 での EMRFS データの保管時の暗号化を有効にする] を選択します。
  4. デフォルトの暗号化モードでは、暗号化モードを選択します。この投稿では SSE-KMS を使用します。
  5. AWS KMS カスタマーマスターキーの場合、ご使用のキーを選択します。ここで提供するキーは、HAQM EMR で使用されるすべての S3 バケットを暗号化します。この投稿では ebsEncryption_emr_default_role を使用します。
  6. バケットごとの暗号化オーバーライドを選択します。バケットごとに異なる暗号化モードを設定できます。
  7. S3 バケットの場合、異なる方法で暗号化する S3 バケットを追加します。
  8. 暗号化モードでは、暗号化モードを選択します。
  9. 暗号化マテリアルの場合、ご使用の CMK を入力します。

すでに HAQM S3 で直接 S3 バケットのデフォルト暗号化を有効にしている場合、HAQM EMR のセキュリティ構成設定で S3 暗号化オプションをバイパスすることもできます。これにより、HAQM EMR はバケット内の暗号化オブジェクトを HAQM S3 に委任できます。HAQM S3 は、バケットポリシーで指定された暗号化キーを使用して、オブジェクトを S3 で永続化する前に暗号化します。

まとめ

この投稿では、HAQM EMR で利用可能なネイティブ EBS および S3 暗号化オプションを使用して、データを暗号化および保護する方法をお見せしました。これらの最適化が実際のワークロードにどのように役立っているか、ぜひフィードバックをお寄せください。

 


著者について

Duncan Chan は HAQM EMR のソフトウェア開発エンジニアです。彼はビッグデータ技術の学習と作業を楽しんでいます。仕事をしていないときは、犬と遊んでいます。