66
Page 1 © Hortonworks Inc. 2014 Hadoop Security Recap Yuta Imai Hadoop + Kerberos

Hadoop and Kerberos

Embed Size (px)

Citation preview

Page 1: Hadoop and Kerberos

Page 1 © Hortonworks Inc. 2014

Hadoop Security Recap

Yuta Imai

Hadoop + Kerberos

Page 2: Hadoop and Kerberos

Page 2 © Hortonworks Inc. 2014

この発表について

•  今⽇はおもにKerberosとHadoopの関係性についての話をします。

•  KerberosはHadoopにとって、とても重要ですが、とても複雑です。

•  Kerberosやらなきゃなのはわかってるんだけど、意味がわからん!という⼈に向けての発表です。

Page 3: Hadoop and Kerberos

Page 3 © Hortonworks Inc. 2014

Background

Page 4: Hadoop and Kerberos

Page 4 © Hortonworks Inc. 2014

Background: YARNによるHadoopのマルチテナント化

•  Hadoop2で導⼊されたYARNにより、Hadoopクラスタを複数のひとや組織、ワークロードによって共⽤することが容易になった。

•  巨⼤なHDFSクラスタに様々なデータを格納しておき、そのデータに対して様々な処理を⾛らせることが可能に。

Page 5: Hadoop and Kerberos

Page 5 © Hortonworks Inc. 2014

1 ° ° ° ° ° ° ° ° °

° ° ° ° ° ° ° ° ° °

°

N

HDFS Hadoop Distributed File System

DATA MANAGEMENT

ストレージ(HDFS)とコンピューティング(MapReduce)が結合して

いた

Before YARN

MapReduce

クラスタ全体のリソース管理や、多数のアプリケーション起動時の性能的なボトルネックなどいくつ

かの課題があった

Page 6: Hadoop and Kerberos

Page 6 © Hortonworks Inc. 2014

Others ISV Engines

YARN : Data Operating System

DATA ACCESS

1 ° ° ° ° ° ° ° ° °

° ° ° ° ° ° ° ° ° °

°

N

Batch MapReduce

Script Pig

Search Solr

SQL Hive

NoSQL HBase Accumulo Phoenix

Stream Storm

In-memory Spark

Tez Tez Tez Slider Slider

HDFS Hadoop Distributed File System

DATA MANAGEMENT

YARNの柔軟なAPIによりリソースが抽象化され、様々なアプリケーションが共存できるようになった。

HDFSはマルチテナントな巨⼤なデータストアとなった。

YARN

Page 7: Hadoop and Kerberos

Page 7 © Hortonworks Inc. 2014

YARN

Others ISV Engines

YARN : Data Operating System

DATA ACCESS

1 ° ° ° ° ° ° ° ° °

° ° ° ° ° ° ° ° ° °

°

N

Batch MapReduce

Script Pig

Search Solr

SQL Hive

NoSQL HBase Accumulo Phoenix

Stream Storm

In-memory Spark

Tez Tez Tez Slider Slider

HDFS Hadoop Distributed File System

DATA MANAGEMENT

YARNによりリソースが抽象化され、様々なアプリケーションが共

存できるようになった。

HDFSはマルチテナントな巨⼤なデータストアとなった。

これにより、様々な組織や部署のひとが共⽤Hadoopクラスタを使

うようになった。

Division A Division B

Page 8: Hadoop and Kerberos

Page 8 © Hortonworks Inc. 2014

マルチテナント環境の運⽤で注意するべき3つの項⽬

●  Shared Compute & Memory Capacity  - 誰がどのくらいの計算リソースを使えるのか

●  Shared Storage Capacity - 誰がどのくらいのストレージを使えるのか

●  Security Controls- 誰が何をできるのか。

Page 9: Hadoop and Kerberos

Page 9 © Hortonworks Inc. 2014

マルチテナント環境の運⽤で注意するべき3つの項⽬

●  Shared Compute & Memory Capacity  - 誰がどのくらいの計算リソースを使えるのか

●  Shared Storage Capacity - 誰がどのくらいのストレージを使えるのか

●  Security Controls- 誰が何をできるのか。

