0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS DEA】Domain4: Data Security and Governance 学習ノート

0
Posted at

はじめに

この記事は、AWS Certified Data Engineer - Associate(DEA-C01)の学習ノートです。

Domain 4「Data Security and Governance(データセキュリティとガバナンス)」は、試験全体の18% を占める重要な分野です。データエンジニアが構築・維持するシステムのセキュリティについて学びます。

データパイプラインを構築する際、データが「誰に」「どのように」アクセスされるかを適切に制御することは、ビジネスの継続性とコンプライアンス遵守のために不可欠です。

自分の学習用にまとめたものですが、同じくDEAを目指す方の参考になれば幸いです。

このドメインで学ぶこと

+----------------------------------------------------------+
|              Domain 4: Data Security and Governance      |
+----------------------------------------------------------+
|                                                          |
|  +------------------+    +------------------+            |
|  | Task 4.1         |    | Task 4.2         |            |
|  | 認証メカニズム     |    | 認可メカニズム      |            |
|  | (Authentication) |    | (Authorization)  |            |
|  +------------------+    +------------------+            |
|           |                      |                       |
|           v                      v                       |
|  +------------------+    +------------------+            |
|  | Task 4.3         |    | Task 4.4         |            |
|  | データ暗号化       |    | 監査ログ           |            |
|  | マスキング         |    | (Audit Logs)     |            |
|  +------------------+    +------------------+            |
|           |                      |                       |
|           +----------+-----------+                       |
|                      |                                   |
|                      v                                   |
|           +------------------+                           |
|           | Task 4.5         |                           |
|           | データプライバシー  |                           |
|           | ガバナンス         |                           |
|           +------------------+                           |
+----------------------------------------------------------+

認証と認可の基礎概念

認証(Authentication)と認可(Authorization)の違い

セキュリティを理解する上で最も重要な基礎概念です。

概念 英語 意味 例え 確認すること
認証 Authentication ユーザーの本人確認 「あなたは誰?」 IDとパスワード、証明書
認可 Authorization アクセス許可の制御 「何ができる?」 権限、ポリシー

認証と認可の流れ

なぜこの区別が重要なのか?

認証が成功しても、認可がなければリソースにアクセスできません。逆に言えば、正しいユーザーであることが確認できても(認証)、そのユーザーに必要な権限がなければ(認可)、操作は拒否されます。これにより、最小権限の原則を実現できます。

Task 4.1: 認証メカニズムの適用

1 AWSにおける認証方法

AWSでは複数の認証方法がサポートされています。

認証方法 説明 ユースケース セキュリティレベル
パスワードベース ID/パスワードによる認証 AWSコンソールログイン 中(MFA推奨)
証明書ベース SSL/TLS証明書による認証 IoTデバイス、API通信
ロールベース IAMロールを引き受けて認証 サービス間連携、クロスアカウント

2 AWS Identity and Access Management(IAM)

IAMは、AWSリソースへのアクセスを安全にコントロールするための中心的なサービスです。

IAMの主要コンポーネント

+-------------------------------------------------------------------+
|                         AWS IAM                                   |
+-------------------------------------------------------------------+
|                                                                   |
|  +--------------+   +--------------+   +------------------+       |
|  | IAMユーザー   |   | IAMグループ    |   | IAMロール         |       |
|  | (User)       |   | (Group)      |   | (Role)           |       |
|  +--------------+   +--------------+   +------------------+       |
|  | ・1人/1アプリ  |   | ・複数ユーザー |   | ・誰でも引受可能    |       |
|  | ・永続的認証情報|   |   をまとめる  |   | ・一時的認証情報    |       |
|  +--------------+   +--------------+   +------------------+       |
|         |                  |                    |                 |
|         +------------------+--------------------+                 |
|                            |                                      |
|                            v                                      |
|                   +------------------+                            |
|                   | IAMポリシー       |                            |
|                   | (Policy)         |                            |
|                   +------------------+                            |
|                   | 誰が何をできるかを  |                            |
|                   | JSON形式で定義     |                            |
|                   +------------------+                            |
+-------------------------------------------------------------------+

IAMユーザーとIAMロールの違い

項目 IAMユーザー IAMロール
対象 1人の特定人物/アプリ 必要な人なら誰でも
認証情報 永続的(長期) 一時的(短期)
用途 日常的なアクセス 一時的なアクセス、サービス間連携
クロスアカウント 不向き 最適

なぜIAMロールを使うのか?

IAMロールは一時的な認証情報を提供するため、認証情報が漏洩した場合のリスクを軽減できます。また、AWSサービス間の連携では、IAMロールを使うことでサービスに適切な権限を付与できます。

3 IAMポリシーの種類

ポリシーの種類と適用範囲

+------------------+     +------------------+     +------------------+
| AWS管理ポリシー    |     | カスタマー管理     |      | インラインポリシー |
| (AWS Managed)    |     | ポリシー          |      | (Inline)        |
+------------------+     +------------------+     +------------------+
| ・AWSが作成/管理   |     | ・お客様が作成     |      | ・1つのエンティティ|
| ・変更不可         |     | ・再利用可能      |      |   専用           |
| ・汎用的な権限     |     | ・カスタマイズ可    |     | ・削除時に消える   |
+------------------+     +------------------+     +------------------+
        |                       |                       |
        v                       v                       v
   ReadOnlyAccess等        独自の要件に対応            厳密な1対1の関係
