Hadoop Distributed File System (HDFS) 認証が有効になっている場合、必要な権限を持つユーザーのみが HDFS にアクセスし、データの読み取りやフォルダーの作成などの操作を実行できます。このトピックでは、HDFS 認証を有効にする方法について説明します。
背景情報
Hadoop は、ユーザー ID を決定するために、次のモードを提供します。
シンプルモード: ユーザー ID は、HDFS に接続されているクライアントのオペレーティングシステムによって決定されます。クライアントが UNIX 系オペレーティングシステムを実行している場合、
whoami
コマンドを実行してログオンユーザー名を表示します。Kerberos モード: クライアントのユーザー ID は、その Kerberos 資格情報によって決定されます。
E-MapReduce (EMR) クラスタの作成時に Kerberos 認証を有効にすることができます。 Kerberos 認証の詳細については、概要 をご参照ください。
前提条件
EMR クラスタが作成されていること。詳細については、クラスタの作成 をご参照ください。
手順
Kerberos モードでデプロイされたクラスタの場合、HDFS 権限は自動的に指定されます (umask は 027 に設定されます)。 HDFS 認証を設定して HDFS サービスを再起動する必要はありません。
Kerberos モードでデプロイされていないクラスタの場合、次の手順を実行して HDFS 認証を設定し、HDFS サービスを再起動する必要があります。
[サービス] タブに移動します。
EMR コンソールにログオンします。左側のナビゲーションペインで、EMR on ECS をクリックします。
上部のナビゲーションバーで、クラスタが存在するリージョンを選択 し、ビジネス要件に基づいてリソースグループを選択します。
[EMR on ECS] ページで、目的のクラスタを見つけ、[アクション] 列の [サービス] をクリックします。
[サービス] タブで、HDFS サービスを見つけ、[設定] をクリックします。
[設定] タブで、ビジネス要件に基づいてパラメータを変更します。
パラメータ
説明
dfs.permissions.enabled
権限チェックを有効にするかどうかを指定します。既定値: false。
権限チェックを有効にするかどうかを指定します。デフォルト値: false。権限チェックを有効にするには、このパラメータを true に設定します。
dfs.datanode.data.dir.perm
DataNode のローカルフォルダーストレージディレクトリの権限。
fs.permissions.umask-mode
権限マスク。これは、ファイルまたはフォルダーを作成するときに指定されるデフォルト設定です。
dfs.namenode.acls.enabled
アクセス制御リスト (ACL) を有効にするかどうかを指定します。デフォルト値: false。 ACL を有効にするには、このパラメータを true に設定します。その後、所有者、ユーザーグループ、およびその他のユーザーの権限を管理できます。
ACL の設定に使用されるコマンドには、
hadoop fs -getfacl [-R] <path>
およびhadoop fs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]
が含まれます。dfs.permissions.superusergroup
スーパーユーザーグループの名前。デフォルト値: hadoop。このグループのすべてのユーザーはスーパーユーザーです。
変更を保存します。
ページの下部にある [保存] をクリックします。
表示されるダイアログボックスで、[実行理由] パラメータを設定し、[保存] をクリックします。
HDFS サービスを再起動します。
HDFS サービスページの右上隅で、 を選択します。
表示されるダイアログボックスで、[実行理由] パラメータを設定し、[OK] をクリックします。
[確認] メッセージで、[OK] をクリックします。
[サービス] タブの右上隅にある [操作履歴] をクリックして、タスクの進捗状況を表示できます。
例
SSH モードでクラスタにログオンします。詳細については、クラスタへのログオン をご参照ください。
次のコマンドを実行して、作成された emrtest ユーザーに切り替えます。
su emrtest
次のコマンドを実行して、emrtest ユーザーを使用してディレクトリを作成します。
hadoop fs -mkdir /tmp/emrtest
次のコマンドを実行して、作成されたディレクトリの権限を表示します。
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
次のコマンドを実行して、ディレクトリの ACL を設定し、ユーザー foo に rwx 権限を付与します。
hadoop fs -setfacl -m user:foo:rwx /tmp/emrtest
次のコマンドを実行して、ディレクトリの権限を表示します。
hadoop fs -ls /tmp/
次のような情報が出力されます。
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
説明権限の後にプラス記号 (+) が続く場合、ACL が設定されています。例: drwxrwx--x+。
次のコマンドを実行して、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