このトピックでは、ブロックストレージモードまたはキャッシュモードで JindoFS の権限を管理する方法について説明します。ブロックストレージモードとキャッシュモードを切り替えることはできません。
背景情報
ストレージモードに基づく権限管理:
ブロックストレージモードでは、UNIX コマンドを実行するか、Ranger を使用して権限を管理できます。
UNIX では、ファイルに rwxrwxrwx 権限を付与し、ファイルの所有者とグループを設定できます。
Ranger では、複雑な操作や高度な操作を実行できます。たとえば、パスでワイルドカードを使用します。
キャッシュモードでは、Ranger のみを使用して権限を管理できます。
複雑な操作や高度な操作を実行できます。たとえば、パスでワイルドカードを使用します。
UNIX ベースの権限管理を有効にする
SmartData サービスに移動します。
Alibaba Cloud EMR コンソール にログオンします。
上部のナビゲーションバーで、クラスターが存在するリージョンを選択します。必要に応じてリソースグループを選択します。デフォルトでは、アカウントのすべてのリソースが表示されます。
[クラスター管理] タブをクリックします。
表示される [クラスター管理] ページで、ターゲットクラスターを見つけ、[アクション] 列の [詳細] をクリックします。
左側のナビゲーションペインで、[クラスターサービス] をクリックし、次に [smartdata] をクリックします。
SmartData サービスの namespace タブに移動します。
[構成] タブをクリックします。
[サービス構成] セクションの [namespace] タブをクリックします。
右上隅にある [カスタム構成] をクリックします。[構成項目の追加] ダイアログボックスで、[キー] を jfs.namespaces.<namespace>.permission.method に設定し、[値] を unix に設定して、[OK] をクリックします。
構成を保存します。
[サービス構成] セクションの右上隅にある [保存] をクリックします。
[変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
[OK] をクリックします。
Namespace サービスを再起動します。
右上隅にある を選択します。
[クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。確認メッセージで、[OK] をクリックします。
サービスが再起動した後、HDFS 権限を管理するのと同じ方法で UNIX コマンドを実行して JindoFS 権限を管理できます。次のコマンドを使用できます。
hadoop fs -chmod 777 jfs://{namespace_name}/dir1/file1 hadoop fs -chown john:staff jfs://{namespace_name}/dir1/file1
ユーザーがファイルに対する権限を持っていない場合、次の図に示すエラーが返されます。
Ranger ベースの権限管理を有効にする
Ranger を使用して権限を管理するには、まず EMR の Apache Ranger コンポーネントで権限を構成し、JindoFS で Ranger プラグインをアクティブにする必要があります。その後、他のコンポーネントの権限を管理するのと同じ方法で、Ranger で JindoFS 権限を管理できます。
JindoFS で Ranger を権限管理方法として構成します。
SmartData サービスの [namespace] タブで、[カスタム構成] をクリックします。
[構成項目の追加] ダイアログボックスで、[キー] を jfs.namespaces.<namespace>.permission.method に設定し、[値] を ranger に設定して、[OK] をクリックします。
構成を保存します。
[サービス構成] セクションの右上隅にある [保存] をクリックします。
[変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
[OK] をクリックします。
Namespace サービスを再起動します。
右上隅にある
を選択します。[クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。確認メッセージで、[OK] をクリックします。
Ranger の Web UI で HDFS サービスを追加し、関連パラメーターを構成します。
Ranger Web UI にログオンします。
詳細については、「概要」をご参照ください。
Ranger の Web UI で HDFS サービスを追加します。
次の表に示すパラメーターを構成します。
パラメーター
説明
サービス名
このパラメーターを jfs-{namespace_name} の形式で設定します。
例:jfs-test。
ユーザー名
ユーザー名をカスタマイズします。
パスワード
パスワードをカスタマイズします。
Namenode URL
このパラメーターを jfs://{namespace_name}/ の形式で設定します。
認証の有効化
デフォルト値の [いいえ] を保持します。
認証タイプ
デフォルト値の [シンプル] を保持します。
dfs.datanode.kerberos.principal
このパラメーターは空のままにします。
dfs.namenode.kerberos.principal
dfs.secondary.namenode.kerberos.principal
新しい構成の追加
[追加] をクリックします。
JindoFS で LDAP サーバーからのユーザーグループの同期を有効にする
Ranger Usersync で LDAP サーバーからのユーザーグループの同期を有効にしている場合は、JindoFS でもこの機能を有効にする必要があります。そうしないと、JindoFS は LDAP サーバーから同期されたユーザーグループに関する情報を取得できず、ユーザーグループの権限を確認できません。
SmartData サービスの [namespace] タブで、[カスタム構成] をクリックします。
[構成項目の追加] ダイアログボックスで、次の表に示す LDAP パラメーターを構成し、[OK] をクリックします。
オープンソース HDFS の構成に基づいてパラメーターを構成します。詳細については、「core-default.xml」をご参照ください。
パラメーター
例
hadoop.security.group.mapping
org.apache.hadoop.security.CompositeGroupsMapping
hadoop.security.group.mapping.providers
shell4services,ad4users
hadoop.security.group.mapping.providers.combined
true
hadoop.security.group.mapping.provider.shell4services
org.apache.hadoop.security.ShellBasedUnixGroupsMapping
hadoop.security.group.mapping.provider.ad4users
org.apache.hadoop.security.LdapGroupsMapping
hadoop.security.group.mapping.ldap.url
ldap://emr-header-1:10389
hadoop.security.group.mapping.ldap.search.filter.user
(&(objectClass=person)(uid={0}))
hadoop.security.group.mapping.ldap.search.filter.group
(objectClass=groupOfNames)
hadoop.security.group.mapping.ldap.base
o=emr
構成を保存します。
[サービス構成] セクションの右上隅にある [保存] をクリックします。
[変更の確認] ダイアログボックスで、[説明] を指定し、[構成の自動更新] をオンにします。
[OK] をクリックします。
SmartData サービスのすべてのコンポーネントを再起動します。
右上隅にある を選択します。
[クラスターアクティビティ] ダイアログボックスで、[説明] を指定し、[OK] をクリックします。確認メッセージで、[OK] をクリックします。
SSH モードで EMR クラスターの emr-header-1 ノードにログオンし、Ranger Usersync を LDAP サーバーに接続します。
詳細については、「RangerUserSync と LDAP サーバーの統合」をご参照ください。