IAM Identity Center のユーザでAWS Client VPN を利用する(SAML ベースのフェデレーション認証)

記事タイトルとURLをコピーする

こんにちは、近藤(りょう)です!

AWS Client VPNを相互認証(証明書ベース)で導入することは、スタートアップとしては簡単です。しかし、証明書の管理や作成には専用の環境が必要となり開発ベンダーごとに証明書を発行する必要がある場合、運用が煩雑になる可能性があります。証明書の数が増えると、更新作業の負担も大きくなります。

そこで、今回は AWS Client VPNでフェデレーション認証を行い、IAM Identity Centerを用いて認証を一元管理する方法をご紹介します。この方法で、証明書の管理や運用の手間を軽減し、効率的に認証管理を行うことができます。

今回の構成

クライアントVPN-構成-概要

Client VPN アカウント:AWS Client VPN の接続で利用
管理アカウント:IAM Identity Center の認証で利用

以降、アカウント毎で作業項目が異なりますので適宜読替えて実施お願いします。

前提

管理アカウント
IAM Identity Centerの有効化が完了していること

下記、手順を参照のこと
https://docs.aws.amazon.com/ja_jp/singlesignon/latest/userguide/get-set-up-for-idc.html

管理アカウント
IAM Identity Centerのユーザとグループの作成が完了していること

 グループ:任意
 ユーザ:任意 ※作成したグループに所属

下記、手順を参照のこと
デフォルトの IAM アイデンティティセンターディレクトリを使用してユーザーアクセスを設定する - AWS IAM Identity Center

Client VPN アカウント
VPC,サブネット,NATGWの作成が完了していること

※EC2への接続確認を行いたい方は任意でEC2のセットアップお願いします。


事前作業

Client VPN アカウント:サーバ証明書作成(easy-rsa)

以下、CloudShell で実行します。

  • OpenVPN easy-rsa リポジトリのクローン
git clone https://github.com/OpenVPN/easy-rsa.git


  • PKI 環境を初期化
cd easy-rsa/easyrsa3
./easyrsa init-pki
  • 有効期限を100年に変更するためのvarsファイル作成
vi pki/vars

--- 設定内容(ここから) ---
set_var EASYRSA_CA_EXPIRE 36500
set_var EASYRSA_CERT_EXPIRE 36500
set_var EASYRSA_CRL_DAYS 36500
--- 設定内容(ここまで) ---
※36500日(365日✕100年)


  • 認証局 (CA) を構築
./easyrsa build-ca nopass

--- 以降は、対話型で進める ---
入力項目・・・★

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: ★空Enter

Notice
------
CA creation complete. Your new CA certificate is at:
* /home/cloudshell-user/easy-rsa/easyrsa3/pki/ca.crt


  • サーバー証明書とキーを生成
    ※SANsとCNは適切なものに置き換えてください。
./easyrsa --san=DNS:server build-server-full server nopass


  • ACM登録
    certificateとprivate-keyは適切なファイル名に置き換えてください。
mkdir ~/custom_folder/
cp pki/ca.crt ~/custom_folder/
cp pki/issued/server.crt ~/custom_folder/
cp pki/private/server.key ~/custom_folder/
cd ~/custom_folder/
aws acm import-certificate --certificate fileb://server.crt --private-key fileb://server.key --certificate-chain fileb://ca.crt


  • ACM登録確認

(例)ACM-確認画面

Client VPN アカウント:クライアント VPN エンドポイント用 ロググループ作成

  • CloudWatchにアクセスして「ロググループを作成」を押下する。

CloudWatchLogs-ロググループ作成

以下、設定内容

* ロググループ名:<任意>
* 保持期間の設定:1週間(7日)
* ログクラス:スタンダード
* KMS キー ARN - オプション:ー(空欄)
  • 作成したロググループで「ログストリームを作成」を押下する。

CloudWatchLogs-ログストリーム作成

以下、設定内容

* ログストリーム名:<任意>

Client VPN アカウント:クライアント VPN エンドポイント用 SG作成

  • セキュリティグループを作成する

以下、SG設定内容

* セキュリティグループ名:<任意>
* 説明 :<任意>
* VPC :作成したVPCを指定
* インバウンドルール
    * 設定なし
* アウトバウンドルール
    * タイプ:すべてのトラフィック
    * 送信先:カスタム 0.0.0.0/0

インバウンドトラフィックは クライアント VPNエンドポイント の内部メカニズムによって制御されているようで 特定のインバウンドルールを設定しなくても通信が許可されます。
利用用途としては VPC 内の別のリソースでこのセキュリティグループをソースとして許可する時になると思います。

クライアント VPN エンドポイントでセキュリティグループを指定しない場合はデフォルトのセキュリティグループが付与されてしまうので管理といった面で作成することをお勧めします。

IAM Identity Center 設定

管理アカウント:カスタム SAML 2.0 アプリケーション設定

