Anwendung Secret Service und API-Grenze
Die geheimen Operationen der BaseHarbor-Anwendung haben eine vertrauenswürdige Orchestrierungsgrenze:internal/applicationsecret.Service.
Das baha app secret Befehle und der HTTP-Anwendung-geheime Handler verwenden diesen Dienst, anstatt unabhängige OpenBao-Workflows zu implementieren. Dies hält Validierung, Laufzeitauflösung, Provider-Zugriff, Timeouts und geheime Metadaten-Semantik an einem Ort.
HTTP-Vertrag
Der aktuelle Handler definiert diese BaseHarbor-spezifischen Operationen:
GET /api/v1/apps/{app}/secrets
PUT /api/v1/apps/{app}/secrets/{name}
DELETE /api/v1/apps/{app}/secrets/{name}
GET liefert nur Metadaten zurück:
{
"secrets": [
{
"name": "OPENAI_API_KEY",
"required": true,
"present": true,
"usable": true
}
]
}
Es gibt absichtlich keine API-Operation, die einen gespeicherten geheimen Wert aufzeigt.
PUT akzeptiert einen neuen oder Ersatzwert:
{
"value": "..."
}
Eine erfolgreiche Antwort bestätigt nur den Schlüsselnamen und den konfigurierten Zustand. Der angegebene Wert wird nicht widergespiegelt.
DELETE entfernt das verwaltete Geheimnis dauerhaft durch denselben anwendungsgeheimen Dienst, der vom CLI genutzt wird.
Genehmigungsgrenze
Der HTTP-Handler ist fehlgeschlagen und erfordert alle folgenden Schritte, bevor eine geheime Operation den Dienst erreichen kann:
- eine authentifizierte
identity.Principalim Rahmen des Ersuchens - ein gelöstes
tenancy.Context - eine RBAC-Rolle, die die beantragte Lese-/Aktualisierungs-/Löschengenehmigung erteilt
- positives Anwendungseigentumsnachweis aus einem
OwnershipResolver
Fehlendes, mehrdeutiges oder negatives Eigentum fällt nie auf den Zugriff auf den Anwendungsnamen zurück.
Die Kenntnis eines Anwendungsnamens reicht daher nicht aus, um seine geheimen Metadaten zu inspizieren oder zu mutieren.
Autoritatives Anwendungseigentum
Die Anwendung auf die Tenant-Eigenschaft wird in PostgreSQL in application_ownerships.
Die Invariante ist absichtlich klein und streng:
application_name -> exactly one tenant_id
application_name ist der primäre Schlüssel undtenant_id Literaturhinweisetenants(id). PostgreSQL row-level security Scopes liest und schreibt in den aktuellen BaseHarbor Mieter-Kontext.
ApplicationOwnershipStore.Claim ist idempotent für den gleichen Mieter und Antrag. Ein anderer Mieter kann keinen bereits im Besitz befindlichen Anwendungsnamen beanspruchen. Eigentum wird niemals implizit oder mit Last-Write-Wins-Verhalten neu zugewiesen.
ApplicationOwnershipStore.OwnedByTenant führt das Lesen innerhalb der bestehenden Pächter-Scope-Transaktionsgrenze aus, so dass der HTTP-Handler den datenbankgestützten Store direkt als dessenOwnershipResolver.
Geschützte Anfragekette
Geschützte Steuerungs-Plane-Handler sind hinter einer obligatorischen Anforderungs-Sicherheits-Kette zusammengesetzt:
Authorization: Bearer <token>
↓
OIDC discovery / JWKS verification
↓
identity.Principal
↓
identity-scoped TenantResolver
↓
tenancy.Context
↓
RBAC
↓
ApplicationOwnershipStore
↓
application secret handler
auth.OIDCVerifier verwendet die etabliertego-oidc Umsetzung für Signatur, Emittenten, Ablauf und Publikumsvalidierung, anstatt JWT-Kryptographie innerhalb von BaseHarbor umzusetzen.
database.IdentityTenantResolver löst Mitgliedschaften, bevor ein Mieter-Kontext über eine dedizierte PostgreSQL existiertFOR SELECT RLS-Policy, die vom bereits geprüften Emittenten und Subjekt Keyed ist. Es nutzt keine Superuser-Verbindung oder eine Rolle mitBYPASSRLS.
Der Resolver scheitert geschlossen, wenn es keine Mitgliedschaft, ein ungültiger Auftraggeber oder Mitgliedschaften, die mehr als ein Mieter. Mehrere Rollen innerhalb des gleichen Mieters werden durch die bestehende gelöst tenancy.Resolve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
SieheAuthenticationfür die vollständige Vertrauensbeschreibung.
Aktueller Expositionsstatus
Der geschützte Handler, der Beton-OIDC-Verifier, der datenbankgestützte Applikationsbesitz und der sichere Mieter-Resolver sind implementiert und testbar.
BaseHarbor behauptet immer noch nicht, dass diese API öffentlich zuhört. Laufzeit-OIDC-Einstellungen, Datenbankverkabelung, Listener/TLS-Konfiguration und Startverifizierung müssen noch explizit vor dem Öffnen des Endpunkts des Control-Plane-Netzwerks zusammengestellt werden.
Geheime Nichtoffenlegung
Geheime Werte dürfen nie in erscheinen:
- GET-Antworten
- erfolgreiche PUT-Antworten
- API-Fehler
- Metadaten der Anwendung
- normale Protokolle oder Telemetrie
- Prüfung der Nutzlasten
Die API-Tests beinhalten negative Autorisierungsfälle und überprüfen, ob ein eingereichter geheimer Wert in der Antwort nicht widergespiegelt wird.
Laufzeit-Lieferung bleibt getrennt
Diese API verwaltet geheime Werte. Sie definiert nicht, wie ein Workload sie verbraucht.
Die Laufzeitbereitstellung bleibt ein Problem des Anbieters und kann später Standardmechanismen wie z.B.:
- In-Memory geheime Dateien
- gegebenenfalls explizite Umwelteinspritzung
- OpenBao/Vault-kompatible Workload-Identität
- Kubernetes-native Geheimprojektion
Der Bewerbungsvertrag erklärt weiterhin was erforderlich ist, nicht einen obligatorischen BaseHarbor-spezifischen Liefermechanismus.