Zum Inhalt springen

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

NameOrtTypErforderlichRegeln
afterQuerystring (uuid)nein—

Antwort 200

FeldTypErforderlichRegeln
itemsArray von objectjahöchstens 50 Elemente
items[].idstring (uuid)ja—
items[].namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
items[].enabledbooleanja—
items[].revisionintegerja1–2147483647
items[].bindingsArray von objectjahöchstens 64 Elemente
items[].bindings[].resourceobjectja—
items[].bindings[].actionsArray von stringja1–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[].createdAtstring (date-time)ja—
nextstring (uuid)jadarf null sein

Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507

Beispiel

bash
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)

FeldTypErforderlichRegeln
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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

FeldTypErforderlichRegeln
idstring (uuid)ja—
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
enabledbooleanja—
revisionintegerja1–2147483647
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
createdAtstring (date-time)ja—

Antworten: 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Antwort 200

FeldTypErforderlichRegeln
idstring (uuid)ja—
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
enabledbooleanja—
revisionintegerja1–2147483647
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
createdAtstring (date-time)ja—

Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Anfragetext (application/json)

FeldTypErforderlichRegeln
expectedRevisionintegerja1–2147483646
enabledbooleanja—

Antwort 200

FeldTypErforderlichRegeln
idstring (uuid)ja—
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
enabledbooleanja—
revisionintegerja1–2147483647
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
createdAtstring (date-time)ja—

Antworten: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Antwort 200

FeldTypErforderlichRegeln
idstring (uuid)ja—
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
enabledbooleanja—
revisionintegerja1–2147483647
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
createdAtstring (date-time)ja—

Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Anfragetext (application/json)

FeldTypErforderlichRegeln
expectedRevisionintegerja1–2147483646
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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

FeldTypErforderlichRegeln
idstring (uuid)ja—
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
enabledbooleanja—
revisionintegerja1–2147483647
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
createdAtstring (date-time)ja—

Antworten: 200, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—
afterQuerystring (uuid)nein—

Antwort 200

FeldTypErforderlichRegeln
itemsArray von objectjahöchstens 50 Elemente
items[].idstring (uuid)ja—
items[].accountIdstring (uuid)ja—
items[].namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
items[].statestringjaeiner von pending, active, revoked
items[].bindingsArray von objectjahöchstens 64 Elemente
items[].bindings[].resourceobjectja—
items[].bindings[].actionsArray von stringja1–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[].createdAtstring (date-time)ja—
items[].expiresAtstring (date-time)ja—
items[].activationExpiresAtstring (date-time)ja—
items[].rotatedFromstring (uuid)jadarf null sein
nextstring (uuid)jadarf null sein

Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—
Idempotency-KeyHeaderstringjahöchstens 128 Zeichen

Anfragetext (application/json)

FeldTypErforderlichRegeln
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
expiresAtstring (date-time)nein—

Antwort 200

FeldTypErforderlichRegeln
keyobjectja—
key.idstring (uuid)ja—
key.accountIdstring (uuid)ja—
key.namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
key.statestringjaeiner von pending, active, revoked
key.bindingsArray von objectjahöchstens 64 Elemente
key.bindings[].resourceobjectja—
key.bindings[].actionsArray von stringja1–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.createdAtstring (date-time)ja—
key.expiresAtstring (date-time)ja—
key.activationExpiresAtstring (date-time)ja—
key.rotatedFromstring (uuid)jadarf null sein
secretstringnein—

Antworten: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—
afterQuerystringneineine ganze Zahl in Dezimalziffern, als String gesendet

Antwort 200

FeldTypErforderlichRegeln
itemsArray von objectjahöchstens 100 Elemente
items[].sequencestringja—
items[].actorstringja—
items[].actionstringja—
items[].accountIdstring (uuid)ja—
items[].keyIdstring (uuid)jadarf null sein
items[].occurredAtstring (date-time)ja—

Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Antwort 200

