0Pricing
Cyber Security Academy · レッスン

アクセス制御と暗号化

保存データを保護します

「アクセス制御と暗号化」はCoddyKit上の無料Cyber Security Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCyber Security Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Cyber Security Academyコースには全4レッスンが含まれています。

保存データを保護する

データベースには最も重要な資産が保管されているため、特に重要な対策は2つあります。アクセス制御(誰がデータに触れられるか)と暗号化(盗まれてもデータを役に立たなくすること)です。

この2つを組み合わせることで、システムの稼働中だけでなく、ディスクやバックアップが持ち出された場合にもデータを保護できます。

認証と認可

この2つの概念は区別してください。

  • 認証は、本人が誰であるかを証明します(ログイン、証明書、IAMトークン)。
  • 認可は、識別された後に何を実行できるかを決定します。

強固なデータベースセキュリティには、検証済みのIDと、厳密に範囲を限定した権限の両方が必要です。

最小権限の原則

各アカウントには必要な権限だけを付与し、それ以上は何も与えないでください。レポートサービスは読み取り専用にし、アプリケーションの書き込み用アカウントでDROPテーブルを実行できないようにします。

CREATE ROLE report_reader;
GRANT SELECT ON sales.* TO report_reader;
GRANT report_reader TO 'analytics_svc'@'%';

ロールベースアクセス制御

RBACは権限をロールにまとめ、ユーザーにロールを割り当てます。ユーザーごとに権限を付与するよりも拡張しやすく、監査も明確になります。

  • ロールを定義します。read_only、app_writer、dba。
  • ユーザーをロールに割り当てます。
  • ロールのメンバー構成を定期的に確認します。

行レベルと列レベルのセキュリティ

きめ細かな制御によって、テーブル内のアクセスを制限できます。

  • 列レベル: 一部のロールから給与やSSNの列を隠します。
  • 行レベルセキュリティ(RLS): テナントが自分自身の行だけを参照できるようにします。
-- PostgreSQL row-level security
ALTER TABLE orders ENABLE ROW LEVEL SECURITY;
CREATE POLICY tenant_isolation ON orders
  USING (tenant_id = current_setting('app.tenant')::int);

保存時の暗号化

保存時の暗号化は、ディスク上のデータを保護します。ドライブやバックアップファイルが盗まれても、キーがなければ内容を読み取れません。

選択肢には、フルディスク暗号化、ファイルシステム暗号化、データベース標準の透過的データ暗号化(TDE)があります。

透過的データ暗号化

TDEはデータベースファイルを自動的に暗号化します。アプリケーションを変更する必要はありません。エンジンが書き込み時に暗号化し、読み取り時に復号します。盗まれたファイルからは保護できますが、すでに有効なDBセッションを持つ攻撃者からは保護できません。

-- SQL Server example concept
CREATE DATABASE ENCRYPTION KEY
  WITH ALGORITHM = AES_256
  ENCRYPTION BY SERVER CERTIFICATE tde_cert;
ALTER DATABASE appdb SET ENCRYPTION ON;

列レベルの暗号化

カード番号や医療データなど、特に機密性の高いフィールドでは、個々の列を暗号化してください。DBAであっても、データベース内に平文が保存されることはありません。

トレードオフとして、暗号化された列はインデックス作成や検索が難しいため、対象を選んで適用してください。

通信中の暗号化

通信中のデータも保護する必要があります。すべてのクライアントとデータベース間の接続でTLSを必須にし、認証情報や結果セットを盗聴されないようにしてください。

-- PostgreSQL: force SSL in pg_hba.conf
hostssl  appdb  webapp  0.0.0.0/0  scram-sha-256
-- reject non-TLS:
hostnossl appdb all 0.0.0.0/0 reject

キー管理

暗号化の強度は、キーの扱い方に左右されます。保護対象のデータの近くにキーを保存してはいけません。

  • キー管理サービス(KMS)またはHSMを使用します。
  • スケジュールに従ってキーをローテーションします。
  • 職務を分離します。DBAがマスターキーも保持することのないようにします。

全体を組み合わせる

保存データを保護する多層モデルは次のとおりです。

  • すべての接続を認証します(TLSと強力な認証情報)。
  • RBACと最小権限によって認可します。
  • きめ細かな制御が必要な場合は、RLSや列レベルのセキュリティを適用します。
  • 保存時の暗号化(TDE)を適用し、機密性の高い列は個別に暗号化します。
  • データベースとは分離したKMSでキーを管理します。

簡単な確認

それぞれの対策が何から保護するのかを考えてみましょう。

まとめ

保存データは、アクセス制御と暗号化を組み合わせて保護します。

  • 認証と認可を区別します。
  • 最小権限とRBACを適用し、必要に応じて行レベルや列レベルのセキュリティも適用します。
  • 保存時(TDE、列レベル)と通信中(TLS)のデータを暗号化します。
  • KMSでキーを分離して管理し、ローテーションします。

よくある質問

「アクセス制御と暗号化」レッスンは無料ですか?

はい。「アクセス制御と暗号化」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Cyber Security Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Cyber Security Academyコースには全4レッスンが含まれています。

「アクセス制御と暗号化」で何を学びますか?

保存データを保護します ブラウザで直接実行するハンズオンコードでCyber Security Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Cyber Security Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCyber Security Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「アクセス制御と暗号化」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCyber Security Academyレッスンでコードを書いて実行できますか?

はい。すべてのCyber Security Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. SQLインジェクション対策
  2. アクセス制御と暗号化
  3. 監査とモニタリング
  4. バックアップと復旧のセキュリティ
← Cyber Security Academyに戻る