Set Container ACL
Der Set Container ACL
-Vorgang legt die Berechtigungen für den angegebenen Container fest. Die Berechtigungen geben an, ob öffentlicher Zugriff auf BLOBs in einem Container zulässig ist.
Ab Version 2009-09-19 bieten die Containerberechtigungen die folgenden Optionen für die Verwaltung des Containerzugriffs:
Vollständiger öffentlicher Lesezugriff: Container und BLOB-Daten können über anonyme Anforderungen gelesen werden. Clients können Blobs innerhalb des Containers über eine anonyme Anforderung aufzählen, aber keine Container innerhalb des Speicherkontos auflisten.
Öffentlicher Lesezugriff nur für Blobs: Blobdaten in diesem Container können über eine anonyme Anforderung gelesen werden, aber Containerdaten sind nicht verfügbar. Clients können Blobs innerhalb des Containers nicht über eine anonyme Anforderung aufzählen.
Kein öffentlicher Lesezugriff: Container und BLOB-Daten können nur vom Kontobesitzer gelesen werden.
Mit Set Container ACL
wird außerdem eine gespeicherte Zugriffsrichtlinie für die Verwendung mit SAS (Shared Access Signatures, Signaturen für gemeinsamen Zugriff) festgelegt. Weitere Informationen finden Sie unter Definieren einer gespeicherten Zugriffsrichtlinie.
Sämtlicher Zugriff auf den Container ist anonym, wie auch der Zugriff über eine SAS.
Anforderung
Die Set Container ACL
-Anforderung kann wie folgt erstellt werden. Es wird empfohlen, HTTPS zu verwenden. Ersetzen Sie myaccount durch den Namen Ihres Speicherkontos:
Methode | Anforderungs-URI | HTTP-Version |
---|---|---|
PUT |
https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl |
HTTP/1.1 |
Emulierte Speicherdienstanforderung
Wenn Sie eine Anforderung für den emulierten Speicherdienst ausführen, geben Sie den Emulatorhostnamen und den Port des Blob-Diensts mit 127.0.0.1:10000
an, gefolgt vom Namen des emulierten Speicherkontos:
Methode | Anforderungs-URI | HTTP-Version |
---|---|---|
PUT |
http://127.0.0.1:10000/devstoreaccount1/mycontainer?restype=container&comp=acl |
HTTP/1.1 |
Weitere Informationen finden Sie unter Verwenden des Azurite-Emulators für lokale Azure Storage-Entwicklung.
URI-Parameter
Sie können die folgenden zusätzlichen Parameter im Anforderungs-URI angeben:
Parameter | BESCHREIBUNG |
---|---|
timeout |
Optional. Der timeout -Parameter wird in Sekunden angegeben. Weitere Informationen finden Sie unter Festlegen von Timeouts für Blobdienstvorgänge. |
Anforderungsheader
Die erforderlichen und optionalen Anforderungsheader werden in der folgenden Tabelle beschrieben:
Anforderungsheader | BESCHREIBUNG |
---|---|
Authorization |
Erforderlich. Gibt das Autorisierungsschema, den Kontonamen und die Signatur an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
Date oder x-ms-date |
Erforderlich. Gibt die koordinierte Weltzeit (Coordinated Universal Time, UTC) für die Anforderung an. Weitere Informationen finden Sie unter Autorisieren von Anforderungen an Azure Storage. |
x-ms-version |
Optional. Gibt die Version des für die Anforderung zu verwendenden Vorgangs an. Weitere Informationen finden Sie unter Versionsverwaltung für die Azure-Speicherdienste. |
x-ms-blob-public-access |
Optional. Gibt an, ob öffentlicher Zugriff auf Daten im Container zulässig ist, und gibt die Zugriffsebene an. Mögliche Werte sind: - container : Gibt den vollständigen öffentlichen Lesezugriff für Container- und Blobdaten an. Clients können Blobs innerhalb des Containers über eine anonyme Anforderung aufzählen, aber keine Container innerhalb des Speicherkontos auflisten.- blob: Gibt öffentlichen Lesezugriff für Blobs an. Blobdaten in diesem Container können über eine anonyme Anforderung gelesen werden, aber Containerdaten sind nicht verfügbar. Clients können Blobs innerhalb des Containers nicht über eine anonyme Anforderung aufzählen.Wenn dieser Header nicht in der Anforderung enthalten ist, sind die Containerdaten für den Kontobesitzer privat. Beachten Sie, dass das Festlegen des öffentlichen Zugriffs für einen Container in einem Azure Storage Premium-Konto nicht zulässig ist. |
x-ms-lease-id: <ID> |
Optional, Version 2012-02-12 und höher. Wenn angegeben, ist nur erfolgreich, Set Container ACL wenn die Lease des Containers aktiv ist und dieser ID entspricht. Wenn keine aktive Lease vorhanden ist oder die ID nicht übereinstimmt, wird 412 (Vorbedingungsfehler) zurückgegeben. |
x-ms-client-request-id |
Optional. Stellt einen vom Client generierten, undurchsichtigen Wert mit einem Zeichenlimit von 1 Kibibyte (KiB) bereit, der in den Protokollen aufgezeichnet wird, wenn die Protokollierung konfiguriert ist. Es wird dringend empfohlen, diesen Header zu verwenden, um clientseitige Aktivitäten mit Anforderungen zu korrelieren, die der Server empfängt. Weitere Informationen finden Sie unter Überwachen Azure Blob Storage. |
Dieser Vorgang unterstützt zudem die Verwendung von bedingten Headern zum Ausführen des Vorgangs, wobei eine bestimmte Bedingung erfüllt sein muss. Weitere Informationen finden Sie unter Angeben von bedingten Headern für Blobdienstvorgänge.
Anforderungstext
Sie geben eine gespeicherte Zugriffsrichtlinie an, indem Sie im Anforderungstext für den Set Container ACL
-Vorgang einen eindeutigen Bezeichner und eine Zugriffsrichtlinie bereitstellen.
Das SignedIdentifier
-Element enthält den eindeutigen Bezeichner, der im Id
-Element angegeben ist, und die Details der Zugriffsrichtlinie, die im AccessPolicy
-Element angegeben sind. Die maximale Länge des eindeutigen Bezeichners beträgt 64 Zeichen.
Das Start
-Feld und das Expiry
-Feld müssen als UTC-Zeit ausgedrückt werden und einem gültigen ISO 8061-Format entsprechen. Folgende ISO 8061-Formate werden unterstützt:
YYYY-MM-DD
YYYY-MM-DDThh:mmTZD
YYYY-MM-DDThh:mm:ssTZD
YYYY-MM-DDThh:mm:ss.fffffffTZD
Im Datumsteil dieser Formate ist YYYY
die vierstellige Darstellung des Jahrs, MM
die zweistellige Darstellung des Monats und DD
die zweistellige Darstellung des Tags. Im Uhrzeitteil ist hh
die Darstellung der Stunden in 24-Stunden-Notation, mm
die zweistellige Darstellung der Minuten, ss
die zweistellige Darstellung der Sekunden und fffffff
die siebenstellige Darstellung der Millisekunden. Ein Zeitdesignator T
trennt die Datums- und Uhrzeitteile der Zeichenfolge, und ein Zeitzonen-Bezeichner TZD
gibt eine Zeitzone an.
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
<SignedIdentifier>
<Id>unique-64-character-value</Id>
<AccessPolicy>
<Start>start-time</Start>
<Expiry>expiry-time</Expiry>
<Permission>abbreviated-permission-list</Permission>
</AccessPolicy>
</SignedIdentifier>
</SignedIdentifiers>
Beispiel für eine Anforderung
Request Syntax:
PUT https://myaccount.blob.core.windows.net/mycontainer?restype=container&comp=acl HTTP/1.1
Request Headers:
x-ms-version: 2011-08-18
x-ms-date: Sun, 25 Sep 2011 00:42:49 GMT
x-ms-blob-public-access: container
Authorization: SharedKey myaccount:V47F2tYLS29MmHPhiR8FyiCny9zO5De3kVSF0RYQHmo=
Request Body:
<?xml version="1.0" encoding="utf-8"?>
<SignedIdentifiers>
<SignedIdentifier>
<Id>MTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTI=</Id>
<AccessPolicy>
<Start>2009-09-28T08:49:37.0000000Z</Start>
<Expiry>2009-09-29T08:49:37.0000000Z</Expiry>
<Permission>rwd</Permission>
</AccessPolicy>
</SignedIdentifier>
</SignedIdentifiers>
Antwort
Die Antwort enthält den HTTP-Statuscode und einen Satz von Antwortheadern.
Statuscode
Bei einem erfolgreichen Vorgang wird der Statuscode 200 (OK) zurückgegeben.
Weitere Informationen zu status Codes finden Sie unter Status- und Fehlercodes.
Antwortheader
Die Antwort für diesen Vorgang umfasst die folgenden Header. Die Antwort kann außerdem weitere HTTP-Standardheader enthalten. Alle Standardheader entsprechen der HTTP/1.1-Protokollspezifikation.
Antwortheader | BESCHREIBUNG |
---|---|
ETag |
Das ETag für den Container. Wenn die Anforderungsversion 2011-08-18 oder höher ist, wird der ETag-Wert in Anführungszeichen eingeschlossen. |
Last-Modified |
Gibt das Datum und die Uhrzeit der letzten Änderung des Containers zurück. Das Datumsformat entspricht RFC 1123. Weitere Informationen finden Sie unter Darstellen von Datums-/Uhrzeitwerten in Headern. Bei jedem Vorgang, durch den der Container, dessen Eigenschaften oder Metadaten geändert werden, wird die Uhrzeit der letzten Änderung aktualisiert. Darunter fällt auch das Festlegen von Berechtigungen für den Container. Vorgänge für Blobs wirken sich nicht auf den Zeitpunkt der letzten Änderung des Containers aus. |
x-ms-request-id |
Identifiziert eindeutig die Anforderung, die gestellt wurde, und kann zur Problembehandlung für die Anforderung verwendet werden. Weitere Informationen finden Sie unter Problembehandlung bei API-Vorgängen. |
x-ms-version |
Gibt die Blobdienstversion an, die zum Ausführen der Anforderung verwendet wurde. Dieser Header wird für Anforderungen zurückgegeben, die für Version 2009-09-19 und höher erfolgen. |
Date |
Ein UTC-Datums-/Uhrzeitwert, der vom Dienst generiert wird, der die Uhrzeit angibt, zu der die Antwort initiiert wurde. |
x-ms-client-request-id |
Kann verwendet werden, um Anforderungen und entsprechende Antworten zu behandeln. Der Wert dieses Headers ist gleich dem Wert des x-ms-client-request-id Headers, wenn er in der Anforderung vorhanden ist und der Wert nicht mehr als 1.024 sichtbare ASCII-Zeichen enthält. Wenn der x-ms-client-request-id Header in der Anforderung nicht vorhanden ist, ist er in der Antwort nicht vorhanden. |
Beispiel für eine Antwort
Response Status:
HTTP/1.1 200 OK
Response Headers:
Transfer-Encoding: chunked
Date: Sun, 25 Sep 2011 22:42:55 GMT
ETag: "0x8CB171613397EAB"
Last-Modified: Sun, 25 Sep 2011 22:42:55 GMT
x-ms-version: 2011-08-18
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
Authorization
Der Set Container ACL
Vorgang unterstützt nur die Autorisierung gemeinsam genutzter Schlüssel.
Hinweise
Nur der Kontobesitzer hat Zugriff auf Ressourcen in einem bestimmten Container, es sei denn, der Besitzer hat durch Festlegen der Berechtigungen für den Container öffentlichen Zugriff auf Containerressourcen zugelassen oder eine SAS für eine Ressource im Container ausgegeben.
Wenn Sie Berechtigungen für einen Container festlegen, werden die vorhandenen Berechtigungen ersetzt. Um die Berechtigungen des Containers zu aktualisieren, rufen Sie Container-ACL abrufen auf, um alle Zugriffsrichtlinien abzurufen, die dem Container zugeordnet sind. Ändern Sie die Zugriffsrichtlinie, die Sie ändern möchten, und rufen Set Container ACL
Sie dann mit dem vollständigen Datensatz auf, um das Update auszuführen.
Aktivieren des anonymen öffentlichen Zugriffs auf Containerdaten
Um anonymen öffentlichen Lesezugriff auf Containerdaten zu aktivieren, rufen Sie Set Container ACL
auf, und legen Sie dabei den x-ms-blob-public-access
-Header auf container
oder blob
fest. Um den anonymen Zugriff zu deaktivieren, rufen Sie Set Container ACL
auf, ohne den x-ms-blob-public-access
-Header anzugeben.
Wenn Sie x-ms-blob-public-access
auf blob
festlegen, können Clients die folgenden Vorgänge anonym aufrufen:
Blockliste abrufen (nur für die committete Blockliste)
Wenn Sie x-ms-blob-public-access
auf container
festlegen, können Clients die folgenden Vorgänge anonym aufrufen:
Die Blobzugriffsvorgänge, die im vorherigen Abschnitt aufgeführt sind.
Einrichten von Zugriffsrichtlinien auf Containerebene
Eine gespeicherte Zugriffsrichtlinie kann die Startzeit, die Ablaufzeit und die Berechtigungen für die freigegebenen Zugriffssignaturen angeben, denen sie zugeordnet ist. Je nachdem, wie Sie den Zugriff auf Ihren Container oder Ihre Blobressource steuern möchten, können Sie alle diese Parameter in der gespeicherten Zugriffsrichtlinie angeben und sie aus der URL für die Freigegebene Zugriffssignatur weglassen. Auf diese Weise können Sie das Verhalten der zugehörigen Signatur jederzeit ändern oder widerrufen. Alternativ können Sie einen oder mehrere Zugriffsrichtlinienparameter in der gespeicherten Zugriffsrichtlinie und die anderen Parameter in der URL angeben. Schließlich können Sie alle Parameter für die URL angeben. In diesem Fall können Sie die gespeicherte Zugriffsrichtlinie verwenden, um die Signatur aufzuheben, aber nicht um ihr Verhalten zu ändern. Weitere Informationen finden Sie unter Definieren einer gespeicherten Zugriffsrichtlinie.
Zusammen müssen die Shared Access Signature und die gespeicherte Zugriffsrichtlinie alle Felder enthalten, die zum Autorisieren der Signatur erforderlich sind. Wenn erforderliche Felder fehlen, schlägt die Anforderung fehl. Wenn ein Feld sowohl in der URL für die Freigabezugriffssignatur als auch in der gespeicherten Zugriffsrichtlinie angegeben wird, schlägt die Anforderung mit status Code 400 (Ungültige Anforderung) fehl.
Maximal fünf separate Zugriffsrichtlinien können jederzeit für einen einzelnen Container festgelegt werden. Wenn mehr als fünf Zugriffsrichtlinien im Anforderungstext übergeben werden, gibt der Dienst status Code 400 (Ungültige Anforderung) zurück.
Eine SAS für einen Container oder ein BLOB kann unabhängig davon ausgegeben werden, ob Containerdaten für anonymen Lesezugriff verfügbar sind. Mit einer SAS lässt sich genauer steuern, wie, wann und für wen eine Ressource verfügbar gemacht wird.
Hinweis
Wenn Sie eine gespeicherte Zugriffsrichtlinie für einen Container einrichten, kann es bis zu 30 Sekunden dauern, bis die Richtlinie wirksam wird. Während dieses Intervalls schlägt eine shared access signature, die der gespeicherten Zugriffsrichtlinie zugeordnet ist, mit status Code 403 (Verboten) fehl, bis die Richtlinie aktiv wird.
Abrechnung
Preisanforderungen können von Clients stammen, die Blob Storage-APIs verwenden, entweder direkt über die Blob Storage-REST-API oder aus einer Azure Storage-Clientbibliothek. Für diese Anforderungen fallen Gebühren pro Transaktion an. Die Art der Transaktion wirkt sich auf die Belastung des Kontos aus. Beispielsweise werden Lesetransaktionen in eine andere Abrechnungskategorie als das Schreiben von Transaktionen angewendet. Die folgende Tabelle zeigt die Abrechnungskategorie für Set Container ACL
Anforderungen basierend auf dem Speicherkontotyp:
Vorgang | Speicherkontotyp | Abrechnungskategorie |
---|---|---|
Set Container ACL | Premium, Blockblob Standard „Allgemein v2“ |
Weitere Vorgänge |
Set Container ACL | Standard „Allgemein v1“ | Schreibvorgänge |
Weitere Informationen zu Preisen für die angegebene Abrechnungskategorie finden Sie unter Azure Blob Storage Preise.
Weitere Informationen
Einschränken des Zugriffs auf Container und Blobs
Delegieren des Zugriffs mit einer Shared Access Signature
Erstellen und Verwenden einer Shared Access Signature
Definieren einer gespeicherten Zugriffsrichtlinie
Get Container ACL
Autorisieren von Anforderungen an Azure Storage
Status- und Fehlercodes
Blobdienstfehlercodes