More Related Content Similar to マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014 (20) More from Cloudera Japan (19) マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj20142. ⾃自⼰己紹介
• 小林大輔
• 2012年9月 Cloudera入社
• カスタマーオペレーションズエンジニア
• 主に国内外のテクニカルサポート業務を担当
• email: daisuke@cloudera.com
• twitter: d1ce_
2
5. ユースケースの移り変わり - 黎黎明期からこれまで
• バッチ処理
• RDBMSでは非効率的だった処理にHadoopを利用
• Hive(MapReduce), Pig, etc
• 部門単位での利用
• 部門毎に独立したクラスタがあり、管理も別々
• クラスタの乱立
5
6. ユースケースの移り変わり - 現在とこれから
• バッチ処理 + インタラクティブな分析処理
• Hive, Impala, etc
• SQLによるアクセスが一般的
• データは一部の人だけのものではない
• クラスタの共有(マルチテナント)
6
18. 認証と認可
• 認証
• Kerberos
• Hadoopの標準的な認証機構, Hive/Impalaも対応
• 認可
• HDFS ACL(HDFS-4685)
• ファイルシステムレベルのAccess Control List
• Apache Sentry
• Hive/Impala用の認可モジュール
18
19. 認証と認可
• 認証
• Kerberos
• Hadoopの標準的な認証機構, Hive/Impalaも対応
• 認可
• HDFS ACL(HDFS-4685)
• ファイルシステムレベルのAccess Control List
• Apache Sentry
• Hive/Impala用の認可モジュール
19
20. 認証と認可
• 認証
• Kerberos
• Hadoopの標準的な認証機構, Hive/Impalaも対応
• 認可
• HDFS ACL(HDFS-4685)
• ファイルシステムレベルのAccess Control List
• Apache Sentry
• Hive/Impala用の認可モジュール
20
21. 認証 - Kerberos
• 相手が何者であるかを保証するためのプロトコル
• データの整合性の確保や転送中のデータの暗号化
• 自分のアカウントに他人がアクセスするのを制限する
• Hadoopも対応済み
21
22. 認証 - Kerberos
• 例1 (Kerberos認証を有効にしたクラスタ)
• 認証されていないユーザでアクセスする
• 有効な資格情報がないためエラーになる
22
[daisuke@dice2 ~]$ klist -ef
klist: No credentials cache found (ticket cache FILE:/tmp/krb5cc_2002)
[daisuke@dice2 ~]$ hdfs dfs -ls /user/daisuke
14/07/06 08:19:10 ERROR security.UserGroupInformation: PriviledgedActionException as:daisuke
(auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by
GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]
14/07/06 08:19:10 WARN ipc.Client: Exception encountered while connecting to the server :
javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials
provided (Mechanism level: Failed to find any Kerberos tgt)]
...
23. 認証 - Kerberos
• 例2 (Kerberos認証を有効にしたクラスタ)
• サーバから認証されたユーザでアクセスする
• 有効な資格情報があるため読み書きが可能
23
[daisuke@dice2 ~]$ kinit
Password for daisuke@CLOUDERA:
[daisuke@dice2 ~]$ klist -ef
Ticket cache: FILE:/tmp/krb5cc_2002
Default principal: daisuke@CLOUDERA
... (略略) ...
[daisuke@dice2 ~]$ hdfs dfs -ls /user/daisuke
Found 109 items
drwx------ - daisuke daisuke 0 2014-07-05 17:00 /user/daisuke/.Trash
-rw-r--r-- 1 daisuke daisuke 2307 2014-06-06 03:55 /user/daisuke/TestUDF
... (略略) ...
[daisuke@dice2 ~]$ hdfs dfs -put data /user/daisuke
[daisuke@dice2 ~]$
24. 認証 - Kerberos
• Hive
• HiveServer2(HS2)はKerberos認証に対応
• ユーザやJDBCアプリケーションなどはHS2を介して
セキュアにアクセスできる
• Impala
• Kerberos認証にデフォルトで対応
24
25. 認証と認可
• 認証
• Kerberos
• Hadoopの標準的な認証機構, Hive/Impalaも対応
• 認可
• HDFS ACL(HDFS-4685)
• ファイルシステムレベルのAccess Control List
• Apache Sentry
• Hive/Impala用の認可モジュール
25
27. 27
認可 - Apache Sentry
• ロールベースのアクセスコントロールシステム
参考
http://sentry.incubator.apache.org/
28. 28
認可 - Apache Sentry
• Apache Incubatorプロジェクト
• オープンソースで開発
• Oracle社やCloudera社が主導
• データベース、テーブル、ビュー、列/行
の粒度でアクセス制御
• HiveやImpalaなど幅広いHadoop
エコシステムで利用可能
30. 権限を許可する
• Sentryで使用されるオブジェクト
• 階層構造で表現される
• オブジェクトに対してactionを定義
• 例)SALESデータベースのCUSTOMERS表に対するINSERT権限
を許可する
30
server=server1->db=sales->table=customers->action=insert
server ----------------------- Hive(Impala)サービスの認識識
¦_database
¦_table(view) ----------- 列列/⾏行行レベルで制御する場合はviewを作成
¦_URI --------------------- UDFや外部テーブルで使⽤用するディレクトリ
31. 権限を許可する(続き)
• actionはINSERT, SELECT, ALLの3種類
31
コマンド action オブジェクト
CREATE TABLE ALL database
SHOW TABLES SELECT or INSERT table
DROP TABLE ALL server
REFRESH ALL table
COMPUTE STATS ALL table
.... .... ....
参考
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Security-Guide/cdh5sg_sentry.html
http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_authorization.html