Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
1
マルチテナント化に向けた
Hadoopの最新セキュリティ事情
小林大輔 ¦ Customer Operations Engineer
⾃自⼰己紹介
•  小林大輔
•  2012年9月 Cloudera入社
•  カスタマーオペレーションズエンジニア
•  主に国内外のテクニカルサポート業務を担当
•  email: daisuke@cloudera.com
•  twitt...
アジェンダ
•  Hadoopのユースケースの移り変わり
•  マルチテナントとセキュリティの関連性
•  認可モジュールSentryの紹介
3
ユースケースの移り変わり
ユースケースの移り変わり - 黎黎明期からこれまで
•  バッチ処理
•  RDBMSでは非効率的だった処理にHadoopを利用
•  Hive(MapReduce), Pig, etc
•  部門単位での利用
•  部門毎に独立したクラスタが...
ユースケースの移り変わり  - 現在とこれから
•  バッチ処理 + インタラクティブな分析処理
•  Hive, Impala, etc
•  SQLによるアクセスが一般的
•  データは一部の人だけのものではない
•  クラスタの共有(マル...
ユースケースの移り変わり  - クラスタの共有
•  リソース、データを部門間で共有する
•  サービスとして各部署に提供
7
単⼀一クラスタ
⼈人事担当者購買担当者
クラスタを共有するメリット
1.  データの複製が不要
•  複数の組織が同一のデータにアクセスできる
2.  業務の巻き取り
•  複数の組織におけるクラスタの運用コストを、1クラ
スタにまとめることで一本化しコスト削減
3.  性能・効率の...
クラスタを共有する上での課題
1.  リソースの分離と管理
•  特定ユーザ、サービスによるリソースの占有を避ける
YARN開発のモチベーション
9
クラスタを共有する上での課題
1.  リソースの分離と管理
•  特定ユーザ、サービスによるリソースの占有を避ける
YARN開発のモチベーション
2.  ユーザアクセスの制限
10
ユーザアクセスの制限について
11
リソースは共有
したいが⾒見見せた
くないデータも
あるな...
このデータ⾒見見えて
いいのかな...
⼈人事担当者
購買担当者
ユーザアクセスの制限について
12
リソースは共有
したいが⾒見見せた
くないデータも
あるな...
システム的に遮断できた
ほうが望ましい
ユーザアクセスの制限について
13
購買担当者
⼈人事担当者
適切切な権限をもたないユーザ
はアクセスできない
クラスタを共有する上での課題
1.  リソースの分離と管理
•  特定ユーザ、サービスによるリソースの占有を避ける
YARN開発のモチベーション
2.  ユーザアクセスの制限
•  適切な人間、組織に適切な権限の付与が必要
セキュリティ機能開発...
ユーザアクセスの制限について
•  セキュリティ要件
•  ユーザの認証
•  ユーザAが間違いなく「ユーザA」であることを証明する
•  他のユーザによる、なりすましを防ぐ
•  権限付与の制御( = 認可)
•  ユーザAがどのデータにアク...
ここまでのまとめ
16
•  Hadoopはマルチテナント化へ向かっている
•  マルチテナント環境の要件
•  リソースの管理(YARN)
•  ユーザアクセスの制御(セキュリティ)
•  セキュリティ機能によるアクセス制御
•  認証
• ...
ユーザのアクセス制御について
認証と認可
•  認証
•  Kerberos
•  Hadoopの標準的な認証機構, Hive/Impalaも対応
•  認可
•  HDFS ACL(HDFS-4685)
•  ファイルシステムレベルのAccess Control List...
認証と認可
•  認証
•  Kerberos
•  Hadoopの標準的な認証機構, Hive/Impalaも対応
•  認可
•  HDFS ACL(HDFS-4685)
•  ファイルシステムレベルのAccess Control List...
認証と認可
•  認証
•  Kerberos
•  Hadoopの標準的な認証機構, Hive/Impalaも対応
•  認可
•  HDFS ACL(HDFS-4685)
•  ファイルシステムレベルのAccess Control List...
認証 - Kerberos
•  相手が何者であるかを保証するためのプロトコル
•  データの整合性の確保や転送中のデータの暗号化
•  自分のアカウントに他人がアクセスするのを制限する
•  Hadoopも対応済み
21
認証 - Kerberos
•  例1 (Kerberos認証を有効にしたクラスタ)
•  認証されていないユーザでアクセスする
•  有効な資格情報がないためエラーになる
22
[daisuke@dice2 ~]$ klist -ef
kli...
認証 - Kerberos
•  例2 (Kerberos認証を有効にしたクラスタ)
•  サーバから認証されたユーザでアクセスする
•  有効な資格情報があるため読み書きが可能
23
[daisuke@dice2 ~]$ kinit
Pass...
認証 - Kerberos
•  Hive
•  HiveServer2(HS2)はKerberos認証に対応
•  ユーザやJDBCアプリケーションなどはHS2を介して
セキュアにアクセスできる
•  Impala
•  Kerberos認証...
認証と認可
•  認証
•  Kerberos
•  Hadoopの標準的な認証機構, Hive/Impalaも対応
•  認可
•  HDFS ACL(HDFS-4685)
•  ファイルシステムレベルのAccess Control List...
認可
•  HS2のなりすまし機能(Impersonation)
•  Kerberosで認証されているユーザ名でアクセス可
•  無効にするとhiveユーザでアクセス
•  HDFSのユーザ/グループにより読み書きを制御(rwx)
•  課題...
27
認可 - Apache Sentry
•  ロールベースのアクセスコントロールシステム
参考
http://sentry.incubator.apache.org/
28
認可 - Apache Sentry
•  Apache Incubatorプロジェクト
•  オープンソースで開発
•  Oracle社やCloudera社が主導
•  データベース、テーブル、ビュー、列/行
の粒度でアクセス制御
• ...
マルチテナントのための認可システム
Apache Sentryの紹介
権限を許可する
•  Sentryで使用されるオブジェクト
•  階層構造で表現される
•  オブジェクトに対してactionを定義
•  例)SALESデータベースのCUSTOMERS表に対するINSERT権限
を許可する
30
server...
権限を許可する(続き)
•  actionはINSERT, SELECT, ALLの3種類
31
コマンド action オブジェクト
CREATE TABLE ALL database
SHOW TABLES SELECT or INSERT...
権限を許可する(続き)
•  ロールを使って権限をグループ化する
•  従業員の役割に応じたアクセス制限の付与が一般的
•  例: マネージャロール(HR)にはHR_TABLE表へのINSERT権限を許可
•  定義したロールは任意のユーザに割...
マルチテナントとSentry
マルチテナントの管理
•  部門(データベース)ごとにポリシーファイルを持たせる
•  グローバルの管理者はデータベースのセキュリティ管理をデータ
ベース管理者に委譲することができる
34
マルチテナントの管理
35
グローバル管理理者
(グローバルDBのポリシーファイルを管理理)
マルチテナントの管理
36
⼈人事管理理者
購買管理理者
グローバル管理理者
(グローバルDBのポリシーファイルを管理理)購買担当者はPO_DBを
管理理してください
⼈人事担当者はHR_DBを
管理理してください
マルチテナントの管理
37
⼈人事管理理者
購買管理理者
グローバル管理理者
(グローバルDBのポリシーファイルを管理理)
各ユーザへテーブル、
列列/⾏行行レベルのアクセス
権限を付与
    
