How are you going to convert your pages to whatever format you're going to publish? The answer very much depends on that, since that's what will need to know your global values.
If you're using the Asciidoctor CLI directly, you can declare the attribute value when you run it (see
https://docs.asciidoctor.org/asciidoctor/latest/cli/options/#document-settings).
If you're going to integrate with something else and use the API, attribute values can also be set that way (
https://docs.asciidoctor.org/asciidoctor/latest/api/options/).
In my current project, we're using Jekyll and we declare the attribute values in Jekyll's _config.yml.
We used to use the asciidoctor-ant integration and we just declared the global values in Ant's build.xml. In a different project, I've also used Gradle to call Asciidoctor directly and was able to use a gradle.properties file to declare the global values for several custom attributes we used at the time.
It's not 100% straightforward with Ant and Gradle, but it's definitely possible.