使用FreeIPA為CDP DC7.1集群部署安全

2021-02-15 大數據雜貨鋪
Cloudera從CM6.3版本開始,引入了Red Hat IdM來做整個集群的認證,Red Hat IdM對應的軟體為FreeIPA,在本文中描述如何使用FreeIPA來做CDP-DC集群的認證。關於FreeIPA伺服器搭建參考<使用FreeIPA對Linux用戶權限統一管理>。

1) FreeIPA客戶端配置

2) CDP DC7.1集群使用FreeIPA啟用Kerberos

3) Kerberos使用

這篇文檔將重點介紹如何在CDH集群使用FreeIPA啟用及配置Kerberos,並基於以下假設:

1) CDP DC集群運行正常

2) 集群未啟用Kerberos

3) FreeIPA Server搭建完成

4) MySQL 5.1.73

1) 作業系統:CentOS7.7

2) CM和Cloudera Runtime的版本為7.1.1

3) 採用root用戶進行操作

yum -y install ipa-client

[root@grocery ~]WARNING: ntpd time&date synchronization service will not be configured asconflicting service (chronyd) is enabledUse 
DNS discovery failed to determine your DNS domainProvide the domain name of your IPA server (ex: example.com): vpc.cloudera.comProvide your IPA server name (ex: ipa.example.com): XXX.vpc.cloudera.comThe failure to use DNS to find your IPA server indicates that your resolv.conf file is not properly configured.Autodiscovery of servers for failover cannot work with this configuration.If you proceed with the installation, services will be configured to always access the discovered server for all operations and will not fail over to other servers in case of failure.Proceed with fixed values and no DNS discovery? [no]: yesClient hostname: grocery.vpc.cloudera.comRealm: VPC.CLOUDERA.COMDNS Domain: vpc.cloudera.comIPA Server: xuefeng.vpc.cloudera.comBaseDN: dc=vpc,dc=cloudera,dc=com
Continue to configure the system with these values? [no]: yes

3) 修改集群節點的/etc/krb5.conf配置文件。a) 注釋掉default_ccache_name
[root@wangxf ~]# vi /etc/krb5.conf

[root@wangxf ~]# kinit admin                                                                                              Password for admin@VPC.CLOUDERA.COM: You have new mail in /var/spool/mail/root[root@wangxf ~]# klistTicket cache: FILE:/tmp/krb5cc_0Default principal: admin@VPC.CLOUDERA.COM
Valid starting Expires Service principal11/28/2019 03:54:32 11/29/2019 03:54:29 krbtgt/VPC.CLOUDERA.COM@VPC.CLOUDERA.COM[root@wangxf ~]#

登陸CM,在CM管理控制臺點擊集群菜單,然後點擊Enable Kerberos,如下圖所示:或者:進入Administration->Security,準備啟動安全進入Security,點擊Status,在集群中點擊Enable Kerberos開始啟動Enable Kerberos for Cluster,選擇KDC TYPE為Red Hat IPA。選擇Red Hat IPA 之後,頁面會跳出IPA的配置步驟:上述步驟都執行完成後,複選I have completed all the above steps.在設置KDC頁面中,依次填寫配置相關的KDC信息,包括類型、KDC伺服器、KDC Realm、加密類型以及待創建的Service Principal(hdfs,yarn,,hbase,hive等)的更新生命期等,填寫完成後點擊下一步不建議讓Cloudera Manager來管理krb5.conf, 點擊「繼續」輸入Cloudera Manager的Kerbers管理員帳號如果重複執行會報錯,這時需要到FreeIPA中把新加入的用戶刪除,然後重新執行。包括部署其他節點客戶端命令,配置埠等。我們前面已經配置了其他機器的kerberos客戶端,這裡不需要配置。埠保存默認。1) 在FreeIPA系統中已經存在admin用戶,使用admin用戶認證後,訪問hdfs正常。Kdestroy掉已有的憑據,hdfs訪問報權限問題,無法訪問。
[root@grocery ~]Ticket cache: FILE:/tmp/krb5cc_0Default principal: admin@VPC.CLOUDERA.COM
Valid starting Expires Service principal12/09/2019 08:48:45 12/10/2019 08:48:43 krbtgt/VPC.CLOUDERA.COM@VPC.CLOUDERA.COM renew until 12/16/2019 08:48:43[root@grocery ~]Found 6 itemsdrwxr-xr-x - hbase hbase 0 2019-12-09 09:13 /hbasedrwxr-xr-x - hdfs supergroup 0 2019-12-09 08:13 /rangerdrwxrwxr-x - solr solr 0 2019-12-09 08:17 /solrdrwxrwxrwt - hdfs supergroup 0 2019-12-09 08:15 /tmpdrwxr-xr-x - hdfs supergroup 0 2019-12-09 08:19 /userdrwxr-xr-x - hdfs supergroup 0 2019-12-09 08:13 /warehouse [root@grocery ~][root@grocery ~]19/12/09 09:19:43 WARN ipc.Client: Exception encountered while connecting to the server : org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]ls: DestHost:destPort grocery.vpc.cloudera.com:8020 , LocalHost:localPort grocery.vpc.cloudera.com/10.65.31.238:0. Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS][root@grocery ~]

