AWS Client VPNのクライアント接続ハンドラを試してみました
2021/07/07
AWS Client VPNを設定しましたで証明書とかせっかく作ったので、いろいろ試してみます。
まずはLambdaで接続ハンドラーを設定して独自ロジックで承認できるというのをやってみました。
Lambda関数はあらかじめ作成しておきますが、”AWSClientVPN-“から始まる関数名にする必要がありました。
そして、作成後に気づいたのですが、Lambdaにリソースベースのポリシーもできませんでした。
LambdaのIAMロールにも特別何かのポリシーも設定していません。
ということはプル型ではないですし、リソースベースのポリシーがないということはプッシュ型でもないというか、何かにプッシュはされてるのかもだけど、”AWSClientVPN-“という名前を設定しているということが実行の許可をしているということにしているのか、なんだか気持ち悪いですが、もうそういうことでいいとします。
AWSクライアントVPNの設定で、クライアント接続ハンドラARNにLambdaのARNを指定しました。
今回のコードはPython3.8でこちらにしました。
| 
					 1 2 3 4 5 6 7 8 9 10 11  | 
						def lambda_handler(event, context):     print(event)     return {         "allow": True,         "error-msg-on-failed-posture-compliance": "",         "posture-compliance-statuses": [],         "schema-version": "v1"     }  | 
					
ユーザーガイド接続承認に記載のレスポンススキーマにあわせました。
リクエストeventはこちらでした。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13  | 
						{     'endpoint-id': 'cvpn-endpoint-0702364d39b4e5304',      'connection-id': 'cvpn-connection-0d03446a94bfa013d',      'common-name': 'client1.domain.tld',      'username': None,      'platform': 'mac',      'platform-version': None,      'public-ip': 'xxx.xxx.xxx.xxx',      'client-openvpn-version': '2.4.5',      'groups': [],      'schema-version': 'v2' }  | 
					
実際に使用するときには、このevent情報を判定に使って、”allow”: Trueを返すか、”allow”: Falseを返すかのロジックを実装するということですね。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第3版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-  
            
              - 
      
AWS Lambda(Python3.7)でPandocを実行する際にCSSもLayerから読み込む
Pandocで必要そうなオプションを確認しておく 先日の「AWS Lambda( …
 
-  
            
              - 
      
WordPressをAmazon CloudFrontで配信してついでにACM(AWS Certificate Manager)を使って常時SSL化する
当サイトの500と502の発生状況がドイヒーであるとの苦情をいただきまして、Am …
 
-  
            
              - 
      
AWS Certificate Manager証明書とAmazon Route 53でAmazon API GatewayのAPIのカスタムドメイン名前解決する
AWS Certificate ManagerとAmazon Route 53と …
 
-  
            
              - 
      
Amazon Glacierのプロビジョニングされた迅速取り出し容量をなぜか購入しました
過去1年ぐらいのAWSコストをCost Explorerで見てまして、10/10 …
 
-  
            
              - 
      
X-Ray SDK for Python でライブラリへのパッチ適用
boto3でのAWS呼び出しとrequestsでの外部API呼び出しにパッチ適用 …
 
-  
            
              - 
      
AWS Transit Gatewayピアリング接続確認
AWS Transit Gatewayのピアリング接続を使用して、異なるリージョ …
 
-  
            
              - 
      
Amazon LinuxにRedmine をインストールする(手順整理版)
Amazon LinuxにRedmineをインストールしました手順を記載します。 …
 
-  
            
              - 
      
AWS EC2 Amazon Linuxにmauticをインストールする(Sendgrid, Nginx, MySQL on RDS)
mauticをAmazon LinuxとNginx,MySQL on RDSにイ …
 
-  
            
              - 
      
API Gateway 作成済REST APIの定義をSwaggerの形式でエクスポート
SAMで似たようなAPIを作りたくて、エクスポートしました。 Swaggerは、 …
 
-  
            
              - 
      
Amazon Q Developer for CLIでAWS Diagram MCP Serverを使ってAWSアイコンを使った図を書いてもらいました
MacにインストールしているAmazon Q Developer for CLI …
 


