コンテンツにスキップ

AAA テーブル

概要

ログイン認証 (authentication) / 認可 (authorization) / アカウンティング (accounting) の手段優先順序を CONFIG_DB に保持するテーブル1hostcfgdAAA ハンドラが読み出し、Linux PAM (/etc/pam.d/common-auth, /etc/pam.d/sshd 等) と nsswitch / sshd 設定を再生成する。

データフロー (自動生成)

flowchart LR
  CDB[("CONFIG_DB<br/>AAA")]
  DM["hostcfgd"]
  CDB --> DM

凡例

CONFIG_DB から SAI までの典型経路を docs/reference/config-db-orch-map.md から機械生成したミニ図。詳細・例外は本ページ本文と対応表を参照。

key 構造

AAA|<type>

<type> は enum authentication / authorization / accounting

フィールド

フィールド デフォルト 説明
type enum authentication/authorization/accounting - AAA 機能種別 (key)
login string (カンマ区切り; ldap/tacacs+/local/radius/default) local 試行順序リスト
failthrough boolean False true: あるメソッドが失敗したら次のメソッドに継続
fallback boolean False true: 全リモートメソッド失敗時に local にフォールバック
debug boolean False AAA デバッグログを有効化
trace boolean False AAA プロトコルパケットトレースを有効化

制約

  • login の pattern: ((ldap|tacacs\+|local|radius|default),)*(ldap|tacacs\+|local|radius|default) (重複チェックなし、順序のみ意味あり)
  • must 制約: type = authenticationlogintacacs+ を含めるなら TACPLUS.global.passkey が存在しなければエラー1

購読者

  • hostcfgd (sonic-host-services の AAA ハンドラ): CONFIG_DB → PAM / nsswitch / sshd 再生成
  • pam_tacplus / pam_radius / pam_ldap / pam_unix: PAM 経由で実際の認証を実行

関連 CONFIG_DB / YANG / CLI

例外条件・特殊挙動

条件 挙動
keyauthentication/authorization/accounting 以外 内部状態を更新せず実質 no-op
failthrough/debug"true"/"yes"/"1" 以外の文字列 is_true() が False 扱い、型エラーなし
loginldap を含むが LDAP global 設定が不完全 nslcd サービスを起動しない (silent skip)
PAM 設定ファイル書き込み失敗 syslog ERR のみ、クラッシュなし
logintacacs+ を含むが TACPLUS.global.passkey が未設定 YANG レベルで reject(hostcfgd は実行時再チェックなし)

値依存挙動マトリクス

type (enum — key フィールド)

効果 evidence
authentication PAM common-auth-sonic.j2 を再生成して /etc/pam.d/common-auth, /etc/issue 等を更新。YANG must 制約で logintacacs+ を含む場合 TACPLUS.global.passkey が必須 sonic-system-aaa.yang:must
authorization tacplus_nss.conf.j2 を生成して nss 設定を更新。logintacacs+ / local のみ有効 sonic-host-services/scripts/hostcfgd:2443
accounting アカウンティング設定を tacplus_nss.conf.j2 に反映。loginlocal_accounting / tacacs_accounting で個別有効化 sonic-host-services/data/templates/tacplus_nss.conf.j2:13

login (string — 実質的な複合 enum)

PAM テンプレート common-auth-sonic.j2login 文字列に完全一致で分岐する:

PAM 生成挙動 evidence
local pam_unix.so のみ common-auth-sonic.j2:12
tacacs+ TACACS+ サーバ全台 → root は local 強制 common-auth-sonic.j2:29
tacacs+,local TACACS+ サーバ全台 → pam_unix.so common-auth-sonic.j2:29
local,tacacs+ pam_unix.so 先行 → TACACS+ サーバ残台数 common-auth-sonic.j2:15
radius root を local 強制スキップ → RADIUS chain → deny → cache → local common-auth-sonic.j2:56
radius,local root local skip → RADIUS chain → local common-auth-sonic.j2:44
local,radius local → RADIUS chain → deny → cache common-auth-sonic.j2:32
ldap pam_ldap.so minimum_uid=1000 のみ common-auth-sonic.j2:84
ldap,local pam_ldap.sopam_unix.so common-auth-sonic.j2:82
local,ldap pam_unix.sopam_ldap.so common-auth-sonic.j2:83
(その他) pam_unix.so にフォールバック common-auth-sonic.j2:87

failthrough (boolean)

効果 evidence
false (既定) 各 PAM stanza に auth_err=die を付与。メソッドが REJECT すると即ログイン失敗 common-auth-sonic.j2:16
true auth_err=die を付与しない。メソッドが REJECT しても次メソッドへ継続 common-auth-sonic.j2:16

debug / trace (boolean — RADIUS 専用)

フィールド 効果 evidence
debug true pam_radius_auth.so 引数に debug を追加 common-auth-sonic.j2:35
trace true pam_radius_auth.so 引数に trace を追加 common-auth-sonic.j2:35

複合条件

  • type=authentication かつ logintacacs+ を含む → YANG must 制約が TACPLUS.global.passkey の存在を必須とする (sonic-system-aaa.yang:must)
  • failthroughlogin のすべてのメソッドに横断適用される (TACACS+/RADIUS/LDAP 問わず同一フラグ)

関連リファレンス

引用元

関連ページ

運用ヒント

典型値

  • key 形式: AAA|<service> (service = authentication / authorization / accounting)`。
  • authentication.login: local または tacacs+,local のチェイン。
  • failthrough: True で前段失敗時に次の方式へフォールバック。

よくある誤設定

  • tacacs+ 単独設定で全 TACACS+ サーバ到達不可になると login 不能。必ず local を末尾に残す。

確認コマンド

sonic-db-cli CONFIG_DB hgetall 'AAA|authentication'
show aaa

  1. src/sonic-yang-models/yang-models/sonic-system-aaa.yang (container AAA / list AAA_LIST、leaf login の pattern と TACACS+ passkey の must 制約). https://github.com/sonic-net/sonic-buildimage/blob/9ea932ec2e18f35e58268ec2e4456b1d4afd65cd/src/sonic-yang-models/yang-models/sonic-system-aaa.yang