アクセス制御は誰が何をしてよいかを決める
アクセス制御とは、誰がどの資産に何をしてよいかを決め、それを守らせる仕組みです。決め方の基本が、最小権限の原則です。
ある店で、入ったばかりのアルバイトに管理者の権限を与えました。慣れない操作で、顧客の一覧を消してしまいました。仕事に要る分だけ与えていれば、防げた事故です。
このレッスンのゴール
メモ
誰が何をしてよいかを、権限表にして決めることができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| アクセス制御 | 誰が何をしてよいかを決めて、守らせる仕組み | |
| 最小権限 | 仕事に要る分だけの権限を与えること | |
| ロール | 仕事の役割ごとにまとめた権限のかたまり | devs |
| 権限表 | 誰が、何に、何をしてよいかを並べた表 | |
| 既定で拒否 | 書いていないことは、すべて許さない決め方 | |
| 職務の分離 | 1人に重要な作業を全部任せないこと |
学生が入力するセルは、このプレビューでは空白です。
権限表は誰が、何に、何をを並べる
アクセス制御は、まず権限表にします。1行に、誰が、どの資産に、何をしてよいかを書きます。
何を、の欄は、読む(read)、書く(write)のように、操作の名前で書きます。表に書いていないことは、許されません。これが既定で拒否です。
3人の権限表の例
| 誰が | 何に | 読む | 書く |
|---|---|---|---|
| tanaka | 請求書 | 許可 | 許可 |
| sato | 請求書 | 許可 | なし |
| kato | 請求書 | なし | なし |
学生が入力するセルは、このプレビューでは空白です。
権限表をファイルで作ってみる
1行を「名前と操作」にした、小さな権限表のファイルを作ります。grep -c は、一致した行の数だけを表示します。
練習用のフォルダ
mkdir -p accessdemoここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
権限表を書く
printf 'tanaka read\ntanaka write\nsato read\n' > accessdemo/table.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
tanaka の行を数える
grep -c "^tanaka" accessdemo/table.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
書く権利の行を数える
grep -c "write" accessdemo/table.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
最小権限は必要な分だけ与える
最小権限は、仕事に要る分だけを与え、それ以上は与えない決め方です。権限が小さければ、アカウントが乗っ取られても、ミスをしても、被害が小さく済みます。
進め方は、何も許さない状態から始めて、必要な権限を1つずつ足すことです。
よくある間違い
注意
「最初は広く許して、問題が出たら減らせばよい」と考える人が多くいます。でも、減らす機会は来ないことが多く、広い権限のまま残ります。何もない状態から、必要な分を足しましょう。
ロールで権限をまとめる
人ごとに権限を決めると、人が増えるたびに表が大きくなります。ロールは、役割ごとに権限をまとめたものです。
人にはロールを割り当てます。異動したら、ロールを替えるだけで、権限が正しく変わります。Linux のグループが、ロールの考え方に近いものです。
ロールの表を書く
printf 'devs: read write\nstaff: read\n' > accessdemo/roles.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
staff のロールを見る
grep "^staff" accessdemo/roles.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
Linux のモードも権限表
Linux のファイルのモードは、権限表の1行です。所有者、グループ、その他の3者に、読む、書く、実行する、を許すかを決めます。
640 なら、所有者は読み書き、グループは読むだけ、その他は何もできません。練習用のファイルで、確かめましょう。
練習用のファイル
touch accessdemo/data.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
グループは読むだけ
chmod 640 accessdemo/data.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
モードを文字で見る
stat -c "%A %n" accessdemo/data.txtここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
共有フォルダの最初の状態を見る
このラボの /srv/projects は、チームの共有フォルダです。始めた直後は、root のものです。ラボを始めたばかりなら、次のように表示されます。
755 は、所有者に全部、グループとその他に読むと入ることを許します。チームだけに絞れているかは、考えてみてください。
共有フォルダの権限を見る
stat -c "%a %A %U %G" /srv/projectsここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。