pub struct AdminConfig {
pub enabled: bool,
pub listen_addr: Option<String>,
pub auth_method: AdminAuthMethod,
pub allowed_operators: Vec<String>,
pub allowed_auditors: Vec<String>,
pub admin_ca_file: Option<String>,
pub session_ttl_secs: u64,
pub max_sessions: usize,
pub bearer_token: Option<SecretRef>,
pub auditor_bearer_token: Option<SecretRef>,
pub gssapi: Option<AdminGssapiConfig>,
}Expand description
[admin] section — administrative API configuration.
When this section is absent, admin endpoints return 404.
[admin]
enabled = true
listen_addr = "127.0.0.1:8444"
auth_method = "mtls"
allowed_operators = ["admin@example.com"]Fields§
§enabled: boolEnable the admin API.
listen_addr: Option<String>Listen address for the admin API.
When absent, admin endpoints are served on the main EST listener. Setting a separate address allows binding the admin API to a management network interface.
auth_method: AdminAuthMethodAuthentication method for admin API access.
allowed_operators: Vec<String>List of allowed operator identities.
The format depends on auth_method:
mtls— Subject DN or SAN email of the client certificate.basic— Username (passwords stored in the database).gssapi— Kerberos principal name.
allowed_auditors: Vec<String>List of allowed auditor identities (read-only role).
NIAP CA PP FMT_SMR.1: an auditor may query audit and status endpoints
but is refused all mutating operations. Format matches
allowed_operators (per auth_method). An identity listed in both
allowed_operators and here is treated as an operator (operator
precedence).
admin_ca_file: Option<String>Path to the CA certificate bundle (PEM) for admin mTLS.
RHELBU-3536 R18: separate truststore from the EST client truststore.
Required when auth_method = "mtls".
session_ttl_secs: u64Session TTL in seconds.
Admin sessions expire after this duration of inactivity. Default: 3600 (1 hour).
max_sessions: usizeMaximum concurrent admin sessions. Default: 16.
bearer_token: Option<SecretRef>Bearer token for admin API authentication.
When set, Authorization: Bearer <token> requests are validated
against this value using constant-time comparison. Required when
operators authenticate via Bearer tokens (e.g., CI pipelines,
monitoring systems).
auditor_bearer_token: Option<SecretRef>Bearer token for read-only auditor API access.
When set, Authorization: Bearer <token> requests matching this value
(constant-time) are granted the crate::routes::admin::AdminRole::Auditor
role. A token matching bearer_token takes precedence (operator).
gssapi: Option<AdminGssapiConfig>GSSAPI configuration (required when auth_method = "gssapi").
Implementations§
Trait Implementations§
Source§impl Clone for AdminConfig
impl Clone for AdminConfig
Source§fn clone(&self) -> AdminConfig
fn clone(&self) -> AdminConfig
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for AdminConfig
impl Debug for AdminConfig
Source§impl Default for AdminConfig
impl Default for AdminConfig
Source§impl<'de> Deserialize<'de> for AdminConfig
impl<'de> Deserialize<'de> for AdminConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl Freeze for AdminConfig
impl RefUnwindSafe for AdminConfig
impl Send for AdminConfig
impl Sync for AdminConfig
impl Unpin for AdminConfig
impl UnsafeUnpin for AdminConfig
impl UnwindSafe for AdminConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more