Ubuntu環境で oauth2-proxy をセットアップした際の手順ログです。
IdPは Azure AD (Entra ID) を想定しています。ログの永続化とローテーション設定もあわせて行います。
環境
- Ubuntu 22.04 LTS
- oauth2-proxy v7.10.0
1. インストール
GitHubのリリースページからバイナリを取得して配置します。
# ダウンロード
wget https://github.com/oauth2-proxy/oauth2-proxy/releases/download/v7.10.0/oauth2-proxy-v7.10.0.linux-amd64.tar.gz
# 解凍
tar -xvf oauth2-proxy-v7.10.0.linux-amd64.tar.gz
# バイナリ配置
sudo mv oauth2-proxy-v7.10.0.linux-amd64/oauth2-proxy /usr/local/bin/
# 後片付け
sudo rm -rf oauth2-proxy-v7.10.0.linux-amd64 oauth2-proxy-v7.10.0.linux-amd64.tar.gz
Cookie シークレットの生成
設定ファイルに必要なランダム文字列を生成して控えておきます。
python3 -c 'import os; print(os.urandom(16).hex())'
# 出力例: a1b2c3d4... (これをコピー)
2. Systemd サービス作成と設定
ユニットファイルを作成します。
[Unit]
Description=OAuth2 Proxy for Entra ID
After=network.target
[Service]
ExecStart=/usr/local/bin/oauth2-proxy \
--http-address="0.0.0.0:4180" \
--upstream="http://localhost:8080" \
--provider="azure" \
--client-id="xxxx-xxxx-xxxx-xxxx" \
--client-secret="yyyy-yyyy-yyyy-yyyy" \
--redirect-url="https://localhost:443/oauth2/callback" \
--oidc-issuer-url="https://login.microsoftonline.com/zzzz-zzzz-zzzz/v2.0" \
--cookie-secret="ここに先ほどの生成値を貼り付け" \
--cookie-domain="localhost:443" \
--cookie-secure=true \
--cookie-expire=24h \
--set-xauthrequest=true \
--email-domain="*"
Environment="GOMAXPROCS=1"
Restart=always
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=oauth2-proxy
[Install]
WantedBy=multi-user.target
設定値の補足(Azure Portal 側の確認場所)
Azure Portal > 「アプリの登録」 > 対象アプリ から以下の値を取得して書き換えます。
| パラメータ | 項目 | 確認場所 |
|---|---|---|
|
client-id |
xxxxの部分 | アプリケーション (クライアント) ID | 左メニュー「概要」に表示されるGUID。 |
| client-secret
yyyyの部分 | クライアント シークレットの値 | 左メニュー「証明書とシークレット」>「クライアント シークレット」。
※「シークレット ID」ではないので注意。 |
| oidc-issuer-url
zzzzの部分 | ディレクトリ (テナント) ID | 左メニュー「概要」に表示されるGUID。
https://login.microsoftonline.com/{テナントID}/v2.0 の形式にする。
※末尾の /v2.0 を忘れずに。 |
サービスの起動
sudo systemctl daemon-reload
sudo systemctl enable oauth2-proxy
sudo systemctl start oauth2-proxy
# 状態確認
sudo systemctl status oauth2-proxy
3. ログ設定 (Rsyslog)
デフォルトだと /var/log/syslog にログが混ざってしまうため、oauth2-proxy.log として分離します。
ログファイルの準備
Rsyslogが書き込めるよう、権限を調整しておきます。
# ファイル作成
sudo touch /var/log/oauth2-proxy.log
# syslog(書き込み用) : adm(閲覧用) に設定
sudo chown syslog:adm /var/log/oauth2-proxy.log
sudo chmod 640 /var/log/oauth2-proxy.log
Rsyslog設定
SyslogIdentifier=oauth2-proxy のログを特定して、専用ファイルへ振り分けます。
if $programname == 'oauth2-proxy' then /var/log/oauth2-proxy.log
& stop
※ & stop を入れることで、メインの syslog への重複出力を停止しています。
設定反映のため再起動します。
sudo systemctl restart rsyslog
4. ログローテーション (Logrotate)
ログが肥大化しないよう、日次でローテーション設定を入れます。
/var/log/oauth2-proxy.log {
daily
rotate 14
missingok
notifempty
compress
delaycompress
sharedscripts
su root adm
postrotate
/usr/lib/rsyslog/rsyslog-rotate
endscript
}
-
rotate 14: 14世代(2週間分)保存 -
su root adm: Ubuntuで権限エラーを防ぐために指定 -
postrotate: ローテーション後にRsyslogへ通知(必須)
テスト実行
設定ファイルに記述ミスがないか確認します。
sudo logrotate -d /etc/logrotate.d/oauth2-proxy
エラーが出なければ設定完了です。