FeldTypErforderlichRegeln
idstring (uuid)ja—
accountIdstring (uuid)ja—
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
statestringjaeiner von pending, active, revoked
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
createdAtstring (date-time)ja—
expiresAtstring (date-time)ja—
activationExpiresAtstring (date-time)ja—
rotatedFromstring (uuid)jadarf null sein

Antworten: 200, 400, 401, 403, 404, 409, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—
Idempotency-KeyHeaderstringjahöchstens 128 Zeichen

Anfragetext (application/json)

FeldTypErforderlichRegeln
namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
bindingsArray von objectjahöchstens 64 Elemente
bindings[].resourceobjectja—
bindings[].resource.kindstringjaeiner von repository
bindings[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
bindings[].actionsArray von stringja1–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
expiresAtstring (date-time)nein—

Antwort 200

FeldTypErforderlichRegeln
keyobjectja—
key.idstring (uuid)ja—
key.accountIdstring (uuid)ja—
key.namestringjaentspricht ^[a-zA-Z0-9_.-]{3,64}$
key.statestringjaeiner von pending, active, revoked
key.bindingsArray von objectjahöchstens 64 Elemente
key.bindings[].resourceobjectja—
key.bindings[].actionsArray von stringja1–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.createdAtstring (date-time)ja—
key.expiresAtstring (date-time)ja—
key.activationExpiresAtstring (date-time)ja—
key.rotatedFromstring (uuid)jadarf null sein
secretstringnein—

Antworten: 200, 201, 400, 401, 403, 404, 405, 409, 413, 415, 422, 503, 507

Beispiel

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Antworten: 204, 400, 401, 403, 404, 405, 409, 422, 503, 507

Beispiel

bash
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

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—

Antwort 200

FeldTypErforderlichRegeln
itemsArray von objectjahöchstens 64 Elemente
items[].keyIdstring (uuid)ja—
items[].targetAccountIdstring (uuid)ja—
items[].enabledbooleanja—
items[].revisionintegerja1–2147483647
items[].actionsArray von stringjahö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[].ceilingArray von objectjahöchstens 16 Elemente
items[].ceiling[].resourceobjectja—
items[].ceiling[].actionsArray von stringja1–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

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—
accountIdPfadstring (uuid)ja—

Anfragetext (application/json)

FeldTypErforderlichRegeln
expectedRevisionintegerja0–2147483646
actionsArray von stringja1–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
ceilingArray von objectjahöchstens 16 Elemente
ceiling[].resourceobjectja—
ceiling[].resource.kindstringjaeiner von repository
ceiling[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
ceiling[].actionsArray von stringja1–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

FeldTypErforderlichRegeln
keyIdstring (uuid)ja—
targetAccountIdstring (uuid)ja—
enabledbooleanja—
revisionintegerja1–2147483647
actionsArray von stringjahö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
ceilingArray von objectjahöchstens 16 Elemente
ceiling[].resourceobjectja—
ceiling[].resource.kindstringjaeiner von repository
ceiling[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
ceiling[].actionsArray von stringja1–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

bash
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

NameOrtTypErforderlichRegeln
idPfadstring (uuid)ja—
accountIdPfadstring (uuid)ja—

Anfragetext (application/json)

FeldTypErforderlichRegeln
expectedRevisionintegerja1–2147483646

Antwort 200

FeldTypErforderlichRegeln
keyIdstring (uuid)ja—
targetAccountIdstring (uuid)ja—
enabledbooleanja—
revisionintegerja1–2147483647
actionsArray von stringjahö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
ceilingArray von objectjahöchstens 16 Elemente
ceiling[].resourceobjectja—
ceiling[].resource.kindstringjaeiner von repository
ceiling[].resource.idstringjaentspricht ^[a-z0-9][a-z0-9_-]{0,63}$
ceiling[].actionsArray von stringja1–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

bash
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}'

Arkvory · ProAnimaStudio