Page 10: Hadoop and Kerberos

Page 10 © Hortonworks Inc. 2014

YARN Queue: Key to Scheduling

●  Capacity: Guaranteed and maximum burst ●  Users & their resource limits ●  Access control lists (ACLs) ●  Node Labels

YARN: Capacity Schedulerによるコンピューティングリソースの管理

Page 11: Hadoop and Kerberos

Page 11 © Hortonworks Inc. 2014

HDFS Storage Limits

Page 11

Hadoop Cluster Space Quotas •  Applied to directories •  Associated with users and groups •  Space quotas applied to a user

directory will limit the growth of that directory, not the amount of data a user can place in the cluster

•  The amount of data a single user can place in the cluster is limited by space quotas on their home directory, directories common to the user’s groups, and any common directories the user has access to

A tenant consists of users and groups. Each tenant can consume the sum of space allocated to directories associated with its users and groups.

Additionally, tenants can consume space in directories that are shared across Tenants.

The sum of all space quotas should equal the total amount of available space in the cluster, unless oversubscription is anticipated and consumption is monitored.

Remember to account for replication factors!

HDFSのQuota制御

Page 12: Hadoop and Kerberos

Page 12 © Hortonworks Inc. 2014

HDFS Storage Allocation - Directories & Permission HDFSのファイルアクセスの管理

Page 13: Hadoop and Kerberos

Page 13 © Hortonworks Inc. 2014

who?

ユーザーを正しく認証するということが⾮常に重要

いずれのケースにおいても

Page 14: Hadoop and Kerberos

Page 14 © Hortonworks Inc. 2014

もちろんそれだけではない: 5 Pillars of Security

Administration Central management & consistent security

Authentication Authenticate users and systems

Authorization Provision access to data

Audit Maintain a record of data access

Data Protection Protect data at rest and in motion

実⾏者は誰?

実⾏者は何をできる?

いつ誰が何をした?

データは安全に移動/保存できる?

中央集約的に管理できる?

Page 15: Hadoop and Kerberos

Page 15 © Hortonworks Inc. 2014

Hadoop Security Recap

Page 16: Hadoop and Kerberos

Page 16 © Hortonworks Inc. 2014

一般的なHadoopセキュリティフローの概要

AuthZ

Auth

NameNode

1. 認証

2. ジョブリクエスト

5. オペレーションログ

DataNode

DataNode

暗号化

ResourceManager 3. ジョブサブミットの認可

4. ファイルアクセスの認可

※認証だけ外の世界に依存しているのが特徴

Page 17: Hadoop and Kerberos

Page 17 © Hortonworks Inc. 2014

In Hortonworks Data Platform:

Administration Central management & consistent security

Authentication Authenticate users and systems

Authorization Provision access to data

Audit Maintain a record of data access

Data Protection Protect data at rest and in motion

Kerberos, Apache Knox

Apache Ranger, HDFS Permission

Apache Ranger

HDFS Transparent Data Encryptionwith Ranger KMS

Apache Ambari

Page 18: Hadoop and Kerberos

Page 18 © Hortonworks Inc. 2014

Typical Access Control Flow - SQL

Page 18 © Hortonworks Inc. 2011 – 2015. All Rights Reserved

Page 19: Hadoop and Kerberos

Page 19 © Hortonworks Inc. 2014

HDFS

Typical Flow – SQL Access through Beeline client

HiveServer 2 A B C

Beeline Client

Security set up with Hortonworks Data Platform

Page 20: Hadoop and Kerberos

Page 20 © Hortonworks Inc. 2014

HDFS

Typical Flow – Authenticate through Kerberos or LDAP

HiveServer 2 A B C

KDC

Login into Hive

Hive gets Namenode (NN) service ticket

Hive creates map reduce using NN ST

Client gets service ticket for Hive

Beeline Client

Security set up with Hortonworks Data Platform

Active Directory

Hiveserver2はKerberosもしくはLDAP認証を⾏える※カスタムな認証も実装可能

Page 21: Hadoop and Kerberos

Page 21 © Hortonworks Inc. 2014

HDFS