ポリシー種類 作成者 変更可否 再利用 推奨ユースケース
AWS管理ポリシー AWS 不可 一般的な権限付与
カスタマー管理ポリシー お客様 組織固有の要件
インラインポリシー お客様 不可 特定エンティティ専用

4 IAMロールの信頼ポリシーとアクセス許可ポリシー

IAMロールには2種類のポリシーが必要です。これを理解することは試験で非常に重要です。

IAMロールに必要な2つのポリシー

+------------------------------------------------------------------+
|                        IAMロール                                  |
+------------------------------------------------------------------+
|                                                                  |
|  +-------------------------+    +---------------------------+    |
|  | 信頼ポリシー              |    | アクセス許可ポリシー         |    |
|  | (Trust Policy)          |    | (Permission Policy)       |    |
|  +-------------------------+    +---------------------------+    |
|  | 「誰がこのロールを         |    | 「このロールを引き受けた      |    |
|  |   引き受けられるか」       |    |   人が何をできるか」         |    |
|  +-------------------------+    +---------------------------+    |
|           |                              |                       |
|           v                              v                       |
|      EC2, Lambda,                  S3へのアクセス,                 |
|      他アカウントのIAMユーザー等      DynamoDBへの読み書き等           |
+------------------------------------------------------------------+

試験対策ポイント:ロールを使用するには、信頼ポリシーで「誰が」、アクセス許可ポリシーで「何を」を両方定義する必要があります。

5 サービスロールとサービスにリンクされたロール

ロール種類 説明
サービスロール AWSサービスがユーザーに代わってアクションを実行するためのロール Lambda実行ロール
サービスにリンクされたロール 特定のAWSサービスに直接リンクされた事前定義ロール Organizations用ロール

6 フェデレーション(ID連携)

社内のActive DirectoryやOktaなどの外部IDプロバイダーを使って、AWSにログインする仕組みです。

なぜフェデレーションが必要なのか?

  • 社員ごとにIAMユーザーを作成・管理する手間を削減
  • 社内の既存認証基盤を活用できる
  • 退職時に社内アカウントを無効化すれば、AWSアクセスも自動的に停止

7 AWS Certificate Manager(ACM)

ACMは、SSL/TLS証明書を作成・管理するサービスです。

機能 説明
証明書発行 パブリック/プライベート証明書を発行
自動更新 有効期限前に自動更新
AWS統合 ELB、CloudFront、API Gatewayと統合

8 AWS Secrets Manager

アプリケーションがデータベースや他のサービスにアクセスする際に必要な認証情報(パスワード、APIキーなど)を安全に管理します。

Secrets Managerの主要機能

+--------------------------------------------------------------------+
|                    AWS Secrets Manager                             |
+--------------------------------------------------------------------+
|                                                                    |
|  +------------------+  +------------------+  +------------------+  |
|  | シークレット保存    |  | 自動ローテーション  |  | IAM統合          |  |
|  +------------------+  +------------------+  +------------------+  |
|  | ・パスワード       |  | ・RDS            |  | ・細かいアクセス    |  |
|  | ・APIキー         |  | ・Redshift       |  |  制御             |  |
|  | ・接続文字列       |  | ・DocumentDB     |  | ・KMS暗号化        |  |
|  +------------------+  +------------------+  +------------------+  |
+--------------------------------------------------------------------+
機能 説明 メリット
シークレット保存 認証情報を暗号化して保存 コード内にパスワードを書かない
自動ローテーション 定期的にパスワードを自動変更 セキュリティ強化、運用負荷軽減
IAM/KMS統合 アクセス制御と暗号化 きめ細かい権限管理

Secrets Manager vs Parameter Store

項目 Secrets Manager Parameter Store
自動ローテーション あり なし
料金 有料 無料枠あり
用途 機密情報専用 設定値全般

試験対策ポイント:認証情報の自動ローテーションが必要な場合はSecrets Managerを選択します。

9 マネージドサービスとアンマネージドサービスの違い

AWSサービスを選択する際、セキュリティの観点から「誰が何を管理するか」を理解することが重要です。

項目 マネージドサービス アンマネージドサービス
インフラ管理 AWSが管理 お客様が管理
パッチ適用 AWSが自動適用 お客様が手動適用
スケーリング 自動または簡単に設定 手動で設定
セキュリティ責任 共有(AWS側の責任大) 共有(お客様側の責任大)
RDS, Redshift, Glue EC2上のDB, EMRクラスター
責任共有モデル

+------------------------------------------------------------------+
|                        セキュリティの責任                           |
+------------------------------------------------------------------+
|                                                                  |
|  マネージドサービス(例:RDS)                                       |
|  +---------------------------+---------------------------+       |
|  |      AWS の責任            |     お客様の責任            |       |
|  +---------------------------+---------------------------+       |
|  | ・OS パッチ適用             | ・IAM 設定                 |       |
|  | ・DB エンジンのパッチ        | ・セキュリティグループ        |       |
|  | ・ハードウェア管理           | ・暗号化の有効化             |       |
|  | ・物理セキュリティ           | ・バックアップ設定           |       |
|  +---------------------------+---------------------------+       |
|                                                                  |
|  アンマネージドサービス(例:EC2上のDB)                               |
|  +---------------------------+---------------------------+       |
|  |      AWS の責任            |     お客様の責任            |       |
|  +---------------------------+---------------------------+       |
|  | ・ハードウェア管理           | ・OS パッチ適用             |       |
|  | ・物理セキュリティ           | ・DB インストール/設定       |       |
|  | ・ネットワークインフラ        | ・セキュリティグループ        |       |
|  |                           | ・暗号化設定                |       |
|  |                           | ・バックアップ管理           |       |
|  +---------------------------+---------------------------+       |
+------------------------------------------------------------------+

なぜこの違いが重要なのか?

  • マネージドサービスを選択すると、セキュリティの運用負荷を軽減できる
  • ただし、IAM設定やネットワーク設定はお客様の責任のまま
  • 試験では、適切なサービス選択とセキュリティ責任の理解が問われる

10 VPCセキュリティの基礎

データパイプラインをサポートするVPC内のネットワークトラフィックを制御する方法を理解することも重要です。

コンポーネント 機能 レベル
セキュリティグループ ステートフルなファイアウォール インスタンスレベル
ネットワークACL ステートレスなファイアウォール サブネットレベル
VPCエンドポイント プライベート接続 サービスレベル

セキュリティグループとネットワークACLの比較

項目 セキュリティグループ ネットワークACL
適用レベル インスタンス(ENI) サブネット
ステート ステートフル(戻りトラフィック自動許可) ステートレス(明示的なルール必要)
ルール 許可ルールのみ 許可・拒否ルール
評価順序 すべてのルールを評価 番号順に評価
デフォルト すべてのアウトバウンド許可 すべて許可

11 S3 Access PointsへのIAMポリシー適用

S3 Access Pointsは、S3バケットへのアクセスを簡素化・制御するための機能です。大規模な共有データセットに対して、アプリケーションごとに異なるアクセス許可を設定できます。

S3 Access Pointsの仕組み

+------------------------------------------------------------------+
|                                                                  |
|   アプリA      アプリB       アプリC                                |
|      |           |           |                                   |
|      v           v           v                                   |
|  +--------+  +--------+  +--------+                              |
|  | Access |  | Access |  | Access |   ← アプリごとに異なる          |
|  | Point  |  | Point  |  | Point  |     アクセス許可を設定          |
|  |   A    |  |   B    |  |   C    |                              |
|  +--------+  +--------+  +--------+                              |
|      |           |           |                                   |
|      +-----+-----+-----+-----+                                   |
|            |                                                     |
|            v                                                     |
|      +------------+                                              |
|      | S3 バケット |                                              |
|      +------------+                                              |
+------------------------------------------------------------------+

Access Pointポリシーの重要なポイント

アクセスを許可するには、Access Pointポリシーバケットポリシー両方で許可が必要です。

Access Pointとバケットポリシーの関係

+------------------+        +------------------+
| Access Point     |        | バケットポリシー    |
| ポリシー          |   AND  |                   |
| (アクセス許可)   |        | (アクセス許可)     |
+------------------+        +------------------+
         |                          |
         +------------+-------------+
                      |
                      v
               アクセス許可が有効

バケットポリシーでAccess Pointに委任する例

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": {"AWS": "*"},
    "Action": "s3:*",
    "Resource": ["arn:aws:s3:::my-bucket", "arn:aws:s3:::my-bucket/*"],
    "Condition": {
      "StringEquals": {
        "s3:DataAccessPointAccount": "123456789012"
      }
    }
  }]
}

この設定により、指定したアカウントのAccess Pointにアクセス制御を委任できます。

12 AWS PrivateLinkへのIAMポリシー適用

AWS PrivateLinkは、VPCとAWSサービス(またはVPCエンドポイントサービス)間のプライベート接続を提供します。

AWS PrivateLinkの仕組み

+-------------------------------------------------------------------+
|  お客様VPC                                                         |
|  +---------------------------+                                    |
|  |                           |                                    |
|  |  +-------------------+    |                                    |
|  |  | EC2 / Lambda      |    |                                    |
|  |  +-------------------+    |                                    |
|  |           |               |                                    |
|  |           v               |                                    |
|  |  +-------------------+    |      +-------------------+         |
|  |  | VPC Endpoint      |----+----->| AWS サービス       |         |
|  |  | (Interface)       |    |      | (S3, KMS等)       |         |
|  |  +-------------------+    |      +-------------------+         |
|  |                           |                                    |
|  +---------------------------+                                    |
|                                                                   |
|  ※ トラフィックはAWSネットワーク内を通過                               |
|  ※ インターネットを経由しない                                         |
+-------------------------------------------------------------------+

VPCエンドポイントポリシー

VPCエンドポイントには、エンドポイント経由のアクセスを制御するポリシーをアタッチできます。

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": "*",
    "Action": [
      "ec2:CreateVpcEndpoint",
      "ec2:ModifyVpcEndpoint",
      "ec2:DescribeVpcEndpoints",
      "ec2:DeleteVpcEndpoints"
    ],
    "Resource": "*"
  }]
}

プライベートDNS名の条件キー

特定のプライベートDNS名を持つVPCエンドポイントのみ作成を許可する場合:

{
  "Condition": {
    "StringEquals": {
      "ec2:VpceServicePrivateDnsName": "my-service.example.com"
    }
  }
}

なぜPrivateLinkが重要なのか?

  • データがインターネットを経由しないため、セキュリティが向上
  • NATゲートウェイやインターネットゲートウェイが不要
  • データエンジニアリングでは、S3やKMSへのプライベートアクセスに使用

Task 4.2: 認可メカニズムの適用

1 認可の目的

認可の目的は、認証済みプリンシパルが最小権限で対象リソースにアクセスできるようにすることです。

2 最小権限の原則(Principle of Least Privilege)

定義:ユーザーやサービスに対して、タスクを実行するために必要な最小限の権限のみを付与する原則。

最小権限の原則

悪い例(過剰な権限):
+--------------------------------------------------+
| {                                                |
|   "Effect": "Allow",                             |
|   "Action": "s3:*",           ← すべての操作を許可  |
|   "Resource": "*"             ← すべてのリソース    |
| }                                                |
+--------------------------------------------------+

良い例(最小権限):
+--------------------------------------------------+
| {                                                |
|   "Effect": "Allow",                             |
|   "Action": "s3:GetObject",   ← 必要な操作のみ     |
|   "Resource": "arn:aws:s3:::my-bucket/data/*"    |
|                               ↑ 特定リソースのみ    |
| }                                                |
+--------------------------------------------------+

なぜ最小権限が重要なのか?

  • セキュリティ侵害時の被害を最小限に抑える
  • 誤操作によるデータ損失を防ぐ
  • コンプライアンス要件を満たす

3 RBAC(ロールベースアクセスコントロール)とABAC(属性ベースアクセスコントロール)

方式 説明 メリット デメリット
RBAC ロール(役割)に基づいてアクセスを制御 管理が容易 複雑なビジネスロジックに不向き
ABAC 属性(タグ)に基づいてアクセスを制御 柔軟で動的 初期設定が複雑
RBACの例:

+----------------+     +------------------+     +----------------+
| デベロッパー     | --> | DevRole          | --> | 開発環境のみ     |
| ロール          |     |                  |     | アクセス可能     |
+----------------+     +------------------+     +----------------+

ABACの例:

+----------------+     +------------------+     +----------------+
| ユーザーA       | --> | access-project   | --> | project=Heart  |
| (タグ: Heart)  |     | = Heart          |     | のリソースのみ    |
+----------------+     +------------------+     +----------------+

試験対策ポイント:大量のリソースを少数のポリシーで管理したい場合はABACが有効です。

4 AWS Lake Formationによるアクセス制御

Lake Formationは、データレイク内のデータに対するきめ細かいアクセス制御を一元管理します。

Lake Formationのアクセス制御レベル

レベル 説明 ユースケース
データベースレベル データベース全体へのアクセス 部門別のデータベース分離
テーブルレベル テーブル単位のアクセス テーブル別の権限管理
列レベル 特定列へのアクセス制限 機密情報の列を非表示
行レベル 特定行へのアクセス制限 ユーザー別データフィルタ
セルレベル 行×列の組み合わせ 最も細かい制御
Lake Formationのデータフィルター

+------------------------------------------------------------------+
|                      顧客テーブル                                  |
+------------------------------------------------------------------+
| ID  | 名前    | メール               | 電話番号      | 地域          |
+------------------------------------------------------------------+
| 001 | 田中    | tanaka@example.com  | 03-xxxx-xxxx | 東京         |
| 002 | 鈴木    | suzuki@example.com  | 06-xxxx-xxxx | 大阪         |
| 003 | 佐藤    | sato@example.com    | 052-xxx-xxxx | 名古屋       |
+------------------------------------------------------------------+

行フィルター(地域='東京')適用後:
+------------------------------------------------------------------+
| ID  | 名前    | メール               | 電話番号       | 地域         |
+------------------------------------------------------------------+
| 001 | 田中    | tanaka@example.com  | 03-xxxx-xxxx | 東京         |
+------------------------------------------------------------------+

列フィルター(電話番号を除外)適用後:
+------------------------------------------------------------------+
| ID  | 名前    | メール               | 地域                        |
+------------------------------------------------------------------+
| 001 | 田中    | tanaka@example.com  | 東京                        |
+------------------------------------------------------------------+

LF-TBAC(タグベースアクセスコントロール)

Lake FormationのLFタグを使用すると、数百・数千のデータベースアクセス許可を効率的に管理できます。

特徴 説明
スケーラブル 数千のリソースを少数のタグで管理
柔軟 タグをデータベース、テーブル、列に添付可能
統合 Athena、EMR、Glue ETL、Redshift Spectrumと連携

注意:LFタグは行には直接添付できません。行レベルの制御にはデータフィルターを使用します。

5 Amazon Redshiftのアクセス制御

Redshiftのユーザー階層

+------------------------------------------------------------------+
|                     Redshiftクラスター                            |
+------------------------------------------------------------------+
|                                                                  |
|  +------------------+                                            |
|  | スーパーユーザー   |  ← すべてのDBの所有者権限                     |
|  +------------------+                                            |
|          |                                                       |
|          v                                                       |
|  +------------------+  +------------------+                      |
|  | 一般ユーザー       |  | 一般ユーザー      |                       |
|  +------------------+  +------------------+                      |
|          |                      |                                |
|          v                      v                                |
|  +------------------+  +------------------+                      |
|  | ロール(権限)    |   | グループ(権限)  |                       |
|  +------------------+  +------------------+                      |
+------------------------------------------------------------------+

