Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Red Hat Enterprise Linux 8 の Web Console(Cockpit)
Search
Kazuo Moriwaka
September 04, 2019
Technology
2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Red Hat Enterprise Linux 8 の Web Console(Cockpit)
Cockpit関連で書いたスライドを全部入りにして1つにまとめたもの。
Kazuo Moriwaka
September 04, 2019
More Decks by Kazuo Moriwaka
See All by Kazuo Moriwaka
システム全体の暗号化ポリシーをカスタマイズ
moriwaka
0
2.8k
Red Hat Enterprise Linux 9のリリースノートを読む前に知りたい最近のキーワードをまとめて復習
moriwaka
2
2k
odpからmp4を作る / odp2mp4
moriwaka
0
510
Red Hat Enterprise Linux Web Console を使う / cockpit-rhel8
moriwaka
0
1.1k
systemdエッセンシャル / systemd-intro
moriwaka
47
14k
flatpak
moriwaka
0
2.8k
Red Hat Enterprise Linux 8 の セキュリティトピック
moriwaka
2
1.6k
システム全体の暗号化ポリシー設定
moriwaka
0
1.3k
端末のセッション記録
moriwaka
0
7.3k
Other Decks in Technology
See All in Technology
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
2
540
今話題のAI「Jev」って何? 宇宙最速で学ぶ会
minorun365
PRO
26
15k
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
630
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
9
4.3k
Reactの設計論
uhyo
24
13k
LLMに渡さなかった仕事
nanaism
0
390
What the customer really needed
kawaguti
PRO
3
200
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
2
930
Slack上でインフラをトラブルシュートする! Agentic Platform Engineeringの第一歩
teru0x1
5
1.7k
ユーザー価値を届け続けるためにウォンテッドリーが大切にしている文化
kotaminato
0
160
Minecraft JavaのMODをSwiftで作る
1mash0
0
170
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
4
1.3k
Featured
See All Featured
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.6k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
Testing 201, or: Great Expectations
jmmastey
46
8.3k
Practical Orchestrator
shlominoach
192
12k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Deep Space Network (abreviated)
tonyrice
0
310
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
500
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