マルチテナントの管理
38
⼈人事管理理者
購買管理理者
グローバル管理理者
(グローバルDBのポリシーファイルを管理理)
SELECT... HR_..
INSERT...HR_
SELECT...PO_...
INSERT...PO_...
Sentryのアーキテクチャ
Impala Hive
Policy Engine
Future
Policy Provider
File Database
Sentryのアーキテクチャ
40
結合レイヤー
Impala
HiveServer
2
権限付与レイヤー
評価, 検...
クエリ実行フローにおけるSentry
41
QueryMR
SQL
Parse
Build
Plan
SQL文法検証
ステートメントツリー構築
ステートメントオブジェクト検査
実行計画へ返す
Check
Sentry
ロードマップ
Sentryの今後
43
•  データベースをベースにしたポリシーの管理理
•  GRANT/REVOKEといったおなじみの管理理コマンド
が利利⽤用可能になる
•  Sentry1.4
CDH5.1
まとめ
まとめ
45
•  Hadoopはマルチテナント化へ向かっている
•  マルチテナント環境の要件
•  リソースの管理(YARN)
•  ユーザアクセスの制御(セキュリティ)
=> 重要だがYARNの陰に隠れがち
•  Apache Sentr...
46
Upcoming SlideShare
Loading in …5
×

マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014

11,753 views

Published on

Hadoop Conference Japan 2014で発表したApache Sentryの紹介です

Published in: Technology
  • Be the first to comment

