Eine kurzlebige Cloud-Rolle vermitteln
Halten Sie einen Lease auf eine Rolle, übernehmen Sie sie über die Ebene für kurze Zugangsdaten, nutzen Sie sie und geben Sie den Lease frei.
iam.assumecoordination.lease
Halten Sie einen Lease auf eine Rolle, übernehmen Sie sie über die Ebene für kurze Zugangsdaten, nutzen Sie sie und geben Sie den Lease frei.
iam.assumecoordination.leaseLeiten Sie Agent-Aktionen, Inhalts-Hashes, API-Checks, DNS-Abfragen, Webhooks, LLM-Aufrufe und Git-Commits über Intramedial – für einen signierten Beleg, den jeder prüft, ohne uns zu vertrauen.
Agenten sollen keine dauerhaften Cloud-Schlüssel halten. Der Broker prüft die Rolle gegen geschützte Klassen, verlangt einen aktiven Lease des Agenten auf den exakten Rollen-ARN und fragt dann bei STS eine Sitzung an. Die Ausstellung wird mit Akteur, Rolle und Ablauf ins Ledger geschrieben, nie die Schlüssel.
Die Antwort trägt den geheimen Zugriffsschlüssel und das Sitzungstoken einmalig, und das Ledger hält sie nie. Das Freigeben des Leases widerruft bereits ausgestellte Zugangsdaten nicht: Sie leben bis expirationMs. STS lehnt Sitzungen unter 900 Sekunden ab.
arn:aws:iam:: beginntDer Code liest den Schlüssel aus INTRAMEDIAL_KEY. Halten Sie ihn in Ihrer Shell oder Ihrem Secret Store, nie in einer Datei, die Sie committen. Aufrufe, die eine angemeldete Person brauchen, können keinen Schlüssel verwenden: Die Konsole führt sie aus.
Holen Sie einen Lease auf den exakten Rollen-ARN, als der Agent, der ihn nutzen wird. Die Lebensdauer der Zugangsdaten ist durch die Restzeit des Leases begrenzt.
assumed ist true; Lease und Ablauf folgen.
{
"assumed": true,
"roleArn": "arn:aws:iam::123456789012:role/deploy",
"sessionName": "release-agent",
"leaseId": "lease_4b7e",
"leaseScoped": true,
"expirationMs": ,
: ,
: ,
:
}expirationMs endet.iam.assumeiam-assumecoordination.leasecoordination-lease
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/lease \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"resource": "arn:aws:iam::123456789012:role/deploy",
"actorDid": "did:web:acme.example:agent:release"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/lease", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
resource: "arn:aws:iam::123456789012:role/deploy",
actorDid: "did:web:acme.example:agent:release",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/lease",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"resource": "arn:aws:iam::123456789012:role/deploy",
"actorDid": "did:web:acme.example:agent:release",
},
timeout=30,
)
print(res.status_code, res.json())Senden Sie Rolle, Agent, einen Sitzungsnamen und das Web-Identity-Token. Die Antwort trägt das Geheimnis einmalig, speichern Sie es also dort, wo Logs es nicht sehen.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/iam/assume \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"roleArn": "arn:aws:iam::123456789012:role/deploy",
"actorDid": "did:web:acme.example:agent:release",
"sessionName": "release-agent",
"webIdentityToken": "eyJ…"
}'
# Save the answer to assume.json: it holds the secret once, so keep it out of logs.const res = await fetch("https://api.intramedial.com/api/v1/acp/iam/assume", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
roleArn: "arn:aws:iam::123456789012:role/deploy",
actorDid: "did:web:acme.example:agent:release",
sessionName: "release-agent",
webIdentityToken: "eyJ…",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/iam/assume",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"roleArn": "arn:aws:iam::123456789012:role/deploy",
"actorDid": "did:web:acme.example:agent:release",
"sessionName": "release-agent",
"webIdentityToken": "eyJ…",
},
timeout=30,
)
print(res.status_code, res.json())Exportieren Sie die Schlüssel für den einen Job, der sie braucht. Sie leben bis expirationMs, dem Ablauf, den STS für die Sitzung meldet.
export AWS_ACCESS_KEY_ID=$(jq -r .accessKeyId assume.json)
export AWS_SECRET_ACCESS_KEY=$(jq -r .secretAccessKey assume.json)
export AWS_SESSION_TOKEN=$(jq -r .sessionToken assume.json)
# jq -r .expirationMs assume.json when STS says the credential endsGeben Sie den Lease frei, wenn der Job endet. Das verhindert, dass die nächsten Zugangsdaten ausgestellt werden. Bereits ausgestellte ruft es nicht zurück, sie leben bis expirationMs. Um auf Anfragehäufungen zu achten, liest watchdog.check die iam.assume-Ereignisse.
curl -sS -X POST https://api.intramedial.com/api/v1/acp/coordination/release \
-H "Authorization: Bearer $INTRAMEDIAL_KEY" \
-H "Content-Type: application/json" \
-d '{
"resource": "arn:aws:iam::123456789012:role/deploy",
"actorDid": "did:web:acme.example:agent:release"
}'const res = await fetch("https://api.intramedial.com/api/v1/acp/coordination/release", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.INTRAMEDIAL_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
resource: "arn:aws:iam::123456789012:role/deploy",
actorDid: "did:web:acme.example:agent:release",
}),
});
console.log(res.status, await res.json());import os, requests
res = requests.post(
"https://api.intramedial.com/api/v1/acp/coordination/release",
headers={"Authorization": "Bearer " + os.environ["INTRAMEDIAL_KEY"]},
json={
"resource": "arn:aws:iam::123456789012:role/deploy",
"actorDid": "did:web:acme.example:agent:release",
},
timeout=30,
)
print(res.status_code, res.json())Kopiert aus: /docs/iam-assume
expirationMs.Das Ledger ist Append-only und unter Merkle-Roots versiegelt. Die Zeit eines Eintrags ist Intramedials eigene Uhr, und ein signiertes Bundle lässt sich offline mit dem veröffentlichten Schlüssel prüfen.
Holen Sie mit coordination.lease einen exklusiven Lease auf eine Ressource, sehen Sie, wer ihn hält, und geben Sie ihn frei, wenn Sie fertig sind.
coordination.leaseLesen Sie das Ledger auf Häufungen, Spitzen und Stille bei Lease- und Credential-Ereignissen und führen Sie die Prüfung aus Ihrem eigenen Scheduler aus.
watchdog.checkFragen Sie die Ebene, ob ein Agent auf einer verbundenen SaaS-Quelle handeln darf, und lesen Sie das Urteil, bevor etwas gesendet wird.
saas.admitEine kurze E-Mail, wenn wir neue Rezepte ergänzen. Sonst keine Mail, und Sie melden sich aus jeder Nachricht ab.
Kein Konto nötig: 35 Aufrufe in 7 Tagen auf den Attest-Routen, Belege als Testbelege markiert. Registrieren Sie sich, wenn Sie weitermachen wollen.