INTEGRITY Dokumentace

Dočasné přihlašovací údaje

Dočasné přihlašovací údaje jsou krátkodobé přihlašovací údaje S3 s omezeným rozsahem, odvozené z existujícího Token R2 API. Autentizují se pomocí AWS Signature Version 4, stejně jako dlouhodobě platný token, ale navíc obsahují session token a automaticky vyprší. Session token se odesílá s každým požadavkem prostřednictvím X-Amz-Security-Token hlavička; všichni klienti kompatibilní s S3 ji vystavují jako standardní pole přihlašovacích údajů pro token relace.

Pomocí dočasných přihlašovacích údajů delegujte přístup, aniž byste museli vydávat dlouhodobý token. Můžete tak například udělit mobilnímu klientovi přístup pro čtení k jedinému prefixu na 15 minut, nebo vydávat přihlašovací údaje pro nahrávání platné jen pro jeden konkrétní požadavek a omezené na jeden objekt.

Výběr přístupu

R2 podporuje dva vzory časově omezeného přístupu. Částečně se překrývají, ale mají odlišné kompromisy:

Vzor Grants Vhodné pro
Dočasné přihlašovací údaje (tato stránka) Více operací S3 omezených na bucket a sadu povolených operací, případně i na konkrétní cesty Volající, kteří pomocí standardního S3 klienta nebo SDK provádějí více operací v rámci ohraničené relace
Presigned URLs Jedna operace S3 nad jedním objektem Udělení přímého přístupu HTTP k jednomu objektu bez klienta S3, jako je nahrávání přes prohlížeč nebo sdílený odkaz ke stažení

Generování dočasných přihlašovacích údajů

Prostřednictvím Temporary Credentials API

Temporary Credentials API přijímá nadřazený token API, název bucketu a volitelné parametry rozsahu a vrací nový access key ID, secret access key a session token. Cloudflare podepíše session token vaším jménem.

Tuto metodu použijte, pokud chcete, aby proces podepisování řídil Cloudflare za vás.

Spustitelný návod naleznete v Ověřování vůči R2 pomocí dočasných přihlašovacích údajů.

Lokálně (podepisování na straně klienta)

Dočasné přihlašovací údaje můžete také vygenerovat lokálně podepsáním JWT pomocí secret access key nadřazeného API tokenu a jeho použitím jako session tokenu.

Tuto metodu použijte, pokud:

Podepisování probíhá ve třech krocích:

  1. Vytvořte payload JWT, který identifikuje bucket a rozsah přístupu.
  2. Podepište JWT algoritmem HS256 pomocí svého nadřazeného secret access key.
  3. Dočasný tajný přístupový klíč odvoďte jako hexadecimální otisk SHA-256 podepsaného JWT. Token relace zakódujte jako base64("jwt/" + <signed-jwt>).

ID nadřazeného přístupového klíče se znovu použije jako ID dočasného přístupového klíče.

Kompletní spustitelný příklad najdete v Ověřování vůči R2 pomocí dočasných přihlašovacích údajů.

Rozsah pověření

Každý dočasný přihlašovací údaj je vázán na jeden bucket a sadu povolených operací. Volitelně můžete přístup dále omezit na konkrétní cesty uvnitř bucketu.

Dočasný token nemůže přesáhnout oprávnění svého nadřazeného tokenu.

Bucket

Dočasný token je vázán vždy přesně na jeden bucket, identifikovaný názvem. Přístup napříč více buckety není v rámci jednoho tokenu podporován.

Povolené operace

Zadejte povolené operace pomocí scope (předáno jako permission k API) nebo actions. Musíte zadat alespoň jeden.

Rozsah

scope je předdefinovaná kategorie operací. Viz Oprávnění pro úplné definice.

RozsahUmožňuje
object-read-onlyČtení a výpis objektů v bucketu.
object-read-writeČtení, zápis a výpis objektů v bucketu.
admin-read-onlyČtení a výpis objektů, zobrazení konfigurace bucketu a čtení z datového katalogu.
admin-read-writeČtení, zápis a výpis objektů, úprava konfigurace bucketu a čtení a zápis do datového katalogu.

Akce

actions je explicitní seznam povolených operací S3.

Například actions: ["GetObject", "HeadObject"] uděluje oprávnění ke čtení jednotlivých objektů, ale odepírá ListObjectsV2, i když širší object-read-only rozsah by umožňoval výpis.

Platné akce:

Kategorie Akce
Čtení HeadObject, GetObject, GetBucketLocation, ListObjectsV1, ListObjectsV2, ListMultipartUploads, ListParts
Zápis PutObject, DeleteObject, DeleteObjects, CopyObject
Vícedílné CreateMultipartUpload, UploadPart, UploadPartCopy, AbortMultipartUpload, CompleteMultipartUpload

Cesty

Omezte přístup na konkrétní prefixy nebo objekty v bucketu. Pokud tato pole vynecháte, získáte přístup k celému bucketu, a to v rozsahu povolených operací.

Temporary Credentials API: předat prefixes a objects jako pole nejvyšší úrovně v těle požadavku.

{
  "prefixes": ["uploads/user-123/"],
  "objects": ["shared/manifest.json"]
}

Lokální podepisování: nastaveno paths.prefixPaths a paths.objectPaths na payloadu JWT.

{
  "paths": {
    "prefixPaths": ["uploads/user-123/"],
    "objectPaths": ["shared/manifest.json"]
  }
}

Použití dočasných přihlašovacích údajů

Jakýkoli klient kompatibilní s S3, který podporuje tokeny relace, přijme dočasné přihlašovací údaje R2. Všechny tři hodnoty (access key ID, secret access key, session token) předejte pomocí standardních polí pro přihlašovací údaje daného klienta.

import { AwsClient } from "aws4fetch";

const R2_URL = `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`;

const client = new AwsClient({
	accessKeyId: ACCESS_KEY_ID,
	secretAccessKey: SECRET_ACCESS_KEY,
	sessionToken: SESSION_TOKEN,
	service: "s3",
});

const response = await client.fetch(`${R2_URL}/my-bucket/image.png`);
import boto3

s3 = boto3.client(
    service_name="s3",
    endpoint_url="https://<ACCOUNT_ID>.r2.cloudflarestorage.com",
    aws_access_key_id="<ACCESS_KEY_ID>",
    aws_secret_access_key="<SECRET_ACCESS_KEY>",
    aws_session_token="<SESSION_TOKEN>",
    region_name="auto",
)

Většina sad AWS SDK a AWS CLI ve výchozím nastavení načítá přihlašovací údaje z těchto proměnných prostředí:

AWS_ACCESS_KEY_ID=<ACCESS_KEY_ID>
AWS_SECRET_ACCESS_KEY=<SECRET_ACCESS_KEY>
AWS_SESSION_TOKEN=<SESSION_TOKEN>

Bezpečnostní aspekty

Dočasné přihlašovací údaje považujte za bearer tokeny. Kdokoli, kdo má všechny tři hodnoty, může provádět povolené operace, dokud platnost přihlašovacích údajů nevyprší.

Ověřování vůči R2 pomocí dočasných přihlašovacích údajů

Ukázky od začátku do konce pro Temporary Credentials API i lokální podepisování JWT.

Presigned URLs

Udělte přístup k jedné operaci na konkrétním objektu, aniž byste vydávali přihlašovací údaje.

Tokeny R2 API

Vytvořte nadřazený token, ze kterého jsou odvozeny dočasné přihlašovací údaje.

Kódy chyb

Kódy chyb ověřování a autorizace vracené službou R2.