Jamfを使ってAWS VPN Clientをプロファイル付きで配布する

f:id:yusuke_endoh:20210820021635j:plain

はじめに

グッドパッチで情報システム担当の@enpipiと申します。 デザインパートナー事業では、お客様がIPアドレス制限をかけている環境に接続をする際にVPNを利用する場合があるため、AWS VPNの構築をしています。

aws.amazon.com

AWS VPN ClientをJamfで配布する際にプロファイルを一緒に配布できると便利ですよね。 ぱっと作ったものなので出すか迷ったのですが、他に前例が見つからなかったので世に出したほうが良さそうということで記事にすることにしました。 ソースに甘いところもあると思いますが、生暖かい目でみてもらえれば幸いです。

備考

  • 2021年8月時点でプロファイルは更新ではなく、 上書きです
  • Active Directory認証を私は今回構築しておらず検証ができていません🙏  @_w_yoshida さんのご厚意により設定パラメータを助言いただきました。ありがとうございます。

成果物

github.com

配布準備

今回のスクリプトはAWS VPNがインストール済みであることが前提なので、以下の順番で配布するポリシーを作るのが最終目標です。

  1. AWS VPN Clientの配布
  2. プロファイルの配布

AWS VPN Client配布とプロファイル配布を1つのポリシーにしても上手くいくかもしれません。 自分の場合は、インストールする順番を明確に定義したほうが確実のため今回はこのようなやり方にしています。

1. AWS VPN Clientを配布するポリシーを作る

f:id:yusuke_endoh:20210813223010j:plain
JamfでAWS VPN Clientを配布するトリガーを作る

JamfでAWS VPN Clientを配布するポリシーを作ります。 AWS VPN Clientの配布にはInstallomatorを使いました。

github.com

Installomatorの使い方については、 kenchan0130さんのブログがわかりやすいです。

kenchan0130.github.io

カスタムイベントに install_aws_vpn_client と記載し、実行頻度を Ongoingにします。 今回は、ターゲットを All Computer にしています。

2. .ovpnファイルの用意

  1. AWS VPN Endpointから .ovpnファイルをダウンロードします。
  2. ./private/temp/等に該当の.ovpnファイルを設置します。
  3. Composer を使ってアクセス権を修正して、pkgで書き出します。
  4. 書き出したpkgをJamf Adminでアップロードします

3. スクリプトを作成する

f:id:yusuke_endoh:20210820012208j:plain

  1. 設定 > コンピュータ管理 > スクリプト > 新規から新規スクリプトを作成します。
  2. 適当な表示名を入力し、スクリプトタブを選択し、Githubからdeploy-ovpn-for-aws-client-vpn.shをペーストします。
  3. オプションタブを開き、Paramater Labels のパラメータ4-9に以下のテキストをコピーペーストをします。
    • パラメータ4 : file://private/temp/aws-vpn.ovpn
    • パラメータ5 : Display Name on aws vpn client
    • パラメータ6 : CvpnEndpointId
    • パラメータ7 : CvpnEndpointRegion
    • パラメータ8 : CompatibilityVersion
    • パラメータ9 : FederatedAuthType

4. スクリプトを動かすポリシーを作る

  1. 新規ポリシー作成を選択し、カスタムイベントに install_aws_vpn_profile と記載し、実行頻度をOngoing にします。今回は、ターゲットを All Computer にしています。
    • f:id:yusuke_endoh:20210813232542j:plain
  2. Package に先程アップロードした .ovpnファイルを選択します
    • f:id:yusuke_endoh:20210813232931j:plain

スクリプトの引数を設定する

f:id:yusuke_endoh:20210813233019j:plain

スクリプトを選択し、3 で作ったスクリプトを選択して、引数を設定していきます。

  1. pkgファイルを設置したパスを指定します
  2. AWS VPN Clientに表示する名称を入力します
  3. AWS VPN Endpoint IDを入力します
  4. リージョンを指定します
    • e.g.) us-west-1, ap-northeast-1
  5. Compatilibity Versionを以下の通り設定します。
    • 1 : 相互認証, Active Directory認証
    • 2 : SAML認証
  6. 認証のタイプを以下の通り設定します。
    • 0 : 相互認証, Active Directory認証
    • 1 : SAML認証

なお、本設定は AWS VPN Clientに .ovpnファイルを取り込むことで生成される以下のファイルから確認ができます。 ローカルユーザ名/.config/AWSVPNClient/ConnectionProfiles

5. AWS VPN Client と プロファイルを配布するためのスクリプトを順番に発火させるポリシーを用意する

次のようなスクリプトを書いて、ポリシーを作ります。

#!/bin/sh
/usr/local/jamf/bin/jamf policy -trigger install_rosseta
/usr/local/jamf/bin/jamf policy -trigger install_aws_vpn_client -verbose
/usr/local/jamf/bin/jamf policy -trigger install_aws_vpn_profile -verbose

M1を考慮して、 Rossetaの配布ポリシーも混ぜています。 Rossetaインストールのスクリプトは下記を使っていますが他のスクリプトでも構いません。 Solved: Deploy Rosetta on M1 machines before everything el... - Jamf Nation Community - 223499

まとめ

AWS VPNのプロファイルも一緒に配布すれば、手順書も SelfServiceからインストールしてねと伝えるだけなので運用も簡単ですね。

上書きしか今はできないので初期配布でしか使えないかもしれませんが、それでもユーザーに意識させないことに越したことはありません。

既にAWS VPN Clientをインストールされている端末は対象外にするようにSmart Computer Groupsを構築するのも良さそうです。

また、AWS VPNではSAML認証を利用することを推奨します。IdP側で認可をコントロールできるので運用コストも最小限で済みますね。

肝心のスクリプトは、諸先輩方からみると甘いところも多々あると思いますし、自分も幾つか修正したい箇所もあるので今後も更新したいです。 動作で不明点があればお気軽にTwitterなどでDMいただければ幸いです。

グッドパッチでは二人目の情シスを募集しています!

グッドパッチでは私と一緒に協働していただける、二人目の情報システム担当の採用を募集しています。

グッドパッチはMacOSが9割以上という環境のため、Jamf Proを駆使することがそのままチームの生産性に直結します。

会社の成長、ひいてはデザインとデザイナーの価値向上に貢献しませんか。仲間を支え、デザインの力を証明するために力を貸してください!!

hrmos.co