diff --git a/daprdocs/content/en/operations/configuration/configuration-overview.md b/daprdocs/content/en/operations/configuration/configuration-overview.md index ca9601671f4..25165f50037 100644 --- a/daprdocs/content/en/operations/configuration/configuration-overview.md +++ b/daprdocs/content/en/operations/configuration/configuration-overview.md @@ -294,6 +294,9 @@ The `mtls` section contains properties for mTLS. | `enabled` | bool | If true, enables mTLS for communication between services and apps in the cluster. | `allowedClockSkew` | string | Allowed tolerance when checking the expiration of TLS certificates, to allow for clock skew. Follows the format used by [Go's time.ParseDuration](https://pkg.go.dev/time#ParseDuration). Default is `15m` (15 minutes). | `workloadCertTTL` | string | How long a certificate TLS issued by Dapr is valid for. Follows the format used by [Go's time.ParseDuration](https://pkg.go.dev/time#ParseDuration). Default is `24h` (24 hours). +| `sentryAddress` | string | Hostname port address for connecting to the Sentry server. | +| `controlPlaneTrustDomain` | string | Trust domain for the control plane. This is used to verify connection to control plane services. | +| `tokenValidators` | array | Additional Sentry token validators to use for authenticating certificate requests. | See the [mTLS how-to]({{< ref "mtls.md" >}}) and [security concepts]({{< ref "security-concept.md" >}}) for more information. diff --git a/daprdocs/content/en/operations/security/mtls.md b/daprdocs/content/en/operations/security/mtls.md index 6868b622285..b2d1bb85c96 100644 --- a/daprdocs/content/en/operations/security/mtls.md +++ b/daprdocs/content/en/operations/security/mtls.md @@ -491,3 +491,52 @@ Watch this [video](https://www.youtube.com/watch?v=Hkcx9kBDrAc&feature=youtu.be&
+ +### Sentry Token Validators + +Sentry can be configured to enable extra token validators beyond the Kubernetes bound Service Account validator, or replace the `insecure` validator enabled by default in self hosted mode. +These are useful for joining extra non-Kubernetes clients to the Dapr cluster running in Kubernetes mode, or replacing the insecure "allow all" validator in self hosted mode to enable proper identity validation. +The only token validator currently supported is the `jwks` validator. + +### JWKS + +The `jwks` validator enables Sentry to validate JWT tokens using a JWKS endpoint. +The contents of the token _must_ contain the `sub` claim which matches the SPIFFE identity of the Dapr client, in the same Dapr format `spiffe:///ns//`. +The audience of the token must by the SPIFFE ID of the Sentry identity, e.g. `spiffe://cluster.local/ns/dapr-system/dapr-sentry`. +Other basic JWT rules regarding signature, expiry etc. apply. + +The `jwks` validator can accept either a remote source to fetch the public key list or a static array for public keys. + +```yaml +kind: Configuration +apiVersion: dapr.io/v1alpha1 +metadata: + name: sentryconfig +spec: + mtls: + enabled: true + tokenValidators: + - name: jwks + options: + minRefreshInterval: 2m + requestTimeout: 1m + source: "https://localhost:1234/" + caCertificate: "" +``` + +```yaml +kind: Configuration +apiVersion: dapr.io/v1alpha1 +metadata: + name: sentryconfig +spec: + mtls: + enabled: true + tokenValidators: + - name: jwks + options: + minRefreshInterval: 2m + requestTimeout: 1m + source: | + {"keys":[ "12345.." ]} +```