Document PKI authentication provider.#43572
Conversation
|
Pinging @elastic/kibana-docs |
|
Pinging @elastic/kibana-security |
| xpack.security.authc.providers: [pki, basic] | ||
| -------------------------------------------------------------------------------- | ||
|
|
||
| Please, note that with `server.ssl.clientAuthentication` set to `required` user will be asked to provide a valid client certificate even if they want to authenticate with username and password. Depending on the security policies it may or may not be desired, and if it's not `server.ssl.clientAuthentication` can be set to `optional`. In this case {kib} will still request a client certificate but the client won't be required to present one. The `optional` client authentication mode can also be needed in some other cases, e.g. when PKI authentication is used in conjunction with Reporting. |
There was a problem hiding this comment.
note: I was initially planning to put the last sentence somewhere here, but I don't see that it mentions other limitations we have with Reporting + SAML/OIDC/Token so went the simplest route 🤷♂️ .
| xpack.security.authc.providers: [token, basic] | ||
| -------------------------------------------------------------------------------- | ||
|
|
||
| [[pki-authentication]] |
There was a problem hiding this comment.
note: I'll double check all the links once ES documentation PR I reference to lands.
There was a problem hiding this comment.
We'll want to ensure the doc links work before merging this PR. There's a step that is ran by the docs CI which will start failing their build if the links don't work 😬
There was a problem hiding this comment.
Sure thing, there was no plan to merge this before ES docs change reaches upstream master 😛
💔 Build Failed |
| [[pki-authentication]] | ||
| ==== Public Key Infrastructure (PKI) Authentication | ||
|
|
||
| PKI authentication allows users to login into {kib} using X.509 client certificates that should be presented while connecting to {kib}. The certificates must first be accepted for authentication on the {kib} TLS layer and then they are further validated by an {es} PKI realm. The PKI authentication provider relies on {es}'s {ref}/delegate-pki-authentication.html[Delegate PKI authentication API] to exchange X.509 client certificates to access tokens. And all subsequent requests to {es}'s APIs on behalf of the users will be authenticated using these access tokens. |
There was a problem hiding this comment.
| PKI authentication allows users to login into {kib} using X.509 client certificates that should be presented while connecting to {kib}. The certificates must first be accepted for authentication on the {kib} TLS layer and then they are further validated by an {es} PKI realm. The PKI authentication provider relies on {es}'s {ref}/delegate-pki-authentication.html[Delegate PKI authentication API] to exchange X.509 client certificates to access tokens. And all subsequent requests to {es}'s APIs on behalf of the users will be authenticated using these access tokens. | |
| PKI authentication allows users to log in to {kib} using X.509 client certificates that must be presented while connecting to {kib}. The certificates must first be accepted for authentication on the {kib} TLS layer and then they are further validated by an {es} PKI realm. The PKI authentication provider relies on {es}'s {ref}/delegate-pki-authentication.html[Delegate PKI authentication API] to exchange X.509 client certificates to access tokens. And all subsequent requests to {es}'s APIs on behalf of the users will be authenticated using these access tokens. |
|
|
||
| PKI authentication allows users to login into {kib} using X.509 client certificates that should be presented while connecting to {kib}. The certificates must first be accepted for authentication on the {kib} TLS layer and then they are further validated by an {es} PKI realm. The PKI authentication provider relies on {es}'s {ref}/delegate-pki-authentication.html[Delegate PKI authentication API] to exchange X.509 client certificates to access tokens. And all subsequent requests to {es}'s APIs on behalf of the users will be authenticated using these access tokens. | ||
|
|
||
| Prior to configuring {kib}, ensure that PKI realm is enabled in {es} and configured to permit delegation. See {xpack-ref}/configuring-pki-realm.html[Configuring a PKI realm] for more information. |
There was a problem hiding this comment.
| Prior to configuring {kib}, ensure that PKI realm is enabled in {es} and configured to permit delegation. See {xpack-ref}/configuring-pki-realm.html[Configuring a PKI realm] for more information. | |
| Prior to configuring {kib}, ensure that the PKI realm is enabled in {es} and configured to permit delegation. See {xpack-ref}/configuring-pki-realm.html[Configuring a PKI realm] for more information. |
|
|
||
| Prior to configuring {kib}, ensure that PKI realm is enabled in {es} and configured to permit delegation. See {xpack-ref}/configuring-pki-realm.html[Configuring a PKI realm] for more information. | ||
|
|
||
| To enable the PKI authentication provider in {kib}, you first need to <<configuring-tls,configure {kib} to encrypt communications between browser and {kib} server>>. Once it's done you need to additionally enable TLS client authentication and include the certificate authority (CA) used to sign client certificates into list of CAs trusted by {kib} in your `kibana.yml`: |
There was a problem hiding this comment.
| To enable the PKI authentication provider in {kib}, you first need to <<configuring-tls,configure {kib} to encrypt communications between browser and {kib} server>>. Once it's done you need to additionally enable TLS client authentication and include the certificate authority (CA) used to sign client certificates into list of CAs trusted by {kib} in your `kibana.yml`: | |
| To enable the PKI authentication provider in {kib}, you first need to <<configuring-tls,configure {kib} to encrypt communications between the browser and {kib} server>>. Once it's done, you need to additionally enable TLS client authentication and include the certificate authority (CA) used to sign client certificates into a list of CAs trusted by {kib} in your `kibana.yml`: |
| xpack.security.authc.providers: [pki, basic] | ||
| -------------------------------------------------------------------------------- | ||
|
|
||
| Please, note that with `server.ssl.clientAuthentication` set to `required` user will be asked to provide a valid client certificate even if they want to authenticate with username and password. Depending on the security policies it may or may not be desired, and if it's not `server.ssl.clientAuthentication` can be set to `optional`. In this case {kib} will still request a client certificate but the client won't be required to present one. The `optional` client authentication mode can also be needed in some other cases, e.g. when PKI authentication is used in conjunction with Reporting. |
There was a problem hiding this comment.
| Please, note that with `server.ssl.clientAuthentication` set to `required` user will be asked to provide a valid client certificate even if they want to authenticate with username and password. Depending on the security policies it may or may not be desired, and if it's not `server.ssl.clientAuthentication` can be set to `optional`. In this case {kib} will still request a client certificate but the client won't be required to present one. The `optional` client authentication mode can also be needed in some other cases, e.g. when PKI authentication is used in conjunction with Reporting. | |
| Please note that with `server.ssl.clientAuthentication` set to `required`, users will be asked to provide a valid client certificate even if they want to authenticate with username and password. Depending on the security policies, it may or may not be desired, and if not, `server.ssl.clientAuthentication` can be set to `optional`. In this case {kib} will still request a client certificate but the client won't be required to present one. The `optional` client authentication mode can also be needed in some other cases, e.g. when PKI authentication is used in conjunction with Reporting. |
|
|
||
| PKI authentication allows users to login into {kib} using X.509 client certificates that should be presented while connecting to {kib}. The certificates must first be accepted for authentication on the {kib} TLS layer and then they are further validated by an {es} PKI realm. The PKI authentication provider relies on {es}'s {ref}/delegate-pki-authentication.html[Delegate PKI authentication API] to exchange X.509 client certificates to access tokens. And all subsequent requests to {es}'s APIs on behalf of the users will be authenticated using these access tokens. | ||
|
|
||
| Prior to configuring {kib}, ensure that PKI realm is enabled in {es} and configured to permit delegation. See {xpack-ref}/configuring-pki-realm.html[Configuring a PKI realm] for more information. |
There was a problem hiding this comment.
These links to the Elasticsearch reference are broken:
- configuring-pki-realm.html
- delegate-pki-authentication.html
There was a problem hiding this comment.
Yeah, we're still waiting for ES docs PR: ttps://github.com/elastic/elasticsearch/pull/45259. Will double check that links work as soon as ES PR lands.
|
Thanks a lot for review @gchaps, everything should be handled now! |
💔 Build Failed |
|
Should we add any disclaimers about http layer reverse-proxies preventing the ability to request the client's certificates? |
Hmm, I think it's a good idea, thanks! I don't see ES PKI docs expand on this though, but I'd agree that proxies are usually used with Kibana than ES. |
💔 Build Failed |
|
retest |
💔 Build Failed |
💔 Build Failed |
💚 Build Succeeded |
Co-Authored-By: gchaps <33642766+gchaps@users.noreply.github.com>
|
Thanks @gchaps, applied all your suggestions! |
💔 Build Failed |
💚 Build Succeeded |
Document PKI authentication provider.
Blocked by: #42606, elastic/elasticsearch#45906