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.4k
Red Hat Enterprise Linux 9のリリースノートを読む前に知りたい最近のキーワードをまとめて復習
moriwaka
0
1.7k
odpからmp4を作る / odp2mp4
moriwaka
0
390
Red Hat Enterprise Linux Web Console を使う / cockpit-rhel8
moriwaka
0
920
systemdエッセンシャル / systemd-intro
moriwaka
46
13k
flatpak
moriwaka
0
2.6k
Red Hat Enterprise Linux 8 の セキュリティトピック
moriwaka
2
1.4k
システム全体の暗号化ポリシー設定
moriwaka
0
1.2k
端末のセッション記録
moriwaka
0
5.8k
Other Decks in Technology
See All in Technology
United Airlines Customer Service– Call 1-833-341-3142 Now!
airhelp
0
170
LangChain Interrupt & LangChain Ambassadors meetingレポート
os1ma
2
320
Sansanのデータプロダクトマネジメントのアプローチ
sansantech
PRO
0
170
VS CodeとGitHub Copilotで爆速開発!アップデートの波に乗るおさらい会 / Rapid Development with VS Code and GitHub Copilot: Catch the Latest Wave
yamachu
2
160
OpenTelemetryセマンティック規約の恩恵とMackerel APMにおける活用例 / SRE NEXT 2025
mackerelio
2
360
CDKTFについてざっくり理解する!!~CloudFormationからCDKTFへ変換するツールも作ってみた~
masakiokuda
1
170
開発生産性を組織全体の「生産性」へ! 部門間連携の壁を越える実践的ステップ
sudo5in5k
3
7.4k
自律的なスケーリング手法FASTにおけるVPoEとしてのアカウンタビリティ / dev-productivity-con-2025
yoshikiiida
2
17k
AI時代の開発生産性を加速させるアーキテクチャ設計
plaidtech
PRO
3
160
What’s new in Android development tools
yanzm
0
340
ビジネス職が分析も担う事業部制組織でのデータ活用の仕組みづくり / Enabling Data Analytics in Business-Led Divisional Organizations
zaimy
0
130
改めてAWS WAFを振り返る~業務で使うためのポイント~
masakiokuda
2
270
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
58
9.4k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.6k
It's Worth the Effort
3n
185
28k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
KATA
mclloyd
30
14k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
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