証明書ベース認証付きのクライアントvpnエンドポイント

クライアントVPNエンドポイントを設定しようとしています。AWSは認証取得のために以下の3つのオプションを提供しています:

  • アクティブディレクトリ認証(ユーザーベース)

  • 相互認証(証明書ベース)

  • シングルサインオン(SAMLベースのフェデレーテッド認証)(ユーザーベース)

これらのオプションの組み合わせは以下の通りです:

  • 相互認証とフェデレーション認証

  • 相互認証とアクティブディレクトリ認証

ただし、AWS Directory Servicesを使用しないため、最初のオプションは除外されます。

3番目のオプションは、LinuxでサポートされていないAWS Client VPNの使用を必要とします。詳細は以下のリンクを参照してください:

したがって、残る唯一の選択肢は2番目です。私の理解によれば、各ユーザーのために、同じCAから署名された証明書を作成し、その証明書とともにOpenVPNプロファイルに登録しなければなりません。そうしないと、ユーザーを識別できません。

私の質問は次の通りです:

  • Linuxを使用しているクライアントを証明書で認証し識別する別の方法を見逃していますか?

  • Kubernetesクラスター内でcert-managerを使用しています(VPN経由でのみアクセス可能)。証明書の登録を自動化する方法はありますか?

  • このシナリオであなたならどう行動しますか?

Linux上の証明書付きOpenVPNクライアントを使用できます。設定ファイル(.ovpn)に証明書データを埋め込むだけです。

証明書については、AWSのサイトにも似たような記事があります:

より安価な方法は、EC2インスタンス(小型)にOpenVPNまたはWireGuardをインストールし、それをゲートウェイとして設定することです(iptablesのフォワーディング/マスカレード & クライアントへのルートプッシュ)。

それが理由で2番目のオプションだけが残っています。でも、どうやってこの登録を自動化できますか?セキュリティガイドラインによると、証明書は3年以内にルーティングしなければなりません。そのため、数百のクライアントを想定しています。したがって、添付リンクのような手動の方法は効率的ではなく、エラーを引き起こしやすいです。これを扱う方法、もしかすると半自動または自動化された方法はありますか?