Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Red Hat Enterprise Linux 8 の Web Console(Cockpit)
Search
Kazuo Moriwaka
September 04, 2019
Technology
1
1.8k
Red Hat Enterprise Linux 8 の Web Console(Cockpit)
Cockpit関連で書いたスライドを全部入りにして1つにまとめたもの。
Kazuo Moriwaka
September 04, 2019
Tweet
Share
More Decks by Kazuo Moriwaka
See All by Kazuo Moriwaka
システム全体の暗号化ポリシーをカスタマイズ
moriwaka
0
2.3k
Red Hat Enterprise Linux 9のリリースノートを読む前に知りたい最近のキーワードをまとめて復習
moriwaka
0
1.7k
odpからmp4を作る / odp2mp4
moriwaka
0
370
Red Hat Enterprise Linux Web Console を使う / cockpit-rhel8
moriwaka
0
880
systemdエッセンシャル / systemd-intro
moriwaka
46
12k
flatpak
moriwaka
0
2.5k
Red Hat Enterprise Linux 8 の セキュリティトピック
moriwaka
2
1.4k
システム全体の暗号化ポリシー設定
moriwaka
0
1.2k
端末のセッション記録
moriwaka
0
5.7k
Other Decks in Technology
See All in Technology
AI駆動で進化する開発プロセス ~クラスメソッドでの実践と成功事例~ / aidd-in-classmethod
tomoki10
1
800
Mastraに入門してみた ~AWS CDKを添えて~
tsukuboshi
0
380
OPENLOGI Company Profile for engineer
hr01
1
25k
コードや知識を組み込む / Incorporating Codes and Knowledge
ks91
PRO
0
160
Dynamic Reteaming And Self Organization
miholovesq
3
740
白金鉱業Meetup_Vol.18_生成AIはデータサイエンティストを代替するのか?
brainpadpr
4
220
製造業向けIoTソリューション提案資料.pdf
haruki_uiru
0
140
genspark_presentation.pdf
haruki_uiru
0
150
AIエージェント開発手法と業務導入のプラクティス
ykosaka
9
2.7k
AndroidアプリエンジニアもMCPを触ろう
kgmyshin
2
570
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
7
63k
30代からでも遅くない! 内製開発の世界に飛び込み、最前線で戦うLLMアプリ開発エンジニアになろう
minorun365
PRO
16
5k
Featured
See All Featured
Thoughts on Productivity
jonyablonski
69
4.6k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
690
Embracing the Ebb and Flow
colly
85
4.7k
How STYLIGHT went responsive
nonsquared
100
5.5k
Fireside Chat
paigeccino
37
3.4k
Why You Should Never Use an ORM
jnunemaker
PRO
56
9.3k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
410
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.4k
The Cult of Friendly URLs
andyhume
78
6.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
179
53k
VelocityConf: Rendering Performance Case Studies
addyosmani
329
24k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Transcript
1 Red Hat Enterprise Linux 8 の Web Console (Cockpit)
森若 和雄 Solution Architect 2019-09
2 Copyright Red Hat K.K. All rights reserved. このスライドの位置付けと目的 •
対象 • GUIでLinuxを管理できると嬉しい人 • Linuxのデスクトップ環境を持ってないのでXが必要なGUI ツールを使うのは難しい人 • 目的 • RHELに同梱されていて各種サーバ管理に利用できるWeb UI を提供するCockpitを紹介
3 Copyright Red Hat K.K. All rights reserved. 概要 •
Web Console (Cockpit)とは? • Cockpit Packageによる機能拡張 • Cockpitのセキュリティ
4 Copyright Red Hat K.K. All rights reserved. Web Console
サーバ管理用のWeb UIを提供 • サービス管理 • アカウント管理 • ネットワーク管理 • ファイアウォール管理 • ストレージ管理 • ログ閲覧 • 仮想マシン管理 • 仮想端末 などの管理機能を提供 https://cockpit-project.org/
5 Copyright Red Hat K.K. All rights reserved. Cockpitの特長 •
独自のDBや設定ファイルなどをほぼ持たない • dbus、ファイルアクセス、コマンド実行などへのアクセスを 提供するバックエンドとブラウザからアクセスするjavascript APIを基盤とする • アクセス制御はPolicyKitにより実施 • 利用していない時にリソースを事実上消費しない • プラグイン形式での機能追加が容易 • ~/.local/ 以下に配置することで特定ユーザのみ利用可能 • Kerberosを利用したSSOに対応
6 Copyright Red Hat K.K. All rights reserved. Cockpitのインストール •
パッケージ導入 • yum install -y cockpit cockpit-dashboard • 証明書設置 • cp cockpit.cert /etc/cockpit/ws-certs.d/ • ファイアウォール設定 • firewall-cmd --add-port=9090/tcp • firewall-cmd --permanent --add-port=9090/tcp • 起動設定 • systemctl enable cockpit.socket • systemctl start cockpit.socket • ブラウザで接続 • firefox https://rhel8.corp.example.com:9090/ cockpitそのものの 設定をしなくても 動作します TLS用にCA局発行の 証明書を配置します。 なければ自己署名 証明書が自動生成 されます。
7 Copyright Red Hat K.K. All rights reserved. リモート管理 •
cockpitはブラウザが直接接続できないシステムも管理できる (cockpit- dashboardパッケージが必要) • cockpit同士でsshによる通信をおこなう • 踏み台サーバからsshによる接続ができればリモートのcockpitと直接通信 できなくても管理できる • cockpitへログインしたユーザの権限でssh接続 HTTPS port 9090 SSH port 22 踏み台サーバ 管理対象サーバ cockpit-ws cockpit-bridge
Cockpit Packageによる機能拡張
9 Copyright Red Hat K.K. All rights reserved. Cockpitの 基本動作
• cockpit-wsが待受け • ブラウザでログイン • cockpit-bridgeがユーザ 権限で起動 • cockpit-bridgeがdbus, pcp, プロセス実行など を行う • リモートへはsshで 接続 https://raw.githubusercontent.com/cockpit-project/cockpit/master/doc/cockpit-transport.png
10 Copyright Red Hat K.K. All rights reserved. Cockpitを拡張するには? •
プラグイン(Cockpit Package)による拡張に対応 • dbusでのリクエストやコマンド実行、ファイル読み出 し等を行うjavascript用APIを提供 コマンド実行 cockpit.spawn([“ping”, “8.8.8.8”]) ホスト名取得 proxy = cockpit.dbus(“org.freedesktop.hostname1”).proxy() ファイル内容取得 file = cockpit.file(“/etc/motd”, {})
11 Copyright Red Hat K.K. All rights reserved. Cockpit Packageとは?
以下のようなファイル群を配置することでCockpit内で利用する 画面を作成する。 /usr/share/cockpit/ hoge/ パッケージ用ディレクトリ manifest.json メニュー内の場所、 ラベルや関連ファイルなどを指定 hoge.html 表示するhtml hoge.js 操作を実装するjavascript
12 Copyright Red Hat K.K. All rights reserved. Cockpit Packageの配置場所
• ファイルを配置する場所が3箇所あり、オーバーライドできる 1. /usr/share/cockpit/* (rpm用、システム全体用) 2. /usr/local/share/cockpit/* (システム全体用) 3. ~/.local/share/cockpit/* (特定ユーザ用) • cockpit-bridge --packages コマンドで(実行したユーザにとって の) Cockpit Package一覧を表示 • manifest.jsonで同じ名前を宣言した場合、manifest.json内の priorityの値が大きい方が優先される
13 Copyright Red Hat K.K. All rights reserved. 個人用にCockpit Packageを作ってみる
• インストール先ディレクトリ作成 • mkdir -p ~/.local/share/cockpit/ • cockpitのソースコードを取得 • git clone https://github.com/cockpit-project/cockpit.git • シンボリックリンク作成 • cd cockpit/examples/ • ln -s ${PWD}/pinger ~/.local/share/cockpit/ • ブラウザでcockpitへ接続(または再ログイン) • メニュー上の“Pinger”メニューでpingコマンド実行
14 Copyright Red Hat K.K. All rights reserved.
15 Copyright Red Hat K.K. All rights reserved. Cockpit Packageの
参考文献 • cockpit projectのTutorialカテゴリ • https://cockpit-project.org/blog/category/tutorial.html • cockpitプロジェクトのソースコード • https://github.com/cockpit-project/cockpit/ • 本格的なpluginのひな型 “Starter Kit” • rpmパッケージ化、テストケース実行, 一般公開に対応 • https://github.com/cockpit-project/starter-kit • Cockpitドキュメント内 “Developer Guide” • https://cockpit-project.org/guide/latest/development.html
Cockpitのセキュリティ
17 Copyright Red Hat K.K. All rights reserved. よくある(?)「Webコンソール」のイメージ(偏見) •
外部コマンド実行や ファイル変更をroot 権限で実施 • 「root権限で何でも できるプロセス」 • 複雑になり、バグ が深刻な問題につ ながる • 独自の権限管理設定 やDBが必要 root権限で 何でもできる プロセス httpd 権限 管理 外部プロセス 外部プロセス ファイル UI DB
18 Copyright Red Hat K.K. All rights reserved. cockpitは? •
ログインしたユーザの権限で実施 • root権限利用はセッション開始時のみ • OSの権限管理をそのまま使う cockpit-session root権限で動作 ログイン処理 外部プロセス 外部プロセス ファイル UI cockpit-bridge ユーザ権限で 何でもやる cockpit-ws ログインと 接続 pam GSSAPI OSの 権限管理 生成 認証情報 リクエスト
19 Copyright Red Hat K.K. All rights reserved. ログイン時の動作 1.
cockpit-wsがログイン 画面を表示 2. 認証情報を送付 • ID+Password • GSSAPI 3. cockpit-sessionを実行 4. PAMで認証 5. 認証ユーザでcockpit-bridgeを実行 6. 以下チェックのある場合pkexecで root権限のcockpit-bridgeを起動 cockpit-session root権限で動作 ログイン処理 cockpit-bridge ユーザの 権限で 何でもやる cockpit-ws ログインと 接続 pam GSSAPI 生成 リクエス ト デフォルトではwheelグループの ユーザのみ成功 cockpit-bridge --privilege rootユーザの 権限で 何でもやる 生 成 認証情報
20 Copyright Red Hat K.K. All rights reserved. ログイン後 •
ブラウザ上のjavascriptとcockpit-bridge(およびcockpit-bridge --privilege)が通信 • cockpit-bridge本体と、packageと呼ばれるプラグインがdbus, REST API, プロセス 実行など各種の操作を実施。通常のユーザ権限管理をそのまま利用。 cockpit-session セッション管理 だけ 外部プロセス 外部プロセス ファイル UI cockpit-bridge ユーザの 権限で 何でもやる cockpit-ws ログインと 接続 OSの 権限管理
21 Copyright Red Hat K.K. All rights reserved. Cockpitに関連したセキュリティ上の注意点 •
SELinuxのポリシーも準備されているのでできれば使う • enforcingで使うことでcockpit-wsやcockpit-sessionに未知の脆弱性があっ た場合にも任意プロセス実行などを予防する • 自己署名証明書の利用はお勧めしません • ブラウザとcockpit-ws間の通信路が信頼できてはじめて安全な仕組み • 後述のIdentity Managementとの統合で証明書の自動発行が可能 • 特権取得にPolicyKitを利用している • systemdでも利用するがサーバ管理時に気にしないケースが多いので注意 • 一部操作を制限したい場合は /etc/polkit-1/rules.d/*.rules でポリシー定義 をおこなう。ポリシー制限の粒度はサービスによる。
22 Copyright Red Hat K.K. All rights reserved. Identity Managementとの統合
• RHEL同梱のRed Hat Identity Managementと統合されています • IdMが管理するドメインにサーバが参加していれば以下が可能 • Web Consoleのリモート管理で利用するssh接続をシングルサ インオン(SSO)で処理 • Web Consoleで利用するサーバ証明書を自動発行し自己署名 証明書の利用なし
23 Copyright Red Hat K.K. All rights reserved. まとめ •
RHELの管理を簡単にするWeb Consoleは、簡単に利用 できるだけでなくセキュリティにも配慮して開発され ています • ログイン時に最小の特権だけを利用 • 特権を利用する範囲についてSELinuxで制限が可能 • 実績があるPolicyKitなど枯れた技術を活用 • Identity Managementと統合されています
24 Copyright Red Hat K.K. All rights reserved. • RHEL8ドキュメント「Web
コンソールを使用したシステムの管理」 • https://bit.ly/rhel8-webconsole-ja2 • Cockpitプロジェクトblog「Is Cockpit Secure?」 • https://cockpit-project.org/blog/is-cockpit-secure.html • Cockpitプロジェクトドキュメント「Single Sign On」 • https://cockpit-project.org/guide/latest/sso.html Cockpitのセキュリティ 参考文献
25 Copyright Red Hat K.K. All rights reserved. Thank You