Redshiftでの権限管理コマンド

コマンド 説明
CREATE USER ユーザー作成
CREATE ROLE ロール作成
GRANT 権限付与
REVOKE 権限取り消し

Task 4.3: データ暗号化とマスキング

1 暗号化の基礎

保管中の暗号化(Encryption at Rest)と転送中の暗号化(Encryption in Transit)

種類 対象 方法
保管中の暗号化 ストレージに保存されたデータ KMS、SSE
転送中の暗号化 ネットワーク上を移動するデータ TLS/SSL
データのライフサイクルと暗号化

+----------+        +------------+        +----------+
| データ    | -----> | ネットワーク| -----> | ストレージ |
| (送信元)  |        | (転送中)   |        | (保管中)  |
+----------+        +------------+        +----------+
                          |                     |
                          v                     v
                    TLS/SSL暗号化          KMS/SSE暗号化

2 AWS Key Management Service(KMS)

KMSは、データを暗号化するための暗号化キーを作成・管理するサービスです。

KMSキーの種類

キー種類 管理者 ユースケース コスト
AWS管理キー AWS デフォルト暗号化 無料
カスタマー管理キー(CMK) お客様 カスタム要件 有料
カスタマー提供キー お客様 独自キー使用 有料

KMSの主要機能

機能 説明
キー作成 対称/非対称キーの作成
自動ローテーション 年1回の自動キーローテーション
CloudTrail統合 キー使用状況の監査ログ
クロスアカウント 他アカウントとのキー共有

試験対策ポイント:AWS Glue Data Catalogの暗号化には対称キーのみ対応しています。非対称キーは使用できません。

クロスアカウント境界での暗号化設定

複数のAWSアカウント間でデータを共有する場合、暗号化キーのアクセス許可も適切に設定する必要があります。

クロスアカウント暗号化の仕組み

+------------------------------------------------------------------+
|                                                                  |
|  アカウントA(データ所有者)        アカウントB(データ利用者)           |
|  +------------------+              +------------------+          |
|  | S3バケット        |             | アプリケーション   |           |
|  | (暗号化データ)    |<-------------| (データ読み取り)   |          |
|  +------------------+              +------------------+          |
|          |                                  |                    |
|          v                                  v                    |
|  +------------------+              +------------------+          |
|  | KMS キー         |<------------- | IAMロール        |          |
|  | (キーポリシー)    |  キー使用許可   | (アカウントB)    |          |
|  +------------------+              +------------------+          |
|                                                                  |
+------------------------------------------------------------------+

クロスアカウントKMSキー使用に必要な設定

設定場所 必要な設定
KMSキーポリシー(アカウントA) アカウントBのIAMロールにkms:Decrypt等を許可
IAMポリシー(アカウントB) アカウントAのKMSキーへのアクセスを許可
S3バケットポリシー(アカウントA) アカウントBからのGetObject等を許可

KMSキーポリシーの例(クロスアカウント許可)

{
  "Sid": "Allow use of the key from Account B",
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::ACCOUNT-B-ID:role/DataAccessRole"
  },
  "Action": [
    "kms:Decrypt",
    "kms:DescribeKey"
  ],
  "Resource": "*"
}

なぜクロスアカウント設定が重要なのか?

  • 組織内の複数チーム/部門がデータを共有する場合に必要
  • データレイクアーキテクチャでは、中央のデータアカウントから各分析アカウントへのアクセスを許可
  • Lake Formationと組み合わせて、きめ細かいクロスアカウントアクセス制御が可能

3 S3の暗号化オプション

S3には複数の暗号化方式があり、要件に応じて選択します。

暗号化方式 キー管理 特徴 ユースケース
SSE-S3 AWS 最も簡単、追加料金なし デフォルト暗号化
SSE-KMS AWS/お客様 監査、アクセス制御が可能 コンプライアンス要件
SSE-C お客様 独自キーを使用 独自キー管理が必須の場合
DSSE-KMS AWS/お客様 2層の暗号化 高度なコンプライアンス
クライアント側暗号化 お客様 クライアントで暗号化 エンドツーエンド暗号化
暗号化方式の選択フローチャート

                        暗号化が必要?
                             |
                +------------+------------+
                |                         |
               Yes                        No
                |                         |
          キー管理が必要?                 SSE-S3
                |
       +--------+--------+
       |                 |
      Yes               No
       |                 |
    独自キー?         SSE-KMS
       |
   +---+-----+
   |         |
  Yes        No
   |         |
SSE-C     SSE-KMS

※2層暗号化が必要な場合 → DSSE-KMS

重要な制限事項

制限事項 説明
SSE-C + Redshift COPY Redshift COPYコマンドはSSE-Cをサポートしない
DSSE-KMS 2層暗号化が必要なコンプライアンス要件向け

4 AWS CloudHSM

CloudHSMは、専用のハードウェアセキュリティモジュール(HSM)を提供するサービスです。

項目 KMS CloudHSM
管理 AWS管理 お客様管理
ハードウェア 共有 専用
コンプライアンス FIPS 140-2 Level 2 FIPS 140-2 Level 3
用途 一般的な暗号化 厳格な規制要件

5 データマスキングとトークナイゼーション

