すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:JindoFS のブロックストレージモードで暗号化ファイルを保存する

最終更新日:Apr 14, 2025

ブロックストレージモードの JindoFS は、ファイルの暗号化をサポートしています。暗号化メカニズムと使用方法 Apache HDFS の暗号化ゾーンと似ています。キーは Key Management Service (KMS) によって管理されます。機密データを含むディレクトリに対して暗号化ポリシーを設定できます。このようにして、ディレクトリに書き込むデータを透過的に暗号化し、ディレクトリから読み取るデータを透過的に復号化できます。このプロセスでは、コードを変更する必要はありません。

前提条件

背景情報

次の図は、ファイル暗号化がサポートされているブロックストレージモードの JindoFS のアーキテクチャを示しています。File encryption supported by JindoFS in block storage mode

JindoFS の KMS 関連パラメータを設定する

  1. SmartData サービスに移動します。
    1. Alibaba Cloud EMR コンソールにログインします。
    2. 上部のナビゲーションバーで、クラスタが存在するリージョンを選択します。必要に応じてリソースグループを選択します。デフォルトでは、アカウントのすべてのリソースが表示されます。
    3. [クラスタ管理] タブをクリックします。
    4. 表示される [クラスタ管理] ページで、ターゲットクラスタを見つけ、[アクション] 列の [詳細] をクリックします。
    5. 左側のナビゲーションペインで、[クラスタサービス] をクリックし、次に [smartdata] をクリックします。
  2. SmartData サービスの namespace タブに移動します。
    1. [設定] タブをクリックします。
    2. [サービス設定] セクションで、[namespace] タブをクリックします。
  3. 設定情報を追加します。
    1. SmartData サービスの [namespace] タブで、右上隅にある [カスタム設定] をクリックします。
    2. [設定項目の追加] ダイアログボックスで、次の表に示すパラメータを追加します。
      パラメータ説明
      crypto.provider.typeプロバイダのタイプ。このパラメータを [ALIYUN] に設定します。
      crypto.provider.endpointKMS のパブリックエンドポイント。詳細については、API リクエストの作成をご参照ください。
      crypto.provider.kms.accessKeyIdKMS へのアクセスに使用する AccessKey ID。
      crypto.provider.kms.accessKeySecretKMS へのアクセスに使用する AccessKey シークレット。
  4. 設定を保存します。
    1. [サービス設定] セクションの右上隅にある [保存] をクリックします。
    2. [変更の確認] ダイアログボックスで、[説明] を指定し、[設定の自動更新] をオンにします。
    3. [OK] をクリックします。
  5. Namespace サービスを再起動します。
    1. 右上隅にある [アクション] > [jindo Namespace サービスの再起動] を選択します。
    2. [クラスタアクティビティ] ダイアログボックスで、関連パラメータを指定します。
    3. [OK] をクリックします。
    4. [確認] メッセージで、[OK] をクリックします。

JindoFS KeyProvider を使用する

JindoFS KeyProvider は、JindoFS を KMS に接続するために使用されます。 JindoFS のキーは KMS に保存されます。 JindoFS KeyProvider を使用して、KMS に基づいてキーを作成、照会、およびローテーションできます。
  • キーを作成する:次のコマンドを実行してキーを作成できます。
    jindo key -create -keyIdName <keyIdName>
    説明 このトピックでは、コマンドの <keyIdName> は、作成したキーの名前を示します。
    たとえば、次のコマンドを実行して、policy_test という名前のキーを作成します。
    jindo key -create -keyIdName policy_test
    policy_test キーが作成されると、KMS コンソールの [シークレット] ページに表示されます。policy_test
  • キーを照会する:次のコマンドを実行して、JindoFS の既存のすべてのキーの名前を照会できます。
    jindo key -list
    次の情報が返されます:
    Listing Keys:
            policy_test
            policy_test2
    // キーの一覧表示: // policy_test // policy_test2
  • キーをローテーションする:ID に基づいてキーを定期的にローテーションするには、次のコマンドを実行できます。キーがローテーションされると、キーのバージョンが変更されます。ローテーション後にファイルが暗号化されると、最新のキーバージョンが使用されます。ローテーション後にファイルが復号化されると、ファイルに対応するキーバージョンが使用されます。
    jindo key -roll -keyIdName <keyIdName>
    たとえば、次のコマンドを実行して policy_test キーをローテーションします。
    jindo key -roll -keyIdName policy_test
    policy_test キーがローテーションされると、キーのバージョンが更新されます。元のバージョンは [acsprevious] 状態になり、新しいバージョンは [acscurrent] 状態になります。policy_test

JindoFS の暗号化ポリシーを管理する

