class: title, smokescreen, shelf, no-footer # <small>Unix、クラウド、キャリアパスと<br>セキュリティモデル</small> <div class=footnote> <small><small> 通常版は<A HREF="#appendix">付録</A>を参照のこと </small></small> </div> --- name: index class: compact # 目次 <div class=footnote> <small><small> 通常版は<A HREF="#appendix">付録</A>を参照のこと </small></small> </div> <small> 1. [Unix オペレーティングシステム (ダイジェスト)](#unix-digest) 1. [クラウドサービスとは? (ダイジェスト)](#cloud-digest) 1. [キャリアパスとして重要 (ダイジェスト)](#careerpath-digest) 1. [CLIを習うべき理由 (小まとめ)](#cli) 1. [Unix セキュリティモデル](#unix-security) </small> --- name: unix-digest class: compact # Unix オペレーティングシステム(ダイジェスト) <div class=footnote> <small><small> 通常版は<A HREF="#appendix">付録</A>を参照のこと。 Linuxは日本では「リナックス」と発音することが多いです。 原語では「りぬ〜くす」が近いですけどね </small></small> </div> <small> - 身の回りにあるOSのルーツは2種類(UnixもしくはMach)ですが、 **クラウドサービスでは Linux (というUnixクローン)**を使っています - Unixクローンは、オリジナルのUnixのパチモンです:-) - **ソースコードを配布し、無料で利用できるOS(ライセンスフリー)** (ビジネス観点で超重要!) - フリーソフトウエア(オープンソースソフトウエア,OSS)と呼んでいます - 代表的な Linux の開発プロジェクト名/商品名 - **Debian** (今回の演習で使うOS、約30年、有志で開発しつづけているOSSらしいOSS) - Ubuntu (Debianをベースにした亜種, Canonical社というタニマチがいるところがポイント) - Rasbian (Debianをベースにした亜種, ラズパイで使うデフォルトOS) - Redhat (製品, アメリカで有名) - SuSE (製品, ヨーロッパで有名) - CentOS (Redhatのニセモノを作るプロジェクト, 企業での利用が多い) </small> --- name: cloud-digest class: compact # クラウドサービス(ダイジェスト) <div class=footnote> <small><small> 通常版は<A HREF="#appendix">付録</A>を参照のこと </small></small> </div> <small> - クラウドサービスとは? - (ほぼ無尽蔵の)**巨大な在庫を抱えた仮想サーバ提供サービスの総称** - そのメリットは? - **サーバを自由自在に増減できる = ユーザ数に合わせて増減** (**スケールアウト/イン**) - インフラ投資を必要最低限に出来るので、 とくにゲーム会社などにとって嬉しい性質 - 典型例: ソーシャルゲームなどでは最初の3日間だけユーザ数が100万人、 その後、減少していき1万人程度におちついてしまうといったことがよくある - **100万人を想定してハードウエア(PC,サーバ)を買ってしまうと、ほぼ全部が無駄** (大赤字;_;) - サーバを自由自在に増減 = 利用数の増減 = **お金(ライセンス料)がかかるのは困る -> Linuxだ!** - **商用OSは一回でも起動すれば金払えと言われます** (ビジネスの観点!超重要なポイント!) - **サーバを自由自在に増減**するのは**自動的に行いたい** - 当然GUIでポチポチする挙動を自動化したいわけではありません - **テキストで書かれた設定ファイル**にもとづいてサーバ群を制御します <br> **設定ファイルには、Unix管理コマンド群を利用した設定**を書く必要も多々あります - これらが分かる/できることは**キャリアパスとして重要です** (-> 次頁へ続く) </small> --- name: careerpath-digest class: compact # キャリアパスとして(ダイジェスト) <div class=footnote> <small><small> 1年後とかの就職活動ではなく、 10年後、20年後もエンジニアとして食べていくには?という観点で話しています。 というか <br> インフラの授業は、すべて、 10年後、20年後もエンジニアとして食べていくにはどうすべきか?という観点で授業設計しています </small></small> </div> <small> - サーバを自由自在に増減するには - **テキストで書かれた設定ファイルにもとづいてサーバ群を制御**します <br> 設定ファイルには、Unix管理コマンド群を利用した設定を書く必要も多々あります - これらが分かる/できることはIT技術者の**キャリアパスとして重要です** - クラウドの進化(使い勝手の向上) = 基本的なことは**誰でもブラウザでポチポチすれば出来る** <br> AWSの基本操作くらいなら世界で数千万人くらいは出来そうです <br> (いまどき**基本**的なサーバ構築は、**お金をいただけるほどの技術**ではありません) - フロントエンドの人も自分で開発用サーバの面倒を見るとか出来て当たり前 (DevOps ?) - 例: フロントエンドチームの仕事の大半がインフラまわり(ニコ生の裏舞台の話をどこかでしたよね?) - **システム全体を、きちんと設計・構築・運用する技術は、また別の話です** (**インフラのプロのお仕事**) </small> --- name: cli class: compact # 小まとめ (CLIを習うべき理由とキャリア) <div class=footnote> <small><small> 1年後とかの就職活動ではなく、 10年後、20年後もエンジニアとして食べていくには?という観点で話しています。 というか <br> インフラの授業は、すべて、 10年後、20年後もエンジニアとして食べていくにはどうすべきか?という観点で授業設計しています </small></small> </div> <small> - 前の2頁くらいをまとめます - クラウドサービスのご時世ですが、クラウドは簡単ですかね? ... それは気のせいです - (**お金もらえないレベル**の)基礎の基礎くらいなら、 ブラウザでポチポチできます (**すごく簡単!!**) - 少し込み入ったことをするにはコマンド操作が必要です - **自動でスケールアウト**するにはテキストの設定ファイルを書く <br> = Unix管理コマンド操作群の命令を書ける必要がある - で、みなさん、**キャリアパス**として、どう考えますかね? - さて、話の流れとしては、次のステップとして、 - 必須の[SSHコマンド解説](../ssh/)へすすめ!なのですが、 - でも、その前に[Unix セキュリティモデル](#unix-security)を少し説明しますね </small> --- name: unix-security class: img-right,compact # Unix セキュリティモデルの前にAWSを思い出す(復習) <div class=footnote> <small><small> (脚注) WindowsにもOS内部の概念としては階層構造の考え方はあります。 ただ、ユーザが使う上では、意識しなくてもOSを使えてしまうのです。 一般の消費者は、それでもいいかもしれませんが、エンジニアはダメでしょう </small></small> </div> ![height480px](../../review/images/aws-vpc.png) <small> - この図(再掲)は前に見ましたね? - AWSの典型的な構成図 - まとめ - 階層構造あり - 壁の門には門番がいて、壁を通す人を制限 --- class: img-right,compact # Unix セキュリティモデル <div class=footnote> <small><small> WindowsにもOS内部の概念としては階層構造の考え方はあるのですが、 ユーザが使う上では考えなくても使えてしまうので、 ユーザがシステムについて考えなくなってしまいます。 べつに一般の消費者は、それでもいいかもしれませんが、エンジニアはダメ </small></small> </div> ![height480px](../../review/images/unix-hierarchy.png) <small> - 一般に、 システムは、 右図(再掲)のような卵(殻、白身、黄身)の構造と考えられます - **黒みがかったところがOS**、その外側(白い部分)はネットワークです (ちなみにCPUもOSも大学のシステム(サーバ+ネットワーク)も、すべて同様の図になります) - 階層構造と管理権限 - 黄身(図の中央部,いわば王宮,OSならカーネル)はシステムの中核で、 **用事がない限り進入禁止**です - 王宮に行くなら通行証をみせろと門番が立ちはだかります (**通行証=管理者パスワード**) </small> --- class: img-right,compact # Unixを管理する際は、システム中核におねがいをする <div class=footnote> <small><small> (脚注) AWSでは誰でもパスワードなしでsudoが使える危ない仕様なので、 イマイチ特権操作のイメージが湧きません;_; <br> この危ない操作方法は、分かってて使ってるよな!という暗黙の前提がありますね:-) </small></small> </div> ![height480px](../../review/images/unix-hierarchy.png) <small> - 階層構造と管理権限 - 黄身(図の中央部,いわば王宮,OSならカーネル)はシステムの中核で、 **用事がない限り進入禁止**です - システムの変更は中核だけが実行可 - **中核に仕事を依頼する時は特別な権限**が必要です。 それが**sudoコマンドを利用できる**ことです - **本来は管理パスワードを尋ねられます** (つまり**管理パスワードを知っているユーザだけ**がシステムの変更が出来ます) - **AWS EC2では誰でも使える**(パスワードを聞かれない)仕様 (とても危ない;-) </small> --- name: appendix class: title, smokescreen, shelf, no-footer # 付録: Unix、クラウド --- name: unix class: compact # Unix オペレーティングシステム <div class=footnote> <small><small> <A HREF="https://www.levenez.com/unix/"> だれかのUnix資料サイト </A> にある <A HREF="https://www.levenez.com/unix/unix_a4.pdf"> 真のUnix系統樹(こちらの巨大なPDF) </A>を堪能しろ:-) </small></small> </div> <small> - 身の回りにあるOSのルーツは2種類; Unix or Mach - Mach系は商用だし、あまりクラウドサービスと関係がないので省略します - Unixは大別して4系統あるけれど、 **クラウドサービスでは、ふつう Linux のこと** (<- 大事なのは、ここ) | OS | 作者 | 身の回りの実例 | ライセンス | 備考 | |------ |-------------------------------------- |---------------------- |------------ |---------------------------------------- | | Unix | Ken Thompsonとベル研チーム | 歴史的なUnix | 有料 | 1969- (ソースコードつき) | | | Bill JoyほかCSRG | BSD Unix (ARPA用) | 有料 | 1977- (ソースコードつき) | | | | 商用Unix | 有料 | 1983- (会社では使われてます) | | | K.Bostic、M.Mckusick、M.Karels(CSRG) | Net/2〜4.4BSD | OSS | 1991- (フリーソフトウエア版のBSD Unix) | | | Linus Torvaldsほか | 各種 Linux distro | OSS | 1991- | | | Google | Android | OSS版あり | Linuxをベースに魔改造 | | | Google | Chromebook | OSS版あり | Gentoo Linuxベース | | Mach | Rick Rashidと手下たち(CMU) | Originalの研究用Mach | ? | もう使われてはいない | | | | MacOSX | 有料 | 劣化版Mach + BSD Unix | | | | iOS(たぶん) | 有料 | 劣化版Mach + ??? | | | | Windows | 有料 | Machを手本に設計 | </small> --- class: compact # フリーソフトウエア版のUnix <div class=footnote> <small><small> これ、本来は、秋学期のオペレーティングシステムでやる内容なんだけど... </small></small> </div> <small> - 元々、Unixは有料ながら、**格安でソースコードも入手できた** - AT&T(アメリカの電話会社)のベル研究所が作ったOSで、 (AT&Tという特殊な利権企業への制限があったため) 格安のライセンス料でソースコードがもらえた。 そのため**1970年代の教育機関で大人気** - AT&Tがソフトウエアビジネスに乗り出すとUnixのライセンス料が跳ね上がり、 教育機関で使えなくなった (-> 利権企業どもめ!むかつく!パチモンつくったるわ:-) - **Unixクローン群の登場**(1983〜) - **Unixと使い勝手(いわゆるABI: Application Binary Interface)が同じOSを作ろう!** - (訴訟を回避するため)オリジナルUnixのソースコードは一切つかいません。 一から作ります - もちろん**ソースコードごと配布**します -> **フリーソフトウエア運動(1983/09-)** -> **OSS運動(1998/02-)** - 例 - GNU OS計画(R.M.Stallman, 1983-) ... 未完成(事実上Debianが、これに相当?) - BSD Unixのクローンをつくる計画(K.Bostic, 1989ごろ-) -> 4.4BSD -> NetBSD,FreeBSD,OpenBSD - 学習用ミニチュアとして A.S.Tanenbaum の Minix (+ 解説本) - Minixのクローンとして始まった Linux (1991-) ... Debian, Ubuntu, CentOS, Redhat, SuSe (数千種?) </small> --- name: cloud class: compact # <small>フリーソフトウエア版のUnixとクラウドの要諦(ビジネスの話)</small> <small> - クラウドサービスとは? - (ほぼ無尽蔵の)**巨大な在庫を抱えている仮想サーバを提供サービスの総称** - **商品名**なので、各社が勝手に使っていてアイマイなことに注意が必要 - 巨大な(ほぼ無尽蔵の)在庫を抱えている仮想サーバを提供する環境のメリット - **サーバを自由自在に増減できる = ユーザ数に合わせて増減** - ふつう従量課金(使った分だけ支払うモデル)ですが、 1分とか1秒単位で請求するサービスもあり、課金が最低限におさえられます - もちろんクラウドは時間単価でみれば割高です(**うまい話には罠があります**) - インフラ投資を必要最低限に出来るので、 とくにゲーム会社などにとって嬉しい性質 - 従来(オンプレミス)であれば、サーバを購入して5年間で減価償却する (使っても使ってなくてもコストが、かかってしまう) - ソーシャルゲームなどでは最初の3日間だけユーザ数が100倍など、 よくあるので、ほとんどのサーバが無駄 ( -> ユーザ数の推定と間違えると大赤字 ) </small>