インターフェースエンドポイント | トランジットゲートウェイ | VPCピアリング | Route 53 | クロスアカウント | コストとセキュリティ
AWSでは、「異なるVPC間でVPCエンドポイントを共有する」ことの中核は、単にエンドポイントを複数のVPCに直接アタッチすることではなく、むしろ次の点にあります。
インターフェイス VPC エンドポイントを単一の中央/共有サービス VPC に集中させ、Route 53 を使用して DNS を統合しながら、トランジット ゲートウェイまたは VPC ピアリングを介して他の VPC からこのエンドポイントのプライベート IP にアクセスできるようにします。
AWSはこのモデルを公式には次のように呼んでいます... Centralized access to VPC private endpoints。
しかし、まず最初に、両者を区別することが不可欠である。 Interface Endpoint そして Gateway Endpoint。
まず、最も重要な結論を述べましょう。
現在、以下のような状況にあると仮定します。
VPC-A
VPC-B
VPC-C
3つのVPCすべてに必要なもの:
SSM
EC2 API
ECR
CloudWatch
KMS
Secrets Manager
STS
...
デザインは2種類あります。
オプションA:各VPCが独自のエンドポイントを作成します。
VPC-A
├─ SSM Endpoint
├─ EC2 Endpoint
├─ ECR Endpoint
├─ Logs Endpoint
└─ KMS Endpoint
VPC-B
├─ SSM Endpoint
├─ EC2 Endpoint
├─ ECR Endpoint
├─ Logs Endpoint
└─ KMS Endpoint
VPC-C
├─ SSM Endpoint
├─ EC2 Endpoint
├─ ECR Endpoint
├─ Logs Endpoint
└─ KMS Endpoint
これは最もシンプルで、最も独立した設計です。
しかし、エンドポイントの数は急速に増加するだろう。
例えば:
10個のVPC × 20個のAWSサービスエンドポイント × 2つのAZ = 400個のエンドポイントENI
インターフェースエンドポイントは 終点 × AZ × 時間料金に加え、データ処理手数料がかかります。
したがって、規模が大きくなるにつれて、コストとメンテナンス費用も大幅に増加する。
II. 集中型VPCエンドポイントのアーキテクチャ
確立する:
Network VPC / Shared Services VPC
すべてのエンドポイントはここに配置されます。
例えば:
AWS Services
│
PrivateLink
│
┌───────────────────┐
│ Network VPC │
│ 10.0.0.0/16 │
│ │
│ SSM Endpoint │
│ KMS Endpoint │
│ ECR Endpoint │
│ Logs Endpoint │
│ STS Endpoint │
│ Secrets Endpoint │
└─────────┬─────────┘
│
Transit Gateway
┌─────────┼─────────┐
│ │ │
│ │ │
VPC-A VPC-B VPC-C
10.10/16 10.20/16 10.30/16
それから:
VPC-A 内の EC2 ↓ ssm.ap-northeast-1.amazonaws.com ↓ Route 53 ↓ 共有 VPC 内の SSM エンドポイントのプライベート IP に解決 ↓ トランジット ゲートウェイ ↓ インターフェイス エンドポイント ENI ↓ AWS PrivateLink ↓ SSM
AWSはこの集中型設計を公式にサポートしています。
III. 特に重要な例外:S3 / DynamoDB
これは別途議論する必要がある。
ゲートウェイエンドポイントは、このような方法では共有できません。
S3とDynamoDBには以下の特徴があります。
Gateway VPC Endpoint
例えば:
com.amazonaws.ap-northeast-1.s3
com.amazonaws.ap-northeast-1.dynamodb
これは通常のインターフェースエンドポイントとは全く異なります。
Gateway Endpoint:
- PrivateLinkは使用しないでください
- ENIを作成しないでください
- 基本的には、ルートテーブルとAWSマネージドプレフィックスリストを組み合わせたものです。
- 無料
- これは、それが存在するVPC内でのみ使用できます。
AWSは公式に以下の声明を発表しました。
ゲートウェイエンドポイントはVPCの範囲を超えて拡張することはできません。VPCピアリング、トランジットゲートウェイ、VPN、またはダイレクトコネクトの反対側のリソースは、このゲートウェイエンドポイントからリソースを借りることはできません。
したがって、以下のように設計すべきではない。
VPC-A ──TGW── Shared VPC ── S3 Gateway Endpoint
次に、VPC-Aが共有VPCのS3ゲートウェイエンドポイントを使用するように設定したい。
いいえ。
IV. S3 / DynamoDB の正しい運用方法
通常は以下のようになるはずです。
VPC-A → お客様専用のS3ゲートウェイエンドポイント VPC-B → お客様専用のS3ゲートウェイエンドポイント VPC-C → お客様専用のS3ゲートウェイエンドポイント
なぜなら:
ゲートウェイのエンドポイントには追加料金はかかりません。
したがって、「エンドポイントの数を減らす」ためにS3ゲートウェイエンドポイントを集中管理する必要はありません。
推薦する:
S3
↑ ↑ ↑
│ │ │
GW EP GW EP GW EP
│ │ │
VPC-A VPC-B VPC-C
そして:
SSM
KMS
STS
ECR
ECR Docker
CloudWatch
CloudWatch Logs
Secrets Manager
SNS
SQS
etc.
これら Interface VPC Endpoint それが中央集権化が適している理由だ。
5. インターフェースエンドポイントは、なぜVPCをまたいで使用できるのですか?
インターフェースエンドポイントは基本的に次のとおりです。
指定したサブネット内にプライベートIPアドレスを持つENIを作成します。
AWSの公式ドキュメントによると、インターフェイスエンドポイントは、選択したサブネット内にエンドポイントネットワークインターフェイスを作成し、そのサブネットにプライベートIPアドレスを割り当てます。
例えば:
Shared VPC
10.0.0.0/16
AZ-a:
Endpoint ENI
10.0.10.50
AZ-c:
Endpoint ENI
10.0.20.60
もう一方のVPCについては、以下の条件を満たしていれば:
VPC-A → 10.0.10.50 へルーティング可能
そして:
セキュリティグループ10.0.10.50はVPC-Aを許可します
実際には、ネットワークは既にエンドポイントにアクセスできる状態にある。
したがって、いわゆる:
共有VPCエンドポイント
実際に起こったことは以下のとおりです。
その他のVPC ↓ VPC間ネットワーク ↓ アクセスセントラルVPCエンドポイントENI
いいえ:
vpce-xxxは同時に3つのVPCに接続できます。
これらは全く異なる概念です。
VI.3つの実践的な実施方法
実際には、3つのタイプに分類できます。
| 方法 | 推奨レベル | 適切な |
|---|---|---|
| Transit Gateway | ⭐⭐⭐⭐⭐ | 大規模なマルチVPC |
| VPC Peering | ⭐⭐⭐⭐ | 2~5個のVPC |
| エンドポイントDNSを直接使用する | ⭐⭐⭐ | テスト/特殊用途 |
| VPCごとに独立したエンドポイント | ⭐⭐⭐⭐⭐ | 隔離を優先し、小規模な |
VII. 方法1:トランジットゲートウェイ+セントラルエンドポイント
これは企業環境において最も一般的なソリューションです。
東京地域を想定すると:
ap-northeast-1
ネットワーク:
Network VPC
10.0.0.0/16
App VPC-A
10.10.0.0/16
App VPC-B
10.20.0.0/16
App VPC-C
10.30.0.0/16
建築:
AWS SSM
▲
│
PrivateLink
│
SSM Interface EP
10.0.10.50
10.0.20.50
│
┌─────────────────┐
│ Network VPC │
│ 10.0.0.0/16 │
└────────┬────────┘
│
TGW
┌──────────┼──────────┐
│ │ │
VPC-A VPC-B VPC-C
10.10/16 10.20/16 10.30/16
Transit Gateway (TGW) は、複数の VPC にまたがる集中ルーティングのために AWS によって設計されており、一時的なルーティングをサポートしています。AWS は、大規模なマルチ VPC ネットワークでは TGW を優先的に使用することを推奨しています。
VIII.具体的な操作手順
以下は、実際の構成の詳細です。
ステップ1:ネットワークVPCを作成する
例えば:
VPC:
shared-endpoint-vpc
CIDR:
10.0.0.0/16
2つのAZ:
ap-northeast-1a
Endpoint subnet:
10.0.10.0/24
ap-northeast-1c
Endpoint subnet:
10.0.20.0/24
少なくとも2つのAZ(アベイラビリティゾーン)を用意することをお勧めします。
9. ステップ2:トランジットゲートウェイを作成する
VPC Console:
Transit Gateways
→ Create transit gateway
例えば:
Name:
core-tgw
次に、VPCアタッチメントを作成します。
core-tgw
│
├─ shared-endpoint-vpc
├─ app-vpc-a
├─ app-vpc-b
└─ app-vpc-c
複数のAWSアカウントをお持ちの場合は、AWS RAMを介してTransit Gatewayを共有することもできます。AWSは、アカウント間でのTGWの共有を公式にサポートしています。
10. ステップ3:VPCルートテーブルの設定
予測:
Shared VPC:
10.0.0.0/16
VPC-A:
10.10.0.0/16
VPC-B:
10.20.0.0/16
VPC-A:
Destination Target
10.10.0.0/16 local
10.0.0.0/16 tgw-xxxxxxxx
VPC-B:
Destination Target
10.20.0.0/16 local
10.0.0.0/16 tgw-xxxxxxxx
Shared Endpoint VPC:
Destination Target
10.0.0.0/16 local
10.10.0.0/16 tgw-xxxxxxxx
10.20.0.0/16 tgw-xxxxxxxx
そうでない場合、以下の事態が発生します。
VPC-A → Endpoint
行ってもいいけど、ただし:
Endpoint → VPC-A
彼らは戻って来られない。
11. ステップ4:TGWルートテーブルの設定
TGW Route Table:
10.0.0.0/16
→ shared-endpoint-vpc attachment
10.10.0.0/16
→ VPC-A attachment
10.20.0.0/16
→ VPC-B attachment
10.30.0.0/16
→ VPC-C attachment
ネットワーク分離に特別な必要性がない場合は、経路伝播を利用できます。
企業環境は通常、以下のように分類されます。
Spoke TGW RT
Shared Services TGW RT
Inspection TGW RT
デフォルトで全てのVPCが相互に通信できるようにすることは避けてください。
12. ステップ5:インターフェースエンドポイントを作成する
例えば、共有が必要な場合:
AWS Systems Manager
作成する:
VPC
→ Endpoints
→ Create endpoint
Service:
com.amazonaws.ap-northeast-1.ssm
VPC:
shared-endpoint-vpc
Subnets:
ap-northeast-1a
10.0.10.0/24
ap-northeast-1c
10.0.20.0/24
したがって、以下のことが生じる。
vpce-0123456789
ENI-A:
10.0.10.50
ENI-C:
10.0.20.50
13番目、そして最も重要なこと:プライベートDNSを直接有効にしないでください。
VPCが通常独自のエンドポイントを使用する場合:
Enable Private DNS
✓
とても便利です。
例えば、元々は:
ssm.ap-northeast-1.amazonaws.com
自動的に以下のように解析されます。
10.0.10.50
10.0.20.50
AWS SDKは一切変更を必要としません。
しかし、集中型アーキテクチャには問題がある。
プライベートDNSは、AWSが管理するプライベートホストゾーンを自動的に作成します。このプライベートホストゾーンは、エンドポイントが存在するVPC内でのみ機能します。
したがって:
Shared VPC
知る:
ssm.ap-northeast-1.amazonaws.com
=
10.0.10.50
しかし:
VPC-A
VPC-B
わからない。
したがって、AWSの公式中央エンドポイントアーキテクチャでは、以下のことを推奨しています。
中央エンドポイントのシナリオでは、エンドポイントの自動プライベートDNSを無効にしてから、Route 53プライベートホストゾーンを手動で作成します。
14. ステップ6:Route 53プライベートホストゾーンを作成する
作成する:
Route 53
→ Hosted zones
→ Create hosted zone
Domain:
ssm.ap-northeast-1.amazonaws.com
Type:
Private Hosted Zone
まず、関連付けます。
shared-endpoint-vpc
15. ステップ7:エイリアスを作成する
入力:
ssm.ap-northeast-1.amazonaws.com
Create record。
Record:
ssm.ap-northeast-1.amazonaws.com
Type:
A
選ぶ:
Alias
ターゲットの選択:
VPC Endpoint
それから:
vpce-0123456789...
AWSの公式中央エンドポイントソリューションは以下のとおりです。
AWS Service DNS
↓
Route53 PHZ
↓
Alias
↓
Central Interface Endpoint
アプリケーションにエンドポイントIPを手動で使用させる代わりに。
16. ステップ8:PHZをすべてのVPCに関連付ける
Private Hosted Zone:
ssm.ap-northeast-1.amazonaws.com
関連している:
shared-endpoint-vpc
app-vpc-a
app-vpc-b
app-vpc-c
AWS Route 53 のプライベートホストゾーンは、複数の VPC に関連付けることができます。
それから:
VPC-A
埋め込む:
nslookup ssm.ap-northeast-1.amazonaws.com
得る:
10.0.10.50
10.0.20.50
VPC-B
同じ:
nslookup ssm.ap-northeast-1.amazonaws.com
あまりにも:
10.0.10.50
10.0.20.50
現時点では:
VPC-A
│
│ DNS
▼
ssm.ap-northeast-1.amazonaws.com
│
▼
10.0.10.50
│
▼
Transit Gateway
│
▼
Central VPC
│
▼
SSM VPC Endpoint
これで物語は終わりです。
17. ステップ9:エンドポイントセキュリティグループ
これは2番目によくある落とし穴です。
エンドポイントENIにはセキュリティグループがあります。
例えば:
endpoint-sg
Inbound:
HTTPS
TCP 443
Source:
10.10.0.0/16
10.20.0.0/16
10.30.0.0/16
さらに細かくすることも可能です。
例えば、以下のもののみ:
10.10.10.0/24
10.20.20.0/24
エンドポイントへのアクセスを許可します。
通行が許可されていない場合:
DNS OK
Routing OK
TGW OK
まだ:
timeout
18. 最終データフロー
例えば、VPC-A内のEC2インスタンスの場合:
aws ssm describe-instance-information \
--region ap-northeast-1
SDKリクエスト:
https://ssm.ap-northeast-1.amazonaws.com
① DNS:
ssm.ap-northeast-1.amazonaws.com
↓
Route53 Private Hosted Zone
↓
10.0.10.50
② Routing:
EC2
10.10.1.50
↓
VPC-A route table
↓
10.0.0.0/16 → TGW
③ TGW:
10.0.10.50
↓
Shared VPC attachment
④ Shared VPC:
Endpoint ENI
10.0.10.50
⑤ Endpoint:
PrivateLink
↓
AWS SSM
以下の項目は、プロセス全体を通して必須ではありません。
Internet Gateway
NAT Gateway
Public IP
これはPrivateLinkの最も重要な意義の一つです。PrivateLinkの目的は、IGW、NAT、またはパブリックIPアドレスを必要とせずに、プライベートネットワーク経由でAWSサービスにアクセスできるようにすることです。
19. 複数のエンドポイントをどのように処理すればよいですか?
次のようなものが必要だとしましょう。
SSM
EC2 Messages
SSM Messages
KMS
CloudWatch
CloudWatch Logs
Secrets Manager
ECR API
ECR DKR
STS
Central VPC:
Network VPC
├─ vpce-ssm
├─ vpce-ssmmessages
├─ vpce-ec2messages
├─ vpce-kms
├─ vpce-monitoring
├─ vpce-logs
├─ vpce-secretsmanager
├─ vpce-ecr-api
├─ vpce-ecr-dkr
└─ vpce-sts
Route53:
ssm.ap-northeast-1.amazonaws.com
→ SSM Endpoint
ssmmessages.ap-northeast-1.amazonaws.com
→ SSM Messages Endpoint
ec2messages.ap-northeast-1.amazonaws.com
→ EC2 Messages Endpoint
kms.ap-northeast-1.amazonaws.com
→ KMS Endpoint
logs.ap-northeast-1.amazonaws.com
→ Logs Endpoint
secretsmanager.ap-northeast-1.amazonaws.com
→ Secrets Manager Endpoint
次にPHZは同時に以下を関連付けます。
VPC-A
VPC-B
VPC-C
VPC-D
...
AWSサービスの中には、ECRのDocker/OCIエンドポイントなど、独自のDNS構造を持つものがあります。また、一部のサービスではワイルドカードエイリアスが必要になる場合があるため、すべてのエンドポイントが単一のシンプルなレコードのみを持つとは限らないことをAWSは指摘しています。
20. それらが異なるAWSアカウントの場合はどうなりますか?
例えば:
Network Account
111111111111
App Account A
222222222222
App Account B
333333333333
建築様式は全く問題ない。
推薦する:
AWS Organizations
Network Account
├─ TGW
├─ Shared VPC
├─ Interface Endpoints
└─ Route53 PHZ
↓ AWS RAM
App Account A
└─ VPC-A
App Account B
└─ VPC-B
TGWには以下の方法でアクセスできます。
AWS Resource Access Manager
共有。
プライベートホストゾーンにおけるアカウント間の関連付けは、もう少し複雑です。
21. クロスアカウントPHZ関連付け
例えば:
Network Account:
PHZ Z123456
App Account:
VPC vpc-abcdef
ネットワークアカウントを最初に取得する:
aws route53 create-vpc-association-authorization \
--hosted-zone-id Z123456 \
--vpc VPCRegion=ap-northeast-1,VPCId=vpc-abcdef
次にアプリアカウント:
aws route53 associate-vpc-with-hosted-zone \
--hosted-zone-id Z123456 \
--vpc VPCRegion=ap-northeast-1,VPCId=vpc-abcdef
AWSにおけるアカウント間プライベートホストゾーンの公式プロセスは以下のとおりです。
PHZ Owner
↓
CreateVPCAssociationAuthorization
VPC Owner
↓
AssociateVPCWithHostedZone
さらに、このアカウント間操作はRoute 53コンソールのみに頼って完全に完了することはできず、CLI/API/SDKが必要です。
22. 方法2:VPCピアリング
VPCが2つか3つしかない場合は、必ずしもTGWは必要ありません。
例えば:
Central VPC
Endpoint VPC
10.0.0.0/16
/ \
/ \
Peering Peering
/ \
VPC-A VPC-B
10.10/16 10.20/16
構成:
VPC-A ↔ Central VPC
VPC-B ↔ Central VPC
それから:
VPC-A:
10.0.0.0/16
→ pcx-aaa
Central:
10.10.0.0/16
→ pcx-aaa
10.20.0.0/16
→ pcx-bbb
Endpoint SG:
443
10.10.0.0/16
443
10.20.0.0/16
DNSはまだ:
PHZ
↓
Endpoint Alias
↓
associate VPC-A
associate VPC-B
23.ピアリングの最大の欠点
それ:
推移的ルーティングはサポートされていません。
AWSは公式声明でこの点を明確にしている。
例えば:
VPC-A
│
peering
│
Central
│
peering
│
VPC-B
これは以下の結論を導き出す根拠にはならない。
A → Central → B
あり得る。
したがって、もし:
2 VPC
3 VPC
覗き見はとても快適です。
もし:
20 VPC
50 VPC
100 VPC
維持していくのはますます困難になるだろう。
したがって、一般的に言えば次のようになります。
小規模: VPCピアリング 大規模: トランジットゲートウェイ
24. 方法3:エンドポイントDNSを直接使用する
また、特にテストに適した非常にシンプルな方法もあります。
エンドポイントを作成すると、AWS は次のようなものを生成します。
vpce-0123456789abcdef-xxxx.ssm.ap-northeast-1.vpce.amazonaws.com
AWS は、インターフェースエンドポイント用にリージョンおよびゾーンの DNS 名を作成します。
したがって、VPC-Aネットワークが共有VPCに到達できる限り、直接以下のことが可能です。
aws ssm describe-instance-information \
--endpoint-url \
https://vpce-xxxx.ssm.ap-northeast-1.vpce.amazonaws.com
こうすれば、自分でやる必要すらありません。
ssm.ap-northeast-1.amazonaws.com
Private Hosted Zone。
アドバンテージ
すごく簡単。
こんな方に最適です:
ルーティングの検証、SGの検証、TGWの検証、エンドポイントの検証
欠点
アプリケーションの設定を変更する必要があります。
オリジナル:
AWS SDK
↓
ssm.ap-northeast-1.amazonaws.com
これで次のようになります。
AWS SDK
↓
vpce-xxx....
多くのアプリケーションは、このように変更するのが都合が悪い。
したがって、生産環境は一般的に次のようになります。
PHZ + Alias
ほとんど。
25. 集中型エンドポイントの最大の利点
①エンドポイントを大幅に削減
予測:
20 VPC
15 Interface Endpoints
2 AZ
Distributed:
20 × 15 × 2
=
600 Endpoint AZ instances
中央集権化:
15 × 2
=
30
その差は非常に大きい。
26. 利点 ②: コストを大幅に削減できる可能性があります。
インターフェースエンドポイントを受信しました:
Endpoint/AZ/hour
+
Data Processing / GB
AWS PrivateLinkでは、AZごとの時間料金とデータ処理料金が発生します。最初の1 PBに対するデータ処理の基準料金は約1.60円/GBで、時間料金はリージョンによって異なります。
Distributed:
VPC × Service × AZ × endpoint-hour
Central:
Service × AZ × endpoint-hour
+
TGW
VPCの数が増えるほど、エンドポイントの数の差はより顕著になります。
27. しかし、TGWは無料ではありません。
ここに掲載されている多くのアーキテクチャ図は、意図的にこの点を無視している。
Transit Gatewayが受信した情報:
添付ファイル時間単価 + データ処理/GB
AWSは公式には、接続時間とTGWを通過するデータ量に基づいて課金します。
したがって、実際に計算すべきなのは以下のとおりです。
VPCエンドポイントごと
コスト = VPC の数 × エンドポイントの数 × AZ の数 × エンドポイントの1時間あたりの料金 + PrivateLink データ
Centralized
コスト = エンドポイント数 × AZ数 × エンドポイント時間当たり + TGW接続時間当たり + TGWデータ処理 + PrivateLinkデータ処理 + 可能性のあるクロスAZデータ
それで:
企業が既にTGW(タウンシップゲートウェイ)を所有している場合、セントラルエンドポイントは通常非常に魅力的な選択肢となります。
しかし、もし:
VPCは2つしかなく、エンドポイントは3つしかなく、TGWはありません。
エンドポイントのコスト削減を目的としてTGWを構築することは、費用対効果が高いとは限らない。
28. 集中型システムの最大の欠点:爆発範囲
これは非常に重要な問題です。
結果は以下の通り:
VPC-A → Endpoint-A
VPC-B → Endpoint-B
VPC-C → Endpoint-C
エンドポイントAに問題があります。
問題があるのはAだけだ。
中央集権化:
A ─┐
B ─┼→ Central Endpoint
C ─┘
中央エンドポイント、共有VPCルーティング、DNS、またはTGWの設定ミス:
A
B
C
D
E
...
二人とも停職処分になるかもしれない。
それで:
経費削減とコスト管理の代償は、共有インフラへの影響範囲の拡大である。
AWSはまた、中央エンドポイントを使用すると、ポリシーや障害の影響範囲が拡大する可能性があることを具体的に指摘しています。
29. エンドポイントポリシーもより複雑になるだろう。
Distributed:
開発用VPCエンドポイント → 開発権限 本番用VPCエンドポイント → 本番権限 セキュリティ用VPCエンドポイント → セキュリティ権限
管理が非常に簡単です。
中央集権化:
開発・本番・テスト環境におけるセキュリティ監視のためのKMSエンドポイント...
すべて共有されています。
Endpoint Policy:
Principal
Resource
Action
Conditions
事態はますます複雑化するだろう。
AWSもこれに関して特別な注意喚起を行っています。
中央集権化は、最小権限のエンドポイントポリシーの管理を困難にし、単一のエンドポイントポリシーの影響範囲を拡大させる。また、エンドポイントポリシー文書自体にもサイズ制限がある。
30. セキュリティ上の分離も問題です。
例えば:
Production VPC
Development VPC
すべての使用:
Central S3 Interface Endpoint
それでも:
IAM
Bucket Policy
Endpoint Policy
SG
権限の制御は引き続き可能ですが、物理的境界とネットワーク境界はもはや完全に独立しているとは言えません。
したがって、特に厳しい環境においては:
PCI金融製品セキュリティツール
考えられるデザイン:
Prod Endpoint VPC
NonProd Endpoint VPC
会社全体ではなく:
エンドポイントVPC
31.推奨される企業構造
会社全体で1人しかいないというわけではなく、むしろ:
AWS Services
│
┌─────────────┴──────────────┐
│ │
Prod Endpoint VPC NonProd Endpoint VPC
│ │
TGW TGW
┌────┼────┐ ┌────┼────┐
│ │ │ │ │ │
Prod Prod Prod Dev Test Sandbox
VPC1 VPC2 VPC3
平:
Security
Production
NonProduction
共有エンドポイントVPCは別途作成してください。
こうすれば、両方を考慮に入れることができます。
コスト管理、セキュリティ、隔離、爆発範囲
32. もう一つ非常に実際的な問題:DNSの競合。
例えば、VPC-Aには既に独自のVPC-Aが存在していました。
SSM Endpoint
Private DNS = Enabled
そして再び関連付けます。
ssm.ap-northeast-1.amazonaws.com
ここは中央PHZです。
これはDNSネームスペースの競合を引き起こす可能性があります。
したがって、移住は一般的に次のようになるべきである。
① 中央エンドポイントを作成する ② 中央pHZを作成する ③ エンドポイント固有のDNSをテストする ④ スポークVPCを関連付ける ⑤ DNSを確認する ⑥ スポークVPC自身のエンドポイントを削除する ⑦ サービスを検証する ⑧ 次のVPCに移行する
それらを一度にすべて削除するのではなく。
33. 地域をまたいだ運用は可能ですが、過剰な使用は推奨されません。
例えば:
Tokyo VPC
ap-northeast-1
Osaka VPC
ap-northeast-3
理論上は:
Tokyo VPC
↓
TGW
↓
TGW Peering
↓
Osaka
↓
Central Endpoint
AWS は、以下の方法でリージョンをまたがる集中型エンドポイント アーキテクチャも提供しています。
TGW Peering
+
Private Hosted Zones
成し遂げる。
ただし、一般的には以下のことが推奨されます。
Tokyo Endpoint VPC
↓
Tokyo VPCs
Osaka Endpoint VPC
↓
Osaka VPCs
つまり、
1つのリージョンに、1つの中央エンドポイントVPC。
それで:
低遅延、シンプルなネットワーク、優れた災害対策、地域間トラフィックコストの削減
34.4つの選択肢の直接比較
| プロジェクト | VPCエンドポイントごと | Peering Central | TGW Central | S3 Gateway |
|---|---|---|---|---|
| エンドポイント番号 | たくさんの | 少し | 少し | VPCごと |
| PrivateLinkの料金 | 高い | 低い | 低い | 無料 |
| TGWコスト | なし | なし | 持っている | なし |
| DNS管理 | 単純 | 中くらい | 中くらい | とても簡単です。 |
| ネットワークの複雑性 | 最低 | 中くらい | 中くらい | 最低 |
| 大規模VPC | ❌ | ❌ | ✅ | ✅ |
| 分離 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| Blast Radius | 小さい | 真ん中 | 大きい | 小さい |
| 複数アカウント | できる | できる | 非常に適切 | それぞれが作成 |
| Transitive Routing | N/A | ❌ | ✅ | N/A |
| 推奨されるVPCの数 | 1~少量 | 少量 | 中型と大型 | どれでも |
35.大規模環境に適した設計
会社が以下の条件を満たしていると仮定します。
VPC 30個、AWSアカウント 5個、東京リージョン
以下のように立証できる。
Network Account
│
├─ Transit Gateway
│
├─ Endpoint VPC
│ │
│ ├─ SSM
│ ├─ SSM Messages
│ ├─ EC2 Messages
│ ├─ ECR API
│ ├─ ECR DKR
│ ├─ STS
│ ├─ KMS
│ ├─ Secrets Manager
│ ├─ CloudWatch
│ ├─ CloudWatch Logs
│ ├─ SNS
│ └─ SQS
│
└─ Route53 Private Hosted Zones
それから:
Account A
├─ VPC1 ─┐
├─ VPC2 ─┤
└─ VPC3 ─┤
│
Account B│
├─ VPC4 ─┤
├─ VPC5 ─┤
└─ VPC6 ─┤
▼
TGW
│
▼
Endpoint VPC
│
▼
AWS PrivateLink
しかし:
S3 Gateway Endpoint
DynamoDB Gateway Endpoint
依然として推奨される事項:
各VPCごとに個別に作成されます。
無料であること、そしてゲートウェイエンドポイント自体はTGW/ピアリングを介して他のVPCから使用できないためです。
36. 全体のアーキテクチャは4つの層として記憶できます。
実際、今後問題解決に取り組む際には、以下の4つのレイヤーだけを覚えておけばよいのです。
┌─────────────────┐
│ DNS │
│ Route53 PHZ │
└────────┬────────┘
│
▼
Endpoint Private IP
│
┌────────┴────────┐
│ Routing │
│ TGW/Peering │
└────────┬────────┘
│
┌────────▼────────┐
│ Security │
│ Endpoint SG/NACL│
└────────┬────────┘
│
┌────────▼────────┐
│ IAM Policy │
│ Endpoint Policy │
│ Service Policy │
└─────────────────┘
アクセスできない場合は、以下の手順に従ってください。
① DNS
② Route
③ Security Group/NACL
④ IAM / Endpoint Policy
調査を行えば、たいてい問題は見つかるものだ。
最も印象的な一文
VPCエンドポイント自体は、RAMを介して「複数のVPCと共有される」ものではありません。
インターフェースエンドポイントの中央集権的な性質は以下のとおりです。
Central VPC
↓
Interface Endpoint ENI
↑
TGW / VPC Peering
↑
Other VPCs
再び合格しました:
Route53 Private Hosted Zone
すべてのVPCにおいて:
ssm.ap-northeast-1.amazonaws.com
すべて分析の結果、以下のことが判明しました。
Central VPC Endpoint
これで全工程が完了します。 Shared/Centralized VPC Endpoint。
そして S3/DynamoDBゲートウェイエンドポイントではこの操作を行わないでください。各VPCごとに独自のエンドポイントを構築してください。無料であることに加え、AWSはTGWやピアリングなど、相手側からの使用を明確に禁止しているからです。