Typical Flow – Add Authorization through Ranger

HiveServer 2 A B C

KDC

Hive gets Namenode (NN) service ticket

Column level access control, auditing

Ranger

Beeline Client

File level access control

Active Directory

Import users/groups from LDAP

Login into Hive using AD password

Security set up with Hortonworks Data Platform

Page 22: Hadoop and Kerberos

Page 22 © Hortonworks Inc. 2014

HDFS

Typical Flow – Firewall, Route through Knox Gateway

HiveServer 2 A B C

KDC

Use Hive ST, submit query

Hive gets Namenode (NN) service ticket

Hive creates map reduce using NN ST

Ranger

Knox gets service ticket for Hive

Knox runs as proxy user using Hive ST

Original request w/user id/password

Client gets query result

Beeline Client

Apache Knox

Active Directory

Security set up with Hortonworks Data Platform

Page 23: Hadoop and Kerberos

Page 23 © Hortonworks Inc. 2014

HDFS

Typical Flow – Firewall, Route through Knox Gateway

HiveServer 2 A B C

KDC

Use Hive ST, submit query

Hive gets Namenode (NN) service ticket

Hive creates map reduce using NN ST

Ranger

Knox gets service ticket for Hive

Knox runs as proxy user using Hive ST

Original request w/user id/password

Client gets query result

Beeline Client

Apache Knox

Active Directory

Security set up with Hortonworks Data Platform

KnoxがサポートしているサービスYARN

WebHDFSWebHCat/Templeton

OozieHBase/Stargate

Hive (via WebHCat)Hive (via JDBC)

Page 24: Hadoop and Kerberos

Page 24 © Hortonworks Inc. 2014

HDFS

Typical Flow – Add Wire and File Encryption

HiveServer 2 A B C

KDC

Use Hive ST, submit query

Hive gets Namenode (NN) service ticket

Hive creates map reduce using NN ST

Ranger

Knox gets service ticket for Hive

Knox runs as proxy user using Hive ST

Original request w/user id/password

Client gets query result

SSL

Beeline Client

SSL SASL

SSL SSL

Apache Knox

Active Directory

Security set up with Hortonworks Data Platform

Page 25: Hadoop and Kerberos

Page 25 © Hortonworks Inc. 2014

Page 26: Hadoop and Kerberos

Page 26 © Hortonworks Inc. 2014

Page 27: Hadoop and Kerberos

Page 27 © Hortonworks Inc. 2014

Ranger’s Audit Log Visualization with Apache Solr

Page 28: Hadoop and Kerberos

Page 28 © Hortonworks Inc. 2014

Ranger KMS

Data Protection With HDFS Transparent Data Encryption

NN

A B

C D

HDFS Client

A B

C D

A B

C D

DN DN DN

•  No need to encrypt whole disk •  Prevent rogue admin access to

sensitive data •  Different access control levels •  Transparent to end application

means few changes needed

Page 29: Hadoop and Kerberos

Page 29 © Hortonworks Inc. 2014

•  Wire encryption in Hadoop

•  Native + Ranger KMS and partner encryption

•  Centralized audit reporting w/ Apache Ranger

•  Fine grain access control with Apache Ranger

Security today in Hadoop with HDP

Authorization What can I do?

Audit What did I do?

Data Protection Can data be encrypted at rest and over the wire?

•  Kerberos •  API security with

Apache Knox

Authentication Who am I/prove it?

HD

P 2.

3

Centralized Security Administration w/ Ranger

Ent

erpr

ise

Ser

vice

s: S

ecur

ity

Page 30: Hadoop and Kerberos

Page 30 © Hortonworks Inc. 2014

In Hotonworks Data Platform:

•  Apache Rangerが認可と監査、Ranger KMSがHDFS暗号化の鍵管理、そしてApache Ambariがそれらの統合的な設定管理を提供する。

•  これらはすべて、ユーザーの認証が済んでからの話。セキュアな認証はKerberosが担当。

who? -> Kerberos※一部コンポーネントはADやLDAPでの認証をサポートしているものもある。

Page 31: Hadoop and Kerberos