マルチテナント化に向けたHadoopの最新セキュリティ事情 #hcj2014

  1. 1. 1 マルチテナント化に向けた Hadoopの最新セキュリティ事情 小林大輔 ¦ Customer Operations Engineer
  2. 2. ⾃自⼰己紹介 •  小林大輔 •  2012年9月 Cloudera入社 •  カスタマーオペレーションズエンジニア •  主に国内外のテクニカルサポート業務を担当 •  email: daisuke@cloudera.com •  twitter: d1ce_ 2
  3. 3. アジェンダ •  Hadoopのユースケースの移り変わり •  マルチテナントとセキュリティの関連性 •  認可モジュールSentryの紹介 3
  4. 4. ユースケースの移り変わり
  5. 5. ユースケースの移り変わり - 黎黎明期からこれまで •  バッチ処理 •  RDBMSでは非効率的だった処理にHadoopを利用 •  Hive(MapReduce), Pig, etc •  部門単位での利用 •  部門毎に独立したクラスタがあり、管理も別々 •  クラスタの乱立 5
  6. 6. ユースケースの移り変わり  - 現在とこれから •  バッチ処理 + インタラクティブな分析処理 •  Hive, Impala, etc •  SQLによるアクセスが一般的 •  データは一部の人だけのものではない •  クラスタの共有(マルチテナント) 6
  7. 7. ユースケースの移り変わり  - クラスタの共有 •  リソース、データを部門間で共有する •  サービスとして各部署に提供 7 単⼀一クラスタ ⼈人事担当者購買担当者
  8. 8. クラスタを共有するメリット 1.  データの複製が不要 •  複数の組織が同一のデータにアクセスできる 2.  業務の巻き取り •  複数の組織におけるクラスタの運用コストを、1クラ スタにまとめることで一本化しコスト削減 3.  性能・効率の改善 •  クラスタのリソースを効率よく割り当てる •  複数クラスタだと柔軟な割り当てができない 8
  9. 9. クラスタを共有する上での課題 1.  リソースの分離と管理 •  特定ユーザ、サービスによるリソースの占有を避ける YARN開発のモチベーション 9
  10. 10. クラスタを共有する上での課題 1.  リソースの分離と管理 •  特定ユーザ、サービスによるリソースの占有を避ける YARN開発のモチベーション 2.  ユーザアクセスの制限 10
  11. 11. ユーザアクセスの制限について 11 リソースは共有 したいが⾒見見せた くないデータも あるな... このデータ⾒見見えて いいのかな... ⼈人事担当者 購買担当者
  12. 12. ユーザアクセスの制限について 12 リソースは共有 したいが⾒見見せた くないデータも あるな... システム的に遮断できた ほうが望ましい
  13. 13. ユーザアクセスの制限について 13 購買担当者 ⼈人事担当者 適切切な権限をもたないユーザ はアクセスできない
  14. 14. クラスタを共有する上での課題 1.  リソースの分離と管理 •  特定ユーザ、サービスによるリソースの占有を避ける YARN開発のモチベーション 2.  ユーザアクセスの制限 •  適切な人間、組織に適切な権限の付与が必要 セキュリティ機能開発のモチベーション 本プレゼンの主旨 14
  15. 15. ユーザアクセスの制限について •  セキュリティ要件 •  ユーザの認証 •  ユーザAが間違いなく「ユーザA」であることを証明する •  他のユーザによる、なりすましを防ぐ •  権限付与の制御( = 認可) •  ユーザAがどのデータにアクセスできるかを制御する 15
  16. 16. ここまでのまとめ 16 •  Hadoopはマルチテナント化へ向かっている •  マルチテナント環境の要件 •  リソースの管理(YARN) •  ユーザアクセスの制御(セキュリティ) •  セキュリティ機能によるアクセス制御 •  認証 •  ユーザが誰であるか •  認可 •  そのユーザにはどんな権限があるか
  17. 17. ユーザのアクセス制御について
  18. 18. 認証と認可 •  認証 •  Kerberos •  Hadoopの標準的な認証機構, Hive/Impalaも対応 •  認可 •  HDFS ACL(HDFS-4685) •  ファイルシステムレベルのAccess Control List •  Apache Sentry •  Hive/Impala用の認可モジュール 18
  19. 19. 認証と認可 •  認証 •  Kerberos •  Hadoopの標準的な認証機構, Hive/Impalaも対応 •  認可 •  HDFS ACL(HDFS-4685) •  ファイルシステムレベルのAccess Control List •  Apache Sentry •  Hive/Impala用の認可モジュール 19
  20. 20. 認証と認可 •  認証 •  Kerberos •  Hadoopの標準的な認証機構, Hive/Impalaも対応 •  認可 •  HDFS ACL(HDFS-4685) •  ファイルシステムレベルのAccess Control List •  Apache Sentry •  Hive/Impala用の認可モジュール 20
  21. 21. 認証 - Kerberos •  相手が何者であるかを保証するためのプロトコル •  データの整合性の確保や転送中のデータの暗号化 •  自分のアカウントに他人がアクセスするのを制限する •  Hadoopも対応済み 21
  22. 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. 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. 24. 認証 - Kerberos •  Hive •  HiveServer2(HS2)はKerberos認証に対応 •  ユーザやJDBCアプリケーションなどはHS2を介して セキュアにアクセスできる •  Impala •  Kerberos認証にデフォルトで対応 24
  25. 25. 認証と認可 •  認証 •  Kerberos •  Hadoopの標準的な認証機構, Hive/Impalaも対応 •  認可 •  HDFS ACL(HDFS-4685) •  ファイルシステムレベルのAccess Control List •  Apache Sentry •  Hive/Impala用の認可モジュール 25
  26. 26. 認可 •  HS2のなりすまし機能(Impersonation) •  Kerberosで認証されているユーザ名でアクセス可 •  無効にするとhiveユーザでアクセス •  HDFSのユーザ/グループにより読み書きを制御(rwx) •  課題 •  HiveやImpalaのメタデータ(列や行)レベルでのコント ロールは不可 26
  27. 27. 27 認可 - Apache Sentry •  ロールベースのアクセスコントロールシステム 参考 http://sentry.incubator.apache.org/
  28. 28. 28 認可 - Apache Sentry •  Apache Incubatorプロジェクト •  オープンソースで開発 •  Oracle社やCloudera社が主導 •  データベース、テーブル、ビュー、列/行 の粒度でアクセス制御 •  HiveやImpalaなど幅広いHadoop エコシステムで利用可能
  29. 29. マルチテナントのための認可システム Apache Sentryの紹介
  30. 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. 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
  32. 32. 権限を許可する(続き) •  ロールを使って権限をグループ化する •  従業員の役割に応じたアクセス制限の付与が一般的 •  例: マネージャロール(HR)にはHR_TABLE表へのINSERT権限を許可 •  定義したロールは任意のユーザに割り当てる •  複数のロールを割り当てることも可能 •  ポリシーファイルに定義(*.ini形式) •  HDFSに分散して保存(ワーカノードの数だけ複製) •  適切なパーミッションで保護 32 manager=server=server1->db=hr_db->table=hr_table->action=insert
  33. 33. マルチテナントとSentry
  34. 34. マルチテナントの管理 •  部門(データベース)ごとにポリシーファイルを持たせる •  グローバルの管理者はデータベースのセキュリティ管理をデータ ベース管理者に委譲することができる 34
  35. 35. マルチテナントの管理 35 グローバル管理理者 (グローバルDBのポリシーファイルを管理理)
  36. 36. マルチテナントの管理 36 ⼈人事管理理者 購買管理理者 グローバル管理理者 (グローバルDBのポリシーファイルを管理理)購買担当者はPO_DBを 管理理してください ⼈人事担当者はHR_DBを 管理理してください
  37. 37. マルチテナントの管理 37 ⼈人事管理理者 購買管理理者 グローバル管理理者 (グローバルDBのポリシーファイルを管理理) 各ユーザへテーブル、 列列/⾏行行レベルのアクセス 権限を付与     
  38. 38. マルチテナントの管理 38 ⼈人事管理理者 購買管理理者 グローバル管理理者 (グローバルDBのポリシーファイルを管理理) SELECT... HR_.. INSERT...HR_ SELECT...PO_... INSERT...PO_...
  39. 39. Sentryのアーキテクチャ
  40. 40. Impala Hive Policy Engine Future Policy Provider File Database Sentryのアーキテクチャ 40 結合レイヤー Impala HiveServer 2 権限付与レイヤー 評価, 検証 解析 インターフェース インターフェース Local FS/ HDFS
  41. 41. クエリ実行フローにおけるSentry 41 QueryMR SQL Parse Build Plan SQL文法検証 ステートメントツリー構築 ステートメントオブジェクト検査 実行計画へ返す Check Sentry
  42. 42. ロードマップ
  43. 43. Sentryの今後 43 •  データベースをベースにしたポリシーの管理理 •  GRANT/REVOKEといったおなじみの管理理コマンド が利利⽤用可能になる •  Sentry1.4 CDH5.1
  44. 44. まとめ
  45. 45. まとめ 45 •  Hadoopはマルチテナント化へ向かっている •  マルチテナント環境の要件 •  リソースの管理(YARN) •  ユーザアクセスの制御(セキュリティ) => 重要だがYARNの陰に隠れがち •  Apache Sentryによる認可機能の強化 •  マルチテナント要件を満たすようこれからもOSS で開発が進められるでしょう
  46. 46. 46

×