本設定項目は クライアントVPN用セルフサービスポータル用のカスタム SAML 2.0 アプリケーション設定の両方を記載しています。

  • 「IAM Identity Center」-「アプリケーション」の「アプリケーションを作成」を押下する。

カスタム SAML 2.0 アプリケーション設定


  • 以下、項目を選択して「次へ」を押下する。
* 設定するアプリケーションがある
* SAML 2.0

アプリケーションタイプを選択


  • 以下、項目を入力する。
項目 クライアントVPN用 セルフサービスポータル用
表示名 <任意> <任意>
説明 <任意> <任意>

アプリケーションを設定


  • IAM Identity Center メタデータをダウンロードする。

IAM Identity Center-メタデータ
※このメタデータは IAM IDプロバイダ 設定で使用します。


  • 以下、項目を入力して「送信」を押下する。
項目               クライアントVPN用     セルフサービスポータル用
アプリケーションメタデータ メタデータ値をマニュアルで入力する メタデータ値をマニュアルで入力する
アプリケーションACS URL http://127.0.0.1:35001 https://self-service.clientvpn.amazonaws.com/api/auth/sso/saml
アプリケーションSAML対象者 urn:amazon:webservices:clientvpn urn:amazon:webservices:clientvpn

アプリケーションメタデータ

クライアントVPN用 設定値 参考
AWS SSO を用いた AWS Client VPN の認証と承認 | Amazon Web Services ブログ

  • 引用
      1. Application ACS URL には http://127.0.0.1:35001 を入力し、Application SAML audience には urn:amazon:webservices:clientvpn を入力して、“Save changes“ をクリックします。

セルフサービスポータル用 設定値 参考
シングルサインオン (SAML 2.0 ベースのフェデレーション認証) - AWS クライアント VPN

  • 引用
    • セルフサービスポータルのサポート
      • クライアント VPN エンドポイントでセルフサービスポータルを有効にした場合、ユーザーは SAML ベースの IdP 認証情報を使用してポータルにログインします。

   

  • 作成したアプリケーションの「属性マッピングを編集」を押下する。

属性マッピング


  • 以下、項目を入力して「設定の保存」を押下する。
アプリケーションのユーザー属性 この文字列値またはIAM Identity Centerのユーザー属性にマッピング 形式
Subject ${user:email} emailAddress
memberOf ${user:groups} unspecified

属性マッピング設定


  • 作成したアプリケーションの「ユーザーとグループを割り当てる」を押下する。

ユーザーとグループを割り当てる


  • IAM Identity Center で事前に作成したグループを選択して「ユーザーを割り当て」を押下する。

ユーザーとグループを割り当てる設定


IAM IDプロバイダ 設定

Client VPN アカウント:IAM IDプロバイダ設定

本設定項目は クライアントVPN用セルフサービスポータル用のIAM IDプロバイダ 設定の両方を記載しています。

  • 「IAM」- 「ID プロバイダ」から「プロバイダを追加」を押下する。

プロバイダを追加


  • 以下、項目を入力して「プロバイダを追加」を押下する。
項目         クライアントVPN用        セルフサービスポータル用       
プロバイダのタイプ SAML SAML
プロバイダ名 <任意> <任意>
メタデータドキュメント IAM Identity Center メタデータ クライアントVPN用 をアップロード IAM Identity Center メタデータ セルフサービスポータル用 をアップロード

IDプロバイダを追加設定


クライアント VPN エンドポイント設定

Client VPN アカウント:クライアント VPN エンドポイント 設定

セルフサービスポータルを使用する場合は「セルフサービスポータルを有効化」と「セルフサービスSAMLプロバイダーARN」の設定してください。
「セルフサービスSAMLプロバイダーARN」の指定を忘れる変更することができない(※)ので再作成となります。

※:クライアント VPN エンドポイントを変更
Client VPN endpoints - AWS Client VPN

  • 引用
    • 注記
      • Client VPN エンドポイントへの変更 (証明書失効リスト (CRL) の変更を含む) は、Client VPN サービスによってリクエストが受け入れられてから 4 時間以内に有効になります。
      • クライアント VPN エンドポイントの作成後に、クライアントの IPv4 CIDR 範囲、認証オプション、クライアント証明書またはトランスポートプロトコルを変更することはできません。

  

  • 「VPC」-「クライアント VPN エンドポイント」から「クライアント VPN エンドポイントを作成」を押下する。

クライアントVPNエンドポイントを作成


  • 以下、項目を入力して「クライアント VPN エンドポイントを作成」を押下する。

詳細

項目      設定値    備考
名前タグ <任意>
説明 <任意>
クライアント CIDR <任意> CIDR ブロックは、/12 より大きい、または /22 より小さいサイズにすることはできません。

クライアントVPNエンドポイント-詳細

認証情報

項目      設定値    備考
サーバー証明書 ARN 作成してACMに登録したサーバ証明書
認証オプション ■ユーザーベースの認証を使用
ユーザーベースの認証オプション ■フェデレーション認証
SAMLプロバイダー ARN 作成した クライアントVPN用 IDプロバイダ
セルフサービス SAML プロバイダー ARN セルフサービスポータル用

