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

E-MapReduce:HDFS 権限認証の有効化

最終更新日:Mar 26, 2026

HDFS 権限付与を有効にすると、必要な権限を持つユーザーのみが Hadoop 分散ファイルシステム (HDFS) にアクセスし、データの読み取りやディレクトリの作成などの操作を実行できるようになります。このトピックでは、Kerberos 以外の EMR クラスターで HDFS 権限付与を有効にする方法について説明します。

背景情報

HDFS は、次の 2 つのモードのいずれかを使用してユーザー ID を決定します:

  • シンプルモード:ユーザー ID は、HDFS に接続するクライアントのオペレーティングシステムによって決定されます。UNIX ライクなシステムでは、これは whoami コマンドの実行に相当します。

  • Kerberos モード:ユーザー ID は、クライアントの Kerberos 認証情報によって決定されます。クラスターの作成時に Kerberos 認証を有効にします。詳細については、「概要」をご参照ください。

Kerberos モードでデプロイされたクラスターの場合、HDFS 権限は umask 027 で自動的に設定されます。追加の設定やサービスの再起動は必要ありません。

前提条件

開始する前に、以下を確認してください:

  • EMR クラスター (Kerberos 以外のモード)。詳細については、「クラスターの作成」をご参照ください。

HDFS 権限付与の有効化

  1. [サービス] タブに移動します。

    1. EMR コンソールにログインします。左側のナビゲーションウィンドウで、[EMR on ECS] をクリックします。

    2. 上部のナビゲーションバーで、クラスターが存在するリージョンとリソースグループを選択します。

    3. [EMR on ECS] ページで対象のクラスターを見つけ、[操作] 列の [サービス] をクリックします。

  2. [サービス] タブで HDFS サービスを見つけ、[設定] をクリックします。

  3. [設定] タブで、次のパラメーターを設定します:

    パラメーター説明デフォルト値
    dfs.permissions.enabled権限チェックを有効にします。true に設定すると、HDFS へのアクセスが権限を持つユーザーのみに制限されます。false
    dfs.datanode.data.dir.permDataNode のローカルストレージディレクトリの権限。
    fs.permissions.umask-modeファイルとディレクトリの作成時に適用される権限マスク。
    dfs.namenode.acls.enabledアクセス制御リスト (ACL) を有効にします。true に設定すると、標準の所有者/グループ/その他のモデルを超えて、個人ユーザー、グループ、その他の詳細な権限を管理できます。hadoop fs -ls を実行すると、権限文字列の末尾にある + は、そのパスに ACL が適用されていることを示します。false
    dfs.permissions.superusergroupスーパーユーザーグループの名前。このグループのすべてのユーザーはスーパーユーザー権限を持ちます。hadoop
  4. 設定を保存します。

    1. ページ下部の [保存] をクリックします。

    2. ダイアログボックスで、[実行理由] フィールドに入力し、[保存] をクリックします。

  5. HDFS サービスを再起動します。

    1. HDFS サービスページの右上隅で、[その他] > [再起動] を選択します。

    2. ダイアログボックスで、[実行理由] フィールドに入力し、[OK] をクリックします。

    3. [確認] ダイアログボックスで、[OK] をクリックします。

    再起動の進捗状況を監視するには、[サービス] タブの右上隅にある [操作履歴] をクリックします。

例:ACL 権限の設定と確認

HDFS 権限付与を有効にした後、次の例では、ディレクトリの ACL 権限を設定し、結果を確認する方法を示します。

  1. SSH 経由でクラスターにログインします。詳細については、「クラスターへのログイン」をご参照ください。

  2. emrtest ユーザーに切り替えます:

    su emrtest
  3. ディレクトリを作成します:

    hadoop fs -mkdir /tmp/emrtest
  4. ディレクトリの権限を表示します:

    hadoop fs -ls /tmp

    出力は次のようになります:

    drwxr-x--x   - emrtest hadoop          0 2022-10-21 14:08 /tmp/emrtest
    drwxr-x--x   - hadoop  hadoop          0 2022-10-21 10:06 /tmp/hadoop-yarn
    drwx-wx-wx   - hive    hadoop          0 2022-10-21 10:13 /tmp/hive
    drwxr-x--x   - hadoop  hadoop          0 2022-10-21 10:23 /tmp/kyuubi-staging
    drwxrwxrwt   - hadoop  hadoop          0 2022-10-21 10:23 /tmp/logs
  5. ユーザー foo にディレクトリに対する読み取り、書き込み、実行 (rwx) 権限を付与します:

    hadoop fs -setfacl -m user:foo:rwx /tmp/emrtest
  6. ACL が適用されていることを確認します:

    hadoop fs -ls /tmp/

    権限文字列の後の + は、/tmp/emrtest に ACL が設定されていることを示します:

    drwxrwx--x+  - emrtest hadoop          0 2022-10-21 14:08 /tmp/emrtest
    drwxr-x--x   - hadoop  hadoop          0 2022-10-21 10:06 /tmp/hadoop-yarn
    drwx-wx-wx   - hive    hadoop          0 2022-10-21 10:13 /tmp/hive
    drwxr-x--x   - hadoop  hadoop          0 2022-10-21 10:23 /tmp/kyuubi-staging
    drwxrwxrwt   - hadoop  hadoop          0 2022-10-21 10:23 /tmp/logs
  7. 完全な ACL エントリを表示します:

    hadoop fs -getfacl /tmp/emrtest

    出力は次のようになります:

    # file: /tmp/emrtest
    # owner: emrtest
    # group: hadoop
    user::rwx
    user:foo:rwx
    group::r-x
    mask::rwx
    other::--x

    hadoop fs -getfacl [-R] <path> を使用して ACL を表示し、hadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>] を使用して変更します。