Dienstkonten und Schlüssel
Dienstkonten für CI und Automatisierung, ihre Schlüssel, Richtlinien, Delegierungen und ihr Audit.
Die Vorgänge dieser Gruppe mit ihrer Zugriffsregel, Wiederholungsregel, ihren Parametern und Antworten. Jede Anfrage trägt einen Schlüssel: Authorization: Bearer <Schlüssel> (siehe „Authentifizierung“).
Vorgänge
Dienstkonten auflisten
GET HEAD /api/v1/service-accounts
Zugriff: Berechtigung zur Dienstverwaltung service-account.read · Wiederholung: Wiederholen ist sicher (Lesen)
Listet die Dienstkonten auf, die der Aufrufer sehen darf, nach ID geordnet, 50 pro Seite, jeweils mit Name, Aktivierungsstatus, revision, Richtlinien-bindings und Erstellungszeit; weiter mit after = next. Der Bootstrap-Schlüssel sieht alle, ein Delegat nur die Zielkonten, bei denen seine Delegierung service-account.read enthält; ohne diese Aktion ist die Liste leer, statt abgelehnt zu werden.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
after | Query | string (uuid) | nein | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
items | Array von object | ja | höchstens 50 Elemente |
items[].id | string (uuid) | ja | — |
items[].name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
items[].enabled | boolean | ja | — |
items[].revision | integer | ja | 1–2147483647 |
items[].bindings | Array von object | ja | höchstens 64 Elemente |
items[].bindings[].resource | object | ja | — |
items[].bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
items[].createdAt | string (date-time) | ja | — |
next | string (uuid) | ja | darf null sein |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/service-accounts" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Dienstkonto erstellen
POST /api/v1/service-accounts
Zugriff: Bootstrap-Schlüssel (Wiederherstellungsschlüssel der Installation) · Wiederholung: Nicht automatisch wiederholen
Erstellt eine Maschinenidentität für CI oder eine Anwendung mit name (3–64 Buchstaben, Ziffern oder _.-) und ihren Richtlinien-bindings: für jedes Repository die genauen Aktionen, die ihre Schlüssel nutzen dürfen (etwa upload.create oder content.read). Antwortet mit 201 und dem Konto; stellen Sie danach mit issueServiceKey einen Schlüssel aus. Ein vergebener Name ergibt 409 already_exists.
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
Antwort 201
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
id | string (uuid) | ja | — |
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
createdAt | string (date-time) | ja | — |
Antworten: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X POST "$ARKVORY_URL/api/v1/service-accounts" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"<name>","bindings":[]}'Dienstkonto abrufen
GET HEAD /api/v1/service-accounts/{id}
Zugriff: Berechtigung zur Dienstverwaltung service-account.read · Wiederholung: Wiederholen ist sicher (Lesen)
Liefert Name, Aktivierungsstatus, revision, Richtlinienbindungen und Erstellungszeit des Kontos. Für einen Delegaten antwortet ein ihm nicht zugewiesenes Konto mit 404 und eine fehlende Aktion bei einem zugewiesenen mit 403.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
id | string (uuid) | ja | — |
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
createdAt | string (date-time) | ja | — |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/service-accounts/$ID" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Dienstkonto aktivieren oder deaktivieren
PATCH /api/v1/service-accounts/{id}
Zugriff: Berechtigung zur Dienstverwaltung service-account.manage · Wiederholung: Nur mit der erwarteten Revision wiederholen (compare-and-swap)
Setzt enabled; expectedRevision muss die aktuelle Revision sein, sonst 409 revision_mismatch. Nur dieses Kennzeichen ändert sich hier (der Name nicht). Das Deaktivieren sperrt ab der nächsten Anfrage jeden Schlüssel des Kontos; das Aktivieren stellt die Schlüssel wieder her, die weder abgelaufen noch widerrufen sind. Ein Delegat darf dies nur, wenn die gesamte aktuelle Richtlinie innerhalb seiner Obergrenze liegt.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
expectedRevision | integer | ja | 1–2147483646 |
enabled | boolean | ja | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
id | string (uuid) | ja | — |
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
createdAt | string (date-time) | ja | — |
Antworten: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X PATCH "$ARKVORY_URL/api/v1/service-accounts/$ID" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":1,"enabled":false}'Richtlinie eines Dienstkontos abrufen
GET HEAD /api/v1/service-accounts/{id}/policy
Zugriff: Berechtigung zur Dienstverwaltung policy.read · Wiederholung: Wiederholen ist sicher (Lesen)
Liefert das Konto mit seinen Richtlinien-bindings und der revision, wie getServiceAccount, für einen Aufrufer mit policy.read. Die wirksamen Berechtigungen eines Schlüssels sind die Schnittmenge aus dieser Richtlinie und den eigenen Bindungen des Schlüssels, je Repository und Aktion.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
id | string (uuid) | ja | — |
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
createdAt | string (date-time) | ja | — |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/service-accounts/$ID/policy" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Richtlinie eines Dienstkontos ersetzen
PUT /api/v1/service-accounts/{id}/policy
Zugriff: Berechtigung zur Dienstverwaltung policy.manage · Wiederholung: Nur mit der erwarteten Revision wiederholen (compare-and-swap)
Ersetzt die bindings des Kontos (bis zu 64, jede ein Repository mit seinen genauen Aktionen); expectedRevision muss die aktuelle Revision sein, sonst 409 revision_mismatch. Jeder Schlüssel folgt der Änderung ab seiner nächsten Anfrage: Eine Einschränkung wirkt sofort, eine Erweiterung geht nie über die eigenen Bindungen eines Schlüssels hinaus. Ein Delegat benötigt, dass sowohl die aktuelle als auch die neue Richtlinie innerhalb seiner Obergrenze liegen.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
expectedRevision | integer | ja | 1–2147483646 |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
id | string (uuid) | ja | — |
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
createdAt | string (date-time) | ja | — |
Antworten: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X PUT "$ARKVORY_URL/api/v1/service-accounts/$ID/policy" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":1,"bindings":[]}'Schlüssel eines Dienstkontos auflisten
GET HEAD /api/v1/service-accounts/{id}/keys
Zugriff: Berechtigung zur Dienstverwaltung credential.read · Wiederholung: Wiederholen ist sicher (Lesen)
Listet die Schlüsselmetadaten des Kontos nach ID geordnet auf, 50 pro Seite: Name, state (pending, active, revoked), Bindungen, Erstellung, Ablauf, Aktivierungsfrist und den Schlüssel, aus dem er rotiert wurde; nie Geheimnisse oder Hashes. Weiter mit after = next. Der Ablauf ändert state nicht; vergleichen Sie daher expiresAt mit der aktuellen Zeit.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
after | Query | string (uuid) | nein | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
items | Array von object | ja | höchstens 50 Elemente |
items[].id | string (uuid) | ja | — |
items[].accountId | string (uuid) | ja | — |
items[].name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
items[].state | string | ja | einer von pending, active, revoked |
items[].bindings | Array von object | ja | höchstens 64 Elemente |
items[].bindings[].resource | object | ja | — |
items[].bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
items[].createdAt | string (date-time) | ja | — |
items[].expiresAt | string (date-time) | ja | — |
items[].activationExpiresAt | string (date-time) | ja | — |
items[].rotatedFrom | string (uuid) | ja | darf null sein |
next | string (uuid) | ja | darf null sein |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/service-accounts/$ID/keys" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Schlüssel für ein Dienstkonto ausstellen
POST /api/v1/service-accounts/{id}/keys
Zugriff: Berechtigung zur Dienstverwaltung credential.manage · Wiederholung: Wiederholen ist sicher mit demselben Idempotency-Key
Stellt einen ausstehenden Schlüssel aus, mit name, bindings (nur dort wirksam, wo die Kontorichtlinie sie ebenfalls erlaubt) und optionalem expiresAt (UTC; standardmäßig 90 Tage, höchstens 365, und für einen Delegaten nie über seinen eigenen Schlüssel hinaus). Die erste Antwort ist 201 mit key und dem secret, das nur dieses eine Mal angezeigt wird; eine Wiederholung mit demselben Idempotency-Key und Body ergibt 200 nur mit den Metadaten, ein anderer Body 409. Der Inhaber muss activateServiceKey innerhalb von 15 Minuten mit dem Geheimnis aufrufen; ist das Geheimnis verloren, widerrufen Sie den Schlüssel und stellen Sie unter einem neuen Idempotency-Key einen neuen aus.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Idempotency-Key | Header | string | ja | höchstens 128 Zeichen |
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
expiresAt | string (date-time) | nein | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
key | object | ja | — |
key.id | string (uuid) | ja | — |
key.accountId | string (uuid) | ja | — |
key.name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
key.state | string | ja | einer von pending, active, revoked |
key.bindings | Array von object | ja | höchstens 64 Elemente |
key.bindings[].resource | object | ja | — |
key.bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
key.createdAt | string (date-time) | ja | — |
key.expiresAt | string (date-time) | ja | — |
key.activationExpiresAt | string (date-time) | ja | — |
key.rotatedFrom | string (uuid) | ja | darf null sein |
secret | string | nein | — |
Antworten: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X POST "$ARKVORY_URL/api/v1/service-accounts/$ID/keys" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"<name>","bindings":[]}'Audit eines Dienstkontos lesen
GET HEAD /api/v1/service-accounts/{id}/audit
Zugriff: Berechtigung zur Dienstverwaltung service-audit.read · Wiederholung: Wiederholen ist sicher (Lesen)
Liefert, älteste zuerst, bis zu 100 Ereignisse des Kontos nach der Sequenz after (Standard 0): Änderungen an Konto, Richtlinie und Schlüsseln wie Ausstellung, Rotation, Aktivierung und Widerruf, jeweils mit Akteur, Aktion, Schlüssel und Zeit. Um weiterzulesen, übergeben Sie die letzte sequence als after; es gibt kein Feld next. Es werden nur die neuesten 100.000 Ereignisse des Servers aufbewahrt.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
after | Query | string | nein | eine ganze Zahl in Dezimalziffern, als String gesendet |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
items | Array von object | ja | höchstens 100 Elemente |
items[].sequence | string | ja | — |
items[].actor | string | ja | — |
items[].action | string | ja | — |
items[].accountId | string (uuid) | ja | — |
items[].keyId | string (uuid) | ja | darf null sein |
items[].occurredAt | string (date-time) | ja | — |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/service-accounts/$ID/audit" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Schlüssel abrufen
GET HEAD /api/v1/api-keys/{id}
Zugriff: Berechtigung zur Dienstverwaltung credential.read · Wiederholung: Wiederholen ist sicher (Lesen)
Liefert die Metadaten eines verwalteten Schlüssels: sein Konto, Name, Zustand, Bindungen, Erstellung, Ablauf, Aktivierungsfrist und den Schlüssel, aus dem er rotiert wurde; nie das Geheimnis oder seinen Hash.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
id | string (uuid) | ja | — |
accountId | string (uuid) | ja | — |
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
state | string | ja | einer von pending, active, revoked |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
createdAt | string (date-time) | ja | — |
expiresAt | string (date-time) | ja | — |
activationExpiresAt | string (date-time) | ja | — |
rotatedFrom | string (uuid) | ja | darf null sein |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/api-keys/$ID" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Schlüssel rotieren
POST /api/v1/api-keys/{id}/rotate
Zugriff: Berechtigung zur Dienstverwaltung credential.manage · Wiederholung: Wiederholen ist sicher mit demselben Idempotency-Key
Stellt einen ausstehenden Nachfolger des Schlüssels id für dasselbe Konto mit denselben oder engeren bindings aus und antwortet wie issueServiceKey: 201 mit dem einmaligen secret, bei einer Wiederholung mit demselben Idempotency-Key 200 nur mit Metadaten. Sobald der Nachfolger aktiviert ist, bleibt der alte Schlüssel höchstens 24 weitere Stunden gültig; widerrufen Sie ihn ausdrücklich, wenn der neue funktioniert, aber erst nachdem die von ihm gestarteten Jobs beendet sind. Delegierungen eines Operator-Schlüssels werden nicht auf seinen Nachfolger kopiert.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Idempotency-Key | Header | string | ja | höchstens 128 Zeichen |
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
bindings | Array von object | ja | höchstens 64 Elemente |
bindings[].resource | object | ja | — |
bindings[].resource.kind | string | ja | einer von repository |
bindings[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
expiresAt | string (date-time) | nein | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
key | object | ja | — |
key.id | string (uuid) | ja | — |
key.accountId | string (uuid) | ja | — |
key.name | string | ja | entspricht ^[a-zA-Z0-9_.-]{3,64}$ |
key.state | string | ja | einer von pending, active, revoked |
key.bindings | Array von object | ja | höchstens 64 Elemente |
key.bindings[].resource | object | ja | — |
key.bindings[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
key.createdAt | string (date-time) | ja | — |
key.expiresAt | string (date-time) | ja | — |
key.activationExpiresAt | string (date-time) | ja | — |
key.rotatedFrom | string (uuid) | ja | darf null sein |
secret | string | nein | — |
Antworten: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X POST "$ARKVORY_URL/api/v1/api-keys/$ID/rotate" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"<name>","bindings":[]}'Schlüssel widerrufen
POST /api/v1/api-keys/{id}/revoke
Zugriff: Berechtigung zur Dienstverwaltung credential.manage · Wiederholung: Wiederholen ist sicher: Dieselbe Anfrage hat dieselbe Wirkung
Widerruft den Schlüssel endgültig: Seine nächste Anfrage schlägt fehl, ein bereits laufender Download wird jedoch nicht abgebrochen. Eine Wiederholung ist erfolgreich und liefert 204. Schlüssel, die ein widerrufener Operator-Schlüssel ausgestellt hat und die bereits aktiviert wurden, bleiben gültig; widerrufen Sie sie gesondert.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Antworten: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507
Beispiel
curl -X POST "$ARKVORY_URL/api/v1/api-keys/$ID/revoke" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Schlüssel aktivieren
POST /api/v1/auth/activate-key
Zugriff: Der ausgestellte Schlüssel, vor oder nach der Aktivierung · Wiederholung: Wiederholen ist sicher: Dieselbe Anfrage hat dieselbe Wirkung
Belegt, dass der Inhaber einen neu ausgestellten Schlüssel erhalten hat: Rufen Sie die Operation mit diesem Schlüssel als Authorization: Bearer innerhalb von 15 Minuten nach der Ausstellung auf, dann wird der Schlüssel aktiv (204). Eine Wiederholung ist sicher und verlängert den Ablauf nicht. Das Aktivieren eines rotierten Schlüssels kürzt die Restlaufzeit des Schlüssels, den er ersetzt, auf höchstens 24 Stunden.
Antworten: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507
Beispiel
curl -X POST "$ARKVORY_URL/api/v1/auth/activate-key" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Delegierungen eines Schlüssels auflisten
GET HEAD /api/v1/api-keys/{id}/delegations
Zugriff: Bootstrap-Schlüssel oder der Schlüssel selbst · Wiederholung: Wiederholen ist sicher (Lesen)
Liefert die Delegierungen des Operator-Schlüssels id, bis zu 64 einschließlich deaktivierter: für jedes Zielkonto die revision, ob die Delegierung enabled ist, die Verwaltungs-actions (etwa credential.manage) und das ceiling, die Obergrenze der Repository-Bindungen, die der Schlüssel weitergeben darf. Ein Delegat liest hier seine eigenen (seine Schlüssel-ID ist credentialId in getOwnPermissions); die Liste eines anderen Schlüssels ergibt 403.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
items | Array von object | ja | höchstens 64 Elemente |
items[].keyId | string (uuid) | ja | — |
items[].targetAccountId | string (uuid) | ja | — |
items[].enabled | boolean | ja | — |
items[].revision | integer | ja | 1–2147483647 |
items[].actions | Array von string | ja | höchstens 7 Elemente; keine wiederholten Elemente; jedes Element: einer von service-account.read, service-account.manage, policy.read, policy.manage, credential.read, credential.manage, service-audit.read |
items[].ceiling | Array von object | ja | höchstens 16 Elemente |
items[].ceiling[].resource | object | ja | — |
items[].ceiling[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507
Beispiel
curl -X GET "$ARKVORY_URL/api/v1/api-keys/$ID/delegations" \
-H "Authorization: Bearer $ARKVORY_TOKEN"Die Verwaltung eines Dienstkontos delegieren
PUT /api/v1/api-keys/{id}/delegations/{accountId}
Zugriff: Bootstrap-Schlüssel (Wiederherstellungsschlüssel der Installation) · Wiederholung: Nur mit der erwarteten Revision wiederholen (compare-and-swap)
Erlaubt dem Schlüssel id, das Dienstkonto accountId mit den angegebenen actions (service-account.read, service-account.manage, policy.read, policy.manage, credential.read, credential.manage, service-audit.read) innerhalb von ceiling zu verwalten, bis zu 16 Repository-Bindungen, die er weitergeben darf; eine Verwaltungsaktion (manage) schließt die Leseaktion (read) nicht ein. expectedRevision ist 0 zum Erstellen und die aktuelle Revision des Eintrags zum Ändern oder erneuten Aktivieren, sonst 409. Der Schlüssel muss aktiv und vom Bootstrap-Schlüssel ausgestellt sein, und ein Konto kann nicht zugleich Delegierungen besitzen und Ziel einer Delegierung sein, sodass Delegierungen nie verkettet werden.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
accountId | Pfad | string (uuid) | ja | — |
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
expectedRevision | integer | ja | 0–2147483646 |
actions | Array von string | ja | 1–7 Elemente; keine wiederholten Elemente; jedes Element: einer von service-account.read, service-account.manage, policy.read, policy.manage, credential.read, credential.manage, service-audit.read |
ceiling | Array von object | ja | höchstens 16 Elemente |
ceiling[].resource | object | ja | — |
ceiling[].resource.kind | string | ja | einer von repository |
ceiling[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
ceiling[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
keyId | string (uuid) | ja | — |
targetAccountId | string (uuid) | ja | — |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
actions | Array von string | ja | höchstens 7 Elemente; keine wiederholten Elemente; jedes Element: einer von service-account.read, service-account.manage, policy.read, policy.manage, credential.read, credential.manage, service-audit.read |
ceiling | Array von object | ja | höchstens 16 Elemente |
ceiling[].resource | object | ja | — |
ceiling[].resource.kind | string | ja | einer von repository |
ceiling[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
ceiling[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
Antworten: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X PUT "$ARKVORY_URL/api/v1/api-keys/$ID/delegations/$ACCOUNTID" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":0,"actions":["service-account.read"],"ceiling":[]}'Eine Delegierung zurückziehen
DELETE /api/v1/api-keys/{id}/delegations/{accountId}
Zugriff: Bootstrap-Schlüssel (Wiederherstellungsschlüssel der Installation) · Wiederholung: Nur mit der erwarteten Revision wiederholen (compare-and-swap)
Deaktiviert die Delegierung des Schlüssels id für accountId; der JSON-Body trägt expectedRevision, die aktuelle Revision des Eintrags. Der Eintrag bleibt als deaktivierter Eintrag ohne Aktionen und mit höherer Revision bestehen und wird mit 200 zurückgegeben; lesen Sie ihn nach einer verlorenen Antwort mit listServiceDelegations, statt die Anfrage zu wiederholen, denn die alte Revision ergibt 409. Schlüssel, die der Delegat bereits ausgestellt und aktiviert hat, funktionieren weiter: Widerrufen Sie sie oder deaktivieren Sie das Konto gesondert.
Parameter
| Name | Ort | Typ | Erforderlich | Regeln |
|---|---|---|---|---|
id | Pfad | string (uuid) | ja | — |
accountId | Pfad | string (uuid) | ja | — |
Anfragetext (application/json)
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
expectedRevision | integer | ja | 1–2147483646 |
Antwort 200
| Feld | Typ | Erforderlich | Regeln |
|---|---|---|---|
keyId | string (uuid) | ja | — |
targetAccountId | string (uuid) | ja | — |
enabled | boolean | ja | — |
revision | integer | ja | 1–2147483647 |
actions | Array von string | ja | höchstens 7 Elemente; keine wiederholten Elemente; jedes Element: einer von service-account.read, service-account.manage, policy.read, policy.manage, credential.read, credential.manage, service-audit.read |
ceiling | Array von object | ja | höchstens 16 Elemente |
ceiling[].resource | object | ja | — |
ceiling[].resource.kind | string | ja | einer von repository |
ceiling[].resource.id | string | ja | entspricht ^[a-z0-9][a-z0-9_-]{0,63}$ |
ceiling[].actions | Array von string | ja | 1–24 Elemente; keine wiederholten Elemente; jedes Element: einer von repository.read, storage.read, storage.manage, diagnostics.read, artifact.read, artifact.list, artifact.delete, artifact.promote, content.read, upload.create, upload.read, upload.write, upload.complete, upload.cancel, job.read, package.read, package.publish, asset.read, asset.write, asset.restore, annotation.read, annotation.write, reference.write, audit.read |
Antworten: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507
Beispiel
curl -X DELETE "$ARKVORY_URL/api/v1/api-keys/$ID/delegations/$ACCOUNTID" \
-H "Authorization: Bearer $ARKVORY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"expectedRevision":1}'