クライアントVPNエンドポイント-認証詳細

接続ログ記録

項目      設定値    備考
クライアント接続のログの詳細を有効化
CloudWatch Logs のロググループ名 作成したロググループ名
CloudWatch Logs のログストリーム名 - オプション 作成したログストリーム名

クライアントVPNエンドポイント-接続ログ記録

クライアント接続ハンドラー

項目      設定値    備考
クライアント接続ハンドラー ARN

クライアントVPNエンドポイント-クライアント接続ハンドラー

その他

項目      設定値    備考
DNS サーバー 1 IP アドレス ー(空欄)
DNS サーバー 2 IP アドレス ー(空欄)
トランスポートプロトコル UDP
スプリットトンネルを有効化
VPC ID ClientVPN接続 対象のVPC
セキュリティグループ ID 作成したSG
VPN ポート 443
セルフサービスポータルを有効化
セッションタイムアウト (時間) 24
クライアントログインバナーを有効化

クライアントVPNエンドポイント-その他

タグ

項目      設定値    備考
Name デフォルトのまま 自動反映

クライアントVPNエンドポイント-タグ


  • 作成したクライアント VPN エンドポイントの「ターゲットネットワークの関連付け」の「ターゲットネットワークを関連付ける」を押下する。

ターゲットネットワークを関連付ける


  • 「VPC」と「関連付けるサブネット」を選択して「ターゲットネットワークを関連付ける」を押下する。

ターゲットネットワークを関連付ける設定


  • 作成したクライアント VPN エンドポイントの「認証ルール」の「認証ルールを追加」を押下する。

認証ルールを追加


  • 以下、項目を入力して「認証ルールを追加」を押下する。
項目      設定値   
アクセスを有効にする送信先ネットワーク 0.0.0.0/0
アクセス権を以下に付与する ■アクセス権を特定のアクセスグループのユーザーに許可する
アクセスグループ ID クライアントVPNを行うIAM Identity Center のグループID
説明 <任意>

認証ルールを追加設定


VPNクライアント設定

作業PC:VPNクライアントインストール

  • VPNクライアント(AWS公式)をダウンロードしてインストール

以下、VPNクライアントをダウンロードしてインストールしてください。
AWS Client VPN のダウンロード | Amazon Web Services

Client VPN アカウント:クライアント VPN クライアント設定 ダウンロード

  • 作成したクライアント VPN エンドポイントを選択して「クライアント設定をダウンロード」を押下する。

クライアント設定をダウンロード


  • 「クライアント設定をダウンロード」を押下する。

クライアント設定をダウンロード画面
※VPNクライアントで利用します。

作業PC:VPNクライアントプロファイル設定

  • 先ほど取得したクライアント設定をVPNクライアントのプロファイルに設定してください。



【セルフサービスポータルの場合】VPNクライアント設定

作業PC:VPNクライアントインストール/クライアント VPN クライアント設定 ダウンロード

  • セルフサービスポータルへアクセスする。

クライアントVPNエンドポイントの「詳細」-「セルフサービスポータル URL」にアクセスしてください。

セルフサービスポータルURL
※IAM Identity Centerのユーザログインが必用です。

  • VPNクライアントインストール/クライアント VPN クライアント設定 ダウンロード する

対象のファイルをダウンロードする。

VPNクライアントインストール/クライアント VPN クライアント設定 ダウンロード


作業PC:VPNクライアントプロファイル設定

  • 先ほど取得したクライアント設定をVPNクライアントのプロファイルに設定してください。

VPNクライアント接続

作業PC:VPNクライアント接続

  • VPNクライアントを起動後に対象プロファイルの選択して「接続」を押下する。

VPNクライアント接続


  • ユーザー名を入力して「次へ」を押下する。

VPNクライアント接続-1


  • パスワードを入力して「サインイン」を押下する。

VPNクライアント接続-2


  • 追加の検証を実施して「サインイン」を押下する。

VPNクライアント接続-3

以下、画面が表示されます。
VPNクライアント接続-4


  • VPNクライアントを確認すると「接続済み」と表示されています。

VPNクライアント接続-5
これでIAM Identity Centerの認証を利用したClientVPN接続ができました。

まとめ

IAM Identity CenterのユーザーがAWS Client VPN接続を利用することで、相互認証と比較して証明書の管理や運用の手間を軽減し、効率的に認証管理を行うことができます。また、セルフサービスポータルを有効にすることで、VPNクライアントおよびクライアント情報の配布が簡素化されました。

AWS Client VPN以外にも他のサービスと連携することが可能ですので、今回の取り組みをきっかけに認証管理を充実させることができればと思いました。

近藤 諒都

(記事一覧)

カスタマーサクセス部CS5課

夜行性ではありません。朝活派です。

趣味:お酒、旅行、バスケ、掃除、家庭用パン作り(ピザも)など