Commit 36bac3e
committed
fix(bigtable): fall back to classic path when per-RPC CallCredentials are set on session path
The session path (DivertingUnaryCallable) was silently dropping per-RPC
CallCredentials set via GrpcCallContext.withCredentials(), because sessions
are established with channel-level credentials and cannot forward per-RPC
overrides. Any per-RPC credential supplied by the caller was ignored,
causing those calls to use the channel-level credentials instead — a
security bypass.
Fix: detect per-RPC credentials via `context instanceof GrpcCallContext &&
context.getCallOptions().getCredentials() != null` and fall back to the
classic path, which correctly applies the caller-supplied credentials.
The `instanceof` guard is required because calls made without an explicit
ApiCallContext pass a null context (no override → no bypass).
Observability: wire DebugTagTracer through ShimImpl so DivertingUnaryCallable
can record a `per_rpc_credentials_session_fallback` tag into the internal
Cloud Monitoring metric `bigtable.googleapis.com/internal/client/debug_tags`
whenever the fallback fires, giving the server side visibility.1 parent 026e6c0 commit 36bac3e
2 files changed
Lines changed: 30 additions & 6 deletions
File tree
- java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/internal/compat
- ops
Lines changed: 16 additions & 5 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
| 43 | + | |
43 | 44 | | |
44 | 45 | | |
45 | 46 | | |
| |||
81 | 82 | | |
82 | 83 | | |
83 | 84 | | |
| 85 | + | |
84 | 86 | | |
85 | 87 | | |
86 | 88 | | |
| |||
182 | 184 | | |
183 | 185 | | |
184 | 186 | | |
185 | | - | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
186 | 191 | | |
187 | 192 | | |
188 | | - | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
189 | 197 | | |
190 | 198 | | |
191 | 199 | | |
| 200 | + | |
192 | 201 | | |
193 | 202 | | |
194 | 203 | | |
| |||
221 | 230 | | |
222 | 231 | | |
223 | 232 | | |
224 | | - | |
| 233 | + | |
| 234 | + | |
225 | 235 | | |
226 | 236 | | |
227 | 237 | | |
| |||
355 | 365 | | |
356 | 366 | | |
357 | 367 | | |
358 | | - | |
| 368 | + | |
| 369 | + | |
359 | 370 | | |
360 | 371 | | |
361 | 372 | | |
362 | 373 | | |
363 | 374 | | |
364 | 375 | | |
365 | | - | |
| 376 | + | |
366 | 377 | | |
367 | 378 | | |
Lines changed: 14 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
25 | 26 | | |
26 | 27 | | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
46 | 48 | | |
47 | 49 | | |
48 | 50 | | |
| 51 | + | |
49 | 52 | | |
50 | 53 | | |
51 | 54 | | |
52 | 55 | | |
53 | 56 | | |
54 | | - | |
| 57 | + | |
| 58 | + | |
55 | 59 | | |
56 | 60 | | |
57 | 61 | | |
58 | 62 | | |
| 63 | + | |
59 | 64 | | |
60 | 65 | | |
61 | 66 | | |
62 | 67 | | |
63 | 68 | | |
64 | 69 | | |
65 | 70 | | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
66 | 79 | | |
67 | 80 | | |
68 | 81 | | |
| |||
0 commit comments