【情報処理安全確保支援士】Cookie・キャッシュ・クラウドサービスの役割

IPAが主催する高度試験、情報処理安全確保支援士試験の学習を進めるに当たり。

大まかな内容を振り替える意味で、ザーッと範囲をまとめてみようかと記事をいくつか計画したんですが。

やめました。

学習を進める中で、仕組みや流れの中で用語を覚えないと、答えにはたどり着きにくいなと。

逆に、応用情報技術者試験までの知識で、一歩踏み込んだものや新しい用語を覚えれば戦える分野もあったり。

それは人それぞれですからね。

私の場合の学習記録のような感じで、息抜きに読んでもらえたらと思います。

今回は。

・Cookieの属性
・Cashe-Control
・クラウドサービスの棲み分け

の3本です。

ネットワークやサービスの基本的な部分ですがー。

普段使っているはずなのに、どうも頭に入らないのですよ。

参照した参考書

Cookieの基本と属性

インターネットを閲覧するブラウザを利用して、閲覧したい情報やして欲しい処理をWEBサーバーにリクエストを送り。

そのリクエストにWEBサーバーが答えることで、WEBページや情報の登録といった処理が行えるようになります。

これらの処理で使われるHTTPというプロトコルでは、このリクエストが単発で完結するような仕組み。

このリクエストをセッションと言い。

セッションの情報を保持しなければ、誰からのリクエストなのか、どういうリクエストなのかというセッション管理が必要となります。

その情報の一つであるセッションIDなどを一時的にデータにし、相手の識別やセッション状態を管理する機能がCookieです。

最近ではインターネットを利用してWEBサイトを訪れると、Cookieの情報を利用しても良いか尋ねられるようになりましたが。

Cookieには以下のような、利用者にとって重要な情報を保持しています。

・ログイン情報
・ECサイトでのショッピングカート内容の情報
・WEBページの閲覧履歴

などなど。

これらの情報を保持してくれるおかげで、私たちは毎回ログインしたり、商品を選択し直したりする必要がなく。

しかも、リクエストを受けたWEBサーバー側で自動的に発行してくれるので、手間もかかりません。

WEB上のサービスを便利に利用するための仕組みであるとも言えます。

しかし、上記のような情報を保持するため、セッションハイジャックなどの攻撃の対象となる場合もあります。

例えば、公共のWi-Fiを利用している場合。

もしWEBサーバーの設定で、CookieのSecure属性を忘れてしまうと。

セッションIDが漏洩し、第三者にCookieの情報をコピーされてしまう可能性があります。

そうすると、正規のユーザーになりすまされてしまうかもしれません。

その後は、踏み台にされたり、登録情報で不正に買い物をされたり。

様々な攻撃の元とされてしまいます。

なので、Cookieの属性情報を把握しておくことはWEBサーバーの設定を確認する上でも重要です。

Secure属性HTTPS通信の時のみCookieを送出する盗聴対策
HttpOnly属性JavaScriptなどのスクリプトによるアクセスの禁止XSS対策
SameSite属性外部サイトからの送信制限
・Strict:GET/POSTのどちらも禁止
・Lax:GETなら送信できる
・None:制限なく送信できるがSecure属性の設定が必須
CSRF対策
有効期限Cookieの有効期限
・指定なし:ブラウザの終了とともに消失
・指定あり:ブラウザの終了以降も保持
有効なドメインCookieが有効となるドメイン名
・指定あり:サブドメインや異なるホスト名でも送出
・指定なし:Cookieを発行したサーバーとのみ送出
指定あり:複数サーバーと情報が共有できる
指定なし:Cookieの流出防止
有効なディレクトリサーバー上のCookieが有効となるディレクトリ
・指定あり:ディレクトリにアクセス時のみ送出
・指定なし:発行したディレクトリ以下で送出

Cookieを使わなくする運動が一時期起こっていましたが。

完全になくすことが無理と分かり、適切に設定することと、情報の使用や保持の判断がユーザーに委ねられるようになりました。

自分の大事な情報として、適切に管理できるようにしたいですね。

そして、CookieはHTTPのヘッダ情報に追加されるのです。

