0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[Ubuntu] oauth2-proxy (v7.10.0) のインストールとログ設定手順

Posted at

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 サービス作成と設定

ユニットファイルを作成します。

/etc/systemd/system/oauth2-proxy.service
[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 のログを特定して、専用ファイルへ振り分けます。

/etc/rsyslog.d/30-oauth2-proxy.conf
if $programname == 'oauth2-proxy' then /var/log/oauth2-proxy.log
& stop

& stop を入れることで、メインの syslog への重複出力を停止しています。

設定反映のため再起動します。

sudo systemctl restart rsyslog


4. ログローテーション (Logrotate)

ログが肥大化しないよう、日次でローテーション設定を入れます。

/etc/logrotate.d/oauth2-proxy
/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

エラーが出なければ設定完了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?