Page 31 © Hortonworks Inc. 2014

Kerberos: You MUST do it! “By default Hadoop runs in non-secure mode in which no actual authentication is required” – Apache Hadoop Documentation https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SecureMode.html

Page 32: Hadoop and Kerberos

Page 32 © Hortonworks Inc. 2014

Here we are as the user ‘baduser’ $whoamibaduser$hadoopfs-ls/tmpdrwx-------hdfshdfs02015-07-1420:33/tmp/secure

$hadoopfs-ls/tmp/securels:Permissiondenied:user=baduser,access=READ_EXECUTE,inode="/tmp/secure":hdfs:hdfs:drwx------

Good right?

Kerberos: You MUSTdo it!

Page 33: Hadoop and Kerberos

Page 33 © Hortonworks Inc. 2014

Kerberos: You MUST do it!

Here we are as the user ‘baduser’ $whoamibaduser$hadoopfs-ls/tmpdrwx-------hdfshdfs02015-07-1420:33/tmp/secure

$hadoopfs-ls/tmp/securels:Permissiondenied:user=baduser,access=READ_EXECUTE,inode="/tmp/secure":hdfs:hdfs:drwx------

Good right? Look again! $HADOOP_USER_NAME=hdfshadoopfs-ls/tmp/securedrwxr-xr-x-hdfshdfs02015-07-1420:35/tmp/secure/blah

Oh my!

Page 34: Hadoop and Kerberos

Page 34 © Hortonworks Inc. 2014

Hadoop is Unix-like but…

•  HadoopのセキュリティモデルはUserとGroupに基づいた管理であり、⾮常にUnixライクであり⾮常にシンプル。

•  デフォルトでは実⾏者のUnixユーザーがHadoop内部でもそのままUser(とGroup)として扱う。

•  Kerberos化されたクラスタの場合、ユーザーのKerberos PrincipalをもとにUserとGroupを判断する。

Page 35: Hadoop and Kerberos

Page 35 © Hortonworks Inc. 2014

Kerberos - You MUST do it!

Page 36: Hadoop and Kerberos

Page 36 © Hortonworks Inc. 2014

Kerberos化(Kerberize)

•  Hadoopの認証周りの各種設定をKerberosを利⽤するように設定する。

•  各サービスが利⽤するkeytab(後述)を⽣成して配布する。•  詳細

•  https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html

•  様々な設定や作業が必要だが、AmbariやCloudera Managerなどを使っていれば簡単に設定が可能。

Page 37: Hadoop and Kerberos

Page 37 © Hortonworks Inc. 2014

Kerberos化(Kerberize)

•  Hadoopの認証周りの各種設定をKerberosを利⽤するように設定する。

•  各サービスが利⽤するkeytab(後述)を⽣成して配布する。•  詳細

•  https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/SecureMode.html

•  様々な設定や作業が必要だが、AmbariやCloudera Managerなどを使っていれば簡単に設定が可能。

基本的にはトランスペアレントに利⽤できるKerberos。今⽇はその裏側を⾒てみましょう。

Page 38: Hadoop and Kerberos

Page 38 © Hortonworks Inc. 2014

What is Kerberos?

●  ネットワーク上の分散システムを想定して作られた認証システム

●  3つの登場⼈物●  ユーザー(User Principal, UPN): 認証される側の⼈。サービスにアクセスする⼈。●  サービス(Service Principal, SPN): アクセスされる側のサービス。アクセスする側に回ることも。●  Kerberosインフラストラクチャ(AS,TGS): 認証のためのサービス群。

●  共有鍵ベースの認証

●  よく知られている実装としては下記のとおり●  MIT Kerberos●  Active Directory

•  [email protected]

•  nn/[email protected]

Page 39: Hadoop and Kerberos

Page 39 © Hortonworks Inc. 2014

Kerberos is NOT

●  ディレクトリサービス ●  KerberosはユーザーのUIDやGroup情報などは管理しない ●  ただし、Active DirectoryやFreeIPAはKerberosとディレクトリサービス(LDAP)を統合して提供する。

●  認可サービス ●  Kerberosはユーザーの認証のみを提供し、認可は提供しない。

