AWS Site-to-Site VPNのSecrets Manager統合でPSKを安全に管理してみた
はじめに
AWS Site-to-Site VPNに限らず、VPNを構築する際には事前共有鍵(Pre-Shared Key、PSK)を設定することが多いかと思います。機密性の高い情報であるにも関わらず、これまでは平文で管理せざるを得ませんでした。
しかし先日、PSKの管理がAWS Secrets Managerと統合されたことで、より安全に管理できるようになりました。
そこで実際にSecrets Manager統合機能を試してみました。
手順
基本的な接続作成の流れ
接続を作成する画面に選択肢が追加されています。従来の設定方式が「スタンダード」として分類されています。「シークレットマネージャー」を選択すると、AWS Secrets Manager統合を使用できます。
これで接続を作成すると、裏側でAWS Secrets Managerにシークレットが自動作成されます。以下が実際に作成されたシークレットです。キーにはトンネルの外部IPアドレスが設定され、値にはPSKが格納されます。
PSKを明示的に指定する場合の手順
ちなみに、VPN接続の作成時にPSKを明示的に指定することも可能です。指定しなければAWS側で自動生成してくれますが、特定の要件により指定しなければならない場合には有用かなと思います。
サンプル設定ファイルでの変化を確認
これまで、AWSからダウンロードできるカスタマーゲートウェイ用のサンプル設定ファイルにはPSKが直書きされていました。
Secrets Managerで管理している場合にはどうなるのかというと、PSKの部分は以下のようにマスクされていました。
# This line stores the Pre Shared Key used to authenticate the
# tunnel endpoints.
ipsec ike pre-shared-key 1 text *****REDACTED*****
VPN接続を削除するとき
VPN接続を削除すると、Secrets Managerのシークレットも自動的に削除されます。こういうのが地味に嬉しいですね。
注意点
ストレージモードの変更
スタンダードからSecrets Managerでの管理に変更することも可能なようです。ただし、公式ドキュメントには「ストレージモードを変更するとダウンタイムが発生する」とあります。ここは注意が必要です。
コストへの影響
Secrets Managerの使用により、月額約0.40ドル(シークレット1つあたり)などの追加コストが発生します。セキュリティ向上のメリットを考慮すると、十分に価値のある投資ではないかなと思います。
まとめ
AWS Site-to-Site VPNのSecrets Manager統合により、PSKの管理がより安全になりました。
Secrets Managerであればリソースポリシーを用いたより細かなアクセス制御も可能になります。セキュリティが重視されるユースケースでは積極的に導入を検討する価値がある機能だと思います。ぜひお試しください。