Chache-Control

ブラウザのリクエストやそれに応じたWEBサーバーのレスポンスの情報は、HTTPのメッセージヘッダに格納されます。

認証情報やどこのページから訪れたのか。

閲覧に使用しているブラウザの情報など、様々な情報が入ります。

その中の一つに「Chache-Control」があります。

Chache(キャッシュ)とは、WEBサーバーの情報をブラウザなどのクライアントが保持することで、表示などの動作を高速化するための仕組みです。

キャッシュの中にも、ログイン情報などの認証情報や、入力した個人データが保存される場合もあります。

そのため、キャッシュを利用してセッションハイジャックが行われる可能性がありますし。

閲覧したWEBサイトに機密情報が含まれている場合、その情報が漏洩することにも繋がります。

それを防ぐためにキャッシュの動作を指定するヘッダーが、Cashe-Controlです。

no-chacheキャシュ可能だが、オリジンサーバーに有効性を問い合わせる
no-storeキャッシュを一切禁止する
privateクライアントとオリジンサーバーが1対1の時のみキャッシュ可能
publicキャッシュを複数のクライアントで共有する場合もキャッシュ可能

praivateは自分の利用するブラウザのみで使える、個人利用のような感じですね。

publicは全員で共有するという感じ。

ブラウザとWEBサーバーのやり取りだけであれば、そこまで理解は難しくないかもしれませんが。

キャッシュサーバーやコンテンツサーバーといった、キャッシュ機能を持つサーバーを介したネットワーク構成の場合、各所でのキャッシュのやり取りなどを把握する感じです。

HTTPヘッダについても、まとめた方が良いかもなぁ。

クラウドでの責任範囲

WEBサービスではもう外せないのがクラウドです。

仮想化技術によって、低コストでサーバー運用ができるようになりました。

ただ、提供形態によってユーザーが実施できることが異なり。

セキュリティ上は、その範囲を把握しておくことが大切です。

提供形式ユーザーのセキュリティ対策範囲ベンダーのセキュリティ対策範囲
SaaSソフトウェアの利用に起因するもの
・迷惑メール
・マルウェア など
物理環境
・ハードウェア
・ネットワーク など
プラットフォーム
・OS
・ミドルウェア など
アプリケーション
・ソフトウェア など
PaaSアプリケーション
ソフトウェアの利用に起因するもの
物理環境
プラットフォーム
IaaSプラットフォーム
アプリケーション
ソフトウェアの利用に起因するもの
物理環境

SaaSとPaaSの違いを良く間違えるんですがー。

自分でアップデートの操作をするかどうかで覚えるのが分かりやすいですね。

入力やデータ管理だけで終わり、ベンダーがアップデートを適用してくれるのはSaaS。

アップデートをして欲しいと、ベンダーからお願いされるのがPaaS。

ここらへんの境界が、良い意味で分かりにくくなっているんですけどね。

把握しておかないと、脆弱性の対策に配布されたパッチの適用が遅れ。

セキュリティインシデントの発生・・・となってしまいます。

SaaSでの認証情報管理はどこに責任があるかは、ちゃんと把握しておきたいですね。

アカウント管理権限はベンダーが持っていて、ユーザー管理は情シス担当とか。

サービスによって違うでしょうし。

基本的なことから少しずつ

なんだかんだ応用情報技術者試験に合格してから一年経つと。

細かいところは忘れたりしてますねぇ。

応用のテキストと、安全確保支援士のテキストを行ったり来たりしてますが。

少しずつ理解できているような気はしています。

頑張りますー。

このブログや記事の内容について、疑問に思っている事はありますか?

もしあれば、どんなことでも構いませんので、コメントを残していただくか、問い合わせフォームよりご連絡ください。

著者プロフィール
ぽんぞう@勉強中

はじめまして、「ぽんぞう@勉強中」です。
小企業に一人情報部員として働いている40代のおじさんです。IT技術での課題解決を仕事にしていますが、それだけでは解決できない問題にも直面。テクノロジーと心の両面から寄り添えるブログでありたいと、日々運営しています。詳しくはプロフィールページへ!