Gadget 08:目的別アクセス制御レシピ
Gatekeeper を「どの用途で使うか」に応じて設定テンプレ化するためのページ
目的別アクセス制御レシピ
同じ Gatekeeper でも「用途」によって接続範囲・権限を変えるべきです。 ここでは目的ごとのレシピ(テンプレ)を用意します。
目的
- 「誰に・どのサービスへ・どの範囲で」を目的別にテンプレ化する
- 最小権限(Least Privilege)を手軽に実践する
前提条件
- Gatekeeper 連携の基本(03-gatekeeper-integration)
- 連携先サービス側の OAuth / API 管理画面
レシピ一覧
レシピ A:個人検証(一人で試す)
| 項目 | 設定 |
|---|---|
| 利用者 | 開発者本人のみ |
| サービス | 必要最小(例: GitHub のみ) |
| Scope | repo:read のみ |
| 監査 | connected 確認で十分 |
レシピ B:チーム運用(複数人)
| 項目 | 設定 |
|---|---|
| 利用者 | 承認済みメンバー |
| サービス | 必要に応じて限定追加 |
| Scope | 書き込み操作ごとに個別承認 |
| 監査 | アクセスログ定期的レビュー |
レシピ C:公開運用(外部ユーザー想定)
| 項目 | 設定 |
|---|---|
| 利用者 | 不特定多数(要認証) |
| サービス | 外部連携は最小・原則読み取り |
| Scope | 書き込みは個別申請制 |
| 監査 | 全アクセスをログ&通知(18) |
| 注意 | ADMINS の既定 admin を必ず除去(11) |
手順(レシピを適用する)
- どのレシピかを決める(1ページで1目的)
- 連携先の OAuth アプリで Scope を絞る
.dev.varsを当該用途用に揃えるrun-local再起動 →connected確認- 「想定以上の権限を持たない」ことを確認項目に
Warning重要:既定 admin
初期構成では ADMINS=["admin"] が付いています。 チーム・公開運用にする場合は必ず外しましょう。詳しくは 11-security-hardening を参照。
よくある失敗
| 症状 | 原因 | 対処 |
|---|---|---|
| 想定より権限が広い | Scope を広げたまま使い回し | 目的ごとに OAuth アプリを分ける |
| 誰かが書き込みできた | 書込 Scope が常時有効 | 書き込みは申請制・短時間にする |
| 意図しない人が見える | ADMINS の既定値残存 |
外部公開前に admin 除去 |
| 監査が追えない | ログ未保存 | アクセスログを tarball/外部へ |
確認
次に読む
- 連携そのもの → 03-gatekeeper-integration
- セキュリティ強化 → 11-security-hardening
- 通知設定 → 18-monitoring-and-alerting