CHAPTER 04SECURITY

第4章|システムの通信

【IT用語】「セキュリティ」とは?情報とサービスを守る考え方

セキュリティとは何かを、機密性・完全性・可用性、認証と認可、パスワード保存、多要素認証、多層防御の基本から解説します。

「セキュリティを強化する」

「セキュリティ上の問題が見つかった」

セキュリティというと、強いパスワードやウイルス対策ソフトを思い浮かべるかもしれません。どちらも大切ですが、それだけではありません。

今回は、セキュリティを「大切なものを守りながら、必要な人には使ってもらう仕組み」として解説します。

結論:「セキュリティ」=「情報とサービスを、望ましくない事故や攻撃から守ること」

セキュリティには、代表的な3つの目的があります。

  • 機密性: 見てよい人だけが情報を見られる。
  • 完全性: 情報が勝手に書き換えられない。
  • 可用性: 必要な時にサービスを利用できる。

「誰にも触らせない」だけでは、サービスとして役に立ちません。守ることと、正しく使えることの両方が必要です。

認証と認可の違い

似ているようで、役割が違います。

認証:あなたは誰?

ログインなどによって、ユーザーや機器が誰なのかを確かめます。

コンサートで本人確認付きのチケットを確認する場面に近いでしょう。単にチケットを持っているだけでは本人確認にならないため、実際の認証方法はサービスによって異なります。

認可:何をしてよい?

認証した相手が、どの機能や情報を使えるかを判断します。

一般の参加者は客席へ入れても、関係者用エリアには入れません。同じように、一般ユーザーと管理者では使える機能が違います。

ログインできることと、管理者の操作ができることは別の話です。

パスワードの使い回しが危険な理由

あるサービスからメールアドレスとパスワードが漏れた時、攻撃者は同じ組み合わせを別のサービスでも試します。これを「リスト型攻撃」と呼びます。

対策の基本は次のとおりです。

  • サービスごとに異なるパスワードを使う
  • パスワードマネージャーを利用する
  • 長く推測されにくいパスフレーズを使う
  • 多要素認証やパスキーを利用できる場合は有効にする

使い回しを避けるために、すべてを暗記する必要はありません。安全に管理できる道具を使うことも立派な対策です。

サービス側はパスワードをどう保存する?

パスワードをそのまま保存してはいけません。一般には、パスワード保存用の方式でソルトを加え、計算コストを持たせてハッシュ化します。

ハッシュ化は、データを元へ戻す暗号化とは役割が違います。単純にSHA-256へ通すだけでは、パスワード保存として十分ではありません。Argon2idなど、用途に適した方式と設定が必要です。

1つの対策だけに頼らない「多層防御」

完璧な対策を1つ置くのではなく、複数の守りを重ねます。

  • アクセス制御: 必要な通信やユーザーだけを許可する。
  • 認証・認可: 誰か、何をしてよいかを確認する。
  • 暗号化: 通信中や保存中のデータを保護する。
  • 更新: 既知の脆弱性を修正する。
  • 監視: 異常な動きを見つける。
  • バックアップ: 事故や攻撃から復旧できるようにする。

ファイアウォールも、多層防御の一部です。すべての悪い通信を自動で見抜く魔法の壁ではなく、決めたルールに基づいて通信を制御します。

セキュリティは「人を責めるため」ではない

安全な仕組みは、ユーザーが間違える可能性も考えて作ります。

確認画面、権限の分離、入力チェック、操作ログなどを用意し、1回の間違いが大きな事故につながらないようにします。

セキュリティを「面倒な制限」だけで終わらせず、安心して使い続けるための設計として考えることが大切です。

この言葉が会話に出てくるとき

例えば、公開前に「誰が読めて、誰が書いてよいか」を決める会話です。機能追加より先に、見えてはいけない範囲を決めます。

例えば、パスワードや控えファイルの置き場を決めるときです。便利さと、漏れたときの影響を並べます。

勘違いしやすい点

  • 専門家だけの仕事: 公開範囲、使い回し、共有端末は、作る人にも使う人にも関係します。
  • パスワードを長くすれば十分: 保存の仕方、権限、更新、置き場もセットです。
  • 一度設定すれば終わり: 機能を足すたびに、見える範囲が広がり得ます。

守る対象を先に書くと、対策の順番が決めやすくなります。

まとめ

  • セキュリティ「情報とサービスを、事故や攻撃から守ること」
  • 認証「誰なのかを確かめる」
  • 認可「何をしてよいかを決める」
  • 基本「1つの対策に頼らず、複数の守りを重ねる」

この章で、本書の16用語をすべて紹介しました。

最初は呪文に聞こえた言葉も、役割と使われ方が分かれば、少しずつ自分の言葉に変わっていきます。

ここまでお付き合いいただき、心からありがとうございました!

「安全そう」で済ませて後悔した話

個人開発の初期に、「HTTPSだから大丈夫」「自分しか知らないURLだから大丈夫」と思い込んでいたことがあります。前者は通信の暗号化であり、アプリの設計ミスやXSSを全部防いではくれません。後者は、URLが漏れたり推測されたりした瞬間に前提が崩れます。

そこで今は、次の層を分けて考えています。

  • 通信: HTTPS で経路を保護する
  • 入力: 想定外の文字列でも壊れない・変なスクリプトを実行しない
  • 権限: プレビューや埋め込みでできる操作を最小にする
  • 秘密: APIキーや管理用情報を公開HTMLに置かない
  • 運用: 依存ライブラリとデプロイ手順を雑に増やさない

セキュリティは「完璧」より穴の種類を減らす作業です。パスワードを長くするのもその一枚で、使い回しをやめる・二段階認証を足す・生成後の保管先を決める、が揃って初めて意味を持ちます。

QUICK CHECK

よくある質問

長いパスワードだけで十分ですか?

長さは重要ですが、使い回しを避けること、パスワードマネージャー、多要素認証やパスキー、サービス側の適切な保存など、複数の対策を重ねるほうが安全です。

最初から読み直すなら?

サーバーの記事から読むと、16語のつながりを順番に確認できます。

参考資料

用語の定義や仕様を確認するため、公式文書・標準文書を参照しています。リンク先の内容は更新される場合があります。