2) 使用admin用戶執行MapReduce任務,因為MapReduce任務需要寫到用戶的臨時目錄下,而在hdfs中沒有為該用戶創建臨時目錄,因此任務由於訪問權限問題報錯。
hadoop jar /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/hadoop-mapreduce-examples.jar pi 10 100hdfs dfs -ls /user

這是因為在hadoop中沒有/user/admin的目錄,導致mapreduce的臨時文件沒有地方寫,導致作業錯誤。3) 使用hdfs用戶來創建/user/admin目錄並賦權進入/var/run/cloudera-scm-agent/process/,找到hdfs最新的目錄
cd /var/run/cloudera-scm-agent/process/cd 89-hdfs-NAMENODE

kinit -kt hdfs.keytab hdfs/grocery.vpc.cloudera.com@VPC.CLOUDERA.COM

kinit: Pre-authentication failed: Unsupported key table format version number while getting initial credentials

執行下列命令在hdfs中為admin用戶創建目錄並賦權
hdfs dfs -mkdir /user/admin                                                                              hdfs dfs -chown -R admin:hadoop /user/admin                                                              hdfs dfs -ls /user/Found 10 itemsdrwxr-xr-x   - admin    hadoop              0 2019-12-09 09:27 /user/admindrwxrwxrwx   - mapred   hadoop              0 2019-12-09 08:18 /user/historydrwxrwxr-t   - hive     hive                0 2019-12-09 08:21 /user/hivedrwxrwxr-x   - hue      hue                 0 2019-12-09 08:17 /user/huedrwx-   - livy     livy                0 2019-12-09 08:18 /user/livydrwxrwxr-x   - oozie    oozie               0 2019-12-09 08:14 /user/ooziedrwxr-x--x   - spark    spark               0 2019-12-09 08:14 /user/sparkdrwxr-xr-x   - hdfs     supergroup          0 2019-12-09 08:13 /user/tezdrwxr-xr-x   - hdfs     supergroup          0 2019-12-09 08:16 /user/yarndrwx-   - zeppelin zeppelin            0 2019-12-09 08:19 /user/zeppelin

4) 切換到admin用戶,再次執行剛才的MapReduce任務使用admin用戶進行hive連接、以及建表和插入數據和查詢等操作都可以正常完成。
beelineshow databases;use defaultcreate table t1 (s1 string,s2 string);insert into t1 values('1','2');select * from t1;

