@opensoha/contracts 0.1.16 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/COMPATIBILITY.md +46 -0
- package/README.md +12 -3
- package/auth/catalog_generated.go +2 -2
- package/auth/catalog_test.go +32 -0
- package/auth/permission-catalog.json +529 -1
- package/compat/json-schema-ecosystem-0.1.0.json +1 -1
- package/compat/openapi-loose-boundaries-0.1.0.json +1 -1
- package/fixtures/json-schema/network-ingest-event/invalid/duplicate-event.json +33 -0
- package/fixtures/json-schema/network-ingest-event/invalid/message-payload-mismatch.json +23 -0
- package/fixtures/json-schema/network-ingest-event/invalid/password.json +22 -0
- package/fixtures/json-schema/network-ingest-event/invalid/proxy-flow-destination.json +28 -0
- package/fixtures/json-schema/network-ingest-event/valid/endpoint-proxy-flow.json +27 -0
- package/fixtures/json-schema/network-ingest-event/valid/freeradius-accounting.json +25 -0
- package/fixtures/json-schema/network-ingest-event/valid/gateway.json +53 -0
- package/fixtures/json-schema/network-radius-accounting/invalid/password.json +9 -0
- package/fixtures/json-schema/network-radius-accounting/valid/accounting.json +16 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/invalid-cidr.json +31 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/message-payload-mismatch.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/mihomo-raw-subscription.json +33 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/nas-authorization-password.json +18 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/nas-eap-without-certificate.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/private-key.json +20 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/raw-credential-reference.json +16 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/runtime-interval-too-short.json +23 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/wireguard-capability-without-key.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/wireguard-default-route.json +31 -0
- package/fixtures/json-schema/network-runtime-protocol/invalid/ztna-without-access-grant.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/configuration-desired.json +86 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/direct-ztna-connect.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/direct-ztna-result.json +33 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/internal-ztna-connect.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/mihomo-app-subscription-configuration.json +32 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/mihomo-manual-node-configuration.json +32 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/mihomo-wireguard-configuration.json +70 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-authorization-request.json +19 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-authorization-result.json +24 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-session-command-result.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/nas-session-command.json +27 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/vpn-connect-request.json +17 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/vpn-connect-result.json +34 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/wireguard-enrollment.json +20 -0
- package/fixtures/json-schema/network-runtime-protocol/valid/wireguard-site-link.json +48 -0
- package/fixtures/openapi/AnnouncementReceiptPageEnvelope/invalid/missing-read-count.json +9 -0
- package/fixtures/openapi/AnnouncementReceiptPageEnvelope/valid/read-and-unread.json +28 -0
- package/fixtures/openapi/EndpointDevice/invalid/missing-owner.json +8 -0
- package/fixtures/openapi/EndpointDevice/valid/active.json +35 -0
- package/fixtures/openapi/EndpointDeviceRegistrationInput/invalid/client-owned-status.json +5 -0
- package/fixtures/openapi/EndpointDeviceRegistrationInput/invalid/oversized-network-inventory.json +18 -0
- package/fixtures/openapi/EndpointDeviceRegistrationInput/valid/macos.json +28 -0
- package/fixtures/openapi/LLMUpstreamTestResultEnvelope/invalid/models-not-array.json +9 -0
- package/fixtures/openapi/LLMUpstreamTestResultEnvelope/valid/discovered-models.json +11 -0
- package/fixtures/openapi/NetworkAccessGrant/invalid/token-digest.json +15 -0
- package/fixtures/openapi/NetworkAccessGrant/valid/issued.json +14 -0
- package/fixtures/openapi/NetworkAccessGrantInput/invalid/no-resources.json +7 -0
- package/fixtures/openapi/NetworkAccessGrantInput/valid/direct-ztna.json +8 -0
- package/fixtures/openapi/NetworkAccessGrantSecret/invalid/short-token.json +17 -0
- package/fixtures/openapi/NetworkAccessGrantSecret/valid/issued.json +17 -0
- package/fixtures/openapi/NetworkAccessPolicy/invalid/missing-version.json +20 -0
- package/fixtures/openapi/NetworkAccessPolicy/valid/published-draft.json +21 -0
- package/fixtures/openapi/NetworkAccessPolicyInput/invalid/duplicate-team.json +17 -0
- package/fixtures/openapi/NetworkAccessPolicyInput/valid/team-and-tag-allow.json +17 -0
- package/fixtures/openapi/NetworkConflictAnalysisRequest/invalid/ipv6-range.json +9 -0
- package/fixtures/openapi/NetworkConflictAnalysisRequest/valid/runtime-ranges.json +15 -0
- package/fixtures/openapi/NetworkConnectionOption/invalid/secret.json +10 -0
- package/fixtures/openapi/NetworkConnectionOption/valid/wifi.json +9 -0
- package/fixtures/openapi/NetworkConnectionOption/valid/wired.json +8 -0
- package/fixtures/openapi/NetworkGateway/invalid/missing-site.json +7 -0
- package/fixtures/openapi/NetworkGateway/valid/online.json +23 -0
- package/fixtures/openapi/NetworkGatewayInput/invalid/default-route-overlay.json +13 -0
- package/fixtures/openapi/NetworkGatewayInput/valid/routed.json +14 -0
- package/fixtures/openapi/NetworkLease/invalid/empty-cidrs.json +12 -0
- package/fixtures/openapi/NetworkLease/valid/active.json +12 -0
- package/fixtures/openapi/NetworkMihomoProfile/invalid/subscription-leak.json +20 -0
- package/fixtures/openapi/NetworkMihomoProfile/valid/managed.json +21 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/invalid/app-subscription-secret.json +14 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/invalid/manual-node-with-subscription.json +20 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/valid/app-subscription.json +14 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/valid/managed.json +16 -0
- package/fixtures/openapi/NetworkMihomoProfileInput/valid/manual-node.json +21 -0
- package/fixtures/openapi/NetworkNASBinding/invalid/secret.json +13 -0
- package/fixtures/openapi/NetworkNASBinding/valid/default.json +16 -0
- package/fixtures/openapi/NetworkNASBindingInput/invalid/secret.json +10 -0
- package/fixtures/openapi/NetworkNASBindingInput/valid/default.json +13 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/invalid/unknown-mode.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/external-direct-ztna.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/external-vpn-ztna.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/external-vpn.json +6 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/internal-direct.json +7 -0
- package/fixtures/openapi/NetworkPolicyPreviewRequest/valid/internal-ztna.json +7 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/invalid/bypass-path.json +9 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/onboarding.json +10 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/protected-broad-path-denied.json +9 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/protected-resource.json +9 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/quarantine.json +10 -0
- package/fixtures/openapi/NetworkPolicyPreviewResult/valid/restricted.json +10 -0
- package/fixtures/openapi/NetworkPolicySnapshot/invalid/zero-version.json +7 -0
- package/fixtures/openapi/NetworkPolicySnapshot/valid/published.json +7 -0
- package/fixtures/openapi/NetworkResourceInput/invalid/invalid-port.json +10 -0
- package/fixtures/openapi/NetworkResourceInput/valid/protected-cidr.json +10 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentInput/invalid/excessive-ttl.json +7 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentInput/valid/endpoint.json +7 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentSecret/invalid/short-token.json +15 -0
- package/fixtures/openapi/NetworkRuntimeEnrollmentSecret/valid/pending.json +15 -0
- package/fixtures/openapi/NetworkSession/invalid/unknown-status.json +14 -0
- package/fixtures/openapi/NetworkSession/valid/restricted-vpn-ztna.json +16 -0
- package/fixtures/openapi/NetworkSessionActionExecuteInput/invalid/short-hash.json +6 -0
- package/fixtures/openapi/NetworkSessionActionExecuteInput/valid/restrict.json +6 -0
- package/fixtures/openapi/NetworkSessionActionInput/invalid/unknown-action.json +5 -0
- package/fixtures/openapi/NetworkSessionActionInput/valid/restrict.json +5 -0
- package/fixtures/openapi/NetworkSessionActionPlan/invalid/missing-hash.json +12 -0
- package/fixtures/openapi/NetworkSessionActionPlan/valid/fallback-disconnect.json +13 -0
- package/fixtures/openapi/NetworkSessionCommand/invalid/unknown-status.json +14 -0
- package/fixtures/openapi/NetworkSessionCommand/valid/pending.json +14 -0
- package/fixtures/openapi/NetworkSiteInput/invalid/unknown-status.json +4 -0
- package/fixtures/openapi/NetworkSiteInput/valid/shanghai.json +5 -0
- package/fixtures/openapi/NetworkSiteProfileBinding/invalid/vlan.json +9 -0
- package/fixtures/openapi/NetworkSiteProfileBinding/valid/default.json +10 -0
- package/fixtures/openapi/NetworkSiteProfileBindingInput/invalid/timeout.json +7 -0
- package/fixtures/openapi/NetworkSiteProfileBindingInput/valid/default.json +7 -0
- package/fixtures/openapi/NetworkSpaceInput/invalid/empty-cidrs.json +6 -0
- package/fixtures/openapi/NetworkSpaceInput/invalid/malformed-cidr.json +6 -0
- package/fixtures/openapi/NetworkSpaceInput/valid/corp.json +6 -0
- package/fixtures/openapi/NetworkTelemetrySummary/invalid/raw-destination.json +29 -0
- package/fixtures/openapi/NetworkTelemetrySummary/valid/proxy-flow.json +36 -0
- package/fixtures/openapi/ResourceLease/invalid/missing-session.json +10 -0
- package/fixtures/openapi/ResourceLease/valid/active.json +11 -0
- package/gen/go/sohaapi/client.go +1 -1
- package/gen/go/sohaapi/types.go +2042 -58
- package/gen/ts/sohaapi/index.ts +3160 -0
- package/network/README.md +116 -0
- package/network/network-ingest-event.schema.json +187 -0
- package/network/network-radius-accounting.schema.json +41 -0
- package/network/network-runtime-protocol.schema.json +752 -0
- package/network/schema.go +26 -0
- package/network/schema_test.go +22 -0
- package/openapi/soha-api.json +27021 -19780
- package/openapi/soha-api.yaml +11422 -8749
- package/openapi/spec_generated.go +3 -3
- package/package.json +5 -1
package/COMPATIBILITY.md
CHANGED
|
@@ -281,6 +281,52 @@ rename `operationId`, `operationKind`, `runnerId`, `state`, `occurredAt`,
|
|
|
281
281
|
`evidence`, `finalState`, or `callback`; must not add new required fields; and
|
|
282
282
|
must not narrow existing lifecycle state names or final status values.
|
|
283
283
|
|
|
284
|
+
## Network Runtime Protocol
|
|
285
|
+
|
|
286
|
+
`network/network-runtime-protocol.schema.json` owns messages exchanged by
|
|
287
|
+
network-control, endpoint services and network gateways. The contract carries
|
|
288
|
+
runtime identity, configuration and policy versions, bounded lease grants and
|
|
289
|
+
apply/revoke acknowledgements. It must never carry WireGuard private keys,
|
|
290
|
+
RADIUS shared secrets, passwords, EAP private material or mihomo subscription
|
|
291
|
+
credentials.
|
|
292
|
+
|
|
293
|
+
For `0.1.x`, patch releases may add optional fields and new message types with
|
|
294
|
+
strict payload definitions. They must not remove or rename `schemaVersion`,
|
|
295
|
+
`messageId`, `messageType`, `producerId`, `runtimeId`, `runtimeKind`,
|
|
296
|
+
`occurredAt`, `expiresAt` or `payload`; must not remove existing message,
|
|
297
|
+
runtime-kind, access-profile or status enum values; and must not loosen unknown
|
|
298
|
+
field rejection. Existing lease identity, subject/device binding, policy
|
|
299
|
+
version and expiry fields must remain required.
|
|
300
|
+
|
|
301
|
+
NAS authorization and session control use the same versioned envelope. Their
|
|
302
|
+
payloads contain only Soha identity references, bounded standard RADIUS
|
|
303
|
+
attributes and command acknowledgements. Public management bindings map a NAS
|
|
304
|
+
to one registered runtime/site and an access profile to site enforcement
|
|
305
|
+
attributes; neither contract may add RADIUS shared secrets or authentication
|
|
306
|
+
credential material.
|
|
307
|
+
|
|
308
|
+
WireGuard enrollment carries only a public key. VPN connection authorization
|
|
309
|
+
creates a session-scoped NetworkLease; desired configuration may add a strict
|
|
310
|
+
WireGuard block with overlay addresses, peers, split routes and default-deny
|
|
311
|
+
firewall rules. Private keys never cross this contract. Existing consumers
|
|
312
|
+
must ignore no fields because runtime messages remain closed; therefore a
|
|
313
|
+
consumer advertises `wireguard` only after it supports the full block and its
|
|
314
|
+
configuration version/readback semantics.
|
|
315
|
+
|
|
316
|
+
## Network Ingest Event
|
|
317
|
+
|
|
318
|
+
`network/network-ingest-event.schema.json` owns bounded, replayable telemetry
|
|
319
|
+
batches sent to `/api/ingest/v1/**`. Heartbeat, RADIUS Accounting, flow
|
|
320
|
+
aggregate and connection summary payloads remain typed and cannot be treated
|
|
321
|
+
as authorization state.
|
|
322
|
+
|
|
323
|
+
For `0.1.x`, patch releases may add optional fields, producer kinds and event
|
|
324
|
+
types with strict payload definitions. They must not remove or rename
|
|
325
|
+
`schemaVersion`, `batchId`, `producerId`, `producerKind`, `sentAt`, `events`,
|
|
326
|
+
event `id`, `type`, `sequence`, `occurredAt` or `payload`; must not remove
|
|
327
|
+
existing enum values; must not raise the 1,000-event batch maximum without a
|
|
328
|
+
resource-limit review; and must not introduce an open provider payload object.
|
|
329
|
+
|
|
284
330
|
## Permission Catalog
|
|
285
331
|
|
|
286
332
|
`auth/permission-catalog.json` owns grantable OpenSoha resource/action keys,
|
package/README.md
CHANGED
|
@@ -32,6 +32,8 @@ auth/token-claims.schema.json Token/JWT claims contract
|
|
|
32
32
|
auth/permission-catalog.json Canonical resource/action permission catalog
|
|
33
33
|
auth/permission-catalog.schema.json Permission definition and migration metadata
|
|
34
34
|
connectors/connector-event-envelope.schema.json Connector runtime event batch envelope
|
|
35
|
+
network/network-runtime-protocol.schema.json Network control/runtime message contract
|
|
36
|
+
network/network-ingest-event.schema.json Bounded heartbeat, Accounting and flow event batches
|
|
35
37
|
gen/go/sohaapi Go SDK types for stable cross-repo contracts
|
|
36
38
|
gen/ts/sohaapi TypeScript SDK types for stable Web contracts
|
|
37
39
|
```
|
|
@@ -147,6 +149,12 @@ failure.
|
|
|
147
149
|
|
|
148
150
|
## Consumer Matrix
|
|
149
151
|
|
|
152
|
+
Network runtime schemas and network-access DTOs require `0.1.17` or later;
|
|
153
|
+
they are absent from npm `0.1.16` and Go `v0.1.15`. For unpublished changes,
|
|
154
|
+
use the local consumer matrix below: it packs this checkout for Web and
|
|
155
|
+
supplies an isolated Go workspace. After publishing, update consumer versions
|
|
156
|
+
and lockfiles and verify them without the local override.
|
|
157
|
+
|
|
150
158
|
The cross-repository consumer gate is:
|
|
151
159
|
|
|
152
160
|
```sh
|
|
@@ -163,9 +171,10 @@ npm run check:consumers -- --consumer soha-cli --require-all
|
|
|
163
171
|
npm run check:consumers -- --consumer soha-agent --require-all
|
|
164
172
|
```
|
|
165
173
|
|
|
166
|
-
Go consumers run in a temporary `go.work` that
|
|
167
|
-
|
|
168
|
-
|
|
174
|
+
Go consumers run in a temporary `go.work` that replaces the contracts module
|
|
175
|
+
with this checkout. `soha-web` runs `npm ci`, installs a packed copy of this
|
|
176
|
+
checkout without changing its dependency manifest or lockfile, and builds
|
|
177
|
+
against that package.
|
|
169
178
|
|
|
170
179
|
Use `--dry-run` to inspect the discovered commands without executing consumer
|
|
171
180
|
builds.
|
|
@@ -6,8 +6,8 @@ import _ "embed"
|
|
|
6
6
|
|
|
7
7
|
const (
|
|
8
8
|
PermissionCatalogVersion = "2.0.0"
|
|
9
|
-
PermissionCatalogContentSHA256 = "
|
|
10
|
-
PermissionCatalogSHA256 = "
|
|
9
|
+
PermissionCatalogContentSHA256 = "f744896d362070a1e7cdc1eda89c046bee8132f37c6f323dafdd05644e2dbd3c"
|
|
10
|
+
PermissionCatalogSHA256 = "354ad414691ff0578d805036bbbe80da28d242d0bbabe4699e490af1b6bd87bb"
|
|
11
11
|
)
|
|
12
12
|
|
|
13
13
|
//go:embed permission-catalog.json
|
package/auth/catalog_test.go
CHANGED
|
@@ -52,6 +52,38 @@ func TestPermissionCatalogIncludesVirtualizationStorageView(t *testing.T) {
|
|
|
52
52
|
t.Fatal("virtualization.storage.view is missing")
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
func TestPermissionCatalogIncludesDeliveryEnvironmentApproval(t *testing.T) {
|
|
56
|
+
var catalog struct {
|
|
57
|
+
Permissions []struct {
|
|
58
|
+
Key string `json:"key"`
|
|
59
|
+
Domain string `json:"domain"`
|
|
60
|
+
Resource string `json:"resource"`
|
|
61
|
+
Action string `json:"action"`
|
|
62
|
+
RiskLevel string `json:"riskLevel"`
|
|
63
|
+
ScopeKinds []string `json:"scopeKinds"`
|
|
64
|
+
ApprovalPolicy string `json:"approvalPolicy"`
|
|
65
|
+
Status string `json:"status"`
|
|
66
|
+
Assignable bool `json:"assignable"`
|
|
67
|
+
} `json:"permissions"`
|
|
68
|
+
}
|
|
69
|
+
if err := json.Unmarshal(PermissionCatalogJSON(), &catalog); err != nil {
|
|
70
|
+
t.Fatalf("decode permission catalog: %v", err)
|
|
71
|
+
}
|
|
72
|
+
for _, permission := range catalog.Permissions {
|
|
73
|
+
if permission.Key != "delivery.application-environments.approve" {
|
|
74
|
+
continue
|
|
75
|
+
}
|
|
76
|
+
if permission.Domain != "delivery" || permission.Resource != "application-environments" || permission.Action != "approve" ||
|
|
77
|
+
permission.RiskLevel != "high" || permission.ApprovalPolicy != "eligible" || permission.Status != "active" ||
|
|
78
|
+
!permission.Assignable || len(permission.ScopeKinds) != 3 || permission.ScopeKinds[0] != "workspace" ||
|
|
79
|
+
permission.ScopeKinds[1] != "project" || permission.ScopeKinds[2] != "resource" {
|
|
80
|
+
t.Fatalf("unexpected delivery environment approval permission: %#v", permission)
|
|
81
|
+
}
|
|
82
|
+
return
|
|
83
|
+
}
|
|
84
|
+
t.Fatal("delivery.application-environments.approve is missing")
|
|
85
|
+
}
|
|
86
|
+
|
|
55
87
|
func TestPermissionCatalogIncludesIndependentResourceCreationEntry(t *testing.T) {
|
|
56
88
|
var catalog struct {
|
|
57
89
|
Permissions []struct {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "authorization.opensoha.io/v1",
|
|
3
3
|
"catalogVersion": "2.0.0",
|
|
4
|
-
"contentHash": "sha256:
|
|
4
|
+
"contentHash": "sha256:f744896d362070a1e7cdc1eda89c046bee8132f37c6f323dafdd05644e2dbd3c",
|
|
5
5
|
"permissions": [
|
|
6
6
|
{
|
|
7
7
|
"key": "access.directory.create",
|
|
@@ -2468,6 +2468,22 @@
|
|
|
2468
2468
|
"status": "active",
|
|
2469
2469
|
"assignable": true
|
|
2470
2470
|
},
|
|
2471
|
+
{
|
|
2472
|
+
"key": "delivery.application-environments.approve",
|
|
2473
|
+
"domain": "delivery",
|
|
2474
|
+
"resource": "application-environments",
|
|
2475
|
+
"action": "approve",
|
|
2476
|
+
"displayName": "审批应用环境发布",
|
|
2477
|
+
"riskLevel": "high",
|
|
2478
|
+
"scopeKinds": [
|
|
2479
|
+
"workspace",
|
|
2480
|
+
"project",
|
|
2481
|
+
"resource"
|
|
2482
|
+
],
|
|
2483
|
+
"approvalPolicy": "eligible",
|
|
2484
|
+
"status": "active",
|
|
2485
|
+
"assignable": true
|
|
2486
|
+
},
|
|
2471
2487
|
{
|
|
2472
2488
|
"key": "delivery.application-environments.create",
|
|
2473
2489
|
"domain": "delivery",
|
|
@@ -4502,6 +4518,518 @@
|
|
|
4502
4518
|
"status": "active",
|
|
4503
4519
|
"assignable": true
|
|
4504
4520
|
},
|
|
4521
|
+
{
|
|
4522
|
+
"key": "network_access.access_grants.create",
|
|
4523
|
+
"domain": "network_access",
|
|
4524
|
+
"resource": "access_grants",
|
|
4525
|
+
"action": "create",
|
|
4526
|
+
"displayName": "申请受保护网络资源访问",
|
|
4527
|
+
"riskLevel": "high",
|
|
4528
|
+
"scopeKinds": [
|
|
4529
|
+
"tenant",
|
|
4530
|
+
"workspace",
|
|
4531
|
+
"resource"
|
|
4532
|
+
],
|
|
4533
|
+
"approvalPolicy": "eligible",
|
|
4534
|
+
"status": "active",
|
|
4535
|
+
"assignable": true
|
|
4536
|
+
},
|
|
4537
|
+
{
|
|
4538
|
+
"key": "network_access.access_grants.revoke",
|
|
4539
|
+
"domain": "network_access",
|
|
4540
|
+
"resource": "access_grants",
|
|
4541
|
+
"action": "revoke",
|
|
4542
|
+
"displayName": "撤销受保护网络资源访问凭证",
|
|
4543
|
+
"riskLevel": "high",
|
|
4544
|
+
"scopeKinds": [
|
|
4545
|
+
"tenant",
|
|
4546
|
+
"workspace",
|
|
4547
|
+
"resource"
|
|
4548
|
+
],
|
|
4549
|
+
"approvalPolicy": "eligible",
|
|
4550
|
+
"status": "active",
|
|
4551
|
+
"assignable": true
|
|
4552
|
+
},
|
|
4553
|
+
{
|
|
4554
|
+
"key": "network_access.access_grants.view",
|
|
4555
|
+
"domain": "network_access",
|
|
4556
|
+
"resource": "access_grants",
|
|
4557
|
+
"action": "view",
|
|
4558
|
+
"displayName": "查看受保护网络资源访问凭证",
|
|
4559
|
+
"riskLevel": "read",
|
|
4560
|
+
"scopeKinds": [
|
|
4561
|
+
"tenant",
|
|
4562
|
+
"workspace",
|
|
4563
|
+
"resource"
|
|
4564
|
+
],
|
|
4565
|
+
"approvalPolicy": "never",
|
|
4566
|
+
"status": "active",
|
|
4567
|
+
"assignable": true
|
|
4568
|
+
},
|
|
4569
|
+
{
|
|
4570
|
+
"key": "network_access.endpoint_devices.update",
|
|
4571
|
+
"domain": "network_access",
|
|
4572
|
+
"resource": "endpoint_devices",
|
|
4573
|
+
"action": "update",
|
|
4574
|
+
"displayName": "修改网络接入设备",
|
|
4575
|
+
"riskLevel": "mutate",
|
|
4576
|
+
"scopeKinds": [
|
|
4577
|
+
"tenant",
|
|
4578
|
+
"workspace",
|
|
4579
|
+
"resource"
|
|
4580
|
+
],
|
|
4581
|
+
"approvalPolicy": "never",
|
|
4582
|
+
"status": "active",
|
|
4583
|
+
"assignable": true
|
|
4584
|
+
},
|
|
4585
|
+
{
|
|
4586
|
+
"key": "network_access.endpoint_devices.view",
|
|
4587
|
+
"domain": "network_access",
|
|
4588
|
+
"resource": "endpoint_devices",
|
|
4589
|
+
"action": "view",
|
|
4590
|
+
"displayName": "查看网络接入设备",
|
|
4591
|
+
"riskLevel": "read",
|
|
4592
|
+
"scopeKinds": [
|
|
4593
|
+
"tenant",
|
|
4594
|
+
"workspace",
|
|
4595
|
+
"resource"
|
|
4596
|
+
],
|
|
4597
|
+
"approvalPolicy": "never",
|
|
4598
|
+
"status": "active",
|
|
4599
|
+
"assignable": true
|
|
4600
|
+
},
|
|
4601
|
+
{
|
|
4602
|
+
"key": "network_access.enrollments.create",
|
|
4603
|
+
"domain": "network_access",
|
|
4604
|
+
"resource": "enrollments",
|
|
4605
|
+
"action": "create",
|
|
4606
|
+
"displayName": "创建网络运行时注册令牌",
|
|
4607
|
+
"riskLevel": "high",
|
|
4608
|
+
"scopeKinds": [
|
|
4609
|
+
"tenant",
|
|
4610
|
+
"workspace",
|
|
4611
|
+
"resource"
|
|
4612
|
+
],
|
|
4613
|
+
"approvalPolicy": "eligible",
|
|
4614
|
+
"status": "active",
|
|
4615
|
+
"assignable": true
|
|
4616
|
+
},
|
|
4617
|
+
{
|
|
4618
|
+
"key": "network_access.enrollments.revoke",
|
|
4619
|
+
"domain": "network_access",
|
|
4620
|
+
"resource": "enrollments",
|
|
4621
|
+
"action": "revoke",
|
|
4622
|
+
"displayName": "撤销网络运行时注册",
|
|
4623
|
+
"riskLevel": "high",
|
|
4624
|
+
"scopeKinds": [
|
|
4625
|
+
"tenant",
|
|
4626
|
+
"workspace",
|
|
4627
|
+
"resource"
|
|
4628
|
+
],
|
|
4629
|
+
"approvalPolicy": "eligible",
|
|
4630
|
+
"status": "active",
|
|
4631
|
+
"assignable": true
|
|
4632
|
+
},
|
|
4633
|
+
{
|
|
4634
|
+
"key": "network_access.enrollments.view",
|
|
4635
|
+
"domain": "network_access",
|
|
4636
|
+
"resource": "enrollments",
|
|
4637
|
+
"action": "view",
|
|
4638
|
+
"displayName": "查看网络运行时注册",
|
|
4639
|
+
"riskLevel": "read",
|
|
4640
|
+
"scopeKinds": [
|
|
4641
|
+
"tenant",
|
|
4642
|
+
"workspace",
|
|
4643
|
+
"resource"
|
|
4644
|
+
],
|
|
4645
|
+
"approvalPolicy": "never",
|
|
4646
|
+
"status": "active",
|
|
4647
|
+
"assignable": true
|
|
4648
|
+
},
|
|
4649
|
+
{
|
|
4650
|
+
"key": "network_access.gateways.create",
|
|
4651
|
+
"domain": "network_access",
|
|
4652
|
+
"resource": "gateways",
|
|
4653
|
+
"action": "create",
|
|
4654
|
+
"displayName": "创建网络接入网关",
|
|
4655
|
+
"riskLevel": "high",
|
|
4656
|
+
"scopeKinds": [
|
|
4657
|
+
"tenant",
|
|
4658
|
+
"workspace",
|
|
4659
|
+
"resource"
|
|
4660
|
+
],
|
|
4661
|
+
"approvalPolicy": "eligible",
|
|
4662
|
+
"status": "active",
|
|
4663
|
+
"assignable": true
|
|
4664
|
+
},
|
|
4665
|
+
{
|
|
4666
|
+
"key": "network_access.gateways.update",
|
|
4667
|
+
"domain": "network_access",
|
|
4668
|
+
"resource": "gateways",
|
|
4669
|
+
"action": "update",
|
|
4670
|
+
"displayName": "更新网络接入网关",
|
|
4671
|
+
"riskLevel": "high",
|
|
4672
|
+
"scopeKinds": [
|
|
4673
|
+
"tenant",
|
|
4674
|
+
"workspace",
|
|
4675
|
+
"resource"
|
|
4676
|
+
],
|
|
4677
|
+
"approvalPolicy": "eligible",
|
|
4678
|
+
"status": "active",
|
|
4679
|
+
"assignable": true
|
|
4680
|
+
},
|
|
4681
|
+
{
|
|
4682
|
+
"key": "network_access.gateways.view",
|
|
4683
|
+
"domain": "network_access",
|
|
4684
|
+
"resource": "gateways",
|
|
4685
|
+
"action": "view",
|
|
4686
|
+
"displayName": "查看网络接入网关",
|
|
4687
|
+
"riskLevel": "read",
|
|
4688
|
+
"scopeKinds": [
|
|
4689
|
+
"tenant",
|
|
4690
|
+
"workspace",
|
|
4691
|
+
"resource"
|
|
4692
|
+
],
|
|
4693
|
+
"approvalPolicy": "never",
|
|
4694
|
+
"status": "active",
|
|
4695
|
+
"assignable": true
|
|
4696
|
+
},
|
|
4697
|
+
{
|
|
4698
|
+
"key": "network_access.mihomo_profiles.create",
|
|
4699
|
+
"domain": "network_access",
|
|
4700
|
+
"resource": "mihomo_profiles",
|
|
4701
|
+
"action": "create",
|
|
4702
|
+
"displayName": "创建 mihomo 代理配置",
|
|
4703
|
+
"riskLevel": "high",
|
|
4704
|
+
"scopeKinds": [
|
|
4705
|
+
"tenant",
|
|
4706
|
+
"workspace",
|
|
4707
|
+
"resource"
|
|
4708
|
+
],
|
|
4709
|
+
"approvalPolicy": "eligible",
|
|
4710
|
+
"status": "active",
|
|
4711
|
+
"assignable": true
|
|
4712
|
+
},
|
|
4713
|
+
{
|
|
4714
|
+
"key": "network_access.mihomo_profiles.delete",
|
|
4715
|
+
"domain": "network_access",
|
|
4716
|
+
"resource": "mihomo_profiles",
|
|
4717
|
+
"action": "delete",
|
|
4718
|
+
"displayName": "删除 mihomo 代理配置",
|
|
4719
|
+
"riskLevel": "high",
|
|
4720
|
+
"scopeKinds": [
|
|
4721
|
+
"tenant",
|
|
4722
|
+
"workspace",
|
|
4723
|
+
"resource"
|
|
4724
|
+
],
|
|
4725
|
+
"approvalPolicy": "eligible",
|
|
4726
|
+
"status": "active",
|
|
4727
|
+
"assignable": true
|
|
4728
|
+
},
|
|
4729
|
+
{
|
|
4730
|
+
"key": "network_access.mihomo_profiles.update",
|
|
4731
|
+
"domain": "network_access",
|
|
4732
|
+
"resource": "mihomo_profiles",
|
|
4733
|
+
"action": "update",
|
|
4734
|
+
"displayName": "更新 mihomo 代理配置",
|
|
4735
|
+
"riskLevel": "high",
|
|
4736
|
+
"scopeKinds": [
|
|
4737
|
+
"tenant",
|
|
4738
|
+
"workspace",
|
|
4739
|
+
"resource"
|
|
4740
|
+
],
|
|
4741
|
+
"approvalPolicy": "eligible",
|
|
4742
|
+
"status": "active",
|
|
4743
|
+
"assignable": true
|
|
4744
|
+
},
|
|
4745
|
+
{
|
|
4746
|
+
"key": "network_access.mihomo_profiles.view",
|
|
4747
|
+
"domain": "network_access",
|
|
4748
|
+
"resource": "mihomo_profiles",
|
|
4749
|
+
"action": "view",
|
|
4750
|
+
"displayName": "查看 mihomo 代理配置",
|
|
4751
|
+
"riskLevel": "read",
|
|
4752
|
+
"scopeKinds": [
|
|
4753
|
+
"tenant",
|
|
4754
|
+
"workspace",
|
|
4755
|
+
"resource"
|
|
4756
|
+
],
|
|
4757
|
+
"approvalPolicy": "never",
|
|
4758
|
+
"status": "active",
|
|
4759
|
+
"assignable": true
|
|
4760
|
+
},
|
|
4761
|
+
{
|
|
4762
|
+
"key": "network_access.policy.create",
|
|
4763
|
+
"domain": "network_access",
|
|
4764
|
+
"resource": "policy",
|
|
4765
|
+
"action": "create",
|
|
4766
|
+
"displayName": "创建网络访问策略",
|
|
4767
|
+
"riskLevel": "mutate",
|
|
4768
|
+
"scopeKinds": [
|
|
4769
|
+
"tenant",
|
|
4770
|
+
"workspace",
|
|
4771
|
+
"resource"
|
|
4772
|
+
],
|
|
4773
|
+
"approvalPolicy": "never",
|
|
4774
|
+
"status": "active",
|
|
4775
|
+
"assignable": true
|
|
4776
|
+
},
|
|
4777
|
+
{
|
|
4778
|
+
"key": "network_access.policy.delete",
|
|
4779
|
+
"domain": "network_access",
|
|
4780
|
+
"resource": "policy",
|
|
4781
|
+
"action": "delete",
|
|
4782
|
+
"displayName": "删除网络访问策略",
|
|
4783
|
+
"riskLevel": "high",
|
|
4784
|
+
"scopeKinds": [
|
|
4785
|
+
"tenant",
|
|
4786
|
+
"workspace",
|
|
4787
|
+
"resource"
|
|
4788
|
+
],
|
|
4789
|
+
"approvalPolicy": "eligible",
|
|
4790
|
+
"status": "active",
|
|
4791
|
+
"assignable": true
|
|
4792
|
+
},
|
|
4793
|
+
{
|
|
4794
|
+
"key": "network_access.policy.update",
|
|
4795
|
+
"domain": "network_access",
|
|
4796
|
+
"resource": "policy",
|
|
4797
|
+
"action": "update",
|
|
4798
|
+
"displayName": "修改和发布网络访问策略",
|
|
4799
|
+
"riskLevel": "mutate",
|
|
4800
|
+
"scopeKinds": [
|
|
4801
|
+
"tenant",
|
|
4802
|
+
"workspace",
|
|
4803
|
+
"resource"
|
|
4804
|
+
],
|
|
4805
|
+
"approvalPolicy": "never",
|
|
4806
|
+
"status": "active",
|
|
4807
|
+
"assignable": true
|
|
4808
|
+
},
|
|
4809
|
+
{
|
|
4810
|
+
"key": "network_access.policy.view",
|
|
4811
|
+
"domain": "network_access",
|
|
4812
|
+
"resource": "policy",
|
|
4813
|
+
"action": "view",
|
|
4814
|
+
"displayName": "查看和预演网络访问策略",
|
|
4815
|
+
"riskLevel": "read",
|
|
4816
|
+
"scopeKinds": [
|
|
4817
|
+
"tenant",
|
|
4818
|
+
"workspace",
|
|
4819
|
+
"resource"
|
|
4820
|
+
],
|
|
4821
|
+
"approvalPolicy": "never",
|
|
4822
|
+
"status": "active",
|
|
4823
|
+
"assignable": true
|
|
4824
|
+
},
|
|
4825
|
+
{
|
|
4826
|
+
"key": "network_access.resources.create",
|
|
4827
|
+
"domain": "network_access",
|
|
4828
|
+
"resource": "resources",
|
|
4829
|
+
"action": "create",
|
|
4830
|
+
"displayName": "创建网络资源",
|
|
4831
|
+
"riskLevel": "mutate",
|
|
4832
|
+
"scopeKinds": [
|
|
4833
|
+
"tenant",
|
|
4834
|
+
"workspace",
|
|
4835
|
+
"resource"
|
|
4836
|
+
],
|
|
4837
|
+
"approvalPolicy": "never",
|
|
4838
|
+
"status": "active",
|
|
4839
|
+
"assignable": true
|
|
4840
|
+
},
|
|
4841
|
+
{
|
|
4842
|
+
"key": "network_access.resources.delete",
|
|
4843
|
+
"domain": "network_access",
|
|
4844
|
+
"resource": "resources",
|
|
4845
|
+
"action": "delete",
|
|
4846
|
+
"displayName": "删除网络资源",
|
|
4847
|
+
"riskLevel": "mutate",
|
|
4848
|
+
"scopeKinds": [
|
|
4849
|
+
"tenant",
|
|
4850
|
+
"workspace",
|
|
4851
|
+
"resource"
|
|
4852
|
+
],
|
|
4853
|
+
"approvalPolicy": "never",
|
|
4854
|
+
"status": "active",
|
|
4855
|
+
"assignable": true
|
|
4856
|
+
},
|
|
4857
|
+
{
|
|
4858
|
+
"key": "network_access.resources.update",
|
|
4859
|
+
"domain": "network_access",
|
|
4860
|
+
"resource": "resources",
|
|
4861
|
+
"action": "update",
|
|
4862
|
+
"displayName": "修改网络资源",
|
|
4863
|
+
"riskLevel": "mutate",
|
|
4864
|
+
"scopeKinds": [
|
|
4865
|
+
"tenant",
|
|
4866
|
+
"workspace",
|
|
4867
|
+
"resource"
|
|
4868
|
+
],
|
|
4869
|
+
"approvalPolicy": "never",
|
|
4870
|
+
"status": "active",
|
|
4871
|
+
"assignable": true
|
|
4872
|
+
},
|
|
4873
|
+
{
|
|
4874
|
+
"key": "network_access.resources.view",
|
|
4875
|
+
"domain": "network_access",
|
|
4876
|
+
"resource": "resources",
|
|
4877
|
+
"action": "view",
|
|
4878
|
+
"displayName": "查看网络资源",
|
|
4879
|
+
"riskLevel": "read",
|
|
4880
|
+
"scopeKinds": [
|
|
4881
|
+
"tenant",
|
|
4882
|
+
"workspace",
|
|
4883
|
+
"resource"
|
|
4884
|
+
],
|
|
4885
|
+
"approvalPolicy": "never",
|
|
4886
|
+
"status": "active",
|
|
4887
|
+
"assignable": true
|
|
4888
|
+
},
|
|
4889
|
+
{
|
|
4890
|
+
"key": "network_access.sites.create",
|
|
4891
|
+
"domain": "network_access",
|
|
4892
|
+
"resource": "sites",
|
|
4893
|
+
"action": "create",
|
|
4894
|
+
"displayName": "创建网络站点",
|
|
4895
|
+
"riskLevel": "mutate",
|
|
4896
|
+
"scopeKinds": [
|
|
4897
|
+
"tenant",
|
|
4898
|
+
"workspace",
|
|
4899
|
+
"resource"
|
|
4900
|
+
],
|
|
4901
|
+
"approvalPolicy": "never",
|
|
4902
|
+
"status": "active",
|
|
4903
|
+
"assignable": true
|
|
4904
|
+
},
|
|
4905
|
+
{
|
|
4906
|
+
"key": "network_access.sites.delete",
|
|
4907
|
+
"domain": "network_access",
|
|
4908
|
+
"resource": "sites",
|
|
4909
|
+
"action": "delete",
|
|
4910
|
+
"displayName": "删除网络站点",
|
|
4911
|
+
"riskLevel": "mutate",
|
|
4912
|
+
"scopeKinds": [
|
|
4913
|
+
"tenant",
|
|
4914
|
+
"workspace",
|
|
4915
|
+
"resource"
|
|
4916
|
+
],
|
|
4917
|
+
"approvalPolicy": "never",
|
|
4918
|
+
"status": "active",
|
|
4919
|
+
"assignable": true
|
|
4920
|
+
},
|
|
4921
|
+
{
|
|
4922
|
+
"key": "network_access.sites.update",
|
|
4923
|
+
"domain": "network_access",
|
|
4924
|
+
"resource": "sites",
|
|
4925
|
+
"action": "update",
|
|
4926
|
+
"displayName": "修改网络站点",
|
|
4927
|
+
"riskLevel": "mutate",
|
|
4928
|
+
"scopeKinds": [
|
|
4929
|
+
"tenant",
|
|
4930
|
+
"workspace",
|
|
4931
|
+
"resource"
|
|
4932
|
+
],
|
|
4933
|
+
"approvalPolicy": "never",
|
|
4934
|
+
"status": "active",
|
|
4935
|
+
"assignable": true
|
|
4936
|
+
},
|
|
4937
|
+
{
|
|
4938
|
+
"key": "network_access.sites.view",
|
|
4939
|
+
"domain": "network_access",
|
|
4940
|
+
"resource": "sites",
|
|
4941
|
+
"action": "view",
|
|
4942
|
+
"displayName": "查看网络站点",
|
|
4943
|
+
"riskLevel": "read",
|
|
4944
|
+
"scopeKinds": [
|
|
4945
|
+
"tenant",
|
|
4946
|
+
"workspace",
|
|
4947
|
+
"resource"
|
|
4948
|
+
],
|
|
4949
|
+
"approvalPolicy": "never",
|
|
4950
|
+
"status": "active",
|
|
4951
|
+
"assignable": true
|
|
4952
|
+
},
|
|
4953
|
+
{
|
|
4954
|
+
"key": "network_access.spaces.create",
|
|
4955
|
+
"domain": "network_access",
|
|
4956
|
+
"resource": "spaces",
|
|
4957
|
+
"action": "create",
|
|
4958
|
+
"displayName": "创建网络空间",
|
|
4959
|
+
"riskLevel": "mutate",
|
|
4960
|
+
"scopeKinds": [
|
|
4961
|
+
"tenant",
|
|
4962
|
+
"workspace",
|
|
4963
|
+
"resource"
|
|
4964
|
+
],
|
|
4965
|
+
"approvalPolicy": "never",
|
|
4966
|
+
"status": "active",
|
|
4967
|
+
"assignable": true
|
|
4968
|
+
},
|
|
4969
|
+
{
|
|
4970
|
+
"key": "network_access.spaces.delete",
|
|
4971
|
+
"domain": "network_access",
|
|
4972
|
+
"resource": "spaces",
|
|
4973
|
+
"action": "delete",
|
|
4974
|
+
"displayName": "删除网络空间",
|
|
4975
|
+
"riskLevel": "mutate",
|
|
4976
|
+
"scopeKinds": [
|
|
4977
|
+
"tenant",
|
|
4978
|
+
"workspace",
|
|
4979
|
+
"resource"
|
|
4980
|
+
],
|
|
4981
|
+
"approvalPolicy": "never",
|
|
4982
|
+
"status": "active",
|
|
4983
|
+
"assignable": true
|
|
4984
|
+
},
|
|
4985
|
+
{
|
|
4986
|
+
"key": "network_access.spaces.update",
|
|
4987
|
+
"domain": "network_access",
|
|
4988
|
+
"resource": "spaces",
|
|
4989
|
+
"action": "update",
|
|
4990
|
+
"displayName": "修改网络空间",
|
|
4991
|
+
"riskLevel": "mutate",
|
|
4992
|
+
"scopeKinds": [
|
|
4993
|
+
"tenant",
|
|
4994
|
+
"workspace",
|
|
4995
|
+
"resource"
|
|
4996
|
+
],
|
|
4997
|
+
"approvalPolicy": "never",
|
|
4998
|
+
"status": "active",
|
|
4999
|
+
"assignable": true
|
|
5000
|
+
},
|
|
5001
|
+
{
|
|
5002
|
+
"key": "network_access.spaces.view",
|
|
5003
|
+
"domain": "network_access",
|
|
5004
|
+
"resource": "spaces",
|
|
5005
|
+
"action": "view",
|
|
5006
|
+
"displayName": "查看网络空间",
|
|
5007
|
+
"riskLevel": "read",
|
|
5008
|
+
"scopeKinds": [
|
|
5009
|
+
"tenant",
|
|
5010
|
+
"workspace",
|
|
5011
|
+
"resource"
|
|
5012
|
+
],
|
|
5013
|
+
"approvalPolicy": "never",
|
|
5014
|
+
"status": "active",
|
|
5015
|
+
"assignable": true
|
|
5016
|
+
},
|
|
5017
|
+
{
|
|
5018
|
+
"key": "network_access.telemetry.view",
|
|
5019
|
+
"domain": "network_access",
|
|
5020
|
+
"resource": "telemetry",
|
|
5021
|
+
"action": "view",
|
|
5022
|
+
"displayName": "查看网络遥测汇总",
|
|
5023
|
+
"riskLevel": "read",
|
|
5024
|
+
"scopeKinds": [
|
|
5025
|
+
"tenant",
|
|
5026
|
+
"workspace",
|
|
5027
|
+
"resource"
|
|
5028
|
+
],
|
|
5029
|
+
"approvalPolicy": "never",
|
|
5030
|
+
"status": "active",
|
|
5031
|
+
"assignable": true
|
|
5032
|
+
},
|
|
4505
5033
|
{
|
|
4506
5034
|
"key": "observe.ai.chat",
|
|
4507
5035
|
"domain": "observe",
|