Feature Map: Legacy config to new-style config
This section serves as a reference by config file and config name how the classic authentication features map to the new authentication features.
Note: You do not have to manually apply the changes listed here. You can use the sgctl migrate-config
command.
sg_config.yml
General
Legacy Config | New Config | Details |
---|---|---|
dynamic.do_not_fail_on_forbidden |
Property ignore_unauthorized_indices in sg_authz.yml |
Semantics of ignore_unauthorized_indices have slightly changed and provide more expected results |
dynamic.do_not_fail_on_forbidden_empty |
No longer necessary | This behavior has been integrated into the new semantics of ignore_unauthorized_indices |
dynamic.field_anonymization_salt2 |
Property field_anonymization.salt in sg_authz.yml |
|
dynamic.license |
Property license in sg_license_key.yml |
|
dynamic.filtered_alias_mode |
No longer supported | Search Guard no longer restricts the use of filtered aliases |
dynamic.multi_rolespan_enabled |
No longer supported | Multi-rolespan is now always active |
dynamic.hosts_resolver_mode |
No longer necessary | Search Guard will automatically lookup host names when any are specified in sg_roles_mapping.yml . Lookups can be avoided by specifying IP addresses in the new ip attribute in sg_roles_mapping.yml . |
dynamic.http.anonymous_auth_enabled |
Authentication domain of type anonymous in sg_authc.yml |
See Anonymous authentication |
dynamic.http.xff.internalProxies |
Property network.trusted_proxies in sg_authc.yml |
While xff.internalProxies expects a regular expression, you can specify subnets in network.trusted_proxies using CIDR expressions. See also IP addresses of users behind proxies. |
dynamic.http.xff.remoteIpHeader |
Property network.http.remote_ip_header in sg_authc.yml |
|
dynamic.http.xff.enabled |
No longer necessary | Just specify network.trusted_proxies in sg_authc.yml |
dynamic.auth_token_provider |
Config file sg_auth_token_service.yml |
Structure of the configuration remains the same. |
kibana
The settings relating to Kibana Multi-Tenancy have been moved to sg_frontend_multi_tenancy.yml
.
Legacy Config | New Config | Details |
---|---|---|
dynamic.kibana.multi_tenancy_enabled |
Property enabled in sg_frontend_multi_tenancy.yml |
|
dynamic.kibana.server_username |
Property server_user in sg_frontend_multi_tenancy.yml |
|
dynamic.kibana.index |
Property index in sg_frontend_multi_tenancy.yml |
authc
The authentication domain settings have been combined with the authorization domains and moved to sg_authc.yml
. Settings for authentication modes which are specific to Kibana (such as OIDC and SAML) have been moved to sg_frontend_authc.yml
.
Legacy Config | New Config | Details |
---|---|---|
http_enabled |
Property enabled of an auth domain in sg_authc.yml |
|
transport_enabled |
No longer available | Transport client authentication is no longer available in Search Guard FLX |
order |
No longer necessary | The order of authentication domains is now specified using the natural order of the entries in the config file |
skip_users |
Property users.skip of an auth domain in sg_authc.yml |
|
enabled_only_for_ips |
Property ips.accept of an auth domain in sg_authc.yml |
|
http_authenticator.type |
First part of the type property of an auth domain in sg_authc.yml |
|
http_authenticator.challenge |
No longer necessary | Search Guard will combine challenges if necessary |
http_authenticator.config |
The new property is named after the type of the authentication frontend | |
authentication_backend.type |
Second part of the type property of an auth domain in sg_authc.yml . |
If the type was noop , this can be now omitted. |
authentication_backend.config |
The new property is named after the type of the authentication backend |
http_authenticator
of type jwt
Legacy Config | New Config | Details |
---|---|---|
config.signing_key |
Property jwt.signing.rsa.public_key or jwt.signing.ec.public_key of an auth domain in sg_authc.yml |
You need to know whether the key is an RSA or Elliptic Curve key to properly configure it |
config.jwt_header |
Property jwt.header of an auth domain in sg_authc.yml |
|
config.jwt_url_parameter |
Property jwt.url_parameter of an auth domain in sg_authc.yml |
|
config.required_audience |
Property jwt.required_audience of an auth domain in sg_authc.yml |
|
config.required_issuer |
Property jwt.required_issuer of an auth domain in sg_authc.yml |
|
config.subject_key |
Property user_mapping.user_name.from of an auth domain in sg_authc.yml |
You need to prefix the key with jwt to access the JWT claims. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $["jwt"]["..."] JSON path syntax |
config.subject_path |
Property user_mapping.user_name.from of an auth domain in sg_authc.yml |
You need to prefix the path with jwt to access the JWT claims. |
config.roles_key |
Property user_mapping.roles.from_comma_separated_string of an auth domain in sg_authc.yml |
You need to prefix the key with jwt to access the JWT claims. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $["jwt"]["..."] JSON path syntax |
config.roles_path |
Property user_mapping.roles.from_comma_separated_string of an auth domain in sg_authc.yml |
You need to prefix the path with jwt to access the JWT claims. |
config.map_claims_to_user_attrs |
Property user_mapping.attrs.from of an auth domain in sg_authc.yml |
You need to prefix the path with jwt to access the JWT claims. |
http_authenticator
of type clientcert
Legacy Config | New Config | Details |
---|---|---|
config.username_attribute |
Property user_mapping.user_name.from of an auth domain in sg_authc.yml |
You need to prefix the key with clientcert.subject. to access the client certificate subject RDNs. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $.clientcert.subject["..."] JSON path syntax |
http_authenticator
of type proxy
The proxy
authenticator has been replaced by the trusted_origin
authentication frontend.
Legacy Config | New Config | Details |
---|---|---|
config.user_header |
Property user_mapping.user_name.from of an auth domain in sg_authc.yml |
You need to prefix the key with request.headers. to access the request headers. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $.request.headers["..."] JSON path syntax |
config.roles_header |
Property user_mapping.roles.from of an auth domain in sg_authc.yml |
You need to prefix the key with request.headers. to access the request headers. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $.request.headers["..."] JSON path syntax. If the roles are specified in a comma separated string, use user_mapping.roles.from_comma_separated_string . If a different separator is used, you can use the properties user_mapping.roles.from.json_path combined with user_mapping.roles.from.split |
http_authenticator
of type proxy2
The proxy2
authenticator in mode ip
has been replaced by the trusted_origin
authentication frontend. The mode cert
has been replaced by the clientcert
authenticator. The mode either
can be achieved with using two different authentication domain. The mode both
can be achived by the clientcert
authenticator in combination with the accept.trusted_ips
property.
Legacy Config | New Config | Details |
---|---|---|
config.auth_mode |
Auth frontend of type trusted_origin and/or clientcert |
See description above |
config.user_header |
Property user_mapping.user_name.from of an auth domain in sg_authc.yml |
You need to prefix the key with request.headers. to access the request headers. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $.request.headers["..."] JSON path syntax |
config.roles_header |
Property user_mapping.roles.from of an auth domain in sg_authc.yml |
You need to prefix the key with request.headers. to access the request headers. The new property expects JSON path expressions. If the key contains special characters, you might need to use the $.request.headers["..."] JSON path syntax. If the roles are specified in a comma separated string, use user_mapping.roles.from_comma_separated_string . If a different separator is used, you can use the properties user_mapping.roles.from.json_path combined with user_mapping.roles.from.split |
http_authenticator
of type saml
SAML configuration is now performed in sg_frontend_authc.yml
.
Legacy Config | New Config | Details |
---|---|---|
challenge |
No longer necessary | - |
config.idp.metadata_url |
Property idp.metadata_url in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.idp.metadata_file |
Property idp.metadata_xml in an auth_domain entry of type saml in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.metadata_xml: "${file:/path/to/file}" . See SAML |
config.idp.entity_id |
Property idp.entity_id in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.sp.entity_id |
Property sp.entity_id in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.sp.signature_private_key |
Property sp.signature_private_key in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.sp.signature_algorithm |
Property sp.signature_algorithm in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.kibana_url |
Property server.publicBaseUrl or searchguard.frontend_base_url in kibana.yml |
See SAML |
config.subject_key |
Property user_mapping.subject in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.subject_pattern |
Property user_mapping.subject_pattern in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.roles_key |
Property user_mapping.roles in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.exchange_key |
No longer necessary | |
config.idp.enable_ssl |
No longer necessary | Just specify TLS settings in idp.tls . Explicit enabling them is no longer necessary. See SAML |
config.idp.verify_hostnames |
Property idp.tls.verify_hostnames in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.idp.pemtrustedcas_filepath |
Property idp.tls.trusted_cas in an auth_domain entry of type saml in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.tls.trusted_cas: "${file:/path/to/file}" . See SAML |
config.idp.pemtrustedcas_content |
Property idp.tls.trusted_cas in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.idp.enable_ssl_client_auth |
No longer necessary | Just specify client auth settings in idp.tls.client_auth . Explicit enabling them is no longer necessary. See SAML |
config.idp.pemcert_filepath |
Property idp.tls.client_auth.certificate in an auth_domain entry of type saml in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.tls.client_auth.certificate: "${file:/path/to/file}" . See SAML |
config.idp.pemcert_content |
Property idp.tls.client_auth.certificate in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.idp.pemkey_filepath |
Property idp.tls.client_auth.private_key in an auth_domain entry of type saml in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.tls.client_auth.private_key: "${file:/path/to/file}" . See SAML |
config.idp.pemkey_content |
Property idp.tls.client_auth.private_key in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
config.idp.pemkey_password |
Property idp.tls.client_auth.private_key_password in an auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
http_authenticator
of type openid
OIDC configuration is now performed in sg_frontend_authc.yml
.
Legacy Config | New Config | Details |
---|---|---|
challenge |
No longer necessary | - |
config.openid_connect_url |
Property idp.openid_configuration_url in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.jwt_header |
No longer necessary | |
config.jwt_url_parameter |
No longer necessary | |
config.proxy |
Property proxy in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.subject_key |
Property user_mapping.subject in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.subject_path |
Property user_mapping.subject in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.subject_pattern |
Property user_mapping.subject_pattern in an auth_domain entry of type oidc in sg_frontend_authc.yml |
OIDC |
config.roles_key |
Property user_mapping.roles in an auth_domain entry of type oidc in sg_frontend_authc.yml |
OIDC |
config.roles_path |
Property user_mapping.roles in an auth_domain entry of type oidc in sg_frontend_authc.yml |
OIDC |
config.openid_connect_idp.enable_ssl |
No longer necessary | Just specify TLS settings in idp.tls . Explicit enabling them is no longer necessary. See OIDC |
config.openid_connect_idp.verify_hostnames |
Property idp.tls.verify_hostnames in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.openid_connect_idp.pemtrustedcas_filepath |
Property idp.tls.trusted_cas in an auth_domain entry of type oidc in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.tls.trusted_cas: "${file:/path/to/file}" . See OIDC |
config.openid_connect_idp.pemtrustedcas_content |
Property idp.tls.trusted_cas in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.openid_connect_idp.enable_ssl_client_auth |
No longer necessary | Just specify client auth settings in idp.tls.client_auth . Explicit enabling them is no longer necessary. See OIDC |
config.openid_connect_idp.pemcert_filepath |
Property idp.tls.client_auth.certificate in an auth_domain entry of type oidc in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.tls.client_auth.certificate: "${file:/path/to/file}" . See OIDC |
config.openid_connect_idp.pemcert_content |
Property idp.tls.client_auth.certificate in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.openid_connect_idp.pemkey_filepath |
Property idp.tls.client_auth.private_key in an auth_domain entry of type oidc in sg_frontend_authc.yml |
Files can be referenced with the special syntax idp.tls.client_auth.private_key: "${file:/path/to/file}" . See OIDC |
config.openid_connect_idp.pemkey_content |
Property idp.tls.client_auth.private_key in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
config.openid_connect_idp.pemkey_password |
Property idp.tls.client_auth.private_key_password in an auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
authentication_backend
of type internal
The internal
authentication backend now has the type internal_users_db
.
Legacy Config | New Config | Details |
---|---|---|
config.map_db_attrs_to_user_attrs |
Property user_mapping.attrs.from of an auth domain in sg_authc.yml |
You need to prefix the path with user_entry.attributes to access the user attributes. |
authentication_backend
of type ldap
Legacy Config | New Config | Details |
---|---|---|
config.hosts |
Property ldap.idp.hosts of an auth domain in sg_authc.yml |
|
config.bind_dn |
Property ldap.idp.bind_dn of an auth domain in sg_authc.yml |
|
config.password |
Property ldap.idp.password of an auth domain in sg_authc.yml |
|
config.enable_start_tls |
Property ldap.idp.tls.start_tls of an auth domain in sg_authc.yml |
|
config.verify_hostnames |
Property ldap.idp.tls.verify_hostnames of an auth domain in sg_authc.yml |
|
config.pemtrustedcas_content |
Property ldap.idp.tls.trusted_cas of an auth domain in sg_authc.yml |
|
config.pemtrustedcas_filepath |
Property ldap.idp.tls.trusted_cas with a #{file:...} expression |
|
config.pemcert_content |
Property ldap.idp.tls.client_auth.certificate of an auth domain in sg_authc.yml |
|
config.pemcert_filepath |
Property ldap.idp.tls.client_auth.certificate with a #{file:...} expression |
|
config.pemkey_content |
Property ldap.idp.tls.client_auth.private_key of an auth domain in sg_authc.yml |
|
config.pemkey_filepath |
Property ldap.idp.tls.client_auth.private_key with a #{file:...} expression |
|
config.pemkey_password |
Property ldap.idp.tls.client_auth.private_key_password of an auth domain in sg_authc.yml |
|
config.enable_ssl_client_auth |
No longer necessary | Just specify the ldap.idp.client_auth config properties to use TLS client authentication |
config.userbase |
Property ldap.user_search.base_dn of an auth domain in sg_authc.yml |
|
config.usersearch |
Property ldap.user_search.filter.raw of an auth domain in sg_authc.yml |
Instead of the placeholder {0} you need to use the placeholder ${user.name} |
config.users.base |
Property ldap.user_search.base_dn of an auth domain in sg_authc.yml |
If you need to use several user searches, create one separate ldap authentication domain for each user search criteria |
config.users.search |
Property ldap.user_search.filter.raw of an auth domain in sg_authc.yml |
If you need to use several user searches, create one separate ldap authentication domain for each user search criteria |
config.map_ldap_attrs_to_user_attrs |
Property user_mapping.attrs.from of an auth domain in sg_authc.yml |
You need to prefix the path with ldap_user_entry to access the attributes. |
http_authenticator
of type sg_auth_token
This is no longer necessary, nor available. It is now sufficient to configure the auth token service in the file sg_auth_token_service.yml
.
authz
The authorization domains have been replaced by user information backends. While authorization domains were configured globally, user information backends now need to be configured for each authentication domain separately. This gives you greater control over the association of user information backends with authentication modes.
authorization_backend
of type ldap
The functionality provided by the ldap
authorization backend can be now used in two different ways: You can configure group searches directly inside the ldap
authentication backend. You don’t need to configure a separate user information backend for this. If you have an authentication backend of a type other than ldap
, you can use a user information backend of type ldap
.
Legacy Config | New Config | Details |
---|---|---|
config.hosts |
Property ldap.idp.hosts of a user information backend in sg_authc.yml |
|
config.bind_dn |
Property ldap.idp.bind_dn of a user information backend in sg_authc.yml |
|
config.password |
Property ldap.idp.password of a user information backend in sg_authc.yml |
|
config.enable_start_tls |
Property ldap.idp.tls.start_tls of a user information backend in sg_authc.yml |
|
config.verify_hostnames |
Property ldap.idp.tls.verify_hostnames of a user information backend in sg_authc.yml |
|
config.pemtrustedcas_content |
Property ldap.idp.tls.trusted_cas of a user information backend in sg_authc.yml |
|
config.pemtrustedcas_filepath |
Property ldap.idp.tls.trusted_cas with a #{file:...} expression |
|
config.pemcert_content |
Property ldap.idp.tls.client_auth.certificate of a user information backend in sg_authc.yml |
|
config.pemcert_filepath |
Property ldap.idp.tls.client_auth.certificate with a #{file:...} expression |
|
config.pemkey_content |
Property ldap.idp.tls.client_auth.private_key of a user information backend in sg_authc.yml |
|
config.pemkey_filepath |
Property ldap.idp.tls.client_auth.private_key with a #{file:...} expression |
|
config.pemkey_password |
Property ldap.idp.tls.client_auth.private_key_password of a user information backend in sg_authc.yml |
|
config.enable_ssl_client_auth |
No longer necessary | Just specify the ldap.idp.client_auth config properties to use TLS client authentication |
config.userbase |
Property ldap.user_search.base_dn of a user information backend in sg_authc.yml |
|
config.usersearch |
Property ldap.user_search.filter.raw of a user information backend in sg_authc.yml |
Instead of the placeholder {0} you need to use the placeholder ${user.name} |
config.users.base |
Property ldap.user_search.base_dn of a user information backend in sg_authc.yml |
If you need to use several user searches, create one separate ldap user information backend entries for each user search criteria |
config.users.search |
Property ldap.user_search.filter.raw of a user information backend in sg_authc.yml |
If you need to use several user searches, create one separate ldap user information backend entries for each user search criteria |
config.rolebase |
Property ldap.group_search.base_dn of an ldap auth domain or user information backend in sg_authc.yml |
|
config.rolesearch |
Property ldap.group_search.filter.raw of an ldap auth domain or user information backend in sg_authc.yml |
Instead of the placeholder {0} you need to use the placeholder ${dn} |
config.rolename |
Property ldap.group_search.role_name_attribute of an ldap auth domain or user information backend in sg_authc.yml |
|
config.roles.base |
Property ldap.group_search.base_dn of an ldap auth domain or user information backend in sg_authc.yml |
If you need to use several group searches, create one separate ldap user information backend entry for each group search criteria |
config.roles.search |
Property ldap.group_search.filter.raw of an ldap auth domain or user information backend in sg_authc.yml |
If you need to use several group searches, create one separate ldap user information backend entry for each group search criteria |
config.resolve_nested_roles |
Property ldap.group_search.recursive.enabled of an ldap auth domain or user information backend in sg_authc.yml |
|
config.nested_role_filter |
Property ldap.group_search.recursive.enabled_for of an ldap auth domain or user information backend in sg_authc.yml |
group_search.recursive.enabled_for has the opposite meaning of config.nested_role_filter . While the new option whitelists group names, the old option blacklists them. |
elasticsearch.yml
Legacy Config | New Config | Details |
---|---|---|
searchguard.cache.ttl_minutes |
Property user_cache.expire_after_write in sg_authc.yml |
The new property requires the specification of a temporal unit after the amount. To specify 10 minutes, write 10m |
searchguard.dfm_empty_overrides_all |
none | The setting has been removed. Search Guard now always behave like it is set to true. |
kibana.yml
Legacy Config | New Config | Details |
---|---|---|
searchguard.auth.anonymous_auth_enabled |
Unchanged | See Anonymous authentication |
searchguard.auth.type: "basicauth" |
auth_domain entry of type basic in sg_frontend_authc.yml |
See Username based authentication |
searchguard.auth.type: "jwt" |
Multiple possibilities | Depends on the further configuration of searchguard.jwt.url_parameter and searchguard.jwt.header . See there. |
searchguard.auth.type: "kerberos" |
Unchanged | See Kerberos authentication |
searchguard.auth.type: "openid" |
auth_domain entry of type oidc in sg_frontend_authc.yml |
See OIDC |
searchguard.auth.type: "proxy" |
Unchanged | See Proxy authentication |
searchguard.auth.type: "proxycache" |
No longer supported | Use proxy authentication instead |
searchguard.auth.type: "saml" |
auth_domain entry of type saml in sg_frontend_authc.yml |
See SAML |
searchguard.basicauth.login.* |
Equally named properties in sg_frontend_authc.yml in the section login_page |
See Customizing the login page |
searchguard.basicauth.forbidden_usernames |
Role SGS_KIBANA_USER |
The configuration was changed from a blacklist to a whitelist: All users which shall be able to log into Kibana, must have the Search Guard role Role SGS_KIBANA_USER |
searchguard.jwt.header |
Use proxy authentication to forward the JWT header | See Proxy authentication |
searchguard.jwt.url_parameter |
searchguard.auth.jwt_param.enabled: true and searchguard.auth.jwt_param.url_param: ... |
See JWT URL Parameters |
searchguard.jwt.login_endpoint |
auth_domain of type link in sg_frontend_authc.yml |
See TODO |
searchguard.openid.connect_url |
Property idp.openid_configuration_url in an auth_domain entry of type odic in sg_frontend_authc.yml |
See OIDC |
searchguard.openid.client_id |
Property client_id in an auth_domain entry of type odic in sg_frontend_authc.yml |
See OIDC |
searchguard.openid.client_secret |
Property client_secret in an auth_domain entry of type odic in sg_frontend_authc.yml |
See OIDC |
searchguard.openid.scope |
none | No longer necessary |
searchguard.openid.header |
none | No longer necessary |
searchguard.openid.base_redirect_url |
server.publicBaseUrl or searchguard.frontend_base_url |
See OIDC |
searchguard.openid.logout_url |
Property logout_url in an auth_domain entry of type odic in sg_frontend_authc.yml |
See OIDC |
searchguard.openid.root_ca |
Property idp.tls.trusted_cas in an auth_domain entry of type odic in sg_frontend_authc.yml |
See OIDC |
searchguard.proxycache.* |
No longer supported | Use proxy authentication instead |