Hive會自動應用當前的Kerberos憑據,直接登錄。使用admin用戶在hue中執行hive和訪問hdfs使用admin用戶往/user目錄上傳文件失敗,用戶沒有權限。使用admin用戶往/user/admin目錄上傳文件成功。1) 在CDP數據中心版上啟動Kerberos,比在CDH中啟動Kerberos簡單。2) 在CDP數據中心版上使用Kerberos認證也變得更加簡單,例如beeline連接串中不需要寫憑據等。hue 的Kerberos Ticket Renewer角色報錯,查看角色詳細日誌:執行klist -f -c /var/run/hue/hue_krb5_ccache
   ticket_lifetime = 24h   renew_lifetime = 7d   forwardable = true

1) https://docs.cloudera.com/runtime/7.0.3/cdp-security-overview/topics/security-how-identity-management-works-in-cdp.html 2) HUE+kerberos啟動報錯Couldn't renew kerberos ticket解決方案:https://blog.csdn.net/vah101/article/details/79111585

相關焦點

  • 使用FreeIPA對Linux用戶權限統一管理
    SSSD是介於本地用戶和數據存儲之間的進程,本地客戶端首先連接SSSD,再由SSSD聯繫外部資源提供者(一臺遠程伺服器)• 使用ntp同步時間• 防火牆關閉,或開放以下埠:TCP(80, 443,389, 636,88, 464) UDP(88, 464,123)• 配置hosts文件,設置完全合格的主機名(如:192.168.1.1 freeipa1.douyu.com
  • CDP私有雲集群自動化部署
    因此,我們很高興地宣布公開發布基於 Ansible 的自動化來部署 CDP 私有雲基礎集群。通過以這種方式自動化集群部署,您可以降低配置錯誤的風險,促進環境中跨多個集群的一致部署,並幫助更快地交付業務價值。 本博客將介紹如何以最少的人工交互部署具有安全性的私有雲基礎集群。「作為開發人員,我們擁有的最強大的工具是自動化。」
  • 擴展貼:Centos7.7 安裝FreeIPA(一)
    FreeIPA是一個集成了Linux (Fedora)、389目錄伺服器、MIT Kerberos、NTP、DNS和Dogtag(證書系統)的安全信息管理解決方案。它由web界面和命令行管理工具組成。FreeIPA是針對Linux/UNIX網絡環境的集成身份和認證解決方案。
  • 0798-7.1.2-如何在Redhat7.8中安裝CDP DC
    CDP DC7與CDH5/6的安裝步驟一致,主要包括以下四部分:1.安全前置準備,包括安裝作業系統、關閉防火牆、同步伺服器時鐘等;2.外部資料庫如MySQL安裝3.安裝Cloudera Manager;4.安裝CDH集群;1.CM和CDH版本為7.1.22.Redhat7.83.OpenJDK1.8
  • Rancher2.5.7安裝及k8s集群部署
    Rancher和Kubesphere都是比較優秀的k8s集群管理平臺,比起常規的腳本二進位部署和kebectl部署,使用Rancher或Kubesphere
  • 使用Docker部署Redis集群
    →[設為星標⭐]譯者註: 這是github上一個用Docer Swarm,Docker Compose和Supervisor部署Redis集群的項目,這裡翻譯的只是README,具體操作細節建議直接閱讀腳本,裡面有很多地方值得參考
  • 使用 Helm 部署 Consul 集群
    單個 chart 可以用來部署一些簡單的, 類似於 memcache pod,或者某些複雜的 HTTP 伺服器以及 web 全棧應用、資料庫、緩存等Repo:chart 的存放倉庫,社區的 Helm chart 倉庫位於  Artifact Hub[1],也可以創建運行自己的私有 chart 倉庫Release:運行在 Kubernetes 集群中的 chart 的實例。
  • 使用kubeadm快速部署一套穩定的K8S集群
    一、 作業系統初始化配置1.1 設置主機名1.2 設置hosts解析主機名1.3 關閉SELinux和防火牆1.4 關閉swap1.5 設置系統參數1.6 設置節點間的SSH免密碼登錄1.7 配置docker二、etcd 部署2.1 編譯二進位文件
  • ELK教程1:ElasticSearch集群的部署
    本篇文章將講講解如何部署ELK,然後講解如何 使用Filebeat採集Spring Boot的日誌輸出到Logstash上,logstash再將日誌輸出到Elasticsearch上,最後展示到kibana上面。
  • 使用 K3S 創建本地開發集群
    這意味著,您可以使用docker在單臺計算機上啟動多節點k3s集群。可以使用 Docker 在單臺計算機上啟動多節點 k3s 集群。; 3h17m v1.18.2+k3s1運行kubectl get pod -A命令, 檢查本地 k3s 集群的pod是否正常: (默認就已經部署好了traefik)
  • 使用FIT2CLOUD在青雲QingCloud快速部署和管理Kubernetes集群
    這裡,我們將詳細介紹如何使用FIT2CLOUD幫助用戶高效完成Kubernetes的系統部署、日常運維等工作,降低用戶使用它的難度。2Kubernetes、QingCloud、FIT2CLOUD三者之間的關係首先,Kubernetes作為容器管理系統,其自身也需要部署在相應的計算資源之上。
  • 使用kubeadm快速部署一套K8S集群
    >1.1 Kubernetes是什麼Kubernetes是Google在2014年開源的一個容器集群管理系統,Kubernetes簡稱K8S。K8S用於容器化應用程式的部署,擴展和管理。K8S提供了容器編排,資源調度,彈性伸縮,部署管理,服務發現等一系列功能。Kubernetes目標是讓部署容器化應用簡單高效。
  • 在 Kubernetes 上使用 Spinnaker 構建部署流水線
    使用 Helm 生成 (Bake) Kubernetes 部署文件(開發和生產)。人工判斷:我們的管道配置需要人工手動確認,然後才能將應用程式部署到生產環境。它會等待此步驟完成,然後才會繼續執行管道。先決條件一個正在運行的 Kubernetes 集群。如果您還沒有運行這樣的集群,請使用 eksctl 以通過一個命令啟動並運行 EKS 集群。
  • Nacos 集群部署模式最佳實踐
    在實踐中,我們往往習慣用單機模式快速構建一個 Nacos 開發/測試環境,而在生產中,出於高可用的考慮,一定需要使用 Nacos 集群部署模式。我的上一篇文章《一文詳解 Nacos 高可用特性》提到了 Nacos 為高可用做了非常多的特性支持,而這些高可用特性大多數都依賴於集群部署模式。
  • docker部署tomcat集群
    /centos/docker-ce.repo4、更新並安裝 Docker-CE [root@elasticsearch-03 opt]# yum makecache fast [root@elasticsearch-03 opt]# yum install
  • Docker Swarm集群管理
    Swarm集群和standalone部署的docker有以下優點:1)在線修改Service的配置,包括networks和volumes,不需要重啟docker服務;2)Swarm集群時候,可以將其它standalone模式的docker主機加入到Swarm集群。
  • 手把手教你實現 Docker 部署 Redis 集群
    一、創建redis docker基礎鏡像1.下載redis安裝包,使用版本為:4.0.1[root@etcd1 tmp]# mkdir docker_redis_cluster[root@etcd1 tmp]# cd docker_redis_cluster/[root@etcd2 docker_redis_cluster
  • 單機部署TiDB測試集群
    初始化環境最小化安裝作業系統,官方建議版本為 CentOS 7.3 及以上,這裡的版本為:[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 7.8.2003 (Core)[root@localhost ~]# uname -r3.10.0-1127.el7.x86
  • 從0到1部署一套TiDB本地集群
    Monitor:TiDB監控組件實驗環境由於我本地資源的限制,我們使用快速部署的方式。TiDB快速部署的方式有2種:第一種:使用 TiUP Playground 快速部署本地測試環境適用場景:利用本地 Mac 或者單機 Linux 環境快速部署 TiDB 集群。可以體驗 TiDB 集群的基本架構,以及 TiDB、TiKV、PD、監控等基礎組件的運行。
  • RabbitMQ 集群部署及配置
    消息中間件RabbitMQ,一般以集群方式部署,主要提供消息的接受和發送,實現各微服務之間的消息異步