Page 40: Hadoop and Kerberos

Page 40 © Hortonworks Inc. 2014

コンセプト•  REALMS – Kerberosが管理する対象のドメイン。慣習的にDNSのドメイン

と同じ⽂字列を使うことが多い。•  Host: revo1.example.com•  REALM: EXAMPLE.COM

•  Principals•  ユーザーやサービスを表すエンティティ。ユーザーを表すUser Principal(UPN)とサービスを表す

Service Principal(SPN)に別れる。•  {name of entity}/{instance}@{REALM}•  [email protected]•  nn/[email protected]

•  Instances•  ユーザーの役割やサービスの位置を表す•  yuta/[email protected]•  nn/[email protected]

Page 41: Hadoop and Kerberos

Page 41 © Hortonworks Inc. 2014

コンポーネントKDC (Key Distribution Center) 1.   Principal/Key Database

•  Principalとそれらに紐づくkeyやmetadataを管理

2.   Authentication Server (AS) •  TGT(Ticket Granting Ticket)の発⾏を⾏う。•  TGTをユーザーのパスワードを使って暗号化したものをクライアントに返すので、それによって認

証がなされる。

3.   Ticket Granting Server (TGS) •  ST(Service Ticket)の発⾏を⾏う。•  クライアントからのリクエスト(TGS_REQ)には“アクセスしたいサービスのPrincipal”とTGTが含

まれており、TGTの検証が正しくなされれば、当該サービスへアクセスを許可するSTを発⾏する。

Page 42: Hadoop and Kerberos

Page 42 © Hortonworks Inc. 2014

チケット1.   TGT(Ticket Granting Ticket)

•  STを要求するためのチケット。チケットのためのチケット。•  リクエスト時に⽣成されるsession keyという⽂字列を、TGSのキーで暗号化したもの。

2.   ST(Service Ticket) •  実際にサービスへのアクセスに利⽤されるチケット。•  アクセス先のサービスのService Principal(nn/[email protected])を含む。

Page 43: Hadoop and Kerberos

Page 43 © Hortonworks Inc. 2014

チケットについての補足

チケットの持つメタ情報:•  利⽤スコープについてのフラグ

•  Lifetime, Forwardable, Renewable (max renew lifetime)

•  フィールド•  Requesting Principal Name•  Service Principal Name•  Validity Period•  Session key

発⾏されたチケットはクライアントにキャッシュされる。

Page 44: Hadoop and Kerberos

Page 44 © Hortonworks Inc. 2014

•  アクセスしたい⼈: [email protected]•  アクセスしたいサービス: nn/[email protected]

ゴール•  [email protected]を使って、nn/

[email protected]のService Ticketを取得する。

First Step:•  Authentication ServerからTicket Granting Ticket(TGT)を取得する

例えばNameNodeへのアクセス時には・・・

※これはKerberosの仕組みを説明するために簡略化されたワークフロー。 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

Page 45: Hadoop and Kerberos

Page 45 © Hortonworks Inc. 2014

1.   クライアント: Authentication Server(AS)へリクエスト(AS_REQ)を送信 – これにはユーザーのPrincipal、ローカルタイム、Ticket Granting Server(TGS)のPrincipal Namee.g. krbtgt/[email protected])が含まれる。Instance名のEXAMPLE.COMが、どのTGSが処理できるかを⽰す。

2.   AS: ユーザーのPrincipalが存在し、ローカルタイムに問題がないことを確認 - 問題なければ、ランダムなsession_key⽂字列を⽣成し、2つのコピーをつくる。ひとつはユーザーのパスワードで暗号化し、もうひとつはTGSのパスワードで暗号化する(これがTGT)。そして両者をまとめてクライアントに返す。

例えばNameNodeへのアクセス時には・・・

※これはKerberosの仕組みを説明するために簡略化されたワークフロー。 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

Page 46: Hadoop and Kerberos

Page 46 © Hortonworks Inc. 2014

3.   クライアント:AS_REP内のsession_keyを復号化 – クライアントがユーザーに対してパスワードを求め、⼊⼒されたものを使ってAS_REPの復号化を⾏う。問題なく復号化されたら、sesison_keyとTGTはクライアントのキャッシュに保存される。