用語の整理

技術 説明 可逆性 ユースケース
暗号化 アルゴリズムでデータを変換 可逆(キーあり) データ保護全般
トークナイゼーション ランダムなトークンに置換 可逆(ボールト参照) クレジットカード番号
データマスキング 値を変更して難読化 不可逆 テスト環境、レポート
データ匿名化 個人識別情報を削除 不可逆 統計分析
キーソルティング ハッシュにランダムデータを追加 不可逆 パスワード保護
トークナイゼーションの仕組み

+------------------+        +------------------+        +------------------+
| アプリケーション   | -----> | トークンボールト   | -----> | 暗号化データベース  |
|                  |        | (トークン化)      |        | (実データ保存)     |
+------------------+        +------------------+        +------------------+
        |                          |                          |
        v                          v                          v
  4532-xxxx-1234              TKN_ABC123                 暗号化された
  (クレジットカード)             (トークン)                  実際のカード番号

Amazon Redshiftの動的データマスキング(DDM)

Redshiftでは、クエリ時にデータを動的にマスキングできます。

特徴 説明
クエリ時マスキング 元データを変更せずにマスク
ロール別設定 ロールごとに異なるマスクを適用
列レベル 特定の列にマスキングを適用
セルレベル 条件付きでセルレベルのマスキング

6 各サービスの暗号化対応

サービス 保管中の暗号化 転送中の暗号化 備考
S3 SSE-S3/KMS/C, DSSE-KMS HTTPS デフォルト暗号化推奨
Redshift KMS/CloudHSM SSL クラスターレベル
DynamoDB KMS HTTPS テーブルレベル
EMR EBS暗号化、LUKS TLS セキュリティ設定で管理
Glue KMS TLS Data Catalog暗号化
RDS KMS SSL/TLS インスタンスレベル

Task 4.4: 監査用ログの準備

1 ログの重要性

ログは以下の目的で必要です:

  • コンプライアンス:HIPAA、PCIなどの規制要件
  • セキュリティ監査:不正アクセスの検出
  • トラブルシューティング:問題の原因特定
  • 運用改善:パフォーマンス分析

2 AWS CloudTrail

CloudTrailは、AWSアカウント内のすべてのAPI呼び出しを記録するサービスです。

CloudTrailの仕組み

+------------------+        +------------------+        +------------------+
| ユーザー/サービス   | -----> | AWS API          | -----> | CloudTrail       |
| (API呼び出し)     |        |                  |        | (ログ記録)         |
+------------------+        +------------------+        +------------------+
                                                               |
                           +-----------------------------------+
                           |               |                   |
                           v               v                   v
                    +----------+    +-----------+    +------------------+
                    | S3       |    | CloudWatch|    | CloudTrail Lake  |
                    | バケット  |    | Logs      |    | (SQLクエリ)       |
                    +----------+    +-----------+    +------------------+

CloudTrailのイベントタイプ

イベント種類 説明
管理イベント リソースに対する管理操作 CreateBucket, DeleteTable
データイベント データに対する操作 GetObject, PutItem
インサイトイベント 異常なAPI活動を検出 急激なAPI呼び出し増加

CloudTrail Lake

CloudTrail Lakeは、CloudTrailイベントをSQLでクエリできる機能です。

特徴 説明
SQLクエリ 標準SQLでイベントを分析
クロスアカウント 複数アカウントのイベントを一元管理
JOIN対応 複数のイベントデータストアをJOIN
長期保存 最大7年間のデータ保持

試験対策ポイント:CloudTrail LakeはQuickSightのデータソースとして直接使用できません。QuickSightでレポートを作成する場合は、CloudTrail→S3→Athena→QuickSightの構成が必要です。

3 Amazon CloudWatch Logs

CloudWatch Logsは、アプリケーションやAWSサービスのログを収集・保存・分析するサービスです。

CloudWatch Logsの構造

+------------------------------------------------------------------+
|                     CloudWatch Logs                              |
+------------------------------------------------------------------+
|                                                                  |
|  +---------------------------+                                   |
|  | ロググループ                |  ← ログの論理的なコンテナ             |
|  | (Log Group)               |                                   |
|  +---------------------------+                                   |
|           |                                                      |
|           v                                                      |
|  +-------------+  +-------------+  +-------------+               |
|  | ログストリーム|  | ログストリーム |  | ログストリーム|               |
|  | (Stream 1)  |  | (Stream 2)  |  | (Stream 3)  |               |
|  +-------------+  +-------------+  +-------------+               |
|           |              |              |                        |
|           v              v              v                        |
|        ログイベント    ログイベント    ログイベント                    |
+------------------------------------------------------------------+

ログ保持ポリシー

設定 説明
デフォルト 無期限保持
カスタム 1日〜10年の保持期間を設定可能
コスト最適化 古いログをS3に移動

4 CloudWatch Logs Insights

CloudWatch Logs Insightsは、ログデータをインタラクティブに検索・分析する機能です。

特徴 説明
クエリ言語 専用のクエリ言語を使用
自動フィールド検出 JSONログのフィールドを自動認識
可視化 クエリ結果をグラフ化

試験対策ポイント:AWS WAFログの分析にはCloudWatch Logs Insightsが最適です。

5 Amazon Athena CloudWatchコネクタ

AthenaからCloudWatch Logsに対してSQLクエリを実行できます。

Athena CloudWatchコネクタのマッピング

CloudWatch            Athena
+--------------+      +--------------+
| Log Group    | ---> | Schema       |
+--------------+      +--------------+
| Log Stream   | ---> | Table        |
+--------------+      +--------------+
| all_log_     | ---> | View         |
| streams      |      | (全ストリーム) |
+--------------+      +--------------+

6 Amazon EMRのログ管理

ログの種類 保存場所 用途
ステップログ S3(設定時) ジョブのデバッグ
アプリケーションログ プライマリノード 詳細なデバッグ
CloudTrailログ S3 API呼び出しの監査

7 Amazon OpenSearch Serviceでのログ分析

大量のログデータを分析する場合、Amazon OpenSearch Service(旧Amazon Elasticsearch Service)が有効です。

OpenSearch Serviceを使用したログ分析アーキテクチャ

+------------------+        +------------------+        +------------------+
| ログソース         | -----> | Kinesis Data     | -----> | OpenSearch       |
| (CloudWatch,     |        | Firehose         |        | Service          |
|  アプリログ等)     |        |                  |        |                  |
+------------------+        +------------------+        +------------------+
                                                               |
                                                               v
                                                        +------------------+
                                                        | OpenSearch       |
                                                        | Dashboards       |
                                                        | (可視化)          |
                                                        +------------------+
特徴 説明
全文検索 ログメッセージ内のキーワード検索
リアルタイム分析 ストリーミングデータの即座の分析
可視化 OpenSearch Dashboardsでダッシュボード作成
スケーラビリティ 大量のログデータに対応

ログ分析ツールの使い分け

シナリオ 推奨ツール 理由
CloudWatch Logsの簡単なクエリ CloudWatch Logs Insights 設定不要、即座に使用可能
CloudTrailイベントのSQL分析 CloudTrail Lake ネイティブ統合、運用オーバーヘッド最小
S3に保存されたログのアドホッククエリ Athena サーバーレス、従量課金
大量ログのリアルタイム分析と可視化 OpenSearch Service 全文検索、ダッシュボード
大量ログのバッチ分析 EMR 大規模データ処理に最適

Task 4.5: データプライバシーとガバナンス

1 個人識別情報(PII)の保護

PII(Personally Identifiable Information)は、個人を特定できる情報です。

PIIの例 説明
氏名 個人を直接特定
メールアドレス 連絡先情報
電話番号 連絡先情報
住所 所在地情報
社会保障番号 政府発行ID
クレジットカード番号 金融情報

2 Amazon Macie

MacieはS3バケット内の機密データを自動検出するサービスです。

検出可能なデータ
PII 氏名、住所、電話番号
金融データ クレジットカード番号
認証情報 APIキー、パスワード
カスタムデータ 独自のパターン定義可能

3 AWS Glue Detect PII変換

AWS Glueには、ETL処理中にPIIを検出・処理する組み込み機能があります。

機能 説明
PII検出 組み込みのPIIパターンで検出
マスキング 検出したPIIをマスク
リダクション 検出したPIIを削除

試験対策ポイント:PII検出には、カスタムLambdaよりもAWS Glue Detect PII変換を使用する方が、運用オーバーヘッドが少なくなります。

4 データ主権(Data Sovereignty)

データ主権とは、データが保存されている国や地域の法律に従う必要があるという概念です。

データ主権の考慮事項

+------------------------------------------------------------------+
|                         データ主権                                 |
+------------------------------------------------------------------+
|                                                                  |
|  +------------------+    +------------------+                    |
|  | リージョン制限     |    | バックアップ制限    |                    |
|  +------------------+    +------------------+                    |
|  | 特定リージョンのみ  |    | 許可されたリージョン|                    |
|  | でのデータ保存     |    | のみへのバックアップ|                     |
|  +------------------+    +------------------+                    |
|                                                                  |
|  +------------------+    +------------------+                    |
|  | レプリケーション   |    | データ転送         |                    |
|  | 制限             |    | 制限              |                    |
|  +------------------+    +------------------+                    |
|  | クロスリージョン   |    | 国境を越えた        |                    |
|  | レプリケーション   |    | データ移動の制限     |                    |
|  | の禁止/許可       |    |                   |                    |
|  +------------------+    +------------------+                    |
+------------------------------------------------------------------+

実装方法

方法 説明
S3バケットポリシー 特定リージョンのみへのアクセス制限
SCP(サービスコントロールポリシー) 組織レベルでのリージョン制限
AWS Config 設定変更の監視
AWS Backup バックアップ先リージョンの制御

5 AWS Config

AWS Configは、AWSリソースの設定変更を追跡するサービスです。

AWS Configの動作

+------------------+        +------------------+        +------------------+
| リソース設定変更    | -----> | AWS Config       | -----> | 設定項目          |
| (VPC, S3等)       |        | (変更検出)        |        | (Configuration   |
+------------------+        +------------------+        |  Item)           |
                                   |                    +------------------+
                                   v
                           +------------------+
                           | Configルール      |
                           | (評価・準拠チェック)|
                           +------------------+
                                   |
                                   v
                           +------------------+
                           | 通知/修復アクション |
                           +------------------+
機能 説明
設定履歴 リソースの設定変更履歴を記録
設定スナップショット 特定時点の設定状態を保存
Configルール 設定のコンプライアンスをチェック
修復アクション 非準拠リソースの自動修復

6 AWS Backup

AWS Backupは、複数のAWSサービスにわたるバックアップを一元管理します。

機能 説明
バックアッププラン バックアップの頻度と保持期間を定義
バックアップボールト バックアップの保存先(独自の暗号化キー)
クロスリージョン 別リージョンへのバックアップコピー
クロスアカウント 別アカウントへのバックアップコピー
Audit Manager バックアップコンプライアンスの監査

7 データ共有とガバナンス

Amazon Redshiftデータ共有

Redshiftでは、クラスター間でデータを共有できます。

考慮事項 説明
ユーザー削除制限 データ共有オブジェクトを所有/権限を持つユーザーは削除不可
Lake Formation統合 データ共有へのアクセス許可を一元管理
列レベルアクセス GRANTステートメントで列レベル制御

試験対策:サービス比較と選択基準

1 認証情報管理の選択

シナリオ 推奨サービス 理由
DBパスワードの自動ローテーション Secrets Manager 自動ローテーション機能あり
設定値の保存(機密性低) Parameter Store 無料、シンプル
Lambda環境変数に保存 非推奨 機密情報の保存には不適切

2 暗号化方式の選択

シナリオ 推奨方式 理由
基本的なS3暗号化 SSE-S3 最も簡単
監査・アクセス制御が必要 SSE-KMS CloudTrail統合
2層暗号化が必要 DSSE-KMS コンプライアンス要件
Redshift COPYコマンド SSE-KMS SSE-Cは非対応

3 アクセス制御の選択

シナリオ 推奨方法 理由
S3バケット全体のアクセス制御 IAMポリシー、バケットポリシー 標準的な方法
テーブルの行/列レベル制御 Lake Formationデータフィルター きめ細かい制御
大量リソースの管理 ABAC(タグベース) スケーラブル

4 監査ログ分析の選択

シナリオ 推奨方法 理由
CloudTrailイベントのSQLクエリ CloudTrail Lake 運用オーバーヘッド最小
QuickSightでのレポート作成 CloudTrail→S3→Athena CloudTrail LakeはQuickSight非対応
AWS WAFログの分析 CloudWatch Logs Insights 最適化された分析機能

5 PII検出の選択

シナリオ 推奨方法 理由
S3バケットの機密データ検出 Amazon Macie 自動検出機能
ETL処理中のPII検出 AWS Glue Detect PII変換 組み込み機能
カスタムLambda 非推奨 運用オーバーヘッドが大きい

6 ネットワークセキュリティの選択

シナリオ 推奨方法 理由
VPC内からAWSサービスへのプライベートアクセス VPCエンドポイント(PrivateLink) インターネットを経由しない
複数アプリからS3バケットへの異なるアクセス権限 S3 Access Points アプリごとのポリシー管理が容易
インスタンスレベルのトラフィック制御 セキュリティグループ ステートフル、許可ルールのみ
サブネットレベルのトラフィック制御 ネットワークACL ステートレス、拒否ルールも可能

7 ログ分析ツールの選択

シナリオ 推奨方法 理由
CloudWatch Logsの簡単なクエリ CloudWatch Logs Insights 設定不要、即座に使用可能
CloudTrailイベントのSQL分析 CloudTrail Lake ネイティブ統合
S3のログデータに対するアドホッククエリ Athena サーバーレス、従量課金
大量ログのリアルタイム分析・可視化 OpenSearch Service 全文検索、ダッシュボード
大規模ログのバッチ処理 EMR 大規模データ処理に最適

よくある誤答パターンと正しい理解

誤答パターン 正しい理解
Lambda環境変数に認証情報保存 Secrets Managerを使用する
IAM DB認証 + SQL Server IAM DB認証はMySQL/PostgreSQL/MariaDBのみ
SSE-C + Redshift COPY Redshift COPYはSSE-KMSのみ対応
S3バケットポリシーで行レベル制御 Lake Formationデータフィルターを使用
CloudTrail Lake + QuickSight CloudTrail Lakeは直接接続不可
Glue Data Catalog + 非対称キー Glue Data Catalogは対称キーのみ
Lambda関数で週次キーローテーション KMSの自動ローテーション機能を使用
Access Pointポリシーだけでアクセス許可 バケットポリシーとAccess Pointポリシーの両方で許可が必要
クロスアカウントでKMSキーのIAMポリシーのみ設定 KMSキーポリシーとIAMポリシーの両方で許可が必要
インターネット経由でS3にアクセス(セキュリティ要件あり) VPCエンドポイント(PrivateLink)を使用

まとめ

Domain4はDEA試験の18%を占める重要なドメインです。データパイプラインのセキュリティとガバナンスについて包括的に学びました。

特に押さえておきたいポイントは以下の5つです。

  1. 認証と認可 - IAMの正しい使い方、最小権限の原則
  2. 暗号化 - KMSの各暗号化オプションの使い分け、クロスアカウント設定
  3. アクセス制御 - Lake Formationによるきめ細かい制御、RBAC vs ABAC
  4. 監査 - CloudTrailとCloudWatch Logsの活用、ログ分析ツールの選択
  5. プライバシー - PII検出とデータ主権への対応

この記事が、DEA試験を目指す方の参考になれば幸いです!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?