狛ログ

2022年10月27日木曜日

【AWS】プライベートサブネット内のLambda関数でKMSを利用する(NAT Gatewayとエンドポイントについて)


オフィス狛 技術部のJoeです。
担当のプロジェクトで、AWSのプライベートサブネット内のLambda関数で、環境変数の複合化を行うため、AWS KMSを利用する必要がありました。
インターネットゲートウェイとルーティングできないプライベートサブネット内のLambda関数が、VPC外のサービスであるAWS KMSを利用するためには、2つの方法があります。

方法と設定

1.NAT Gatewayを作成する


パブリックサブネットにNAT Gatewayを作成し、インターネット経由でKMSに接続します。

【NAT Gatewayの設定手順】
 ※NAT Gateway 以外は、既に構築済みの前提として、手順は省略させていただきます

① VPCのサービスから、NAT Gateway を作成します。
・名前:任意の名前を指定します。
・サブネット:NAT Gatewayを作成するパブリックサブネット を選択します。
・接続タイプ:「パブリック」を選択します。
・Elastic IP 割り当て ID:任意のElastic IP アドレスを選択します。
 ※「Elastic IP を割り当て」ボタンで、新たなElastic IP を割り当てることも可能です

② プライベートサブネットのルートテーブルのルートに、①で作成したNAT Gateway を指定します。
・送信先:「0.0.0.0/0」を指定します。
・ターゲット:①で作成したNAT GatewayのID(「nat-…」)を指定します。

■注意点
・Elastic IP アドレスは、AWS アカウントごとに各リージョンで 5 つのデフォルト制限がありますので、既に5つ割り当てている場合、制限の増加をリクエストする必要があります。


2.エンドポイントを作成する(PrivateLink)

KMS用のエンドポイント(インターフェイスエンドポイント)を作成し、プライベートリンクでKMSに接続します。

【エンドポイントの設定手順】
 ※エンドポイント以外は、既に構築済みの前提として、手順は省略させていただきます

① VPCのサービスからエンドポイントを作成します。
・名前タグ : 任意の名前を指定します。
・サービスカテゴリ : 「AWS のサービス」を選択します。
・サービス : 「com.amazonaws.ap-northeast-1.kms」を選択します。
・VPC : ご自身の環境の、VPC を選択します。
・DNS 名を有効化 : プライベート DNS 名を有効にする場合、チェックしてください。
・DNS レコードの IP タイプ : DNS 名を有効にした場合、IPv4 or IPv6 を選択ください。
・サブネット : ご自身の環境の、プライベートサブネット を選択します。
・IP アドレスタイプ : 選択したサブネットのIP アドレスタイプから、IPv4 or IPv6 を選択ください。
・セキュリティグループ : 任意のセキュリティグループを指定します。
・ポリシー : 今回は「フルアクセス」としますが、制限したい場合「カスタム」を選択し、ポリシーを設定します。

■注意点
・エンドポイントに設定するセキュリティグループは、インバウンドルールに「HTTPS」を許可する必要があります。


NAT Gatewayとエンドポイントのどちらを利用したほうが良いのか


ご利用に環境による場合もあるかもしれませんが、今回のように、新たにプライベートサブネット内のLambdaやEC2から、AWSのサービス(KMS、S3など)を利用する場合は、 下記の理由などから、エンドポイントを作成し、プライベートリンクで接続が良さそうです。

ただし、対象の AWS サービスで VPC エンドポイントが利用できない場合もありますので、こちらで事前にご確認ください。
AWS PrivateLink と統合できる AWS のサービス

1.セキュリティ

NAT Gatewayは、インターネット経由で接続しますが、プライベートリンクを利用すると、トラフィックをインターネットに公開することなく、AWS のサービスに接続できます。
そのため、ブルートフォース攻撃やDDos攻撃、その他の脅威に晒される危険が軽減されます。
また、セキュリティグループを関連付けることで、アクセス制御も可能です。

2.料金

料金については、AWS アーキテクチャ ブログを見ますと、エンドポイント(インターフェイスエンドポイント)は、「インターネット ゲートウェイへのトラフィックを回避し、NAT ゲートウェイ、NAT インスタンス、またはファイアウォールの維持に関連するコストが発生するのを回避することで、ネットワーク パスを最適化できます。」との記載があります。
また、NAT Gatewayと「1つ当たりの料金」と「処理データ 1 GB あたりの料金」を比較すると、料金は約6分の1で、AWSのコストを削減できる可能性があります。
NAT Gatewayの料金
エンドポイントの料金

3.管理

管理については、エンドポイントは設定手順が少なく、構成も分かり易いため、個人的には管理し易いと思いました。


以上です。
今回は、インターフェイスエンドポイント(プライベートリンク)についてご紹介しましたが、エンドポイントは他にも「ゲートウェイロードバランサーのエンドポイント」、「ゲートウェイエンドポイント」がありますので、機会があればご紹介したいと思います。

,

0 件のコメント:

コメントを投稿