次のコマンドを実行して、暗号化ポリシーを設定および照会できます。
  • 暗号化ポリシーを設定する。
    重要 既存のファイルのディレクトリに暗号化ポリシーを設定することはできません。
    jindo jfs -setCryptoPolicy -keyIdName <keyIdName> -cipherSuite <cipherSuite> <path>
    説明 オプションパラメータ <cipherSuite> を 0 または 1 に設定できます。値 0 は AES_CTR_256 アルゴリズムが使用されることを示し、値 1 は SM4_CTR_128 アルゴリズムが使用されることを示します。<path> は、JindoFS 上のファイルのパスを示します(例:jfs://test/)。
  • 暗号化ポリシーを照会する。
    jindo jfs -getCryptoPolicy <path>
例:
  1. jfs://test/ パスの暗号化ポリシーを照会します。
    jindo jfs -getCryptoPolicy jfs://test/

    {NONE} が返されます。

  2. jfs://test/ パスの暗号化ポリシーを設定します。
    jindo jfs -setCryptoPolicy -keyIdName policy_test jfs://test/
  3. bigboot ディレクトリに移動し、jfs://test/ パスの暗号化ポリシーを再度照会します。
    jindo jfs -getCryptoPolicy jfs://test/
    次の情報が返されます:
    SLF4J: Class path contains multiple SLF4J bindings.  // SLF4J:クラスパスに複数の SLF4J バインディングが含まれています。
    SLF4J: Found binding in [jar:file:/opt/apps/ecm/service/b2jindosdk/3.4.0-hadoop3.1/package/b2jindosdk-3.4.0-hadoop3.1/lib/jindo-distcp-3.4.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] // SLF4J: [jar:file:/opt/apps/ecm/service/b2jindosdk/3.4.0-hadoop3.1/package/b2jindosdk-3.4.0-hadoop3.1/lib/jindo-distcp-3.4.0.jar!/org/slf4j/impl/StaticLoggerBinder.class] にバインディングが見つかりました
    SLF4J: Found binding in [jar:file:/opt/apps/ecm/service/hadoop/3.2.1-1.0.1/package/hadoop-3.2.1-1.0.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] // SLF4J: [jar:file:/opt/apps/ecm/service/hadoop/3.2.1-1.0.1/package/hadoop-3.2.1-1.0.1/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class] にバインディングが見つかりました
    SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation. // SLF4J: 説明については、http://www.slf4j.org/codes.html#multiple_bindings を参照してください。
    SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory] // SLF4J: 実際のバインディングのタイプは [org.slf4j.impl.Log4jLoggerFactory] です
    21/03/12 13:52:34 WARN: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable // 21/03/12 13:52:34 警告:プラットフォームの native-hadoop ライブラリを読み込めません...該当する場合は組み込み Java クラスを使用します
    21/03/12 13:52:35 INFO: Jboot log name is /var/log/bigboot/jboot-20210312-135234-12953.LOG // 21/03/12 13:52:35 情報:Jboot ログ名は /var/log/bigboot/jboot-20210312-135234-12953.LOG です
    21/03/12 13:52:35 INFO: Write buffer size 1048576, logic block size 134217728 // 21/03/12 13:52:35 情報:書き込みバッファサイズ 1048576、論理ブロックサイズ 134217728
    21/03/12 13:52:35 INFO: cmd=getFileStatus, src=jfs://test/, dst=null, size=0, parameter=null, time-in-ms=7, version=3.4.0 // 21/03/12 13:52:35 情報:cmd=getFileStatus、src=jfs://test/、dst=null、size=0、parameter=null、time-in-ms=7、version=3.4.0
    21/03/12 13:52:35 INFO: cmd=getCryptoPolicy, src=jfs://test/, dst=null, size=0, parameter=, time-in-ms=2, version=3.4.0 // 21/03/12 13:52:35 情報:cmd=getCryptoPolicy、src=jfs://test/、dst=null、size=0、parameter=、time-in-ms=2、version=3.4.0
    The crypto policy of path: jfs://test/ is {cipherSuite: AES_CTR_NOPADDING_256, keyIdName: policy_test2, keyIdVersion: null, edek: , iv: } // パス jfs://test/ の暗号化ポリシーは {cipherSuite: AES_CTR_NOPADDING_256, keyIdName: policy_test2, keyIdVersion: null, edek: , iv: } です。
    21/03/12 13:52:35 INFO: Read total statistics: oss read average <none>, cache read average <none>, read oss percent <none> // 21/03/12 13:52:35 情報:合計統計の読み取り:oss 読み取り平均 <none>、キャッシュ読み取り平均 <none>、oss 読み取り率 <none>
    
    暗号化ポリシーを設定した後、このパスにあるファイルからデータを読み取ったり、このパスにあるファイルにデータを書き込んだりできます。
    • ローカルファイルを HDFS にコピーする:
      hadoop fs -put test.log jfs://test/
    • ファイルの内容を表示する:
      hadoop fs -cat jfs://test/test.log