Skip to content

node: skip TTL=1 request signatures over inter-node mTLS - #4100

Draft
End-rey wants to merge 2 commits into
masterfrom
mtls-internode-dont-sign-requests
Draft

node: skip TTL=1 request signatures over inter-node mTLS#4100
End-rey wants to merge 2 commits into
masterfrom
mtls-internode-dont-sign-requests

Conversation

@End-rey

@End-rey End-rey commented Jul 28, 2026

Copy link
Copy Markdown
Contributor

Would it make sense to add an SDK option for unsigned requests?
Some inter-node TTL=1 paths still use SDK ObjectHead/ObjectGetInit/ObjectRangeInit/ObjectPutInit, which always sign requests. An opt-in parameter such as DisableRequestSigning could let the node skip signatures after it has confirmed mTLS, while keeping the SDK default safe.

@End-rey End-rey self-assigned this Jul 28, 2026
@roman-khimov

Copy link
Copy Markdown
Member

Yes, SDK should be updated to do/not do this based on client status.

@End-rey
End-rey force-pushed the internode-client-cert branch 2 times, most recently from 294c5f3 to d15b80b Compare July 31, 2026 13:25
@End-rey
End-rey force-pushed the mtls-internode-dont-sign-requests branch from fe8ddc8 to 6526e43 Compare July 31, 2026 13:28
@End-rey
End-rey force-pushed the internode-client-cert branch 2 times, most recently from 1d9c14f to 2113b4b Compare August 5, 2026 14:06
Base automatically changed from internode-client-cert to master August 6, 2026 12:38
End-rey added 2 commits August 6, 2026 18:43
Require and verify client certificates from inter-node TLS peers against the
network map. Track connections that completed mutual TLS and omit request
signatures for forwarded TTL=1 HEAD, GET, RANGE, PUT, and SEARCH requests over
them. Keep signing when TLS is unavailable, mutual authentication is incomplete,
or the request TTL is not one.

Closes #4089.

Signed-off-by: Andrey Butusov <andrey@nspcc.io>
Use the SDK local request signing status to omit signatures from TTL=1 object
requests sent over a mutually authenticated connection. Keep signatures for
plain connections, TLS connections without mutual authentication, and requests
with other TTL values. Update SDK to the version providing this API.

Signed-off-by: Andrey Butusov <andrey@nspcc.io>
@End-rey
End-rey force-pushed the mtls-internode-dont-sign-requests branch from 6526e43 to efae3b6 Compare August 6, 2026 15:47
@codecov

codecov Bot commented Aug 6, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 22.53521% with 110 lines in your changes missing coverage. Please review.
✅ Project coverage is 27.28%. Comparing base (2a105d3) to head (efae3b6).

Files with missing lines Patch % Lines
pkg/services/object/server.go 0.00% 50 Missing ⚠️
pkg/network/cache/clients.go 37.50% 28 Missing and 2 partials ⚠️
pkg/network/peerauth/peerauth.go 0.00% 10 Missing ⚠️
cmd/neofs-node/grpc.go 0.00% 7 Missing ⚠️
cmd/neofs-node/mtls.go 70.00% 3 Missing and 3 partials ⚠️
pkg/core/client/client.go 0.00% 3 Missing ⚠️
cmd/neofs-node/object.go 0.00% 2 Missing ⚠️
pkg/services/object/range.go 0.00% 2 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##           master    #4100   +/-   ##
=======================================
  Coverage   27.27%   27.28%           
=======================================
  Files         678      679    +1     
  Lines       46282    46367   +85     
=======================================
+ Hits        12624    12649   +25     
- Misses      32443    32497   +54     
- Partials     1215     1221    +6     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants