DEA / ドメイン4 データセキュリティとガバナンス
重要な内容
データのネットワークセキュリティ
データパイプラインの多くは の中で動きます。 ジョブが へ で接続し、 が を読み、 が外部のデータを します。 DEA では、の更新、VPC と による閉じた経路、S3 アクセスポイントとエンドポイントポリシーによる絞り込み、公開する の保護を判断します。
Point
- VPC = Virtual Private Cloud の略で、AWS 上に作る論理的に分離したネットワークです。
- PrivateLink は、インターネットを通さずに VPC から AWS のサービスや他社のサービスへ私的に接続する技術です。インターフェイスエンドポイントはこれを使います。
- NAT = Network Address Translation の略で、プライベートサブネットからインターネットへ出るための装置です。
- 和訳
- Endpoint: 終点、接続口
- Weblio英和辞書「endpoint」
概要
ネットワークの制御は「どこから来た通信を通すか」を決めます。 が「誰か」を見るのに対し、ネットワークは「経路」を見ます。両方を重ねると、正しい主体が正しい経路から来たときだけデータに届く設計になります。
| 見るポイント | 代表的な判断 |
|---|---|
| 内のリソース同士の通信か | で、相手のセキュリティグループを送信元に指定して許可します。 |
| VPC から AWS のサービスへ出るか | インターネットを通さないなら VPC を使います。 |
| 接続先が送信元の で許可しているか | ゲートウェイの を相手の許可リストに登録します。 |
| 公開する を守るか | 、、 を前に置きます。 |
主要技術
①セキュリティグループの更新 ⚠️ 頻出
は (ネットワークインターフェイス) 単位のなファイアウォールです。許可ルールだけを書き、戻りの通信は自動で通ります。
| 場面 | 設定 |
|---|---|
| ジョブから ・ へ 接続 | Glue 接続に付けるセキュリティグループに、自分自身を送信元とする全 の受信ルール (自己参照ルール) を入れます。DB 側のセキュリティグループでは、Glue のセキュリティグループからのポート (例: PostgreSQL 5432、Redshift 5439) を許可します。 |
| から 内の RDS へ接続 | Lambda に付けたセキュリティグループを、RDS 側の受信ルールの送信元に指定します。 |
| クラスター | EMR が管理するセキュリティグループに加え、追加のセキュリティグループで社内からの や Web UI を許可します。 |
| Redshift への ツールの接続 | BI ツールのサーバーの またはセキュリティグループから 5439 を許可します。 |
送信元に IP 範囲ではなくセキュリティグループを指定すると、相手の台数や IP が変わってもルールを直さずに済みます。 ネットワーク は単位のなルールで、戻りの通信 (エフェメラルポート) も明示的に許可する必要があります。「特定の IP を拒否したい」場合はセキュリティグループではなくネットワーク ACL を使います (セキュリティグループには拒否ルールがありません)。
②VPC エンドポイント (ゲートウェイとインターフェイス)
| 種類 | 対象 | 仕組み | 料金 | 判断ポイント |
|---|---|---|---|---|
| ゲートウェイ | 、 だけ | にプレフィックスリスト宛てのルートを追加します。 | 追加料金なし | 同じの S3・DynamoDB へ、 なしで安く届きます。や他のリージョンからは使えません。 |
| インターフェイスエンドポイント | 多くの AWS サービス (、、、、 など) と S3 | に (プライベート ) を作る の仕組みです。 | 時間とデータ量の料金 | オンプレミスから や 経由で使えます。を付けられます。 |
Glue ジョブや をで動かす場合、S3 へはゲートウェイエンドポイントを使うのが定番です。KMS や Secrets Manager、 Logs を呼ぶ処理なら、それらのインターフェイスエンドポイント (または NAT ゲートウェイ) も必要です。
では、拡張 ルーティング (Enhanced VPC Routing) を有効にすると、 や の通信が VPC を通るようになり、VPC エンドポイントやエンドポイントポリシーで制御できます。
③エンドポイントポリシーとバケットポリシーの組み合わせ ⚠️ 頻出
にはエンドポイントポリシーを付けられます。エンドポイントを通るリクエストは、 ポリシー、ポリシー、エンドポイントポリシーのすべてで許可される必要があります。
| 制御の向き | 書く場所 | 例 |
|---|---|---|
| この VPC から、どのバケットへ行けるか | エンドポイントポリシー | 社内ののバケットだけを許可し、持ち出しを防ぎます。 |
| このバケットへ、どの経路から来てよいか | バケットポリシーの aws:SourceVpce / aws:SourceVpc 条件 | 指定のエンドポイント以外からのアクセスを Deny します。 |
ゲートウェイエンドポイント経由の通信では、送信元はプライベート になるため、バケットポリシーの aws:SourceIp 条件は効きません。VPC 経由を条件にするなら aws:SourceVpce または aws:SourceVpc を使います。
④S3 アクセスポイント
アクセスポイントは、1つのに用途ごとの入り口 (専用のホスト名とポリシー) を作る機能です。 共有のバケットポリシーに、全チームの条件を書き込むと長く複雑になり、バケットポリシーの大きさの上限 (20 KB) にも近づきます。チームごとにアクセスポイントを作り、それぞれのアクセスポイントポリシーで許可するプレフィックスを分けます。
| 機能 | 内容 |
|---|---|
| アクセスポイントポリシー | そのアクセスポイント経由で許可する主体・プレフィックスを書きます。 |
| ネットワークを にする | 指定した VPC からしか使えないアクセスポイントになります。 |
| バケットポリシーからの委任 | バケットポリシーで「自アカウントのアクセスポイント経由なら許可」と委任し、細かい制御をアクセスポイント側へ移します。 |
| アクセスポイント | 複数のバケットへ1つの入り口でアクセスします。 |
⑤AWS PrivateLink によるサービスの公開と接続
は、AWS のサービスだけでなく、自社や他社が の背後で提供するサービスにも使えます。 データの提供側が「サービス」を作り、利用側の にインターフェイスエンドポイントを作ると、なしで、一方向の私的な接続ができます。
| 方式 | 向いている場面 |
|---|---|
| PrivateLink (エンドポイントサービス) | 特定のサービス ( や DB の入り口) だけを別の VPC・アカウントへ公開したい。 が重なっていても使えます。 |
| VPC ピアリング / | VPC 同士のネットワーク全体をつなぎたい。CIDR が重ならないことが必要です。 |
のマルチ VPC プライベート接続や、 のマネージド VPC エンドポイントのように、データ系のサービスにも PrivateLink を使った接続方式があります。
⑥接続元の IP の許可リスト
の やのデータベースが「送信元の を許可リストに登録する」方式の場合、から ゲートウェイを通し、NAT ゲートウェイの を相手へ伝えます。 や ジョブは実行のたびに IP が変わるため、直接インターネットへ出す構成では許可リストに登録できません。
| 要件 | 構成 |
|---|---|
| 外部の API に固定の送信元 IP で接続したい | 内で実行し、NAT ゲートウェイ (Elastic IP) 経由で出ます。 |
| 外部から や へ接続させたい | 相手の固定 IP だけをで許可します。可能なら公開せず や を使います。 |
⑦公開する API の保護 (概要)
データを外部へ で提供する場合は、エッジのサービスを前に置きます。
| サービス | 役割 |
|---|---|
| エッジで配信し、 を終端します。を直接公開しない構成にできます。 | |
| などの攻撃、特定の 、過剰なリクエスト (レートベースのルール) を CloudFront・・ の前で遮断します。 | |
| 攻撃からの保護です。Standard は追加料金なしで自動で有効です。Advanced は有料で、高度な検知と対応支援が付きます。 | |
| の名前解決です。とで、API の入り口を切り替えます。 |
試験対策
ネットワークの問題では、「通信の送信元」と「通信の宛先」を先に決めます。 内同士なら、VPC から AWS のサービスなら VPC 、外部の許可リストなら ゲートウェイの です。
①判断マトリクス
| 問題文のキーワード | 選ぶもの | 理由 |
|---|---|---|
| ジョブが に接続できない (タイムアウト) | 自己参照の受信ルールと、DB 側のの許可 | Glue 接続の 同士と DB への通信を通します。 |
| から へ、 の料金をかけずに | S3 のゲートウェイ | 追加料金なしで同じの S3 へ届きます。 |
| から S3 へ私的に接続 | S3 のインターフェイスエンドポイント | ゲートウェイエンドポイントはオンプレミスから使えません。 |
| から や をインターネットなしで呼ぶ | インターフェイスエンドポイント | で私的に接続します。 |
| 指定の VPC 経由以外からを読ませない | バケットポリシーの aws:SourceVpce 条件 | 経路を条件に Deny します。 |
| VPC から社外のバケットへの持ち出しを防ぐ | エンドポイントポリシーで許可するバケットを限定 | エンドポイントを通る宛先を絞ります。 |
| 共有バケットのポリシーが複雑すぎる | S3 アクセスポイント | 用途ごとにポリシーを分けます。 |
| 外部 が送信元 の許可リストを要求 | NAT ゲートウェイの | 送信元の IP を固定します。 |
| 自社のデータ API を別アカウントの VPC へ私的に提供 | PrivateLink のエンドポイントサービス | が重なっていても一方向で接続できます。 |
| ・ の通信を VPC 内に通したい | の拡張 VPC ルーティング | エンドポイントやポリシーで制御できます。 |
| 公開 API へのレート攻撃や | (+ ) | 入り口で遮断します。 |
②よくある誤答
- ゲートウェイが ・ 以外にもあると考えること。ほかのサービスはインターフェイスエンドポイントです。
- で拒否ルールを書けると考えること。拒否はネットワーク です。
- エンドポイント経由のアクセスを
aws:SourceIpで制限しようとすること。aws:SourceVpceを使います。 - の送信元 を許可リストに登録できると考えること。 ゲートウェイで固定します。
参考文献
- Control traffic to your AWS resources using security groups
- Gateway endpoints
- Access AWS services through AWS PrivateLink
- Control access to VPC endpoints using endpoint policies
- Managing access to shared datasets with access points
- Setting up Amazon VPC for JDBC connections to Amazon RDS data stores from AWS Glue
- Amazon Redshift enhanced VPC routing
- AWS WAF, AWS Firewall Manager, and AWS Shield Advanced
- AWS Certified Data Engineer - Associate 試験ガイド