config aaa / tacacs / radius サブコマンド¶
概要¶
AAA (Authentication / Authorization / Accounting) と、その下位プロトコル TACACS+ / RADIUS のサーバ設定を行う。aaa・tacacs・radius の 3 つは独立した click グループで、config/main.py がそれぞれを config.add_command(aaa.aaa) config.add_command(aaa.tacacs) config.add_command(aaa.radius) の形で config 直下に登録する1。すべて config/aaa.py に同居している。
操作対象は CONFIG_DB の AAA / TACPLUS / TACPLUS_SERVER / RADIUS / RADIUS_SERVER テーブル。値の追加には add_table_kv (= mod_entry)、削除には del_table_key を使う。set_entry は ValidatedConfigDBConnector 経由で YANG 検証を伴う。
コマンド一覧¶
config aaa ...¶
| コマンド | 用途 |
|---|---|
config aaa authentication failthrough <enable\|disable\|default> |
AAA fail-through |
config aaa authentication fallback <enable\|disable\|default> |
AAA fallback |
config aaa authentication debug <enable\|disable\|default> |
AAA debug ログ |
config aaa authentication trace <enable\|disable\|default> |
AAA パケットトレース |
config aaa authentication login <ldap\|radius\|tacacs+\|local\|default> [secondary] |
ログイン認証プロトコル選択(最大 2 段) |
config aaa authorization <tacacs+\|local\|"tacacs+ local"> |
認可プロトコル |
config aaa accounting <disable\|tacacs+\|local\|"tacacs+ local"> |
アカウンティング |
config tacacs ...¶
| コマンド | 用途 |
|---|---|
config tacacs timeout <0-60> / config tacacs default timeout |
グローバルタイムアウト |
config tacacs authtype <chap\|pap\|mschap\|login> / default authtype |
グローバル認証方式 |
config tacacs passkey <secret> / default passkey |
グローバル共有鍵 |
config tacacs add <ip> [-t TIMEOUT] [-k KEY] [-a TYPE] [-o PORT] [-p PRI] [-m] |
TACACS+ サーバ追加 |
config tacacs delete <ip> |
TACACS+ サーバ削除 |
config radius ...¶
| コマンド | 用途 |
|---|---|
config radius timeout <1-60> / default timeout |
グローバルタイムアウト |
config radius retransmit <0-10> / default retransmit |
リトライ回数 |
config radius authtype <chap\|pap\|mschapv2> / default authtype |
認証方式 |
config radius passkey <secret> / default passkey |
共有鍵(最大 65 文字) |
config radius sourceip <ip> / default sourceip |
source IP |
config radius nasip <ip> / default nasip |
NAS-IP |
config radius statistics <enable\|disable\|default> |
統計収集の有効化 |
config radius add <ip> [-r N] [-t SEC] [-k KEY] [-a TYPE] [-o PORT] [-p PRI] [-m] [-s INTF] |
RADIUS サーバ追加(最大 8 台) |
config radius delete <ip> |
RADIUS サーバ削除 |
各コマンドの詳細¶
config aaa authentication login <protocol> [secondary]¶
動作:
AAA|authentication の login フィールドに <protocol> を書き込む。引数を 2 つ取った場合は local,radius のように , 結合した値にする2。local が必ず一方に含まれていること、もう一方が radius / tacacs+ / ldap のいずれかであることを aaa.py がチェックする。default 単独指定で login フィールドが削除される。
📋 検証エビデンス: sonic-net/sonic-utilities/config/aaa.py#L120-L155 (sha: 39732bceb8bdefe706518ab40623bbbba6ff33b9)
出典:
sonic-net/sonic-utilities/config/aaa.py#L120-L155 (sha: 39732bceb8bdefe706518ab40623bbbba6ff33b9)
抜粋:
config aaa authorization <protocol> / accounting <protocol>¶
AAA|authorization または AAA|accounting の login フィールドに tacacs+ / local / tacacs+,local を設定する。accounting disable のみ del_table_key で削除する。
config tacacs add <ip> [...]¶
引数:
<ip>... 必須。is_ipaddressで検証。-t/--timeout... 整数(範囲チェックは ON-add 時にはなく、config tacacs timeoutのグローバル側で 0-60 と定義)-k/--key... shared secret-a/--auth_type...chap/pap/mschap/login-o/--port... 1-65535、default 49-p/--pri... 1-64、default 1-m/--use-mgmt-vrf... 立てるとvrf=mgmtをエントリに追加
動作:
TACPLUS_SERVER|<ip> を set_entry で書く。同じ IP のエントリが既存ならエラーで終了。
config tacacs delete <ip>¶
TACPLUS_SERVER|<ip> を set_entry(None) で削除。
config tacacs timeout / authtype / passkey¶
TACPLUS|global テーブルの timeout / auth_type / passkey を add_table_kv で書き換え。config tacacs default <field> 形式は同じ field を del_table_key で消す。値の範囲: timeout 0-60 (click.IntRange)、authtype は 4 値の Choice。
config radius add <ip> [...]¶
引数:
<ip>... IP もしくはホスト名-r/--retransmit1-10-t/--timeout1-60-k/--key... 64 文字以下、空白 /#/,を含まないこと(is_secretでバリデート)-a/--auth_type...chap/pap/mschapv2-o/--auth-port1-65535、default 1812-p/--pri1-64、default 1-m/--use-mgmt-vrf-s/--source-interface...Ethernet*/PortChannel*/Vlan*/Loopback*/eth0のみ許可
動作:
RADIUS_SERVER|<ip> を set_entry。サーバ数が RADIUS_MAXSERVERS = 8 を超える場合は拒否される3。
config radius sourceip <ip> / nasip <ip>¶
is_ipaddress で検証後、IPv4 では 0.0.0.0・予約・マルチキャストをエラー、IPv6 では 0::0 / 0::1 / マルチキャストをエラーにする。値は RADIUS|global の src_ip / nas_ip フィールドへ書く。
config radius statistics <enable|disable|default>¶
RADIUS|global|statistics を 'true' / 'false' 文字列で書く(boolean ではなく文字列)。default で削除。
関連する CONFIG_DB¶
| テーブル | key | 主なフィールド | 操作するコマンド |
|---|---|---|---|
AAA |
authentication |
login / failthrough / fallback / debug / trace |
config aaa authentication ... |
AAA |
authorization |
login |
config aaa authorization |
AAA |
accounting |
login |
config aaa accounting |
TACPLUS |
global |
timeout / auth_type / passkey |
config tacacs timeout 等 |
TACPLUS_SERVER |
<ip> |
tcp_port / priority / auth_type / timeout / passkey / vrf |
config tacacs add/delete |
RADIUS |
global |
timeout / retransmit / auth_type / passkey / src_ip / nas_ip / statistics |
config radius ... |
RADIUS_SERVER |
<ip> |
auth_port / priority / auth_type / retransmit / timeout / passkey / vrf / src_intf |
config radius add/delete |
補助バリデータ¶
is_secret...^[^ #,]*$正規表現。空白 /#/,を禁止。RADIUS_PASSKEY_MAX_LEN = 65、RADIUS_MAXSERVERS = 8。ADHOC_VALIDATION = True(デフォルト ON)。CONFIG_DB の YANG 検証側ではなくコマンド側で IP / 文字種チェックを行う。
関連リファレンス¶
- CONFIG_DB:
AAA/TACPLUS/TACPLUS_SERVER/RADIUS/RADIUS_SERVER
引用元¶
関連 CLI コマンド¶
show aaa— show aaa サブコマンドshow acl— show acl サブコマンドconfig acl— config acl サブコマンドconfig ssh— config ssh サブコマンド
関連ページ¶
データフロー (自動生成)¶
flowchart LR
CLI["config aaa"]
SC["sonic-cfggen<br/>(config CLI のみ)"]
CLI --> SC
CDB0[("CONFIG_DB<br/>AAA")]
SC --> CDB0
DM0["hostcfgd"]
CDB0 --> DM0
CDB1[("CONFIG_DB<br/>TACPLUS")]
SC --> CDB1
DM1["hostcfgd"]
CDB1 --> DM1
CDB2[("CONFIG_DB<br/>TACPLUS_SERVER")]
SC --> CDB2
DM2["hostcfgd"]
CDB2 --> DM2
CDB3[("CONFIG_DB<br/>RADIUS")]
SC --> CDB3
DM3["hostcfgd"]
CDB3 --> DM3
凡例
config 系 (CLI → CONFIG_DB → daemon) のミニ図。テーブル → daemon 対応は docs/reference/config-db-orch-map.md から機械生成。
関連 Topics¶
-
config/main.pyの L1754-L1756:config.add_command(aaa.aaa)/config.add_command(aaa.tacacs)/config.add_command(aaa.radius)。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/main.py#L1754 ↩ -
aaa authentication login引数 2 段の組合せロジックはconfig/aaa.pyL120-L155。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/aaa.py#L120 ↩ -
RADIUS サーバ数の上限は
RADIUS_MAXSERVERS = 8。config/aaa.pyL11 と L537-L538 参照。https://github.com/sonic-net/sonic-utilities/blob/39732bceb8bdefe706518ab40623bbbba6ff33b9/config/aaa.py#L11 ↩