Code review comment: nit: no need for the `Mono.defer` here. `Mono.defer` should only be used if the value being set in the `Mono.just` is expensive to compute to defer that computation until the Mono, or Flux, is subscribed. This can just be `Mono.just`.  And actually, in this case, this would make performance worse as `Mono.defer` isn't `Fuseable` which Reactor uses to merge multiple reactive operations into a more performant computation.

Code under review:
private Mono<Boolean> isValidKeyLocallyAvailable() {
        if (localOperationNotSupported) {
            return Mono.defer(() -> Mono.just(false));
        }

        boolean keyNotAvailable = (key == null && keyCollection != null);

        if (keyNotAvailable) {
            if (keyCollection.equals(CryptographyClientImpl.SECRETS_COLLECTION)) {
                return getSecretKey().map(jsonWebKey -> {
                    key = jsonWebKey;

                    if (key.isValid()) {
                        if (localKeyCryptographyClient == null) {
                            try {
                                localKeyCryptographyClient = initializeCryptoClient(key, implClient);
                            } catch (RuntimeException e) {
                                localOperationNotSupported = true;

                                LOGGER.warning("Defaulting to service use for cryptographic operations.", e);

                                return false;
                            }
                        }

                        return true;
                    } else {
                        return false;
                    }
                });
            } else {
                return getKey().map(keyVaultKey -> {
                    key = keyVaultKey.getKey();

                    if (key.isValid()) {
                        if (localKeyCryptographyClient == null) {
                            try {
                                localKeyCryptographyClient = initializeCryptoClient(key, implClient);
                            } catch (RuntimeException e) {
                                localOperationNotSupported = true;

                                LOGGER.warning("Defaulting to service use for cryptographic operations.", e);

                                return false;
                            }
                        }

                        return true;
                    } else {
                        return false;
                    }
                });
            }
        } else {
            return Mono.defer(() -> Mono.just(true));
        }
    }

Line commented on: return Mono.defer(() -> Mono.just(false));

Revised code:
private Mono<Boolean> isValidKeyLocallyAvailable() {
        if (localOperationNotSupported) {
            return Mono.just(false);
        }

        boolean keyNotAvailable = (key == null && keyCollection != null);

        if (keyNotAvailable) {
            if (Objects.equals(keyCollection, CryptographyClientImpl.SECRETS_COLLECTION)) {
                return getSecretKey().map(jsonWebKey -> {
                    key = jsonWebKey;

                    if (key.isValid()) {
                        if (localKeyCryptographyClient == null) {
                            try {
                                localKeyCryptographyClient = initializeCryptoClient(key, implClient);
                            } catch (RuntimeException e) {
                                localOperationNotSupported = true;

                                LOGGER.warning("Defaulting to service use for cryptographic operations.", e);

                                return false;
                            }
                        }

                        return true;
                    } else {
                        return false;
                    }
                });
            } else {
                return getKey().map(keyVaultKey -> {
                    key = keyVaultKey.getKey();

                    if (key.isValid()) {
                        if (localKeyCryptographyClient == null) {
                            try {
                                localKeyCryptographyClient = initializeCryptoClient(key, implClient);
                            } catch (RuntimeException e) {
                                localOperationNotSupported = true;

                                LOGGER.warning("Defaulting to service use for cryptographic operations.", e);

                                return false;
                            }
                        }

                        return true;
                    } else {
                        return false;
                    }
                });
            }
        } else {
            return Mono.just(true);
        }
    }