例えばNameNodeへのアクセス時には・・・

※これはKerberosの仕組みを説明するために簡略化されたワークフロー。 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

Page 47: Hadoop and Kerberos

Page 47 © Hortonworks Inc. 2014

Ticket Cache:•  AS Session Key•  Ticket Granting Ticket (krbtgt/[email protected])

Next Steps:•  実際のサービスとやりとりするためのチケット(ST, Service Ticket)を

Ticket Granting Serverに要求する。

例えばNameNodeへのアクセス時には・・・

※これはKerberosの仕組みを説明するために簡略化されたワークフロー。 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

Page 48: Hadoop and Kerberos

Page 48 © Hortonworks Inc. 2014

1.   クライアント: TGS requestを準備•  TGS Request – 下記を含む:

•  利⽤したいサービスのService Principle(の名前)。•  Ticket Granting Ticket (TGT) •  Authenticator – タイムスタンプをsession keyで暗号化したもの。リプレイ攻撃を防ぐためと、ASとの共有

鍵を持っていることを証明するために使われる。

2.   TGS: TGS reply – TGS Session Keyを⽣成し、やはり2つのコピーをつくる。1つはクライアント⽤にAS Session Keyで暗号化。もうひとつはサービス⽤にそのサービスのパスワードで暗号化し、Service Ticketに埋め込む。そしてリプライ全体はAS Session Keyで暗号化する。

3.   クライアント: TGS replyを処理 – AS Session Keyを使ってメッセージを復号化。TGS Session KeyとService Ticketをticket cacheに保存する。

例えばNameNodeへのアクセス時には・・・

※これはKerberosの仕組みを説明するために簡略化されたワークフロー。 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

Page 49: Hadoop and Kerberos

Page 49 © Hortonworks Inc. 2014

Ticket Cache: •  AS Session Key

•  Ticket Granting Ticket (krbtgt/[email protected])

•  TGS Session Key

•  Service Ticket

例えばNameNodeへのアクセス時には・・・

※これはKerberosの仕組みを説明するために簡略化されたワークフロー。 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

Page 50: Hadoop and Kerberos

Page 50 © Hortonworks Inc. 2014 ※これはKerberosの仕組みを説明するために簡略化されたワークフロー。

 実際にHadoopの実装利⽤される際には若⼲の際があるので注意。詳細は後述。

例えばNameNodeへのアクセス時には・・・

Hadoop KDCAS TGSClient NameNode

AS_REQ(UPN,localtime,TGS_SPN)

AS_REP(enc(AS Session Key,TGT, user_password))

TGS_REQ(TGT, Target_SPN,Authenticator)

TGS_REP(enc(TGS Session Key, Service Ticket))

Hadoop RPC call(UPN, Service Ticket(TGS Session Key))

dec(TGT)

dec( AS_REP, UPN Password)

dec( TGS_REP, AS Session Key)

dec( TGS Session Key, SPN Password)

Page 51: Hadoop and Kerberos

Page 51 © Hortonworks Inc. 2014

Kerberos + Hadoop HadoopにおけるKerberosの組み込み

Page 52: Hadoop and Kerberos

Page 52 © Hortonworks Inc. 2014

Kerbeos認証とHadoop

1.  AS: TGT取得 2.  Hadoop APIの呼び出し

3.  TGS: Service Ticket取得

4.  User名の解決

5.  Group名の解決

6.  Delegation Token/ Block Access Tokenの発行

7.  Impersonation

8.  APIの中身の実行

Client: KDCとのやりとり

Client: UPN、TGT、Service TicketをHadoopのサービスに渡す

User Resolution。KerberosのPrincipalから、実際の処理の実⾏ユーザーを決めるための⼀連の処理。

Hadoop: TGTを使ってSTを取得※実際のHadoopの実装ではSTはClientではなくHadoopが要求

上記⾚字の補⾜にあるとおり、実際のHadoop内でのKerberos利⽤の際は、ST取得はクライアントではなくHadoop側で⾏われるので注意。

