セキュリティ基礎①|認証・認可・最小権限の考え方

セキュリティ基礎①|認証・認可・最小権限の考え方 セキュリティ

認証と認可は、似ているようで、まったく別のものです。「この人に、管理者権限を、付けておいてください。そのほうが、楽なので」

情シスなら、一度は、言われたことがあるはずです。そして、「楽なので」で付けた権限ほど、あとで、外すのが大変です。

今回から、シリーズ「情シスのためのセキュリティ基礎」(全5回)が始まります。特定の製品に依存しない、考え方を中心に、実機の画面で確かめながら進めます。第1回は、認証・認可・最小権限です。

結論:「誰か」を確かめるのが認証、「何ができるか」を決めるのが認可

用語 答える質問 例
認証(AuthN) あなたは、誰ですか? パスワード、多要素認証、証明書
認可(AuthZ) あなたは、何をしてよいですか? フォルダーのアクセス権、管理者かどうか、ロール

Microsoft の公式ドキュメントでは、認証は「本人であることを証明するプロセス」、認可は「認証された相手に、何かをする許可を与えること」と説明されています。認証が先、認可が後です。入口で、本人確認をして、次に、入れる部屋を決める、と考えると、迷いません。

順番 例えると(オフィスの入口)
認証 社員証を、ゲートにかざす(本人確認)
認可 その社員証で、入れる部屋が決まる(サーバールームには入れない、など)

認証が通っても、認可が足りなければ、操作はできません。逆に、認可を広げすぎると、認証が破られたときの被害が、大きくなります。

最小権限の原則:「必要なだけ」を、渡す

セキュリティの基本中の基本が、最小権限(least privilege)です。NIST の用語集では、各主体に、役割を果たすために必要な最小限のリソースと権限だけを与えること、と定義されています。

考え方 具体例
必要な人にだけ 管理者権限は、管理作業をする人だけ
必要な範囲だけ 営業のファイルサーバーは、営業部だけがアクセスできる
必要な期間だけ 作業のときだけ権限を付け、終わったら外す
普段使いと管理を分ける 日常のアカウントと、管理用のアカウントを分ける

「楽だから」「あとで、また付けるのが面倒だから」の例外は、積み重なると、誰が、何をできるのか、誰にも分からなくなります。

実機で確認:この PC の「管理者」と「アカウント」の数

実際に、自分の PC で、管理者が何人いるか、アカウントがいくつあるかを、見てみます。

(Get-LocalGroupMember -Group Administrators | Measure-Object).Count
(Get-LocalUser | Where-Object Enabled | Measure-Object).Count
Get-LocalUser | Where-Object Enabled | Format-Table Enabled, PasswordRequired, PasswordExpires
認証の確認画面。Administrators グループのメンバー数が2、有効なローカルユーザーの数が3、有効なローカルユーザーごとの Enabled と PasswordRequired が True、PasswordExpires が空欄で表示された画面

僕の PC は、こうでした。

  • Administrators グループのメンバー:2
  • 有効なローカルユーザー:3
  • パスワードが必要(PasswordRequired):3つとも True
  • PasswordExpires:3つとも空欄(パスワードに有効期限が設定されていない状態、と読めます)

ここで確認したいのは、「想定した人数か」です。管理者が2人いるなら、その2つが、何のアカウントか、説明できるか。説明できないアカウントがあれば、それが、最初の調査対象です。

個人の PC でも、会社の PC でも、「管理者の一覧を、説明できる状態」が、最初のゴールです。

認証の次に、認可を決めるときの、3つの問い

新しく権限を付けるときは、この3つを確認します。

  1. 誰に?(個人か、グループか。個人に直接付けないほうが、後で管理しやすい)
  2. 何に対して?(フォルダー、システム、クラウドのサービス)
  3. どのくらい?(読み取りだけか、変更もか、管理もか)

グループで管理すると、人が異動したときに、グループから外すだけで済みます。個人に直接権限を付けると、外し忘れが起きます。

認証を強くする、基本の考え方

手段 考え方
強いパスワード 長く、使い回さない
多要素認証(MFA) パスワード以外の要素を、もう1つ求める。ブルートフォース攻撃への対策として、よく使われる
共通アカウントを作らない 「誰が」操作したか、後から追えなくなる
一元管理(SSO) 1か所で認証し、各サービスにログインできる。追加・削除が、1か所で済む

共通アカウントは、認証の問題であると同時に、監査(第4回)の問題でもあります。誰が、やったのか分からないログは、調査の役に立ちません。

僕のやらかし:「あとで外す」と言って、外していない

障害対応のために、作業者に、一時的に、管理者権限を付けました。「終わったら外す」つもりでした。

ところが、障害は収まり、次の障害が来て、権限のことを、忘れました。半年後の棚卸しで、「なぜ、この人が、管理者なのか」と聞かれ、答えられませんでした。

調理中に、「あとで片づける」と置いた包丁が、そのまま、半年ぶん、並んでいたようなものです。以来、権限は、「期限と理由」を一緒に記録し、定期的に、棚卸しをしています。

今回覚えたコマンド

コマンド 意味
Get-LocalGroupMember -Group Administrators 管理者グループのメンバー
Get-LocalUser ローカルユーザーの一覧
Where-Object Enabled(Get-LocalUser と組み合わせ) 有効なユーザーだけ

次回予告

次回は、IP アドレス・ポート・ファイアウォールの役割です。認証と認可が「人」の話だったのに対し、次は「通信」の入口を、どう守るかの話です。

→ 第2回:IPアドレス・ポート・ファイアウォールの役割

参考

ITもごはんも、腹八分目が長続きのコツ!

コメント