Flink 1.10 Kerberos權(quán)限配置 官網(wǎng)翻譯

目標(biāo)


Flink Kerberos安全認(rèn)證的主要目標(biāo)是:

????1.任務(wù)訪問連接器的時(shí)候啟用數(shù)據(jù)安全訪問權(quán)限

????2.與Zookeeper進(jìn)行安全認(rèn)證

????3.與Hadoop組件進(jìn)行安全訪問(eg:hdfs,hbase)

生產(chǎn)環(huán)境部署中,流作業(yè)應(yīng)理解為可以長(zhǎng)時(shí)間運(yùn)行(幾天/幾周/幾個(gè)月),并且訪問數(shù)據(jù)源時(shí),能夠在整個(gè)生命周期中進(jìn)行身份認(rèn)證訪問。這與Hadoop委派令牌或ticket緩存不同。

當(dāng)前已經(jīng)支持帶有keytab認(rèn)證或者h(yuǎn)adoop委托token的flink集群(JobManager、TaskManager、jobs)長(zhǎng)時(shí)間運(yùn)行。請(qǐng)記住,集群上所有的作業(yè)共享統(tǒng)一的憑據(jù)(keytab或者token)。要想每一個(gè)job采用不同的keytab,只需要啟動(dòng)帶有不同配置的單獨(dú)的flink集群就可以。許多Flink群集可以在YARN或Mesos環(huán)境中并行運(yùn)行。

Flink 安全認(rèn)證是如何工作的


從概念上講,F(xiàn)link程序可以使用第三方連接器(Kafka,HDFS,Cassandra,F(xiàn)lume,Kinesis等),這需要使用身份認(rèn)證方法(Kerberos,SSL / TLS,用戶名/密碼等)。Flink盡最大努力滿足所有連接器的安全性要求,但其目前僅提供對(duì)Kerberos身份驗(yàn)證的支持。 Kerberos身份驗(yàn)證支持以下服務(wù)和連接器:

????1.Kafka(0.9+)

????2.HDFS

????3.Hbase

????4.Zookeeper

請(qǐng)注意,可以為每個(gè)服務(wù)單獨(dú)啟用Kerberos。 例如,用戶可以啟用Hadoop安全性,而不必為ZooKeeper使用Kerberos,反之亦然。 多個(gè)服務(wù)啟用Kerberos共享的是keytab的配置,然后由每個(gè)組件顯式使用。

內(nèi)部體系基于任務(wù)啟動(dòng)時(shí)的安全模塊(實(shí)現(xiàn)類?org.apache.flink.runtime.security.modules.SecurityModule)。以下各節(jié)介紹每個(gè)安全模塊。

Hadoop安全模塊

該模塊使用Hadoop UserGroupInformation(UGI)類來創(chuàng)建登錄用戶上下文。 然后,登錄用戶將用于與Hadoop的所有交互,包括HDFS,HBase和YARN。

如果啟用了Hadoop安全性(在core-site.xml中),則登錄用戶將需要配置Kerberos憑據(jù)。 否則,登錄用戶僅傳達(dá)啟動(dòng)集群的操作系統(tǒng)的用戶身份。

詳解:flink + kerberos訪問hadoop采用的UGI來認(rèn)證。

JAAS安全模塊

該模塊為集群提供了動(dòng)態(tài)的JAAS配置,使配置的Kerberos憑據(jù)可供ZooKeeper,Kafka和其他依賴JAAS的組件使用。

請(qǐng)注意,用戶還可以使用Java SE文檔中描述的機(jī)制來提供靜態(tài)JAAS配置文件。靜態(tài)目錄會(huì)覆蓋此模塊提供的任何目錄。

Zookeeper安全模塊

該模塊配置某些與整個(gè)進(jìn)程相關(guān)的ZooKeeper安全性相關(guān)的設(shè)置,即ZooKeeper服務(wù)名稱(默認(rèn):Zookeeper)和JAAS登錄上下文名稱(默認(rèn):Client)。

部署模式


獨(dú)立模式

在獨(dú)立/集群模式下運(yùn)行采用安全認(rèn)證Flink群集的步驟:

????1.將安全性相關(guān)的配置添加到Flink配置文件(在集群所有節(jié)點(diǎn)上)(請(qǐng)參見https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/config.html#kerberos-based-security)。

????2.確保keytab文件存在于所有集群節(jié)點(diǎn)上的security.kerberos.login.keytab指示的路徑中。

????3.正常部署Flink群集。

集群模式

在獨(dú)立/集群模式下運(yùn)行采用安全認(rèn)證Flink群集的步驟:

????1.將安全性相關(guān)的配置添加到Flink配置文件(在集群所有節(jié)點(diǎn)上)(請(qǐng)參見https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/config.html#kerberos-based-security)。

????2.確保keytab文件存在于所有集群節(jié)點(diǎn)上的security.kerberos.login.keytab指示的路徑中。

????3.正常部署Flink群集。

在YARN / Mesos模式下,keytab會(huì)自動(dòng)從客戶端復(fù)制到Flink yarn containers。

更多信息,查看https://github.com/apache/hadoop/blob/trunk/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-site/src/site/markdown/YarnApplicationSecurity.md

使用kinit(只支持yarn)

在YARN模式下,可以使用ticket cache(由kinit管理)來部署沒有keytab的但是需要安全認(rèn)證的Flink群集。 這避免了生成keytab的復(fù)雜性,并避免了將keytab委托給集群管理器。 在這種情況下,F(xiàn)link CLI獲取Hadoop委托令牌(用于HDFS和HBase)。 主要缺點(diǎn)是,由于生成的委派令牌將過期(通常在一周內(nèi)或者一天),因此群集的壽命必然很短。

使用kinit運(yùn)行安全Flink集群的步驟:

????1.將與安全性相關(guān)的配置選項(xiàng)添加到客戶端上的Flink配置文件中(請(qǐng)參見https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/config.html#kerberos-based-security)。

????2.使用kinit命令登錄。

????3.正常部署Flink群集。

更多細(xì)節(jié)


Ticket 重新生成

每個(gè)使用Kerberos的組件都獨(dú)立負(fù)責(zé)更新Kerberos ticket-granting-ticket(TGT)。 當(dāng)提供keytab時(shí),Hadoop,ZooKeeper和Kafka都會(huì)自動(dòng)更新TGT。 在委派令牌場(chǎng)景中,YARN本身會(huì)更新令牌(直至其最大使用壽命)。

官網(wǎng)地址:https://ci.apache.org/projects/flink/flink-docs-release-1.9/ops/security-kerberos.html

更多大數(shù)據(jù)技術(shù)請(qǐng)咨詢微信 18310801089

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容