Add production deployment configs for the collab relay and locator: region-split compose (CN/global), direct nginx gateways and location maps, the CN docker-user firewall install/verify/validate tooling and systemd unit, and an SoftHSM-backed locator variant. Extend the collab security/deployment boundary checks to cover the new artifacts. The CN application host address is a placeholder (10.0.0.10); substitute the real private address at deploy time.
176 lines
6.9 KiB
YAML
176 lines
6.9 KiB
YAML
name: P2P collaboration security boundaries
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- 'Cargo.toml'
|
|
- 'Cargo.lock'
|
|
- '.dockerignore'
|
|
- '.gitignore'
|
|
- 'rust-toolchain.toml'
|
|
- 'crates/op-collab/**'
|
|
- 'crates/op-collab-smoke/**'
|
|
- 'crates/op-collab-transport/**'
|
|
- 'crates/op-collab-relay-protocol/**'
|
|
- 'crates/op-collab-relay-client/**'
|
|
- 'crates/op-collab-relay-server/**'
|
|
- 'crates/op-collab-relay-control-plane/**'
|
|
- 'crates/op-collab-policy-file/**'
|
|
- 'crates/op-collab-relay-locator-hsm/**'
|
|
- 'crates/op-collab-relay-locator-server/**'
|
|
- 'crates/op-auth-bridge/**'
|
|
- 'crates/op-util/**'
|
|
- 'crates/op-editor-core/**'
|
|
- 'crates/op-editor-host-core/**'
|
|
- 'crates/op-editor-ui/**'
|
|
- 'crates/op-host-native/**'
|
|
- 'crates/op-host-desktop/**'
|
|
- 'crates/op-host-services/**'
|
|
- 'crates/op-i18n/**'
|
|
- 'deploy/collab-relay/**'
|
|
- 'deploy/collab-relay-edge/**'
|
|
- 'deploy/collab-relay-locator/**'
|
|
- 'deploy/collab-relay-locator-hsm/**'
|
|
- 'deploy/collab-relay-locator-edge/**'
|
|
- 'docs/security/p2p-collaboration-threat-model.md'
|
|
- 'docs/testing/p2p-collaboration-platform-acceptance.md'
|
|
- 'tools/check-collab-security-boundaries.sh'
|
|
- 'tools/check-collab-security-boundaries.test.sh'
|
|
- 'tools/check-collab-security-boundaries-cases.sh'
|
|
- 'tools/check-collab-deployment-boundaries.sh'
|
|
- 'tools/check-op-auth-prebuilt.sh'
|
|
- 'tools/check-op-auth-prebuilt.test.sh'
|
|
- 'tools/package-op-auth-prebuilt.sh'
|
|
- '.github/workflows/collab-security.yml'
|
|
- '.github/workflows/collab-platform-acceptance.yml'
|
|
push:
|
|
branches: ['**']
|
|
paths:
|
|
- 'Cargo.toml'
|
|
- 'Cargo.lock'
|
|
- '.dockerignore'
|
|
- '.gitignore'
|
|
- 'rust-toolchain.toml'
|
|
- 'crates/op-collab/**'
|
|
- 'crates/op-collab-smoke/**'
|
|
- 'crates/op-collab-transport/**'
|
|
- 'crates/op-collab-relay-protocol/**'
|
|
- 'crates/op-collab-relay-client/**'
|
|
- 'crates/op-collab-relay-server/**'
|
|
- 'crates/op-collab-relay-control-plane/**'
|
|
- 'crates/op-collab-policy-file/**'
|
|
- 'crates/op-collab-relay-locator-hsm/**'
|
|
- 'crates/op-collab-relay-locator-server/**'
|
|
- 'crates/op-auth-bridge/**'
|
|
- 'crates/op-util/**'
|
|
- 'crates/op-editor-core/**'
|
|
- 'crates/op-editor-host-core/**'
|
|
- 'crates/op-editor-ui/**'
|
|
- 'crates/op-host-native/**'
|
|
- 'crates/op-host-desktop/**'
|
|
- 'crates/op-host-services/**'
|
|
- 'crates/op-i18n/**'
|
|
- 'deploy/collab-relay/**'
|
|
- 'deploy/collab-relay-edge/**'
|
|
- 'deploy/collab-relay-locator/**'
|
|
- 'deploy/collab-relay-locator-hsm/**'
|
|
- 'deploy/collab-relay-locator-edge/**'
|
|
- 'docs/security/p2p-collaboration-threat-model.md'
|
|
- 'docs/testing/p2p-collaboration-platform-acceptance.md'
|
|
- 'tools/check-collab-security-boundaries.sh'
|
|
- 'tools/check-collab-security-boundaries.test.sh'
|
|
- 'tools/check-collab-security-boundaries-cases.sh'
|
|
- 'tools/check-collab-deployment-boundaries.sh'
|
|
- 'tools/check-op-auth-prebuilt.sh'
|
|
- 'tools/check-op-auth-prebuilt.test.sh'
|
|
- 'tools/package-op-auth-prebuilt.sh'
|
|
- '.github/workflows/collab-security.yml'
|
|
- '.github/workflows/collab-platform-acceptance.yml'
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
collaboration-security:
|
|
name: Static boundaries and targeted tests
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 45
|
|
steps:
|
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
with:
|
|
submodules: recursive
|
|
persist-credentials: false
|
|
- uses: dtolnay/rust-toolchain@4cda84d5c5c54efe2404f9d843567869ab1699d4 # stable, pinned 2026-07-28
|
|
with:
|
|
toolchain: '1.94'
|
|
targets: wasm32-unknown-unknown
|
|
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # v2.9.1
|
|
with:
|
|
shared-key: collab-security
|
|
|
|
- name: Check boundary-script syntax
|
|
run: |
|
|
bash -n tools/check-collab-security-boundaries.sh
|
|
bash -n tools/check-collab-security-boundaries.test.sh
|
|
bash -n tools/check-collab-security-boundaries-cases.sh
|
|
bash -n tools/check-collab-deployment-boundaries.sh
|
|
bash -n tools/check-op-auth-prebuilt.sh
|
|
bash -n tools/check-op-auth-prebuilt.test.sh
|
|
bash -n tools/package-op-auth-prebuilt.sh
|
|
|
|
- name: Mutation-test the boundary gate
|
|
run: |
|
|
bash tools/check-collab-security-boundaries.test.sh
|
|
bash tools/check-op-auth-prebuilt.test.sh
|
|
|
|
- name: Verify public/private and secret boundaries
|
|
run: |
|
|
bash tools/check-collab-security-boundaries.sh
|
|
bash tools/check-op-auth-prebuilt.sh
|
|
bash deploy/collab-relay-edge/validate.sh
|
|
bash deploy/collab-relay-locator/validate.sh
|
|
bash deploy/collab-relay-locator-edge/validate.sh
|
|
|
|
- name: Compile the public protocol core for wasm
|
|
run: |
|
|
cargo check --locked --target wasm32-unknown-unknown \
|
|
-p op-collab --no-default-features
|
|
cargo check --locked --target wasm32-unknown-unknown \
|
|
-p op-collab-relay-protocol --no-default-features
|
|
|
|
- name: Test protocol state machines, properties, and resource limits
|
|
run: |
|
|
cargo test --locked -p op-collab
|
|
cargo test --locked -p op-collab-transport
|
|
cargo test --locked -p op-collab-transport config::tests
|
|
cargo test --locked -p op-collab-transport frame::tests
|
|
cargo test --locked -p op-collab-relay-protocol --all-features
|
|
cargo test --locked -p op-collab-relay-client
|
|
cargo test --locked -p op-collab-relay-server
|
|
cargo test --locked -p op-collab-relay-control-plane
|
|
cargo test --locked -p op-collab-policy-file
|
|
cargo test --locked -p op-collab-relay-locator-hsm
|
|
cargo test --locked -p op-collab-relay-locator-server
|
|
|
|
- name: Test the locator signer against SoftHSM
|
|
run: |
|
|
docker build --target test \
|
|
-f deploy/collab-relay-locator-hsm/Dockerfile .
|
|
|
|
- name: Test production/test trust-root isolation
|
|
run: |
|
|
cargo test --locked -p op-auth-bridge --features test-issuer \
|
|
verifies_the_frozen_go_production_root_fixture
|
|
cargo test --locked -p op-auth-bridge --features test-issuer \
|
|
production_signed_policy_path_never_falls_back_to_raw_jwks
|
|
cargo test --locked -p op-auth-bridge --features test-issuer \
|
|
--test collab_verifier
|
|
|
|
- name: Verify every committed authentication archive
|
|
run: cargo test --locked -p op-auth-bridge --test prebuilt_provenance
|
|
|
|
- name: Exercise two-process authenticated collaboration
|
|
run: |
|
|
cargo run --locked -p op-collab-smoke --features test-issuer -- run
|