天天看點

Impala權限控制開頭具體步驟最後

開頭

Impala因為是Cloudera出的,是以官方文檔說明裡隻寫了使用自家的Sentry方式進行權限管理,而對于Hortonworks家的Ranger隻字未提,網上都是說可以通過特殊方案內建到Ranger上,但是沒有找到具體方案,在此也提不了了。

首先,Sentry 的使用有兩種方式,一是基于檔案的存儲方式(SimpleFileProviderBackend),一是基于資料庫的存儲方式(SimpleDbProviderBackend),如果使用基于檔案的存儲則隻需要安裝sentry,否則還需要安裝 sentry-store。因為工作上使用的是Hortonworks家的Ranger,也沒有安裝sentry-store,是以預設采取基于配置檔案的方式對Impala進行權限管控。

具體步驟

1、建立 policy.ini 檔案,并配置groups,roles與users,關于 policy.ini 檔案的文法說明,請參考官方文檔。

[groups]
hive = any_operation

 
[roles]
any_operation = server=server1->db=*->table=*->action=*
 
[users]
hive= hive
           

2、将其上傳到 hdfs 的 /user/impala/ 目錄:

hadoop fs -put /xxx/policy.ini /user/impala/
           

3、修改配置檔案

修改 /etc/default/impala 檔案中的 IMPALA_SERVER_ARGS 參數,添加:

-server_name=server1 \
-authorization_policy_file=/user/impala/policy.ini \
-authorization_policy_provider_class=org.apache.sentry.provider.file.LocalGroupResourceAuthorizationProvider \
-enable_ldap_auth=true \
-ldap_tls=false \
-ldap_passwords_in_clear_ok=true \
-ldap_uri=ldap://idap_ip \
-ldap_baseDN=ou=People,dc=hadoop,dc=com 
           

注意:

前三行參數是配置sentry檔案配置,server1 必須和 policy.ini 檔案中的保持一緻。

後面的參數是開啟LDAP認證

4、重新開機 impala-server 服務

service impala-server restart
           

最後

impala的權限管控是針對每一個impalad的,權限認證隻在impalad的front層做,是以權限是由通路的impalad節點決定,是以可以設定不同的impalad節點權限不一樣。然後預設可以使用impala-shell -l -u hive 來測試LDAP使用者的權限是否設定成功。使用JDBC連接配接的時候,發現使用Cloudera提供的官方impala驅動連接配接存在問題,可能跟版本相關,使用hive驅動可以正常連接配接使用,即使用JDBC:HIVE2:的方式。