90 lines
3.7 KiB
Text
90 lines
3.7 KiB
Text
|
|
=== Admin endpoints and Admin Console
|
|
|
|
{project_name} exposes the administrative REST API and the web console on the same port as non-administrative usage by default. Do not expose administrative endpoints externally if external access is not necessary. If you need to expose administrative endpoints externally, you can expose them directly in {project_name} or use a proxy.
|
|
|
|
To expose endpoints by using a proxy, consult the documentation for the proxy. You need to control access to requests to the `/auth/admin` endpoint.
|
|
|
|
Two options are available in {project_name} to expose endpoints directly, IP restriction and separate ports.
|
|
|
|
When the Admin Console becomes inaccessible on the frontend URL of {project_name}, configure a fixed admin URL in the default hostname provider.
|
|
|
|
==== IP restriction
|
|
|
|
You can restrict access to `/auth/admin` to only specific IP addresses. For example, restrict access to `/auth/admin` to IP addresses in the range `10.0.0.1` to `10.0.0.255`.
|
|
|
|
[source,xml,subs="attributes+"]
|
|
----
|
|
<subsystem xmlns="{subsystem_undertow_xml_urn}">
|
|
...
|
|
<server name="default-server">
|
|
...
|
|
<host name="default-host" alias="localhost">
|
|
...
|
|
<filter-ref name="ipAccess"/>
|
|
</host>
|
|
</server>
|
|
<filters>
|
|
<expression-filter name="ipAccess" expression="path-prefix('/auth/admin') -> ip-access-control(acl={'10.0.0.0/24 allow'})"/>
|
|
</filters>
|
|
...
|
|
</subsystem>
|
|
----
|
|
|
|
You can also restrict access to specific IP addresses by using these CLI commands.:
|
|
|
|
[source,bash]
|
|
----
|
|
/subsystem=undertow/configuration=filter/expression-filter=ipAccess:add(,expression="path-prefix[/auth/admin] -> ip-access-control(acl={'10.0.0.0/24 allow'})")
|
|
/subsystem=undertow/server=default-server/host=default-host/filter-ref=ipAccess:add()
|
|
----
|
|
|
|
[NOTE]
|
|
====
|
|
For IP restriction using a proxy, configure the proxy to ensure {project_name} receives the client IP address and not the proxy IP address.
|
|
====
|
|
|
|
==== Port restriction
|
|
|
|
You can expose `/auth/admin` to a different unexposed port. For example, expose `/auth/admin` on port `8444` and prevent access to the default port `8443`.
|
|
|
|
[source,xml,subs="attributes+"]
|
|
----
|
|
<subsystem xmlns="{subsystem_undertow_xml_urn}">
|
|
...
|
|
<server name="default-server">
|
|
...
|
|
<https-listener name="https" socket-binding="https" security-realm="ApplicationRealm" enable-http2="true"/>
|
|
<https-listener name="https-admin" socket-binding="https-admin" security-realm="ApplicationRealm" enable-http2="true"/>
|
|
<host name="default-host" alias="localhost">
|
|
...
|
|
<filter-ref name="portAccess"/>
|
|
</host>
|
|
</server>
|
|
<filters>
|
|
<expression-filter name="portAccess" expression="path-prefix('/auth/admin') and not equals(%p, 8444) -> response-code(403)"/>
|
|
</filters>
|
|
...
|
|
</subsystem>
|
|
|
|
...
|
|
|
|
<socket-binding-group name="standard-sockets" default-interface="public" port-offset="${jboss.socket.binding.port-offset:0}">
|
|
...
|
|
<socket-binding name="https" port="${jboss.https.port:8443}"/>
|
|
<socket-binding name="https-admin" port="${jboss.https.port:8444}"/>
|
|
...
|
|
</socket-binding-group>
|
|
----
|
|
|
|
You can expose `/auth/admin` on port `8444` and prevent access to the default port `8443` by using CLI commands:
|
|
|
|
[source,bash]
|
|
----
|
|
/socket-binding-group=standard-sockets/socket-binding=https-admin/:add(port=8444)
|
|
|
|
/subsystem=undertow/server=default-server/https-listener=https-admin:add(socket-binding=https-admin, security-realm=ApplicationRealm, enable-http2=true)
|
|
|
|
/subsystem=undertow/configuration=filter/expression-filter=portAccess:add(,expression="path-prefix('/auth/admin') and not equals(%p, 8444) -> response-code(403)")
|
|
/subsystem=undertow/server=default-server/host=default-host/filter-ref=portAccess:add()
|
|
----
|