Page 53: Hadoop and Kerberos

Page 53 © Hortonworks Inc. 2014

Kerberos認証とHadoop

$ hdfs dfs –ls /user/yuta $ kinit [email protected] $ hdfs dfs –ls /user/yuta

Before

After

Page 54: Hadoop and Kerberos

Page 54 © Hortonworks Inc. 2014

KerberosのService Ticketを受け取ってからの挙動

Hadoop KDCAS TGSClient NameNode

AS_REQ(UPN,localtime,TGS_SPN)

AS_REP(enc(AS Session Key,TGT, user_password))

TGS_REQ(TGT, Target_SPN,Authenticator)

TGS_REP(enc(TGS Session Key, Service Ticket))

Hadoop RPC call(UPN, Service Ticket(TGS Session Key))

Hadoop RPC Response

auto_to_localgroup mapping

Get required ST

(Create Token)(Impersonate)works!

Page 55: Hadoop and Kerberos

Page 55 © Hortonworks Inc. 2014

User Resolution User名とGroup名の解決

Page 56: Hadoop and Kerberos

Page 56 © Hortonworks Inc. 2014

User名の解決 – auth_to_local

•  RPC Call/API Callとともに渡されるService TicketにはService Principalが含まれている。しかし、このPrincipal名そのままをHadoopは扱えない。

•  Hadoopの各サービスはここから利⽤可能なUser名に変換する。⼀般的にOSのユーザー名に変換をしてやる。

•  hadoop.security.auth_to_local

[email protected]           -> yutaadmin/[email protected] -> adminnn/[email protected] -> hdfs

Page 57: Hadoop and Kerberos

Page 57 © Hortonworks Inc. 2014

Auth To Local Rules

RULE:[1:$1@$0]([email protected])s/.*/ambari-qa/

RULE:[1:$1@$0]([email protected])s/.*/hbase/

RULE:[1:$1@$0]([email protected])s/.*/hdfs/

RULE:[1:$1@$0](.*@HORTONWORKS.LOCAL)s/@.*//

RULE:[2:$1@$0]([email protected])s/.*/ams/

RULE:[2:$1@$0]([email protected])s/.*/ams/

RULE:[2:$1@$0]([email protected])s/.*/hdfs/

RULE:[2:$1@$0]([email protected])s/.*/hbase/

RULE:[2:$1@$0]([email protected])s/.*/hive/

Page 58: Hadoop and Kerberos

Page 58 © Hortonworks Inc. 2014

Group名の解決 – User Group Mapping

•  User名が解決されたので、次はGroup名を解決したい。•  しかし、HadoopはそもそもGroupという概念を内部に持っていないので、

User名に対応するOSのGroup名を利⽤する。•  hadoop.security.group.mapping•  Unix /etc/passwd•  LDAP

•  ということは、Hadoopクラスタのすべてのマシンは同じUser/Groupを持っている必要がある!

•  このへんでActive DirectoryやOpenLDAPが必要になってくる。

Page 59: Hadoop and Kerberos

Page 59 © Hortonworks Inc. 2014

User/Groupを統⼀管理するためのツールOpen Source:•  SSSD•  pam_ldap/pam_kerberosCommercial:•  Centrify•  QAS

Page 60: Hadoop and Kerberos

Page 60 © Hortonworks Inc. 2014

Delegation Token/Block Access Token•  MapReduceやTezなど、ひとつのジョブで複数回のNameNodeへのアクセ

スを要求するようなアプリケーションの場合は、毎回Kerberos認証を⾏う代わりに、NameNodeがDelegation Tokenというものを払い出し、2回め以降のアクセスにはこれを使うことができる。

•  これを使うか使わないかはアプリケーションの実装に依存。•  更にDataNodeのBlockに対するオペレーションについてはNameNodeが

Block Access Tokenというブロックへのアクセス認証Tokenを払い出す。

Page 61: Hadoop and Kerberos

Page 61 © Hortonworks Inc. 2014

Block Access Token

Page 61

Client

KDC

NN

DN

1. kinit - Login and get Ticket Granting Ticket (TGT) 3. Get NameNode Service Ticket (NN-ST)

