エンドポイントにセキュリティグループルールを設定して、エンドポイントへのアクセスを制限したいです。
簡単な説明
AWS Global Accelerator では、Application Load Balancer、Network Load Balancer、Amazon Elastic Compute Cloud (Amazon EC2) インスタンス、または Elastic IP アドレスをエンドポイントとして使用できます。これらのエンドポイントへのアクセスを制限するかどうかは、エンドポイントのソース IP 保存がオンかオフかによって異なります。
解決策
ソース IP 保存がオンの場合
内部の Application Load Balancer または Global Accelerator で EC2 インスタンスを使用する場合、エンドポイントのクライアント IP アドレスの保存は常にオンになっています。デフォルトでは、インターネット向け Application Load Balancer のエンドポイントである新しいアクセラレーターの IP アドレス保存は常にオンになっています。この設定では、エンドポイントには Global Accelerator の IP アドレスではなく、実際のクライアント IP アドレスのみが表示されます。これらのエンドポイントへのアクセスは次のように制限できます。
- 既知のクライアント IP アドレスからの接続を許可するように、エンドポイントのセキュリティグループを設定します。
- プライベートサブネットでエンドポイントを起動して、クライアントが Global Accelerator を介してのみエンドポイントにアクセスできるようにします。
ソース IP の保存がオフの場合
次のいずれかをエンドポイントとして使用する場合、クライアント IP の保存をオフにすることができます。
- 外部向け Application Load Balancer
- Network Load Balancer
- エラスティック IP アドレス
この設定では、エンドポイントには Global Accelerator の IP アドレスのみが表示されます。
Global Accelerator はさまざまな IP アドレスを使用するため、Global Accelerator の IP 範囲のプレフィックスリストを作成する必要があります。プレフィックスリストは 1 つ以上の CIDR ブロックのセットで、VPC セキュリティグループのルールで参照してアクセスを制限できます。
必要なツールをインストールして、カスタムプレフィックスリストを作成します。次に、AWS Global Accelerator を経由する場合にのみ、エンドポイントへの接続を許可するように設定します。
ツールをインストールする
カスタムプレフィックスリストを作成するには、次のツールをインストールします。
-
正しいセキュリティ認証情報とアクセス設定を使用して AWS CLI をインストールします。
注: CLI コマンドの実行中にエラーが発生した場合は、AWS CLI の最新バージョンを使用していることを確認してください。
-
Amazon Linux 2 に「jq」をインストールします。実行:
sudo yum install -y jq
-
GitHub から Aggeregate6 をインストールします。
sudo yum install -y python3 python3-devel python-pip
pip3 install --user aggregate6
カスタムプレフィックスリストを作成する
AWS は、ip-ranges.json で最新の IP アドレス範囲を公開しています。
-
AWS Global Accelerator のエッジサーバーに関連付けられている IP アドレス範囲を特定します。
-
リストを圧縮して IP プレフィックスを生成します。これを引数として使用して、次のようにカスタムプレフィックスリストを作成します。
aws ec2 create-managed-prefix-list --prefix-list-name <name-of-prefix-list> --address-family ipv4 --max-entries 99 --entries=$(curl -s https://ip-ranges.amazonaws.com/ip-ranges.json |jq -r '.prefixes[] |select( .service == "GLOBALACCELERATOR" ) |select( .region != "GLOBAL" ) |.ip_prefix' |aggregate6 |jq -R -M '{"Cidr": .}' |jq -s -c -M)
注: <name-of-prefix-list> リストの名前は自分のものに置換してください。
-
出力を確認します。次のようになっているはずです。
{
"PrefixList": {
"PrefixListId": "pl-0abcde123456789",
"AddressFamily": "IPv4",
"State": "create-in-progress",
"PrefixListArn": "arn:aws:ec2:us-east-1:1234567890:prefix-list/pl-0abcde123456789",
"PrefixListName": "aga-regional-all",
"MaxEntries": 99,
"Version": 1,
"Tags": [],
"OwnerId": "1234567890"
}
}
-
次のようにして、このプレフィックスリストの IP アドレスを表示します。
aws ec2 get-managed-prefix-list-entries --prefix-list-id <prefix-list-id>
注: <prefix-list-id> リストの ID は自分のものに置換してください。
カスタムプレフィックスリストをセキュリティグループに追加する
アクセラレーターのエンドポイントに関連付けられているセキュリティグループのインバウンドルールのソースとして、以前に作成したプレフィックスリストを指定します。セキュリティグループのプレフィックスリストを参照する方法の詳細については、「VPC セキュリティグループ」を参照してください。
関連情報
Global Accelerator エッジサーバーのロケーションと IP アドレス範囲
マネージドプレフィックスリストを使用して CIDR ブロックをグループ化する