2. Client Stores TGT in Ticket Cache 4. Client Stores NN-ST in Ticket Cache

5. Read/write file given NN-ST and file name; returns block locations, block IDs and Block Access Tokens

if access permitted

6. Read/write block given Block Access Token and block ID

Client’s Kerberos

Ticket Cache

Page 62: Hadoop and Kerberos

Page 62 © Hortonworks Inc. 2014

Impersonation•  User名の解決はUPNをauth_to_localしたものが利⽤される。•  しかし、場合によっては別のユーザーとしてジョブを実⾏したい場合もある。•  例: Oozieのようなスケジューラはoozieユーザーでスケジューリングをしつ

つ、実際のジョブはyutaやadmin、もしくはhdfs、yarnなどで実⾏したい。•  これを実現してくれるのがImpersonation(物真似、なりすまし)。•  利⽤するかどうかはアプリケーション側に依存。•  Proxy, Proxy Userとも呼ばれる。設定項⽬

•  hadoop.proxyuser.${user}.groups  <- ${user}がimpersonateできるgroup•  hadoop.proxyuser.${user}.hosts   <- ${user}がimpersonateできるhost

Page 63: Hadoop and Kerberos

Page 63 © Hortonworks Inc. 2014

全体の流れの整理

1.  AS: TGT取得 2.  Hadoop APIの呼び出し

3.  TGS: Service Ticket取得

4.  User名の解決

5.  Group名の解決

6.  Delegation Token/ Block Access Tokenの発行

7.  Impersonation

8.  APIの中身の実行

Client: KDCとのやりとり

Client: UPN、TGT、Service TicketをHadoopのサービスに渡す

Hadoop: auth_to_localする

Hadoop: OSやLDAPをもとにUser名からGroup名の解決

Hadoop: UPNをもとに実⾏ユーザーの決定

Hadoop: MapReduceやTezの場合、繰り返しアクセスの     ためのDelegation Tokenを発⾏して利⽤。更にBlock     オペレーションのためのBlock Access Tokenを発⾏

Hadoop: TGTを使ってSTを取得※実際のHadoopの実装ではSTはClientではなくHadoopが要求

Page 64: Hadoop and Kerberos

Page 64 © Hortonworks Inc. 2014

まとめ•  YARNによってHadoopのマルチテナント化が進んでいる•  認証、認可、監査、暗号化の4点と統合された管理、が考えるべ

きセキュリティの柱。•  認可、監査、暗号化(の鍵管理)はいずれも「正しい認証」に依

存する。•  Hadoopは認証にKerberosを採⽤している。•  Kerberosの利⽤⾃体はクラスタマネージャを使えば容易。•  ただしKerberosとHadoopの組み合わせはとても複雑。•  理解しておくと、うれしいことがあるかも・・・?笑

Page 65: Hadoop and Kerberos

Page 65 © Hortonworks Inc. 2014

プレゼントが当たる抽選やってます!

and, of course,We are hiring! ご興味ある方はぜひ声をかけてね。

•  特等賞(1名様) – Bose QuietComfort 20 ノイズキャンセリングヘッドホン

•  Hortonworks賞(20名様) – Hortonworksロゴ入りソックス

•  Hadoop賞(参加者全員) – Hortonworksステッカー ※応募時に名刺を1枚頂きます。後日、弊社より様々な情報をお送りさせていただく場合があります。ご了承下さい。 ※Bose QuietComfort 20は後日発送いたします。

Page 66: Hadoop and Kerberos

Page 66 © Hortonworks Inc. 2014

Field Notes: Kerberos (AD or MIT KDC)

Challenges: •  HDP requires several SPNs (typically 3-5 per datanode) •  Most AD admins are not happy with that

Recommendations: a)  Integrate directly with Active Directory

i)  At >100 nodes, provide dedicated AD replica for the cluster b)  MIT KDC in the cluster for SPNs. Cross-realm trust to AD for UPNs (users)

Note on Users/Groups:

• Users/Groups from your directoy should exist in the Hadoop nodes • Common implementations: SSSD, Centrify, VAS